diff --git a/packages/example/src/lib/input/TextAreaInput.tsx b/packages/example/src/lib/input/TextAreaInput.tsx
index 64fb1a0..03d4359 100644
--- a/packages/example/src/lib/input/TextAreaInput.tsx
+++ b/packages/example/src/lib/input/TextAreaInput.tsx
@@ -16,7 +16,7 @@ export const TextAreaInput = (options: {
React.JSX.Element,
ParseResult.ParseError,
R
-> => Component.makeUntraced("TextFieldInput")(function* TextFieldInput(props) {
+> => Component.makeUntraced("TextFieldInput")(function*(props) {
const input = yield* useInput({ ...options, ...props })
const issue = React.useMemo(() => input.error.pipe(
Option.map(ParseResult.ArrayFormatter.formatErrorSync),
diff --git a/packages/example/src/lib/input/TextFieldInput.tsx b/packages/example/src/lib/input/TextFieldInput.tsx
index 905c0f8..e0bf339 100644
--- a/packages/example/src/lib/input/TextFieldInput.tsx
+++ b/packages/example/src/lib/input/TextFieldInput.tsx
@@ -19,7 +19,7 @@ export const TextFieldInput = (options: {
readonly optional?: O
readonly schema: Schema.Schema
readonly equivalence?: Equivalence.Equivalence
-}) => Component.makeUntraced("TextFieldInput")(function* TextFieldInput(props: O extends true
+}) => Component.makeUntraced("TextFieldInput")(function*(props: O extends true
? TextFieldOptionalInputProps
: TextFieldInputProps
) {
diff --git a/packages/example/src/routes/dev/async-rendering.tsx b/packages/example/src/routes/dev/async-rendering.tsx
index fadd316..e5a23e8 100644
--- a/packages/example/src/routes/dev/async-rendering.tsx
+++ b/packages/example/src/routes/dev/async-rendering.tsx
@@ -1,11 +1,10 @@
-import { runtime } from "@/runtime"
import { Flex, Text, TextField } from "@radix-ui/themes"
import { createFileRoute } from "@tanstack/react-router"
import { GetRandomValues, makeUuid4 } from "@typed/id"
import { Effect } from "effect"
-import { Component, Memo, Suspense } from "effect-fc"
-import { Hooks } from "effect-fc/hooks"
+import { Async, Component, Hooks, Memoized } from "effect-fc"
import * as React from "react"
+import { runtime } from "@/runtime"
// Generator version
@@ -64,10 +63,10 @@ class AsyncComponent extends Component.makeUntraced("AsyncComponent")(function*(
)
}).pipe(
- Suspense.suspense,
- Suspense.withOptions({ defaultFallback: Loading...
}),
+ Async.async,
+ Async.withOptions({ defaultFallback: Loading...
}),
) {}
-class MemoizedAsyncComponent extends Memo.memo(AsyncComponent) {}
+class MemoizedAsyncComponent extends Memoized.memoized(AsyncComponent) {}
class SubComponent extends Component.makeUntraced("SubComponent")(function*() {
const [state] = React.useState(yield* Hooks.useOnce(() => Effect.provide(makeUuid4, GetRandomValues.CryptoRandom)))
diff --git a/packages/example/src/routes/dev/input.tsx b/packages/example/src/routes/dev/input.tsx
index 9a8a53f..ef20057 100644
--- a/packages/example/src/routes/dev/input.tsx
+++ b/packages/example/src/routes/dev/input.tsx
@@ -1,10 +1,9 @@
-import { TextFieldInput } from "@/lib/input/TextFieldInput"
-import { runtime } from "@/runtime"
import { Container } from "@radix-ui/themes"
import { createFileRoute } from "@tanstack/react-router"
import { Schema, SubscriptionRef } from "effect"
-import { Component, Memo } from "effect-fc"
-import { useOnce } from "effect-fc/hooks"
+import { Component, Hooks, Memoized } from "effect-fc"
+import { TextFieldInput } from "@/lib/input/TextFieldInput"
+import { runtime } from "@/runtime"
const IntFromString = Schema.NumberFromString.pipe(Schema.int())
@@ -16,9 +15,9 @@ const Input = Component.makeUntraced("Input")(function*() {
const IntTextFieldInputFC = yield* IntTextFieldInput
const StringTextFieldInputFC = yield* StringTextFieldInput
- const intRef1 = yield* useOnce(() => SubscriptionRef.make(0))
+ const intRef1 = yield* Hooks.useOnce(() => SubscriptionRef.make(0))
// const intRef2 = yield* useOnce(() => SubscriptionRef.make(0))
- const stringRef = yield* useOnce(() => SubscriptionRef.make(""))
+ const stringRef = yield* Hooks.useOnce(() => SubscriptionRef.make(""))
// yield* useFork(() => Stream.runForEach(intRef1.changes, Console.log), [intRef1])
// const input2 = yield* useInput({ schema: IntFromString, ref: intRef2 })
@@ -33,7 +32,7 @@ const Input = Component.makeUntraced("Input")(function*() {
)
}).pipe(
- Memo.memo,
+ Memoized.memoized,
Component.withRuntime(runtime.context)
)
diff --git a/packages/example/src/routes/dev/memo.tsx b/packages/example/src/routes/dev/memo.tsx
index b81f132..87ece9c 100644
--- a/packages/example/src/routes/dev/memo.tsx
+++ b/packages/example/src/routes/dev/memo.tsx
@@ -1,10 +1,10 @@
-import { runtime } from "@/runtime"
import { Flex, Text, TextField } from "@radix-ui/themes"
import { createFileRoute } from "@tanstack/react-router"
import { GetRandomValues, makeUuid4 } from "@typed/id"
import { Effect } from "effect"
-import { Component, Memo } from "effect-fc"
+import { Component, Memoized } from "effect-fc"
import * as React from "react"
+import { runtime } from "@/runtime"
const RouteComponent = Component.makeUntraced("RouteComponent")(function*() {
@@ -30,7 +30,7 @@ class SubComponent extends Component.makeUntraced("SubComponent")(function*() {
return {id}
}) {}
-class MemoizedSubComponent extends Memo.memo(SubComponent) {}
+class MemoizedSubComponent extends Memoized.memoized(SubComponent) {}
export const Route = createFileRoute("/dev/memo")({
component: RouteComponent,
diff --git a/packages/example/src/routes/form.tsx b/packages/example/src/routes/form.tsx
index 879f2f8..83c74ee 100644
--- a/packages/example/src/routes/form.tsx
+++ b/packages/example/src/routes/form.tsx
@@ -1,8 +1,8 @@
import { Button, Container, Flex } from "@radix-ui/themes"
import { createFileRoute } from "@tanstack/react-router"
import { Effect, ParseResult, Schema } from "effect"
-import { Component, Form } from "effect-fc"
-import { useContext, useSubscribables } from "effect-fc/Hooks"
+import { Component, Form, Hooks } from "effect-fc"
+import { useSubscribables } from "effect-fc/Hooks"
import { TextFieldFormInput } from "@/lib/form/TextFieldFormInput"
import { runtime } from "@/runtime"
@@ -29,7 +29,7 @@ class RegisterForm extends Effect.Service()("RegisterForm", {
Schema.typeSchema(RegisterFormSchema),
{
decode: v => Effect.andThen(Effect.sleep("500 millis"), ParseResult.succeed(v)),
- encode: v => Effect.andThen(Effect.sleep("500 millis"), ParseResult.succeed(v)),
+ encode: ParseResult.succeed,
},
),
initialEncodedValue: { email: "", password: "" },
@@ -48,7 +48,7 @@ class RegisterPage extends Component.makeUntraced("RegisterPage")(function*() {
const TextFieldFormInputFC = yield* TextFieldFormInput
return (
-
+