0.1.0 #1

Merged
Thilawyn merged 87 commits from next into master 2025-01-18 00:54:42 +01:00
5 changed files with 32 additions and 5 deletions
Showing only changes of commit 6f688db913 - Show all commits

View File

@@ -1,3 +1,5 @@
import { FetchHttpClient } from "@effect/platform"
import { Clipboard, Geolocation, Permissions } from "@effect/platform-browser"
import { createRouter, RouterProvider } from "@tanstack/react-router"
import { ReffuseRuntime } from "@thilawyn/reffuse"
import { Layer } from "effect"
@@ -7,7 +9,12 @@ import { GlobalContext } from "./reffuse"
import { routeTree } from "./routeTree.gen"
const layer = Layer.empty
const layer = Layer.empty.pipe(
Layer.provideMerge(Clipboard.layer),
Layer.provideMerge(Geolocation.layer),
Layer.provideMerge(Permissions.layer),
Layer.provideMerge(FetchHttpClient.layer),
)
const router = createRouter({ routeTree })

View File

@@ -1,5 +1,13 @@
import { HttpClient } from "@effect/platform"
import { Clipboard, Geolocation, Permissions } from "@effect/platform-browser"
import { Reffuse, ReffuseContext } from "reffuse"
export const GlobalContext = ReffuseContext.make()
export const GlobalContext = ReffuseContext.make<
| Clipboard.Clipboard
| Geolocation.Geolocation
| Permissions.Permissions
| HttpClient.HttpClient
>()
export const R = Reffuse.make(GlobalContext)

View File

@@ -2,6 +2,7 @@ import { Context, Effect, ExecutionStrategy, Exit, Fiber, Option, Ref, Runtime,
import React from "react"
import * as ReffuseContext from "./ReffuseContext.js"
import * as ReffuseRuntime from "./ReffuseRuntime.js"
import * as SetStateAction from "./SetStateAction.js"
export class Reffuse<R> {
@@ -271,9 +272,7 @@ export class Reffuse<R> {
const setValue = React.useCallback((setStateAction: React.SetStateAction<A>) =>
runSync(Ref.update(ref, previousState =>
typeof setStateAction === "function"
? (setStateAction as (prevState: A) => A)(previousState)
: setStateAction
SetStateAction.get(setStateAction, previousState)
)),
[ref])

View File

@@ -0,0 +1,12 @@
import { Function } from "effect"
import type React from "react"
export const get: {
<S>(prevState: S): (setStateAction: React.SetStateAction<S>) => S
<S>(setStateAction: React.SetStateAction<S>, prevState: S): S
} = Function.dual(2, <S>(self: React.SetStateAction<S>, prevState: S): S =>
typeof self === "function"
? (self as (prevState: S) => S)(prevState)
: prevState
)

View File

@@ -1,3 +1,4 @@
export * as Reffuse from "./Reffuse.js"
export * as ReffuseContext from "./ReffuseContext.js"
export * as ReffuseRuntime from "./ReffuseRuntime.js"
export * as SetStateAction from "./SetStateAction.js"