@@ -139,18 +139,22 @@ export function spread_props(...props) {
139
139
export function prop ( props , key , flags , fallback ) {
140
140
var immutable = ( flags & PROPS_IS_IMMUTABLE ) !== 0 ;
141
141
var runes = ( flags & PROPS_IS_RUNES ) !== 0 ;
142
+ var lazy = ( flags & PROPS_IS_LAZY_INITIAL ) !== 0 ;
143
+
142
144
var prop_value = /** @type {V } */ ( props [ key ] ) ;
143
145
var setter = get_descriptor ( props , key ) ?. set ;
144
146
145
- var needs_new_fallback_value = true ;
146
- /** @type {V } */
147
- var fallback_value ;
148
- var get_fallback = ( ) =>
149
- fallback !== undefined
150
- ? ( flags & PROPS_IS_LAZY_INITIAL ) !== 0
151
- ? /** @type {Function } */ ( fallback ) ( )
152
- : fallback
153
- : undefined ;
147
+ var fallback_value = /** @type {V } */ ( fallback ) ;
148
+ var fallback_dirty = true ;
149
+
150
+ var get_fallback = ( ) => {
151
+ if ( lazy && fallback_dirty ) {
152
+ fallback_dirty = false ;
153
+ fallback_value = untrack ( /** @type {() => V } */ ( fallback ) ) ;
154
+ }
155
+
156
+ return fallback_value ;
157
+ } ;
154
158
155
159
if ( prop_value === undefined && fallback !== undefined ) {
156
160
if ( setter && runes ) {
@@ -163,23 +167,15 @@ export function prop(props, key, flags, fallback) {
163
167
) ;
164
168
}
165
169
166
- prop_value = fallback_value = get_fallback ( ) ;
167
- needs_new_fallback_value = false ;
168
-
170
+ prop_value = get_fallback ( ) ;
169
171
if ( setter ) setter ( prop_value ) ;
170
172
}
171
173
172
174
var getter = runes
173
175
? ( ) => {
174
176
var value = /** @type {V } */ ( props [ key ] ) ;
175
- if ( value === undefined ) {
176
- if ( needs_new_fallback_value ) {
177
- needs_new_fallback_value = false ;
178
- fallback_value = untrack ( get_fallback ) ;
179
- }
180
- return fallback_value ;
181
- }
182
- needs_new_fallback_value = true ;
177
+ if ( value === undefined ) return get_fallback ( ) ;
178
+ fallback_dirty = true ;
183
179
return value ;
184
180
}
185
181
: ( ) => {
0 commit comments