reorder a bit

pull/16270/head
Rich Harris 3 months ago
parent 9506889f80
commit 2a16f17de7

@ -264,18 +264,24 @@ export function prop(props, key, flags, fallback) {
var runes = !legacy_mode_flag || (flags & PROPS_IS_RUNES) !== 0; var runes = !legacy_mode_flag || (flags & PROPS_IS_RUNES) !== 0;
var bindable = (flags & PROPS_IS_BINDABLE) !== 0; var bindable = (flags & PROPS_IS_BINDABLE) !== 0;
var lazy = (flags & PROPS_IS_LAZY_INITIAL) !== 0; var lazy = (flags & PROPS_IS_LAZY_INITIAL) !== 0;
var is_store_sub = false;
var prop_value;
if (bindable) { var fallback_value = /** @type {V} */ (fallback);
[prop_value, is_store_sub] = capture_store_binding(() => /** @type {V} */ (props[key])); var fallback_dirty = true;
} else { var fallback_used = false;
prop_value = /** @type {V} */ (props[key]);
} var get_fallback = () => {
fallback_used = true;
// Can be the case when someone does `mount(Component, props)` with `let props = $state({...})` if (fallback_dirty) {
// or `createClassComponent(Component, props)` fallback_dirty = false;
var is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;
fallback_value = lazy
? untrack(/** @type {() => V} */ (fallback))
: /** @type {V} */ (fallback);
}
return fallback_value;
};
/** @type {((v: V) => void) | undefined} */ /** @type {((v: V) => void) | undefined} */
var setter; var setter;
@ -284,36 +290,31 @@ export function prop(props, key, flags, fallback) {
var getter; var getter;
if (bindable) { if (bindable) {
// Can be the case when someone does `mount(Component, props)` with `let props = $state({...})`
// or `createClassComponent(Component, props)`
var is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;
setter = setter =
get_descriptor(props, key)?.set ?? get_descriptor(props, key)?.set ??
(is_entry_props && key in props ? (v) => (props[key] = v) : undefined); (is_entry_props && key in props ? (v) => (props[key] = v) : undefined);
} }
var fallback_value = /** @type {V} */ (fallback); var initial_value;
var fallback_dirty = true; var is_store_sub = false;
var fallback_used = false;
var get_fallback = () => { if (bindable) {
fallback_used = true; [initial_value, is_store_sub] = capture_store_binding(() => /** @type {V} */ (props[key]));
if (fallback_dirty) { } else {
fallback_dirty = false; initial_value = /** @type {V} */ (props[key]);
if (lazy) { }
fallback_value = untrack(/** @type {() => V} */ (fallback));
} else {
fallback_value = /** @type {V} */ (fallback);
}
}
return fallback_value; if (initial_value === undefined && fallback !== undefined) {
}; initial_value = get_fallback();
if (prop_value === undefined && fallback !== undefined) { if (setter) {
if (setter && runes) { if (runes) e.props_invalid_value(key);
e.props_invalid_value(key); setter(initial_value);
} }
prop_value = get_fallback();
setter?.(prop_value);
} }
if (runes) { if (runes) {

Loading…
Cancel
Save