1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports["default"] = memoize;
|
7 |
|
8 | // port from @deck.gl/core
|
9 | function isEqual(a, b) {
|
10 | if (a === b) {
|
11 | return true;
|
12 | }
|
13 |
|
14 | if (Array.isArray(a)) {
|
15 | // Special treatment for arrays: compare 1-level deep
|
16 | // This is to support equality of matrix/coordinate props
|
17 | var len = a.length;
|
18 |
|
19 | if (!b || b.length !== len) {
|
20 | return false;
|
21 | }
|
22 |
|
23 | for (var i = 0; i < len; i++) {
|
24 | if (a[i] !== b[i]) {
|
25 | return false;
|
26 | }
|
27 | }
|
28 |
|
29 | return true;
|
30 | }
|
31 |
|
32 | return false;
|
33 | }
|
34 | /**
|
35 | * Speed up consecutive function calls by caching the result of calls with identical input
|
36 | * https://en.wikipedia.org/wiki/Memoization
|
37 | * @param {function} compute - the function to be memoized
|
38 | */
|
39 |
|
40 |
|
41 | function memoize(compute) {
|
42 | var cachedArgs = {};
|
43 | var cachedResult;
|
44 | return function (args) {
|
45 | for (var key in args) {
|
46 | if (!isEqual(args[key], cachedArgs[key])) {
|
47 | cachedResult = compute(args);
|
48 | cachedArgs = args;
|
49 | break;
|
50 | }
|
51 | }
|
52 |
|
53 | return cachedResult;
|
54 | };
|
55 | }
|
56 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZW1vaXplLmpzIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJhIiwiYiIsIkFycmF5IiwiaXNBcnJheSIsImxlbiIsImxlbmd0aCIsImkiLCJtZW1vaXplIiwiY29tcHV0ZSIsImNhY2hlZEFyZ3MiLCJjYWNoZWRSZXN1bHQiLCJhcmdzIiwia2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7QUFFQSxTQUFTQSxPQUFULENBQWlCQyxDQUFqQixFQUF5QkMsQ0FBekIsRUFBaUM7QUFDL0IsTUFBSUQsQ0FBQyxLQUFLQyxDQUFWLEVBQWE7QUFDWCxXQUFPLElBQVA7QUFDRDs7QUFDRCxNQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsQ0FBZCxDQUFKLEVBQXNCO0FBQ3BCO0FBQ0E7QUFDQSxRQUFNSSxHQUFHLEdBQUdKLENBQUMsQ0FBQ0ssTUFBZDs7QUFDQSxRQUFJLENBQUNKLENBQUQsSUFBTUEsQ0FBQyxDQUFDSSxNQUFGLEtBQWFELEdBQXZCLEVBQTRCO0FBQzFCLGFBQU8sS0FBUDtBQUNEOztBQUVELFNBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsR0FBcEIsRUFBeUJFLENBQUMsRUFBMUIsRUFBOEI7QUFDNUIsVUFBSU4sQ0FBQyxDQUFDTSxDQUFELENBQUQsS0FBU0wsQ0FBQyxDQUFDSyxDQUFELENBQWQsRUFBbUI7QUFDakIsZUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPLElBQVA7QUFDRDs7QUFDRCxTQUFPLEtBQVA7QUFDRDtBQUVEOzs7Ozs7O0FBS2UsU0FBU0MsT0FBVCxDQUFpQkMsT0FBakIsRUFBb0M7QUFDakQsTUFBSUMsVUFBVSxHQUFHLEVBQWpCO0FBQ0EsTUFBSUMsWUFBSjtBQUVBLFNBQU8sVUFBQ0MsSUFBRCxFQUFlO0FBQ3BCLFNBQUssSUFBTUMsR0FBWCxJQUFrQkQsSUFBbEIsRUFBd0I7QUFDdEIsVUFBSSxDQUFDWixPQUFPLENBQUNZLElBQUksQ0FBQ0MsR0FBRCxDQUFMLEVBQVlILFVBQVUsQ0FBQ0csR0FBRCxDQUF0QixDQUFaLEVBQTBDO0FBQ3hDRixRQUFBQSxZQUFZLEdBQUdGLE9BQU8sQ0FBQ0csSUFBRCxDQUF0QjtBQUNBRixRQUFBQSxVQUFVLEdBQUdFLElBQWI7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT0QsWUFBUDtBQUNELEdBVEQ7QUFVRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vLyBwb3J0IGZyb20gQGRlY2suZ2wvY29yZVxuXG5mdW5jdGlvbiBpc0VxdWFsKGE6IGFueSwgYjogYW55KSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAvLyBTcGVjaWFsIHRyZWF0bWVudCBmb3IgYXJyYXlzOiBjb21wYXJlIDEtbGV2ZWwgZGVlcFxuICAgIC8vIFRoaXMgaXMgdG8gc3VwcG9ydCBlcXVhbGl0eSBvZiBtYXRyaXgvY29vcmRpbmF0ZSBwcm9wc1xuICAgIGNvbnN0IGxlbiA9IGEubGVuZ3RoO1xuICAgIGlmICghYiB8fCBiLmxlbmd0aCAhPT0gbGVuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogU3BlZWQgdXAgY29uc2VjdXRpdmUgZnVuY3Rpb24gY2FsbHMgYnkgY2FjaGluZyB0aGUgcmVzdWx0IG9mIGNhbGxzIHdpdGggaWRlbnRpY2FsIGlucHV0XG4gKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZW1vaXphdGlvblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcHV0ZSAtIHRoZSBmdW5jdGlvbiB0byBiZSBtZW1vaXplZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZW1vaXplKGNvbXB1dGU6IEZ1bmN0aW9uKSB7XG4gIGxldCBjYWNoZWRBcmdzID0ge307XG4gIGxldCBjYWNoZWRSZXN1bHQ7XG5cbiAgcmV0dXJuIChhcmdzOiBhbnkpID0+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhcmdzKSB7XG4gICAgICBpZiAoIWlzRXF1YWwoYXJnc1trZXldLCBjYWNoZWRBcmdzW2tleV0pKSB7XG4gICAgICAgIGNhY2hlZFJlc3VsdCA9IGNvbXB1dGUoYXJncyk7XG4gICAgICAgIGNhY2hlZEFyZ3MgPSBhcmdzO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfTtcbn1cbiJdfQ== |
\ | No newline at end of file |