pull/16140/head
Matei Trandafir 3 months ago
parent 15883654f3
commit 144d3ccf63

@ -166,7 +166,7 @@ export function legacy_rest_props(props, exclude) {
*/ */
const spread_props_handler = { const spread_props_handler = {
get(target, key) { get(target, key) {
if (target.destroyed && key in target.oldProps) return target.oldProps[key] if (target.destroyed && key in target.oldProps) return target.oldProps[key];
let i = target.props.length; let i = target.props.length;
while (i--) { while (i--) {
let p = target.props[i]; let p = target.props[i];
@ -181,7 +181,7 @@ const spread_props_handler = {
if (is_function(p)) p = p(); if (is_function(p)) p = p();
const desc = get_descriptor(p, key); const desc = get_descriptor(p, key);
if (desc && desc.set) { if (desc && desc.set) {
desc.set(target.oldProps[key] = value); desc.set((target.oldProps[key] = value));
return true; return true;
} }
} }
@ -241,9 +241,20 @@ const spread_props_handler = {
* @returns {any} * @returns {any}
*/ */
export function spread_props(...props) { export function spread_props(...props) {
let destroyed = false let destroyed = false;
teardown(() => { destroyed = true }) teardown(() => {
return new Proxy({ props, oldProps: {}, get destroyed() { return destroyed } }, spread_props_handler); destroyed = true;
});
return new Proxy(
{
props,
oldProps: {},
get destroyed() {
return destroyed;
}
},
spread_props_handler
);
} }
/** /**

Loading…
Cancel
Save