This commit is contained in:
@@ -334,9 +334,23 @@ export const useOptionalInput: {
|
|||||||
yield* Hooks.useFork(() => Effect.all([
|
yield* Hooks.useFork(() => Effect.all([
|
||||||
Stream.runForEach(
|
Stream.runForEach(
|
||||||
Stream.drop(field.encodedValueRef, 1),
|
Stream.drop(field.encodedValueRef, 1),
|
||||||
|
|
||||||
upstreamEncodedValue => Effect.whenEffect(
|
upstreamEncodedValue => Effect.whenEffect(
|
||||||
Ref.set(internalValueRef, upstreamEncodedValue),
|
Option.match(upstreamEncodedValue, {
|
||||||
Effect.andThen(internalValueRef, internalValue => !Equal.equals(upstreamEncodedValue, internalValue)),
|
onSome: v => Effect.andThen(
|
||||||
|
Ref.set(enabledRef, true),
|
||||||
|
Ref.set(internalValueRef, v),
|
||||||
|
),
|
||||||
|
onNone: () => Effect.andThen(
|
||||||
|
Ref.set(enabledRef, false),
|
||||||
|
Ref.set(internalValueRef, options.defaultValue),
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
|
||||||
|
Effect.andThen(
|
||||||
|
Effect.all([enabledRef, internalValueRef]),
|
||||||
|
([enabled, internalValue]) => !Equal.equals(upstreamEncodedValue, enabled ? Option.some(internalValue) : Option.none()),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user