diff --git a/packages/effect-fc/src/types/SubscriptionSubRef.ts b/packages/effect-fc/src/types/SubscriptionSubRef.ts index 88baee8..ead45f1 100644 --- a/packages/effect-fc/src/types/SubscriptionSubRef.ts +++ b/packages/effect-fc/src/types/SubscriptionSubRef.ts @@ -105,14 +105,26 @@ export const makeFromPath = < (parentValue, value) => Option.getOrThrow(PropertyPath.immutableSet(parentValue, path, value)), ) -export const makeFromChunkRef = | Chunk.NonEmptyChunk>>( - parent: B, +export const makeFromChunkRef: { + >>( + parent: B, + index: number, + ): SubscriptionSubRef< + Effect.Effect.Success extends Chunk.NonEmptyChunk ? A : never, + B + > + >>( + parent: B, + index: number, + ): SubscriptionSubRef< + Effect.Effect.Success extends Chunk.Chunk ? A : never, + B + > +} = ( + parent: SubscriptionRef.SubscriptionRef>, index: number, -): SubscriptionSubRef< - Effect.Effect.Success extends Chunk.Chunk ? A : never, - B -> => new SubscriptionSubRefImpl( - parent as SubscriptionRef.SubscriptionRef>, +) => new SubscriptionSubRefImpl( + parent, parentValue => Chunk.unsafeGet(parentValue, index), (parentValue, value) => Chunk.replace(parentValue, index, value), ) as any diff --git a/packages/example/src/routes/dev/memo.tsx b/packages/example/src/routes/dev/memo.tsx index 4acd3cb..5b10906 100644 --- a/packages/example/src/routes/dev/memo.tsx +++ b/packages/example/src/routes/dev/memo.tsx @@ -10,8 +10,8 @@ import * as React from "react" const RouteComponent = Component.make(function* RouteComponent() { const [value, setValue] = React.useState("") - const myRef = yield* SubscriptionRef.make(Chunk.make({ name: "person 1" } as const)) - // const myRef = yield* SubscriptionRef.make(Chunk.empty<{ readonly name: "person 1" }>()) + // const myRef = yield* SubscriptionRef.make(Chunk.make({ name: "person 1" } as const)) + const myRef = yield* SubscriptionRef.make(Chunk.empty<{ readonly name: "person 1" }>()) const mySubRef = SubscriptionSubRef.makeFromChunkRef(myRef, 0) return (