Files
FastUI/react/fastui/index.tsx
Samuel Colvin eb6147512c moving python
2023-11-12 20:15:23 +00:00

39 lines
1.3 KiB
TypeScript

import { ReactNode } from 'react'
import { LocationProvider } from './hooks/locationContext'
import { FastUIController } from './controller'
import { ClassNameContext, ClassNameGenerator } from './hooks/className'
import { ErrorContextProvider, ErrorDisplayType } from './hooks/error'
import { CustomRender, CustomRenderContext } from './hooks/customRender'
import { FastProps } from './components'
import { DisplayChoices } from './display'
export type { ClassNameGenerator, CustomRender, ErrorDisplayType, FastProps, DisplayChoices }
export interface FastUIProps {
rootUrl: string
// defaults to 'append'
pathSendMode?: 'append' | 'query'
loading?: () => ReactNode
DisplayError?: ErrorDisplayType
classNameGenerator?: ClassNameGenerator
customRender?: CustomRender
}
export function FastUI(props: FastUIProps) {
const { classNameGenerator, DisplayError, customRender, ...rest } = props
return (
<div className="fastui">
<ErrorContextProvider DisplayError={DisplayError}>
<LocationProvider>
<ClassNameContext.Provider value={classNameGenerator ?? null}>
<CustomRenderContext.Provider value={customRender ?? null}>
<FastUIController {...rest} />
</CustomRenderContext.Provider>
</ClassNameContext.Provider>
</LocationProvider>
</ErrorContextProvider>
</div>
)
}