use-memo-map 0.0.2-main.51adf56 → 0.0.2-main.79c04c1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/useMemoMap.js +4 -4
- package/lib/commonjs/useMemoMap.js.map +1 -1
- package/lib/esmodules/useMemoMap.js +4 -4
- package/lib/esmodules/useMemoMap.js.map +1 -1
- package/package.json +3 -2
- package/lib/commonjs/private/useValueRef.js +0 -25
- package/lib/commonjs/private/useValueRef.js.map +0 -1
- package/lib/esmodules/private/useValueRef.js +0 -17
- package/lib/esmodules/private/useValueRef.js.map +0 -1
- package/lib/types/private/useValueRef.d.ts +0 -4
|
@@ -11,8 +11,8 @@ var _freeze = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-sta
|
|
|
11
11
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
12
12
|
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
13
13
|
var _react = require("react");
|
|
14
|
+
var _useRefFrom = require("use-ref-from");
|
|
14
15
|
var _usePrevious = _interopRequireDefault(require("./private/usePrevious"));
|
|
15
|
-
var _useValueRef = _interopRequireDefault(require("./private/useValueRef"));
|
|
16
16
|
/**
|
|
17
17
|
* Creates a memoized mapping function.
|
|
18
18
|
*
|
|
@@ -27,9 +27,9 @@ function useMemoMap(mapper) {
|
|
|
27
27
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
28
28
|
_ref$itemEquality = _ref.itemEquality,
|
|
29
29
|
itemEquality = _ref$itemEquality === void 0 ? _is.default : _ref$itemEquality;
|
|
30
|
-
var itemEqualityRef = (0,
|
|
30
|
+
var itemEqualityRef = (0, _useRefFrom.useRefFrom)(itemEquality);
|
|
31
31
|
var lastCallsRef = (0, _react.useRef)([]);
|
|
32
|
-
var mapperRef = (0,
|
|
32
|
+
var mapperRef = (0, _useRefFrom.useRefFrom)(mapper);
|
|
33
33
|
var thisCalls = [];
|
|
34
34
|
if ((0, _usePrevious.default)(mapper) !== mapper) {
|
|
35
35
|
lastCallsRef.current = [];
|
|
@@ -37,7 +37,7 @@ function useMemoMap(mapper) {
|
|
|
37
37
|
(0, _react.useEffect)(function () {
|
|
38
38
|
lastCallsRef.current = (0, _freeze.default)(thisCalls);
|
|
39
39
|
});
|
|
40
|
-
var thisCallsRef = (0,
|
|
40
|
+
var thisCallsRef = (0, _useRefFrom.useRefFrom)(thisCalls);
|
|
41
41
|
return (0, _react.useCallback)(function (array) {
|
|
42
42
|
var itemEquality = itemEqualityRef.current;
|
|
43
43
|
var mapper = mapperRef.current;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMemoMap.js","names":["useMemoMap","mapper","itemEquality","itemEqualityRef","
|
|
1
|
+
{"version":3,"file":"useMemoMap.js","names":["useMemoMap","mapper","itemEquality","itemEqualityRef","useRefFrom","lastCallsRef","useRef","mapperRef","thisCalls","usePrevious","current","useEffect","thisCallsRef","useCallback","array","item","thisCall","entry","call","lastCall","result","push"],"sources":["../../src/useMemoMap.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { useRefFrom } from 'use-ref-from';\n\nimport usePrevious from './private/usePrevious';\n\ntype UseMemoMapOptions<T> = {\n itemEquality?: (this: readonly T[], x: T, y: T) => boolean;\n};\n\n/**\n * Creates a memoized mapping function.\n *\n * Unlike `React.useMemo`, the mapping function can be called multiple times in a single render loop.\n * All calls to the mapping function will be memoized.\n *\n * The memoized arguments and return values will survive next render.\n *\n * When the mapping function change, all memoized values will be invalidated.\n */\nexport default function useMemoMap<T = unknown, R = unknown>(\n mapper: (this: readonly T[], item: T, index: -1, array: readonly T[]) => R,\n { itemEquality = Object.is }: UseMemoMapOptions<T> = {}\n): (array: readonly T[]) => readonly R[] {\n const itemEqualityRef = useRefFrom(itemEquality);\n const lastCallsRef = useRef<readonly [T, R][]>([]);\n const mapperRef = useRefFrom(mapper);\n const thisCalls: [T, R][] = [];\n\n if (usePrevious(mapper) !== mapper) {\n lastCallsRef.current = [];\n }\n\n useEffect(() => {\n lastCallsRef.current = Object.freeze(thisCalls);\n });\n\n const thisCallsRef = useRefFrom(thisCalls);\n\n return useCallback<(array: readonly T[]) => readonly R[]>(\n (array: readonly T[]) => {\n const { current: itemEquality } = itemEqualityRef;\n const { current: mapper } = mapperRef;\n const { current: thisCalls } = thisCallsRef;\n\n return <readonly R[]>Object.freeze(\n array.map<R>(item => {\n const thisCall = thisCalls.find(entry => itemEquality.call(array, item, entry[0]));\n\n // If this call has memoized in the current render loop, use the memoized return value.\n if (thisCall) {\n return thisCall[1];\n }\n\n const lastCall = lastCallsRef.current.find(entry => itemEquality.call(array, item, entry[0]));\n const result = lastCall ? lastCall[1] : mapper.call(array, item, -1, array);\n\n thisCalls.push([item, result]);\n\n return result;\n })\n );\n },\n [itemEqualityRef, lastCallsRef, mapperRef, thisCallsRef]\n );\n}\n"],"mappings":";;;;;;;;;;;;AAAA;AACA;AAEA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,UAAU,CAChCC,MAA0E,EAEnC;EAAA,+EADc,CAAC,CAAC;IAAA,yBAArDC,YAAY;IAAZA,YAAY;EAEd,IAAMC,eAAe,GAAG,IAAAC,sBAAU,EAACF,YAAY,CAAC;EAChD,IAAMG,YAAY,GAAG,IAAAC,aAAM,EAAoB,EAAE,CAAC;EAClD,IAAMC,SAAS,GAAG,IAAAH,sBAAU,EAACH,MAAM,CAAC;EACpC,IAAMO,SAAmB,GAAG,EAAE;EAE9B,IAAI,IAAAC,oBAAW,EAACR,MAAM,CAAC,KAAKA,MAAM,EAAE;IAClCI,YAAY,CAACK,OAAO,GAAG,EAAE;EAC3B;EAEA,IAAAC,gBAAS,EAAC,YAAM;IACdN,YAAY,CAACK,OAAO,GAAG,qBAAcF,SAAS,CAAC;EACjD,CAAC,CAAC;EAEF,IAAMI,YAAY,GAAG,IAAAR,sBAAU,EAACI,SAAS,CAAC;EAE1C,OAAO,IAAAK,kBAAW,EAChB,UAACC,KAAmB,EAAK;IACvB,IAAiBZ,YAAY,GAAKC,eAAe,CAAzCO,OAAO;IACf,IAAiBT,MAAM,GAAKM,SAAS,CAA7BG,OAAO;IACf,IAAiBF,SAAS,GAAKI,YAAY,CAAnCF,OAAO;IAEf,OAAqB,qBACnB,kBAAAI,KAAK,OAALA,KAAK,EAAQ,UAAAC,IAAI,EAAI;MAAA;MACnB,IAAMC,QAAQ,GAAG,mBAAAR,SAAS,OAATA,SAAS,EAAM,UAAAS,KAAK;QAAA,OAAIf,YAAY,CAACgB,IAAI,CAACJ,KAAK,EAAEC,IAAI,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC;MAAA,EAAC;;MAElF;MACA,IAAID,QAAQ,EAAE;QACZ,OAAOA,QAAQ,CAAC,CAAC,CAAC;MACpB;MAEA,IAAMG,QAAQ,GAAG,8BAAAd,YAAY,CAACK,OAAO,iBAAM,UAAAO,KAAK;QAAA,OAAIf,YAAY,CAACgB,IAAI,CAACJ,KAAK,EAAEC,IAAI,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC;MAAA,EAAC;MAC7F,IAAMG,MAAM,GAAGD,QAAQ,GAAGA,QAAQ,CAAC,CAAC,CAAC,GAAGlB,MAAM,CAACiB,IAAI,CAACJ,KAAK,EAAEC,IAAI,EAAE,CAAC,CAAC,EAAED,KAAK,CAAC;MAE3EN,SAAS,CAACa,IAAI,CAAC,CAACN,IAAI,EAAEK,MAAM,CAAC,CAAC;MAE9B,OAAOA,MAAM;IACf,CAAC,CAAC,CACH;EACH,CAAC,EACD,CAACjB,eAAe,EAAEE,YAAY,EAAEE,SAAS,EAAEK,YAAY,CAAC,CACzD;AACH"}
|
|
@@ -3,8 +3,8 @@ import _Object$freeze from "@babel/runtime-corejs3/core-js-stable/object/freeze"
|
|
|
3
3
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
4
4
|
import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
|
|
5
5
|
import { useCallback, useEffect, useRef } from 'react';
|
|
6
|
+
import { useRefFrom } from 'use-ref-from';
|
|
6
7
|
import usePrevious from './private/usePrevious';
|
|
7
|
-
import useValueRef from './private/useValueRef';
|
|
8
8
|
/**
|
|
9
9
|
* Creates a memoized mapping function.
|
|
10
10
|
*
|
|
@@ -19,9 +19,9 @@ export default function useMemoMap(mapper) {
|
|
|
19
19
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
20
20
|
_ref$itemEquality = _ref.itemEquality,
|
|
21
21
|
itemEquality = _ref$itemEquality === void 0 ? _Object$is : _ref$itemEquality;
|
|
22
|
-
var itemEqualityRef =
|
|
22
|
+
var itemEqualityRef = useRefFrom(itemEquality);
|
|
23
23
|
var lastCallsRef = useRef([]);
|
|
24
|
-
var mapperRef =
|
|
24
|
+
var mapperRef = useRefFrom(mapper);
|
|
25
25
|
var thisCalls = [];
|
|
26
26
|
if (usePrevious(mapper) !== mapper) {
|
|
27
27
|
lastCallsRef.current = [];
|
|
@@ -29,7 +29,7 @@ export default function useMemoMap(mapper) {
|
|
|
29
29
|
useEffect(function () {
|
|
30
30
|
lastCallsRef.current = _Object$freeze(thisCalls);
|
|
31
31
|
});
|
|
32
|
-
var thisCallsRef =
|
|
32
|
+
var thisCallsRef = useRefFrom(thisCalls);
|
|
33
33
|
return useCallback(function (array) {
|
|
34
34
|
var itemEquality = itemEqualityRef.current;
|
|
35
35
|
var mapper = mapperRef.current;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMemoMap.js","names":["useCallback","useEffect","useRef","
|
|
1
|
+
{"version":3,"file":"useMemoMap.js","names":["useCallback","useEffect","useRef","useRefFrom","usePrevious","useMemoMap","mapper","itemEquality","itemEqualityRef","lastCallsRef","mapperRef","thisCalls","current","thisCallsRef","array","item","thisCall","entry","call","lastCall","result","push"],"sources":["../../src/useMemoMap.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { useRefFrom } from 'use-ref-from';\n\nimport usePrevious from './private/usePrevious';\n\ntype UseMemoMapOptions<T> = {\n itemEquality?: (this: readonly T[], x: T, y: T) => boolean;\n};\n\n/**\n * Creates a memoized mapping function.\n *\n * Unlike `React.useMemo`, the mapping function can be called multiple times in a single render loop.\n * All calls to the mapping function will be memoized.\n *\n * The memoized arguments and return values will survive next render.\n *\n * When the mapping function change, all memoized values will be invalidated.\n */\nexport default function useMemoMap<T = unknown, R = unknown>(\n mapper: (this: readonly T[], item: T, index: -1, array: readonly T[]) => R,\n { itemEquality = Object.is }: UseMemoMapOptions<T> = {}\n): (array: readonly T[]) => readonly R[] {\n const itemEqualityRef = useRefFrom(itemEquality);\n const lastCallsRef = useRef<readonly [T, R][]>([]);\n const mapperRef = useRefFrom(mapper);\n const thisCalls: [T, R][] = [];\n\n if (usePrevious(mapper) !== mapper) {\n lastCallsRef.current = [];\n }\n\n useEffect(() => {\n lastCallsRef.current = Object.freeze(thisCalls);\n });\n\n const thisCallsRef = useRefFrom(thisCalls);\n\n return useCallback<(array: readonly T[]) => readonly R[]>(\n (array: readonly T[]) => {\n const { current: itemEquality } = itemEqualityRef;\n const { current: mapper } = mapperRef;\n const { current: thisCalls } = thisCallsRef;\n\n return <readonly R[]>Object.freeze(\n array.map<R>(item => {\n const thisCall = thisCalls.find(entry => itemEquality.call(array, item, entry[0]));\n\n // If this call has memoized in the current render loop, use the memoized return value.\n if (thisCall) {\n return thisCall[1];\n }\n\n const lastCall = lastCallsRef.current.find(entry => itemEquality.call(array, item, entry[0]));\n const result = lastCall ? lastCall[1] : mapper.call(array, item, -1, array);\n\n thisCalls.push([item, result]);\n\n return result;\n })\n );\n },\n [itemEqualityRef, lastCallsRef, mapperRef, thisCallsRef]\n );\n}\n"],"mappings":";;;;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACtD,SAASC,UAAU,QAAQ,cAAc;AAEzC,OAAOC,WAAW,MAAM,uBAAuB;AAM/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,UAAU,CAChCC,MAA0E,EAEnC;EAAA,+EADc,CAAC,CAAC;IAAA,yBAArDC,YAAY;IAAZA,YAAY;EAEd,IAAMC,eAAe,GAAGL,UAAU,CAACI,YAAY,CAAC;EAChD,IAAME,YAAY,GAAGP,MAAM,CAAoB,EAAE,CAAC;EAClD,IAAMQ,SAAS,GAAGP,UAAU,CAACG,MAAM,CAAC;EACpC,IAAMK,SAAmB,GAAG,EAAE;EAE9B,IAAIP,WAAW,CAACE,MAAM,CAAC,KAAKA,MAAM,EAAE;IAClCG,YAAY,CAACG,OAAO,GAAG,EAAE;EAC3B;EAEAX,SAAS,CAAC,YAAM;IACdQ,YAAY,CAACG,OAAO,GAAG,eAAcD,SAAS,CAAC;EACjD,CAAC,CAAC;EAEF,IAAME,YAAY,GAAGV,UAAU,CAACQ,SAAS,CAAC;EAE1C,OAAOX,WAAW,CAChB,UAACc,KAAmB,EAAK;IACvB,IAAiBP,YAAY,GAAKC,eAAe,CAAzCI,OAAO;IACf,IAAiBN,MAAM,GAAKI,SAAS,CAA7BE,OAAO;IACf,IAAiBD,SAAS,GAAKE,YAAY,CAAnCD,OAAO;IAEf,OAAqB,eACnB,qBAAAE,KAAK,OAALA,KAAK,EAAQ,UAAAC,IAAI,EAAI;MAAA;MACnB,IAAMC,QAAQ,GAAG,sBAAAL,SAAS,OAATA,SAAS,EAAM,UAAAM,KAAK;QAAA,OAAIV,YAAY,CAACW,IAAI,CAACJ,KAAK,EAAEC,IAAI,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC;MAAA,EAAC;;MAElF;MACA,IAAID,QAAQ,EAAE;QACZ,OAAOA,QAAQ,CAAC,CAAC,CAAC;MACpB;MAEA,IAAMG,QAAQ,GAAG,iCAAAV,YAAY,CAACG,OAAO,iBAAM,UAAAK,KAAK;QAAA,OAAIV,YAAY,CAACW,IAAI,CAACJ,KAAK,EAAEC,IAAI,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC;MAAA,EAAC;MAC7F,IAAMG,MAAM,GAAGD,QAAQ,GAAGA,QAAQ,CAAC,CAAC,CAAC,GAAGb,MAAM,CAACY,IAAI,CAACJ,KAAK,EAAEC,IAAI,EAAE,CAAC,CAAC,EAAED,KAAK,CAAC;MAE3EH,SAAS,CAACU,IAAI,CAAC,CAACN,IAAI,EAAEK,MAAM,CAAC,CAAC;MAE9B,OAAOA,MAAM;IACf,CAAC,CAAC,CACH;EACH,CAAC,EACD,CAACZ,eAAe,EAAEC,YAAY,EAAEC,SAAS,EAAEG,YAAY,CAAC,CACzD;AACH"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "use-memo-map",
|
|
3
|
-
"version": "0.0.2-main.
|
|
3
|
+
"version": "0.0.2-main.79c04c1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"files": [
|
|
6
6
|
"./lib/*"
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"react": ">=16.9.0"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@babel/runtime-corejs3": "^7.20.7"
|
|
63
|
+
"@babel/runtime-corejs3": "^7.20.7",
|
|
64
|
+
"use-ref-from": "^0.0.1"
|
|
64
65
|
}
|
|
65
66
|
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
5
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = useValueRef;
|
|
9
|
-
var _create = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/create"));
|
|
10
|
-
var _react = require("react");
|
|
11
|
-
function useValueRef(value) {
|
|
12
|
-
var ref = (0, _react.useRef)();
|
|
13
|
-
var readOnlyRef = (0, _react.useMemo)(function () {
|
|
14
|
-
return (0, _create.default)({}, {
|
|
15
|
-
current: {
|
|
16
|
-
get: function get() {
|
|
17
|
-
return ref.current;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}, [ref]);
|
|
22
|
-
ref.current = value;
|
|
23
|
-
return readOnlyRef;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=useValueRef.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useValueRef.js","names":["useValueRef","value","ref","useRef","readOnlyRef","useMemo","current","get"],"sources":["../../../src/private/useValueRef.ts"],"sourcesContent":["import { useMemo, useRef } from 'react';\nimport type { RefObject } from 'react';\n\nexport default function useValueRef<T>(value: T): RefObject<T> & { current: T } {\n const ref = useRef<T>();\n\n const readOnlyRef = useMemo(() => Object.create({}, { current: { get: () => ref.current } }), [ref]);\n\n ref.current = value;\n\n return readOnlyRef;\n}\n"],"mappings":";;;;;;;;;AAAA;AAGe,SAASA,WAAW,CAAIC,KAAQ,EAAiC;EAC9E,IAAMC,GAAG,GAAG,IAAAC,aAAM,GAAK;EAEvB,IAAMC,WAAW,GAAG,IAAAC,cAAO,EAAC;IAAA,OAAM,qBAAc,CAAC,CAAC,EAAE;MAAEC,OAAO,EAAE;QAAEC,GAAG,EAAE;UAAA,OAAML,GAAG,CAACI,OAAO;QAAA;MAAC;IAAE,CAAC,CAAC;EAAA,GAAE,CAACJ,GAAG,CAAC,CAAC;EAEpGA,GAAG,CAACI,OAAO,GAAGL,KAAK;EAEnB,OAAOG,WAAW;AACpB"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import _Object$create from "@babel/runtime-corejs3/core-js-stable/object/create";
|
|
2
|
-
import { useMemo, useRef } from 'react';
|
|
3
|
-
export default function useValueRef(value) {
|
|
4
|
-
var ref = useRef();
|
|
5
|
-
var readOnlyRef = useMemo(function () {
|
|
6
|
-
return _Object$create({}, {
|
|
7
|
-
current: {
|
|
8
|
-
get: function get() {
|
|
9
|
-
return ref.current;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
}, [ref]);
|
|
14
|
-
ref.current = value;
|
|
15
|
-
return readOnlyRef;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=useValueRef.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useValueRef.js","names":["useMemo","useRef","useValueRef","value","ref","readOnlyRef","current","get"],"sources":["../../../src/private/useValueRef.ts"],"sourcesContent":["import { useMemo, useRef } from 'react';\nimport type { RefObject } from 'react';\n\nexport default function useValueRef<T>(value: T): RefObject<T> & { current: T } {\n const ref = useRef<T>();\n\n const readOnlyRef = useMemo(() => Object.create({}, { current: { get: () => ref.current } }), [ref]);\n\n ref.current = value;\n\n return readOnlyRef;\n}\n"],"mappings":";AAAA,SAASA,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAGvC,eAAe,SAASC,WAAW,CAAIC,KAAQ,EAAiC;EAC9E,IAAMC,GAAG,GAAGH,MAAM,EAAK;EAEvB,IAAMI,WAAW,GAAGL,OAAO,CAAC;IAAA,OAAM,eAAc,CAAC,CAAC,EAAE;MAAEM,OAAO,EAAE;QAAEC,GAAG,EAAE;UAAA,OAAMH,GAAG,CAACE,OAAO;QAAA;MAAC;IAAE,CAAC,CAAC;EAAA,GAAE,CAACF,GAAG,CAAC,CAAC;EAEpGA,GAAG,CAACE,OAAO,GAAGH,KAAK;EAEnB,OAAOE,WAAW;AACpB"}
|