{"version":3,"sources":["../src/contexts/state.tsx","../src/contexts/visibility.tsx","../src/contexts/actions.tsx","../src/contexts/validation.tsx","../src/contexts/repeat-scope.tsx","../src/renderer.tsx"],"sourcesContent":["import React, {\n  createContext,\n  useContext,\n  useState,\n  useCallback,\n  useMemo,\n  useEffect,\n  useRef,\n  type ReactNode,\n} from \"react\";\nimport { getByPath, setByPath, type StateModel } from \"@json-render/core\";\n\nexport interface StateContextValue {\n  state: StateModel;\n  get: (path: string) => unknown;\n  set: (path: string, value: unknown) => void;\n  update: (updates: Record<string, unknown>) => void;\n}\n\nconst StateContext = createContext<StateContextValue | null>(null);\n\nexport interface StateProviderProps {\n  initialState?: StateModel;\n  onStateChange?: (path: string, value: unknown) => void;\n  children: ReactNode;\n}\n\nexport function StateProvider({\n  initialState = {},\n  onStateChange,\n  children,\n}: StateProviderProps) {\n  const [state, setStateInternal] = useState<StateModel>(initialState);\n\n  const stateRef = useRef(state);\n  stateRef.current = state;\n\n  const initialStateJsonRef = useRef<string>(JSON.stringify(initialState));\n\n  useEffect(() => {\n    const newJson = JSON.stringify(initialState);\n    if (newJson !== initialStateJsonRef.current) {\n      initialStateJsonRef.current = newJson;\n      if (initialState && Object.keys(initialState).length > 0) {\n        setStateInternal((prev) => ({ ...prev, ...initialState }));\n      }\n    }\n  }, [initialState]);\n\n  const get = useCallback(\n    (path: string) => getByPath(stateRef.current, path),\n    [],\n  );\n\n  const set = useCallback(\n    (path: string, value: unknown) => {\n      setStateInternal((prev) => {\n        const next = { ...prev };\n        setByPath(next, path, value);\n        return next;\n      });\n      onStateChange?.(path, value);\n    },\n    [onStateChange],\n  );\n\n  const update = useCallback(\n    (updates: Record<string, unknown>) => {\n      const entries = Object.entries(updates);\n      setStateInternal((prev) => {\n        const next = { ...prev };\n        for (const [path, value] of entries) {\n          setByPath(next, path, value);\n        }\n        return next;\n      });\n      for (const [path, value] of entries) {\n        onStateChange?.(path, value);\n      }\n    },\n    [onStateChange],\n  );\n\n  const value = useMemo<StateContextValue>(\n    () => ({ state, get, set, update }),\n    [state, get, set, update],\n  );\n\n  return (\n    <StateContext.Provider value={value}>{children}</StateContext.Provider>\n  );\n}\n\nexport function useStateStore(): StateContextValue {\n  const ctx = useContext(StateContext);\n  if (!ctx) {\n    throw new Error(\"useStateStore must be used within a StateProvider\");\n  }\n  return ctx;\n}\n\nexport function useStateValue<T>(path: string): T | undefined {\n  const { state } = useStateStore();\n  return getByPath(state, path) as T | undefined;\n}\n\nexport function useStateBinding<T>(\n  path: string,\n): [T | undefined, (value: T) => void] {\n  const { state, set } = useStateStore();\n  const value = getByPath(state, path) as T | undefined;\n  const setValue = useCallback(\n    (newValue: T) => set(path, newValue),\n    [path, set],\n  );\n  return [value, setValue];\n}\n","import React, {\n  createContext,\n  useContext,\n  useMemo,\n  type ReactNode,\n} from \"react\";\nimport {\n  evaluateVisibility,\n  type VisibilityCondition,\n  type VisibilityContext as CoreVisibilityContext,\n} from \"@json-render/core\";\nimport { useStateStore } from \"./state\";\n\nexport interface VisibilityContextValue {\n  isVisible: (condition: VisibilityCondition | undefined) => boolean;\n  ctx: CoreVisibilityContext;\n}\n\nconst VisibilityContext = createContext<VisibilityContextValue | null>(null);\n\nexport interface VisibilityProviderProps {\n  children: ReactNode;\n}\n\nexport function VisibilityProvider({ children }: VisibilityProviderProps) {\n  const { state } = useStateStore();\n\n  const ctx: CoreVisibilityContext = useMemo(\n    () => ({ stateModel: state }),\n    [state],\n  );\n\n  const isVisible = useMemo(\n    () => (condition: VisibilityCondition | undefined) =>\n      evaluateVisibility(condition, ctx),\n    [ctx],\n  );\n\n  const value = useMemo<VisibilityContextValue>(\n    () => ({ isVisible, ctx }),\n    [isVisible, ctx],\n  );\n\n  return (\n    <VisibilityContext.Provider value={value}>\n      {children}\n    </VisibilityContext.Provider>\n  );\n}\n\nexport function useVisibility(): VisibilityContextValue {\n  const ctx = useContext(VisibilityContext);\n  if (!ctx) {\n    throw new Error(\"useVisibility must be used within a VisibilityProvider\");\n  }\n  return ctx;\n}\n\nexport function useIsVisible(\n  condition: VisibilityCondition | undefined,\n): boolean {\n  const { isVisible } = useVisibility();\n  return isVisible(condition);\n}\n","import React, {\n  createContext,\n  useContext,\n  useState,\n  useCallback,\n  useMemo,\n  type ReactNode,\n} from \"react\";\nimport {\n  resolveAction,\n  executeAction,\n  type ActionBinding,\n  type ActionHandler,\n  type ActionConfirm,\n  type ResolvedAction,\n} from \"@json-render/core\";\nimport { useStateStore } from \"./state\";\n\nfunction generateUniqueId(): string {\n  return crypto.randomUUID();\n}\n\nfunction deepResolveValue(\n  value: unknown,\n  get: (path: string) => unknown,\n): unknown {\n  if (value === null || value === undefined) return value;\n\n  if (value === \"$id\") {\n    return generateUniqueId();\n  }\n\n  if (typeof value === \"object\" && !Array.isArray(value)) {\n    const obj = value as Record<string, unknown>;\n    const keys = Object.keys(obj);\n\n    if (keys.length === 1 && typeof obj.$state === \"string\") {\n      return get(obj.$state as string);\n    }\n\n    if (keys.length === 1 && \"$id\" in obj) {\n      return generateUniqueId();\n    }\n  }\n\n  if (Array.isArray(value)) {\n    return value.map((item) => deepResolveValue(item, get));\n  }\n\n  if (typeof value === \"object\") {\n    const resolved: Record<string, unknown> = {};\n    for (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n      resolved[key] = deepResolveValue(val, get);\n    }\n    return resolved;\n  }\n\n  return value;\n}\n\nexport interface PendingConfirmation {\n  action: ResolvedAction;\n  handler: ActionHandler;\n  resolve: () => void;\n  reject: () => void;\n}\n\nexport interface ActionContextValue {\n  handlers: Record<string, ActionHandler>;\n  loadingActions: Set<string>;\n  pendingConfirmation: PendingConfirmation | null;\n  execute: (binding: ActionBinding) => Promise<void>;\n  confirm: () => void;\n  cancel: () => void;\n  registerHandler: (name: string, handler: ActionHandler) => void;\n}\n\nconst ActionContext = createContext<ActionContextValue | null>(null);\n\nexport interface ActionProviderProps {\n  handlers?: Record<string, ActionHandler>;\n  navigate?: (path: string) => void;\n  children: ReactNode;\n}\n\nexport function ActionProvider({\n  handlers: initialHandlers = {},\n  navigate,\n  children,\n}: ActionProviderProps) {\n  const { state, get, set } = useStateStore();\n  const [handlers, setHandlers] =\n    useState<Record<string, ActionHandler>>(initialHandlers);\n  const [loadingActions, setLoadingActions] = useState<Set<string>>(new Set());\n  const [pendingConfirmation, setPendingConfirmation] =\n    useState<PendingConfirmation | null>(null);\n\n  const registerHandler = useCallback(\n    (name: string, handler: ActionHandler) => {\n      setHandlers((prev) => ({ ...prev, [name]: handler }));\n    },\n    [],\n  );\n\n  const execute = useCallback(\n    async (binding: ActionBinding) => {\n      const resolved = resolveAction(binding, state);\n\n      if (resolved.action === \"setState\" && resolved.params) {\n        const statePath = resolved.params.statePath as string;\n        const value = resolved.params.value;\n        if (statePath) {\n          set(statePath, value);\n        }\n        return;\n      }\n\n      if (resolved.action === \"pushState\" && resolved.params) {\n        const statePath = resolved.params.statePath as string;\n        const rawValue = resolved.params.value;\n        if (statePath) {\n          const resolvedValue = deepResolveValue(rawValue, get);\n          const arr = (get(statePath) as unknown[] | undefined) ?? [];\n          set(statePath, [...arr, resolvedValue]);\n          const clearStatePath = resolved.params.clearStatePath as\n            | string\n            | undefined;\n          if (clearStatePath) {\n            set(clearStatePath, \"\");\n          }\n        }\n        return;\n      }\n\n      if (resolved.action === \"removeState\" && resolved.params) {\n        const statePath = resolved.params.statePath as string;\n        const index = resolved.params.index as number;\n        if (statePath !== undefined && index !== undefined) {\n          const arr = (get(statePath) as unknown[] | undefined) ?? [];\n          set(\n            statePath,\n            arr.filter((_, i) => i !== index),\n          );\n        }\n        return;\n      }\n\n      const handler = handlers[resolved.action];\n\n      if (!handler) {\n        console.warn(`No handler registered for action: ${resolved.action}`);\n        return;\n      }\n\n      if (resolved.confirm) {\n        return new Promise<void>((resolve, reject) => {\n          setPendingConfirmation({\n            action: resolved,\n            handler,\n            resolve: () => {\n              setPendingConfirmation(null);\n              resolve();\n            },\n            reject: () => {\n              setPendingConfirmation(null);\n              reject(new Error(\"Action cancelled\"));\n            },\n          });\n        }).then(async () => {\n          setLoadingActions((prev) => new Set(prev).add(resolved.action));\n          try {\n            await executeAction({\n              action: resolved,\n              handler,\n              setState: set,\n              navigate,\n              executeAction: async (binding) => {\n                await execute(binding);\n              },\n            });\n          } finally {\n            setLoadingActions((prev) => {\n              const next = new Set(prev);\n              next.delete(resolved.action);\n              return next;\n            });\n          }\n        });\n      }\n\n      setLoadingActions((prev) => new Set(prev).add(resolved.action));\n      try {\n        await executeAction({\n          action: resolved,\n          handler,\n          setState: set,\n          navigate,\n          executeAction: async (binding) => {\n            await execute(binding);\n          },\n        });\n      } finally {\n        setLoadingActions((prev) => {\n          const next = new Set(prev);\n          next.delete(resolved.action);\n          return next;\n        });\n      }\n    },\n    [state, handlers, get, set, navigate],\n  );\n\n  const confirm = useCallback(() => {\n    pendingConfirmation?.resolve();\n  }, [pendingConfirmation]);\n\n  const cancel = useCallback(() => {\n    pendingConfirmation?.reject();\n  }, [pendingConfirmation]);\n\n  const value = useMemo<ActionContextValue>(\n    () => ({\n      handlers,\n      loadingActions,\n      pendingConfirmation,\n      execute,\n      confirm,\n      cancel,\n      registerHandler,\n    }),\n    [\n      handlers,\n      loadingActions,\n      pendingConfirmation,\n      execute,\n      confirm,\n      cancel,\n      registerHandler,\n    ],\n  );\n\n  return (\n    <ActionContext.Provider value={value}>{children}</ActionContext.Provider>\n  );\n}\n\nexport function useActions(): ActionContextValue {\n  const ctx = useContext(ActionContext);\n  if (!ctx) {\n    throw new Error(\"useActions must be used within an ActionProvider\");\n  }\n  return ctx;\n}\n\nexport function useAction(binding: ActionBinding): {\n  execute: () => Promise<void>;\n  isLoading: boolean;\n} {\n  const { execute, loadingActions } = useActions();\n  const isLoading = loadingActions.has(binding.action);\n\n  const executeAction = useCallback(() => execute(binding), [execute, binding]);\n\n  return { execute: executeAction, isLoading };\n}\n\nexport interface ConfirmDialogProps {\n  confirm: ActionConfirm;\n  onConfirm: () => void;\n  onCancel: () => void;\n}\n\n/**\n * No-op confirm dialog for email context. Emails are non-interactive,\n * so confirmations are not rendered.\n */\nexport function ConfirmDialog(_props: ConfirmDialogProps) {\n  return null;\n}\n","import React, {\n  createContext,\n  useContext,\n  useState,\n  useCallback,\n  useMemo,\n  type ReactNode,\n} from \"react\";\nimport {\n  runValidation,\n  type ValidationConfig,\n  type ValidationFunction,\n  type ValidationResult,\n} from \"@json-render/core\";\nimport { useStateStore } from \"./state\";\n\nexport interface FieldValidationState {\n  touched: boolean;\n  validated: boolean;\n  result: ValidationResult | null;\n}\n\nexport interface ValidationContextValue {\n  customFunctions: Record<string, ValidationFunction>;\n  fieldStates: Record<string, FieldValidationState>;\n  validate: (path: string, config: ValidationConfig) => ValidationResult;\n  touch: (path: string) => void;\n  clear: (path: string) => void;\n  validateAll: () => boolean;\n  registerField: (path: string, config: ValidationConfig) => void;\n}\n\nconst ValidationContext = createContext<ValidationContextValue | null>(null);\n\nexport interface ValidationProviderProps {\n  customFunctions?: Record<string, ValidationFunction>;\n  children: ReactNode;\n}\n\nfunction dynamicArgsEqual(\n  a: Record<string, unknown> | undefined,\n  b: Record<string, unknown> | undefined,\n): boolean {\n  if (a === b) return true;\n  if (!a || !b) return false;\n\n  const keysA = Object.keys(a);\n  const keysB = Object.keys(b);\n  if (keysA.length !== keysB.length) return false;\n\n  for (const key of keysA) {\n    const va = a[key];\n    const vb = b[key];\n    if (va === vb) continue;\n    if (\n      typeof va === \"object\" &&\n      va !== null &&\n      typeof vb === \"object\" &&\n      vb !== null\n    ) {\n      const sa = (va as Record<string, unknown>).$state;\n      const sb = (vb as Record<string, unknown>).$state;\n      if (typeof sa === \"string\" && sa === sb) continue;\n    }\n    return false;\n  }\n  return true;\n}\n\nfunction validationConfigEqual(\n  a: ValidationConfig,\n  b: ValidationConfig,\n): boolean {\n  if (a === b) return true;\n  if (a.validateOn !== b.validateOn) return false;\n\n  const ac = a.checks ?? [];\n  const bc = b.checks ?? [];\n  if (ac.length !== bc.length) return false;\n\n  for (let i = 0; i < ac.length; i++) {\n    const ca = ac[i]!;\n    const cb = bc[i]!;\n    if (ca.type !== cb.type) return false;\n    if (ca.message !== cb.message) return false;\n    if (!dynamicArgsEqual(ca.args, cb.args)) return false;\n  }\n\n  return true;\n}\n\nexport function ValidationProvider({\n  customFunctions = {},\n  children,\n}: ValidationProviderProps) {\n  const { state } = useStateStore();\n  const [fieldStates, setFieldStates] = useState<\n    Record<string, FieldValidationState>\n  >({});\n  const [fieldConfigs, setFieldConfigs] = useState<\n    Record<string, ValidationConfig>\n  >({});\n\n  const registerField = useCallback(\n    (path: string, config: ValidationConfig) => {\n      setFieldConfigs((prev) => {\n        const existing = prev[path];\n        if (existing && validationConfigEqual(existing, config)) {\n          return prev;\n        }\n        return { ...prev, [path]: config };\n      });\n    },\n    [],\n  );\n\n  const validate = useCallback(\n    (path: string, config: ValidationConfig): ValidationResult => {\n      const segments = path.split(\"/\").filter(Boolean);\n      let value: unknown = state;\n      for (const seg of segments) {\n        if (value != null && typeof value === \"object\") {\n          value = (value as Record<string, unknown>)[seg];\n        } else {\n          value = undefined;\n          break;\n        }\n      }\n      const result = runValidation(config, {\n        value,\n        stateModel: state,\n        customFunctions,\n      });\n\n      setFieldStates((prev) => ({\n        ...prev,\n        [path]: {\n          touched: prev[path]?.touched ?? true,\n          validated: true,\n          result,\n        },\n      }));\n\n      return result;\n    },\n    [state, customFunctions],\n  );\n\n  const touch = useCallback((path: string) => {\n    setFieldStates((prev) => ({\n      ...prev,\n      [path]: {\n        ...prev[path],\n        touched: true,\n        validated: prev[path]?.validated ?? false,\n        result: prev[path]?.result ?? null,\n      },\n    }));\n  }, []);\n\n  const clear = useCallback((path: string) => {\n    setFieldStates((prev) => {\n      const { [path]: _, ...rest } = prev;\n      return rest;\n    });\n  }, []);\n\n  const validateAll = useCallback(() => {\n    let allValid = true;\n    for (const [path, config] of Object.entries(fieldConfigs)) {\n      const result = validate(path, config);\n      if (!result.valid) {\n        allValid = false;\n      }\n    }\n    return allValid;\n  }, [fieldConfigs, validate]);\n\n  const value = useMemo<ValidationContextValue>(\n    () => ({\n      customFunctions,\n      fieldStates,\n      validate,\n      touch,\n      clear,\n      validateAll,\n      registerField,\n    }),\n    [\n      customFunctions,\n      fieldStates,\n      validate,\n      touch,\n      clear,\n      validateAll,\n      registerField,\n    ],\n  );\n\n  return (\n    <ValidationContext.Provider value={value}>\n      {children}\n    </ValidationContext.Provider>\n  );\n}\n\nexport function useValidation(): ValidationContextValue {\n  const ctx = useContext(ValidationContext);\n  if (!ctx) {\n    throw new Error(\"useValidation must be used within a ValidationProvider\");\n  }\n  return ctx;\n}\n\nexport function useFieldValidation(\n  path: string,\n  config?: ValidationConfig,\n): {\n  state: FieldValidationState;\n  validate: () => ValidationResult;\n  touch: () => void;\n  clear: () => void;\n  errors: string[];\n  isValid: boolean;\n} {\n  const {\n    fieldStates,\n    validate: validateField,\n    touch: touchField,\n    clear: clearField,\n    registerField,\n  } = useValidation();\n\n  React.useEffect(() => {\n    if (config) {\n      registerField(path, config);\n    }\n  }, [path, config, registerField]);\n\n  const state = fieldStates[path] ?? {\n    touched: false,\n    validated: false,\n    result: null,\n  };\n\n  const validate = useCallback(\n    () => validateField(path, config ?? { checks: [] }),\n    [path, config, validateField],\n  );\n\n  const touch = useCallback(() => touchField(path), [path, touchField]);\n  const clear = useCallback(() => clearField(path), [path, clearField]);\n\n  return {\n    state,\n    validate,\n    touch,\n    clear,\n    errors: state.result?.errors ?? [],\n    isValid: state.result?.valid ?? true,\n  };\n}\n","import React, { createContext, useContext, type ReactNode } from \"react\";\n\nexport interface RepeatScopeValue {\n  item: unknown;\n  index: number;\n  basePath: string;\n}\n\nconst RepeatScopeContext = createContext<RepeatScopeValue | null>(null);\n\nexport function RepeatScopeProvider({\n  item,\n  index,\n  basePath,\n  children,\n}: RepeatScopeValue & { children: ReactNode }) {\n  return (\n    <RepeatScopeContext.Provider value={{ item, index, basePath }}>\n      {children}\n    </RepeatScopeContext.Provider>\n  );\n}\n\nexport function useRepeatScope(): RepeatScopeValue | null {\n  return useContext(RepeatScopeContext);\n}\n","import React, {\n  type ComponentType,\n  type ErrorInfo,\n  type ReactNode,\n  useCallback,\n  useMemo,\n} from \"react\";\nimport type {\n  UIElement,\n  Spec,\n  ActionBinding,\n  Catalog,\n  SchemaDefinition,\n} from \"@json-render/core\";\nimport {\n  resolveElementProps,\n  resolveBindings,\n  resolveActionParam,\n  resolveRepeatItemStatePath,\n  resolveRepeatStatePath,\n  evaluateVisibility,\n  getByPath,\n  type PropResolutionContext,\n  type VisibilityContext as CoreVisibilityContext,\n} from \"@json-render/core\";\nimport type { Components, SetState, StateModel } from \"./catalog-types\";\nimport { useIsVisible, useVisibility } from \"./contexts/visibility\";\nimport { useActions } from \"./contexts/actions\";\nimport { useStateStore } from \"./contexts/state\";\nimport { StateProvider } from \"./contexts/state\";\nimport { VisibilityProvider } from \"./contexts/visibility\";\nimport { ActionProvider } from \"./contexts/actions\";\nimport { ValidationProvider } from \"./contexts/validation\";\nimport { standardComponents } from \"./components/standard\";\nimport { RepeatScopeProvider, useRepeatScope } from \"./contexts/repeat-scope\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface ComponentRenderProps<P = Record<string, unknown>> {\n  element: UIElement<string, P>;\n  children?: ReactNode;\n  emit: (event: string) => void;\n  bindings?: Record<string, string>;\n  loading?: boolean;\n}\n\nexport type ComponentRenderer<P = Record<string, unknown>> = ComponentType<\n  ComponentRenderProps<P>\n>;\n\nexport type ComponentRegistry = Record<string, ComponentRenderer<any>>;\n\nexport interface RendererProps {\n  spec: Spec | null;\n  registry?: ComponentRegistry;\n  includeStandard?: boolean;\n  loading?: boolean;\n  fallback?: ComponentRenderer;\n}\n\n// =============================================================================\n// ElementErrorBoundary\n// =============================================================================\n\ninterface ElementErrorBoundaryProps {\n  elementType: string;\n  children: ReactNode;\n}\n\ninterface ElementErrorBoundaryState {\n  hasError: boolean;\n}\n\nclass ElementErrorBoundary extends React.Component<\n  ElementErrorBoundaryProps,\n  ElementErrorBoundaryState\n> {\n  constructor(props: ElementErrorBoundaryProps) {\n    super(props);\n    this.state = { hasError: false };\n  }\n\n  static getDerivedStateFromError(): ElementErrorBoundaryState {\n    return { hasError: true };\n  }\n\n  componentDidCatch(error: Error, info: ErrorInfo) {\n    console.error(\n      `[json-render/react-email] Rendering error in <${this.props.elementType}>:`,\n      error,\n      info.componentStack,\n    );\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return null;\n    }\n    return this.props.children;\n  }\n}\n\n// =============================================================================\n// ElementRenderer\n// =============================================================================\n\ninterface ElementRendererProps {\n  element: UIElement;\n  spec: Spec;\n  registry: ComponentRegistry;\n  loading?: boolean;\n  fallback?: ComponentRenderer;\n}\n\nconst ElementRenderer = React.memo(function ElementRenderer({\n  element,\n  spec,\n  registry,\n  loading,\n  fallback,\n}: ElementRendererProps) {\n  const repeatScope = useRepeatScope();\n  const { ctx } = useVisibility();\n  const { execute } = useActions();\n\n  const fullCtx: PropResolutionContext = useMemo(\n    () =>\n      repeatScope\n        ? {\n            ...ctx,\n            repeatItem: repeatScope.item,\n            repeatIndex: repeatScope.index,\n            repeatBasePath: repeatScope.basePath,\n          }\n        : ctx,\n    [ctx, repeatScope],\n  );\n\n  const isVisible =\n    element.visible === undefined\n      ? true\n      : evaluateVisibility(element.visible, fullCtx);\n\n  const onBindings = element.on;\n  const emit = useCallback(\n    (eventName: string) => {\n      const binding = onBindings?.[eventName];\n      if (!binding) return;\n      const actionBindings = Array.isArray(binding) ? binding : [binding];\n      for (const b of actionBindings) {\n        if (!b.params) {\n          execute(b);\n          continue;\n        }\n        const resolved: Record<string, unknown> = {};\n        for (const [key, val] of Object.entries(b.params)) {\n          resolved[key] = resolveActionParam(val, fullCtx);\n        }\n        execute({ ...b, params: resolved });\n      }\n    },\n    [onBindings, execute, fullCtx],\n  );\n\n  if (!isVisible) {\n    return null;\n  }\n\n  const rawProps = element.props as Record<string, unknown>;\n  const elementBindings = resolveBindings(rawProps, fullCtx);\n  const resolvedProps = resolveElementProps(rawProps, fullCtx);\n\n  const resolvedElement =\n    resolvedProps !== element.props\n      ? { ...element, props: resolvedProps }\n      : element;\n\n  const Component = registry[resolvedElement.type] ?? fallback;\n\n  if (!Component) {\n    console.warn(\n      `[json-render/react-email] No renderer for component type: ${resolvedElement.type}`,\n    );\n    return null;\n  }\n\n  const children = resolvedElement.repeat ? (\n    <RepeatChildren\n      element={resolvedElement}\n      spec={spec}\n      registry={registry}\n      loading={loading}\n      fallback={fallback}\n    />\n  ) : (\n    resolvedElement.children?.map((childKey) => {\n      const childElement = spec.elements[childKey];\n      if (!childElement) {\n        if (!loading) {\n          console.warn(\n            `[json-render/react-email] Missing element \"${childKey}\" referenced as child of \"${resolvedElement.type}\".`,\n          );\n        }\n        return null;\n      }\n      return (\n        <ElementRenderer\n          key={childKey}\n          element={childElement}\n          spec={spec}\n          registry={registry}\n          loading={loading}\n          fallback={fallback}\n        />\n      );\n    })\n  );\n\n  return (\n    <ElementErrorBoundary elementType={resolvedElement.type}>\n      <Component\n        element={resolvedElement}\n        emit={emit}\n        bindings={elementBindings}\n        loading={loading}\n      >\n        {children}\n      </Component>\n    </ElementErrorBoundary>\n  );\n});\n\n// =============================================================================\n// RepeatChildren\n// =============================================================================\n\nfunction RepeatChildren({\n  element,\n  spec,\n  registry,\n  loading,\n  fallback,\n}: {\n  element: UIElement;\n  spec: Spec;\n  registry: ComponentRegistry;\n  loading?: boolean;\n  fallback?: ComponentRenderer;\n}) {\n  const { state } = useStateStore();\n  const parentScope = useRepeatScope();\n  const repeat = element.repeat!;\n  const statePath = resolveRepeatStatePath(\n    repeat.statePath,\n    parentScope?.basePath,\n  );\n  if (statePath === undefined) {\n    console.warn(\n      \"[json-render/react-email] $item in repeat.statePath used outside of a repeat scope\",\n    );\n    return null;\n  }\n\n  const items = (getByPath(state, statePath) as unknown[] | undefined) ?? [];\n\n  return (\n    <>\n      {items.map((itemValue, index) => {\n        const key =\n          repeat.key && typeof itemValue === \"object\" && itemValue !== null\n            ? String(\n                (itemValue as Record<string, unknown>)[repeat.key] ?? index,\n              )\n            : String(index);\n\n        return (\n          <RepeatScopeProvider\n            key={key}\n            item={itemValue}\n            index={index}\n            basePath={resolveRepeatItemStatePath(statePath, index)}\n          >\n            {element.children?.map((childKey) => {\n              const childElement = spec.elements[childKey];\n              if (!childElement) {\n                if (!loading) {\n                  console.warn(\n                    `[json-render/react-email] Missing element \"${childKey}\" referenced as child of \"${element.type}\" (repeat).`,\n                  );\n                }\n                return null;\n              }\n              return (\n                <ElementRenderer\n                  key={childKey}\n                  element={childElement}\n                  spec={spec}\n                  registry={registry}\n                  loading={loading}\n                  fallback={fallback}\n                />\n              );\n            })}\n          </RepeatScopeProvider>\n        );\n      })}\n    </>\n  );\n}\n\n// =============================================================================\n// Renderer\n// =============================================================================\n\nexport function Renderer({\n  spec,\n  registry: customRegistry,\n  includeStandard = true,\n  loading,\n  fallback,\n}: RendererProps) {\n  const registry: ComponentRegistry = useMemo(\n    () => ({\n      ...(includeStandard ? standardComponents : {}),\n      ...customRegistry,\n    }),\n    [customRegistry, includeStandard],\n  );\n\n  if (!spec || !spec.root) {\n    return null;\n  }\n\n  const rootElement = spec.elements[spec.root];\n  if (!rootElement) {\n    return null;\n  }\n\n  return (\n    <ElementRenderer\n      element={rootElement}\n      spec={spec}\n      registry={registry}\n      loading={loading}\n      fallback={fallback}\n    />\n  );\n}\n\n// =============================================================================\n// JSONUIProvider\n// =============================================================================\n\nexport interface JSONUIProviderProps {\n  initialState?: Record<string, unknown>;\n  handlers?: Record<\n    string,\n    (params: Record<string, unknown>) => Promise<unknown> | unknown\n  >;\n  navigate?: (path: string) => void;\n  validationFunctions?: Record<\n    string,\n    (value: unknown, args?: Record<string, unknown>) => boolean\n  >;\n  onStateChange?: (path: string, value: unknown) => void;\n  children: ReactNode;\n}\n\nexport function JSONUIProvider({\n  initialState,\n  handlers,\n  navigate,\n  validationFunctions,\n  onStateChange,\n  children,\n}: JSONUIProviderProps) {\n  return (\n    <StateProvider initialState={initialState} onStateChange={onStateChange}>\n      <VisibilityProvider>\n        <ActionProvider handlers={handlers} navigate={navigate}>\n          <ValidationProvider customFunctions={validationFunctions}>\n            {children}\n          </ValidationProvider>\n        </ActionProvider>\n      </VisibilityProvider>\n    </StateProvider>\n  );\n}\n\n// =============================================================================\n// defineRegistry\n// =============================================================================\n\nexport interface DefineRegistryResult {\n  registry: ComponentRegistry;\n}\n\ntype DefineRegistryComponentFn = (ctx: {\n  props: unknown;\n  children?: React.ReactNode;\n  emit: (event: string) => void;\n  bindings?: Record<string, string>;\n  loading?: boolean;\n}) => React.ReactNode;\n\nexport function defineRegistry<C extends Catalog>(\n  _catalog: C,\n  options: {\n    components?: Components<C>;\n  },\n): DefineRegistryResult {\n  const registry: ComponentRegistry = {};\n  if (options.components) {\n    for (const [name, componentFn] of Object.entries(options.components)) {\n      registry[name] = ({\n        element,\n        children,\n        emit,\n        bindings,\n        loading,\n      }: ComponentRenderProps) => {\n        return (componentFn as DefineRegistryComponentFn)({\n          props: element.props,\n          children,\n          emit,\n          bindings,\n          loading,\n        });\n      };\n    }\n  }\n\n  return { registry };\n}\n\n// =============================================================================\n// createRenderer\n// =============================================================================\n\nexport interface CreateRendererProps {\n  spec: Spec | null;\n  state?: Record<string, unknown>;\n  onAction?: (actionName: string, params?: Record<string, unknown>) => void;\n  onStateChange?: (path: string, value: unknown) => void;\n  loading?: boolean;\n  fallback?: ComponentRenderer;\n}\n\nexport type ComponentMap<\n  TComponents extends Record<string, { props: unknown }>,\n> = {\n  [K in keyof TComponents]: ComponentType<\n    ComponentRenderProps<\n      TComponents[K][\"props\"] extends { _output: infer O }\n        ? O\n        : Record<string, unknown>\n    >\n  >;\n};\n\nexport function createRenderer<\n  TDef extends SchemaDefinition,\n  TCatalog extends { components: Record<string, { props: unknown }> },\n>(\n  catalog: Catalog<TDef, TCatalog>,\n  components: ComponentMap<TCatalog[\"components\"]>,\n): ComponentType<CreateRendererProps> {\n  const registry: ComponentRegistry =\n    components as unknown as ComponentRegistry;\n\n  return function CatalogRenderer({\n    spec,\n    state,\n    onAction,\n    onStateChange,\n    loading,\n    fallback,\n  }: CreateRendererProps) {\n    const actionHandlers = onAction\n      ? new Proxy(\n          {} as Record<\n            string,\n            (params: Record<string, unknown>) => void | Promise<void>\n          >,\n          {\n            get: (_target, prop: string) => {\n              return (params: Record<string, unknown>) =>\n                onAction(prop, params);\n            },\n            has: () => true,\n          },\n        )\n      : undefined;\n\n    return (\n      <StateProvider initialState={state} onStateChange={onStateChange}>\n        <VisibilityProvider>\n          <ActionProvider handlers={actionHandlers}>\n            <ValidationProvider>\n              <Renderer\n                spec={spec}\n                registry={registry}\n                loading={loading}\n                fallback={fallback}\n              />\n            </ValidationProvider>\n          </ActionProvider>\n        </VisibilityProvider>\n      </StateProvider>\n    );\n  };\n}\n"],"mappings":"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","names":["value","createContext","useContext","useMemo","jsx","createContext","useMemo","useContext","createContext","useContext","useState","useCallback","useMemo","jsx","createContext","useState","useCallback","value","binding","useMemo","useContext","executeAction","React","createContext","useContext","useState","useCallback","useMemo","jsx","createContext","useState","useCallback","value","useMemo","useContext","React","createContext","useContext","jsx","React","useCallback","useMemo","evaluateVisibility","getByPath","jsx","React","ElementRenderer","useMemo","evaluateVisibility","useCallback","getByPath"]}