Skip to content

Commit e1d17c5

Browse files
authored
Add next and previous values to listener parameters (#48)
1 parent d4f2e83 commit e1d17c5

29 files changed

Lines changed: 4351 additions & 2396 deletions

dist/cjs/react/useSelector.cjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ const useSelector = (selectorParamFactory, deps) => {
1616
const {
1717
cache
1818
} = context;
19-
const reactishValues = utils.getReactishValues(items);
20-
const args = reactishValues.concat(deps || selectorFunc);
19+
const selectorValues = utils.getSelectorValues(items);
20+
const args = selectorValues.concat(deps || selectorFunc);
2121
if (cache && utils.isEqual(args, cache.args)) return cache.val;
22-
const val = selectorFunc(...reactishValues);
22+
const val = selectorFunc(...selectorValues);
2323
context.cache = {
2424
args,
2525
val

dist/cjs/utils.cjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ const createSubscriber = items => listener => {
1010
const unsubscribers = items.map(item => item.subscribe(listener));
1111
return () => unsubscribers.forEach(unsubscribe => unsubscribe());
1212
};
13-
const getReactishValues = items => items.map(item => item.get());
13+
const getSelectorValues = items => items.map(item => item.get());
1414

1515
exports.createSubscriber = createSubscriber;
16-
exports.getReactishValues = getReactishValues;
16+
exports.getSelectorValues = getSelectorValues;
1717
exports.isEqual = isEqual;

dist/cjs/vanilla/selector.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const createSelector = ({
1515
let cache;
1616
const selector = {
1717
get: () => {
18-
const args = utils.getReactishValues(items);
18+
const args = utils.getSelectorValues(items);
1919
if (cache && utils.isEqual(args, cache.args)) return cache.val;
2020
const val = selectorFunc(...args);
2121
cache = {

dist/cjs/vanilla/state.cjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ const createState = ({
99
let set = newValue => {
1010
const nextValue = typeof newValue === 'function' ? newValue(value) : newValue;
1111
if (!Object.is(value, nextValue)) {
12+
const prevValue = value;
1213
value = nextValue;
13-
listeners.forEach(listener => listener());
14+
listeners.forEach(listener => listener(nextValue, prevValue));
1415
}
1516
};
1617
const subscribe = listener => {

dist/esm/react/useSelector.mjs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useState } from 'react';
2-
import { createSubscriber, getReactishValues, isEqual } from '../utils.mjs';
2+
import { createSubscriber, getSelectorValues, isEqual } from '../utils.mjs';
33
import { useSnapshot } from './useSnapshot.mjs';
44

55
const useSelector = (selectorParamFactory, deps) => {
@@ -14,10 +14,10 @@ const useSelector = (selectorParamFactory, deps) => {
1414
const {
1515
cache
1616
} = context;
17-
const reactishValues = getReactishValues(items);
18-
const args = reactishValues.concat(deps || selectorFunc);
17+
const selectorValues = getSelectorValues(items);
18+
const args = selectorValues.concat(deps || selectorFunc);
1919
if (cache && isEqual(args, cache.args)) return cache.val;
20-
const val = selectorFunc(...reactishValues);
20+
const val = selectorFunc(...selectorValues);
2121
context.cache = {
2222
args,
2323
val

dist/esm/utils.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ const createSubscriber = items => listener => {
88
const unsubscribers = items.map(item => item.subscribe(listener));
99
return () => unsubscribers.forEach(unsubscribe => unsubscribe());
1010
};
11-
const getReactishValues = items => items.map(item => item.get());
11+
const getSelectorValues = items => items.map(item => item.get());
1212

13-
export { createSubscriber, getReactishValues, isEqual };
13+
export { createSubscriber, getSelectorValues, isEqual };

dist/esm/vanilla/selector.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createSubscriber, getReactishValues, isEqual } from '../utils.mjs';
1+
import { createSubscriber, getSelectorValues, isEqual } from '../utils.mjs';
22

33
const createSelector = ({
44
plugin
@@ -13,7 +13,7 @@ const createSelector = ({
1313
let cache;
1414
const selector = {
1515
get: () => {
16-
const args = getReactishValues(items);
16+
const args = getSelectorValues(items);
1717
if (cache && isEqual(args, cache.args)) return cache.val;
1818
const val = selectorFunc(...args);
1919
cache = {

dist/esm/vanilla/state.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ const createState = ({
77
let set = newValue => {
88
const nextValue = typeof newValue === 'function' ? newValue(value) : newValue;
99
if (!Object.is(value, nextValue)) {
10+
const prevValue = value;
1011
value = nextValue;
11-
listeners.forEach(listener => listener());
12+
listeners.forEach(listener => listener(nextValue, prevValue));
1213
}
1314
};
1415
const subscribe = listener => {

dist/plugin/cjs/applyPlugin.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
'use strict';
22

3-
const applyPlugin = plugins => (reactish, config) => plugins.forEach(plugin => plugin?.(reactish, config));
3+
const applyPlugin = plugins => (selector, config) => plugins.forEach(plugin => plugin?.(selector, config));
44

55
exports.applyPlugin = applyPlugin;

dist/plugin/esm/applyPlugin.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
const applyPlugin = plugins => (reactish, config) => plugins.forEach(plugin => plugin?.(reactish, config));
1+
const applyPlugin = plugins => (selector, config) => plugins.forEach(plugin => plugin?.(selector, config));
22

33
export { applyPlugin };

0 commit comments

Comments
 (0)