diff --git a/packages/effect-fc/src/Component.ts b/packages/effect-fc/src/Component.ts index 662222b..808dd19 100644 --- a/packages/effect-fc/src/Component.ts +++ b/packages/effect-fc/src/Component.ts @@ -106,14 +106,24 @@ export const memo: { )) +export interface Suspense { + readonly suspense: true +} + +export const suspense = >( + self: ExcludeKeys +): T & Suspense => Object.setPrototypeOf( + { ...self, suspense: true }, + Object.getPrototypeOf(self), +) + + export const useFC: { ( self: Component ): Effect.Effect, never, Exclude> } = Effect.fn("useFC")(function* ( - self: - | Component & Memoized

- | Component + self: Component & (Memoized

| Suspense | {}) ) { const runtimeRef = React.useRef>>(null!) runtimeRef.current = yield* Effect.runtime>()