From 9f08894b6188b1627c3991d6d38e3bddd34d1ce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 15 Jan 2025 00:16:57 +0100 Subject: [PATCH] ReffuseContext --- packages/reffuse/src/ReffuseContext.tsx | 32 +++++++++++++++++++++++++ packages/reffuse/src/ReffuseRuntime.ts | 5 ++++ 2 files changed, 37 insertions(+) create mode 100644 packages/reffuse/src/ReffuseContext.tsx create mode 100644 packages/reffuse/src/ReffuseRuntime.ts diff --git a/packages/reffuse/src/ReffuseContext.tsx b/packages/reffuse/src/ReffuseContext.tsx new file mode 100644 index 0000000..fbc4b46 --- /dev/null +++ b/packages/reffuse/src/ReffuseContext.tsx @@ -0,0 +1,32 @@ +import { Context, Layer } from "effect" +import React from "react" + + +export interface ReffuseContext { + readonly Context: React.Context> + readonly Provider: ReffuseContextReactProvider +} + +export type ReffuseContextReactProvider = React.FC<{ + readonly layer: Layer.Layer + readonly children?: React.ReactNode +}> + +export type R = T extends ReffuseContext ? R : never + + +export function make(): ReffuseContext { + const Context = React.createContext>(null!) + + return { + Context, + + Provider: function ReffuseContextReactProvider(props) { + return ( + + ) + }, + } +} diff --git a/packages/reffuse/src/ReffuseRuntime.ts b/packages/reffuse/src/ReffuseRuntime.ts new file mode 100644 index 0000000..e987872 --- /dev/null +++ b/packages/reffuse/src/ReffuseRuntime.ts @@ -0,0 +1,5 @@ +import type { Runtime } from "effect" +import React from "react" + + +export interface ReffuseRuntime extends React.Context> {}