diff --git a/src/React.bs.js b/src/React.bs.js index ef827dd..6565a0f 100644 --- a/src/React.bs.js +++ b/src/React.bs.js @@ -23,6 +23,8 @@ function lazy_(load) { var Uncurried = {}; +var Activity = {}; + exports.Children = Children; exports.Context = Context; exports.Fragment = Fragment; @@ -30,4 +32,5 @@ exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.lazy_ = lazy_; exports.Uncurried = Uncurried; +exports.Activity = Activity; /* react Not a pure module */ diff --git a/src/React.res b/src/React.res index 2644e4b..4eb876a 100644 --- a/src/React.res +++ b/src/React.res @@ -459,3 +459,25 @@ captureOwnerStack reads the current Owner Stack in development and returns it as @module("react") @return(null_to_opt) external captureOwnerStack: unit => option = "captureOwnerStack" + +/** + lets you hide and restore the UI and internal state of its children. +[Read more on the React Documentation](https://react.dev/reference/react/Activity) +*/ +module Activity = { + type mode = + | @as("visible") Visible + | @as("hidden") Hidden + + type props = {mode?: mode, children: element, name?: string} + + @module("react") + external make: component = "Activity" +} + +/** +useEffectEvent is a React Hook that lets you extract non-reactive logic from your Effects into a reusable function called an Effect Event. +[Read more on the React Documentation](https://react.dev/reference/react/useEffectEvent) +*/ +@module("react") +external useEffectEvent: (unit => unit) => unit = "useEffectEvent" diff --git a/src/ReactDOMServer.res b/src/ReactDOMServer.res index d50ddc1..44b77fd 100644 --- a/src/ReactDOMServer.res +++ b/src/ReactDOMServer.res @@ -3,3 +3,31 @@ external renderToString: React.element => string = "renderToString" @module("react-dom/server") external renderToStaticMarkup: React.element => string = "renderToStaticMarkup" + +type resumeOptions<'error> = { + nonce?: string, + signal?: ReactDOMStatic.abortSignal, + onError?: 'error => unit, +} + +/** +resume streams a pre-rendered React tree to a Readable Web Stream. +[Read more on the React Documentation](https://react.dev/reference/react-dom/server/resume) +*/ +@module("react-dom/server") +external resume: ( + React.element, + ReactDOMStatic.postponedState, + ~options: resumeOptions<'error>=?, +) => promise = "resume" + +/** +resumeToPipeableStream streams a pre-rendered React tree to a pipeable Node.js Stream. +[Read more on the React Documentation](https://react.dev/reference/react-dom/server/resumeToPipeableStream) +*/ +@module("react-dom/server") +external resumeToPipeableStream: ( + React.element, + ReactDOMStatic.postponedState, + ~options: resumeOptions<'error>=?, +) => promise = "resumeToPipeableStream" diff --git a/src/ReactDOMStatic.res b/src/ReactDOMStatic.res index 7988fbb..0539f8a 100644 --- a/src/ReactDOMStatic.res +++ b/src/ReactDOMStatic.res @@ -4,6 +4,8 @@ type nodeStream // NodeJs.Stream.stream type readableStream // WebAPI.FileAPI.readableStream +type postponedState + type prerenderOptions<'error> = { bootstrapScriptContent?: string, bootstrapScripts?: array, @@ -15,16 +17,46 @@ type prerenderOptions<'error> = { signal?: abortSignal, } -type staticResult = {prelude: readableStream} +type staticResult = {prelude: readableStream, postponed: postponedState} +/** +prerender renders a React tree to a static HTML string using a Web Stream. +[Read more on the React Documentation](https://react.dev/reference/react-dom/static/prerender) +*/ @module("react-dom/static") external prerender: (React.element, ~options: prerenderOptions<'error>=?) => promise = "prerender" -type staticResultNode = {prelude: nodeStream} +/** +resumeAndPrerender continues a prerendered React tree to a static HTML string using a Web Stream. +[Read more on the React Documentation](https://react.dev/reference/react-dom/static/resumeAndPrerender) +*/ +@module("react-dom/static") +external resumeAndPrerender: ( + React.element, + postponedState, + ~options: prerenderOptions<'error>=?, +) => promise = "resumeAndPrerender" + +type staticResultNode = {prelude: nodeStream, postponed: postponedState} +/** +prerenderToNodeStream renders a React tree to a static HTML string using a Node.js Stream. +[Read more on the React Documentation](https://react.dev/reference/react-dom/static/prerenderToNodeStream) +*/ @module("react-dom/static") external prerenderToNodeStream: ( React.element, ~options: prerenderOptions<'error>=?, ) => promise = "prerenderToNodeStream" + +/** +resumeAndPrerenderToNodeStream continues a prerendered React tree to a static HTML string using a a Node.js Stream. +[Read more on the React Documentation](https://react.dev/reference/react-dom/static/resumeAndPrerenderToNodeStream) +*/ +@module("react-dom/static") +external resumeAndPrerenderToNodeStream: ( + React.element, + postponedState, + ~options: prerenderOptions<'error>=?, +) => promise = "resumeAndPrerenderToNodeStream"