File tree 2 files changed +21
-14
lines changed
packages/solid/src/reactive 2 files changed +21
-14
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ " solid-js " : patch
3
+ ---
4
+
5
+ add optional initalValue argument to ` from ` helper
Original file line number Diff line number Diff line change @@ -84,18 +84,20 @@ export function observable<T>(input: Accessor<T>): Observable<T> {
84
84
} ;
85
85
}
86
86
87
- export function from < T > (
88
- producer :
89
- | ( ( setter : Setter < T | undefined > ) => ( ) => void )
90
- | { subscribe : ( fn : ( v : T ) => void ) => ( ( ) => void ) | { unsubscribe : ( ) => void } }
91
- ) : Accessor < T | undefined > {
92
- const [ s , set ] = createSignal < T | undefined > ( undefined , { equals : false } ) ;
93
- if ( "subscribe" in producer ) {
94
- const unsub = producer . subscribe ( v => set ( ( ) => v ) ) ;
95
- onCleanup ( ( ) => ( "unsubscribe" in unsub ? unsub . unsubscribe ( ) : unsub ( ) ) ) ;
96
- } else {
97
- const clean = producer ( set ) ;
98
- onCleanup ( clean ) ;
99
- }
100
- return s ;
87
+ type Producer < T > =
88
+ | ( ( setter : Setter < T > ) => ( ) => void )
89
+ | { subscribe : ( fn : ( v : T ) => void ) => ( ( ) => void ) | { unsubscribe : ( ) => void } } ;
90
+
91
+ export function from < T > ( producer : Producer < T > , initalValue : T ) : Accessor < T > ;
92
+ export function from < T > ( producer : Producer < T | undefined > ) : Accessor < T | undefined > ;
93
+ export function from < T > ( producer : Producer < T | undefined > , initalValue : T | undefined = undefined ) : Accessor < T | undefined > {
94
+ const [ s , set ] = createSignal < T | undefined > ( initalValue , { equals : false } ) ;
95
+ if ( "subscribe" in producer ) {
96
+ const unsub = producer . subscribe ( v => set ( ( ) => v ) ) ;
97
+ onCleanup ( ( ) => ( "unsubscribe" in unsub ? unsub . unsubscribe ( ) : unsub ( ) ) ) ;
98
+ } else {
99
+ const clean = producer ( set ) ;
100
+ onCleanup ( clean ) ;
101
+ }
102
+ return s ;
101
103
}
You can’t perform that action at this time.
0 commit comments