mirror of
https://github.com/samuelcolvin/FastUI.git
synced 2023-12-01 22:22:11 +03:00
39 lines
1.3 KiB
TypeScript
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>
|
|
)
|
|
}
|