pull/9826/head
Rich Harris 3 years ago
parent c538868608
commit ba0d55bf4c

@ -54,16 +54,25 @@ export const global_visitors = {
binding?.kind === 'prop' ||
is_store
) {
let fn = node.operator === '++' ? '$.increment' : '$.decrement';
/** @type {import('estree').Expression[]} */
const args = [];
let fn = '$.update';
if (node.prefix) fn += '_pre';
if (binding.kind === 'prop') fn += '_prop';
if (is_store) {
fn += '_store';
return b.call(fn, serialize_get_binding(b.id(name), state), b.call('$' + name));
args.push(serialize_get_binding(b.id(name), state), b.call('$' + name));
} else {
if (binding.kind === 'prop') fn += '_prop';
args.push(b.id(name));
}
if (node.operator === '--') {
args.push(b.literal(-1));
}
return b.call(fn, b.id(name));
return b.call(fn, ...args);
}
return next();

@ -3,7 +3,7 @@ import {
effect_active,
get,
set,
increment,
update,
source,
updating_derived,
UNINITIALIZED,
@ -143,7 +143,7 @@ const handler = {
const s = metadata.s.get(prop);
if (s !== undefined) set(s, UNINITIALIZED);
if (prop in target) increment(metadata.v);
if (prop in target) update(metadata.v);
return delete target[prop];
},
@ -224,7 +224,7 @@ const handler = {
}
}
if (not_has) {
increment(metadata.v);
update(metadata.v);
}
// @ts-ignore
target[prop] = value;

@ -1577,111 +1577,55 @@ export function bubble_event($$props, event) {
/**
* @param {import('./types.js').Signal<number>} signal
* @param {1 | -1} [d]
* @returns {number}
*/
export function increment(signal) {
export function update(signal, d = 1) {
const value = get(signal);
set_signal_value(signal, value + 1);
set_signal_value(signal, value + d);
return value;
}
/**
* @param {((value?: number) => number)} fn
* @param {1 | -1} [d]
* @returns {number}
*/
export function increment_prop(fn) {
export function update_prop(fn, d = 1) {
const value = fn();
fn(value + 1);
fn(value + d);
return value;
}
/**
* @param {import('./types.js').Store<number>} store
* @param {number} store_value
* @param {1 | -1} [d]
* @returns {number}
*/
export function increment_store(store, store_value) {
store.set(store_value + 1);
export function update_store(store, store_value, d = 1) {
store.set(store_value + d);
return store_value;
}
/**
* @param {import('./types.js').Signal<number>} signal
* @param {1 | -1} [d]
* @returns {number}
*/
export function decrement(signal) {
const value = get(signal);
set_signal_value(signal, value - 1);
return value;
}
/**
* @param {((value?: number) => number)} fn
* @returns {number}
*/
export function decrement_prop(fn) {
const value = fn();
fn(value - 1);
return value;
}
/**
* @param {import('./types.js').Store<number>} store
* @param {number} store_value
* @returns {number}
*/
export function decrement_store(store, store_value) {
store.set(store_value - 1);
return store_value;
}
/**
* @param {import('./types.js').Signal<number>} signal
* @returns {number}
*/
export function increment_pre(signal) {
const value = get(signal) + 1;
set_signal_value(signal, value);
return value;
}
/**
* @param {((value?: number) => number)} fn
* @returns {number}
*/
export function increment_pre_prop(fn) {
const value = fn() + 1;
fn(value);
return value;
}
/**
* @param {import('./types.js').Store<number>} store
* @param {number} store_value
* @returns {number}
*/
export function increment_pre_store(store, store_value) {
const value = store_value + 1;
store.set(value);
return value;
}
/**
* @param {import('./types.js').Signal<number>} signal
* @returns {number}
*/
export function decrement_pre(signal) {
const value = get(signal) - 1;
export function update_pre(signal, d = 1) {
const value = get(signal) + d;
set_signal_value(signal, value);
return value;
}
/**
* @param {((value?: number) => number)} fn
* @param {1 | -1} [d]
* @returns {number}
*/
export function decrement_pre_prop(fn) {
const value = fn() - 1;
export function update_pre_prop(fn, d = 1) {
const value = fn() + d;
fn(value);
return value;
}
@ -1689,10 +1633,11 @@ export function decrement_pre_prop(fn) {
/**
* @param {import('./types.js').Store<number>} store
* @param {number} store_value
* @param {1 | -1} [d]
* @returns {number}
*/
export function decrement_pre_store(store, store_value) {
const value = store_value - 1;
export function update_pre_store(store, store_value, d = 1) {
const value = store_value + d;
store.set(value);
return value;
}

@ -17,18 +17,12 @@ export {
safe_equal,
tick,
untrack,
increment,
increment_prop,
increment_store,
decrement,
decrement_prop,
decrement_store,
increment_pre,
increment_pre_prop,
increment_pre_store,
decrement_pre,
decrement_pre_prop,
decrement_pre_store,
update,
update_prop,
update_store,
update_pre,
update_pre_prop,
update_pre_store,
mutate,
mutate_store,
value_or_fallback,

Loading…
Cancel
Save