@fluentui-react-native/framework-base 0.2.1 → 0.3.0
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/CHANGELOG.json +1 -1
- package/CHANGELOG.md +35 -2
- package/README.md +18 -1
- package/babel.config.js +1 -1
- package/jsx-runtime.js +1 -0
- package/lib/component-patterns/directComponent.d.ts +7 -0
- package/lib/component-patterns/directComponent.d.ts.map +1 -0
- package/lib/component-patterns/directComponent.js +8 -0
- package/lib/component-patterns/directComponent.js.map +1 -0
- package/lib/component-patterns/extract.d.ts +22 -0
- package/lib/component-patterns/extract.d.ts.map +1 -0
- package/lib/component-patterns/extract.js +25 -0
- package/lib/component-patterns/extract.js.map +1 -0
- package/lib/component-patterns/phasedComponent.d.ts +18 -0
- package/lib/component-patterns/phasedComponent.d.ts.map +1 -0
- package/lib/component-patterns/phasedComponent.js +51 -0
- package/lib/component-patterns/phasedComponent.js.map +1 -0
- package/lib/component-patterns/render.d.ts +9 -3
- package/lib/component-patterns/render.d.ts.map +1 -1
- package/lib/component-patterns/render.js +39 -32
- package/lib/component-patterns/render.js.map +1 -1
- package/lib/component-patterns/render.types.d.ts +60 -34
- package/lib/component-patterns/render.types.d.ts.map +1 -1
- package/lib/component-patterns/render.types.js +1 -1
- package/lib/component-patterns/stagedComponent.d.ts +3 -8
- package/lib/component-patterns/stagedComponent.d.ts.map +1 -1
- package/lib/component-patterns/stagedComponent.js +10 -27
- package/lib/component-patterns/stagedComponent.js.map +1 -1
- package/lib/component-patterns/withSlots.d.ts +6 -2
- package/lib/component-patterns/withSlots.d.ts.map +1 -1
- package/lib/component-patterns/withSlots.js +3 -3
- package/lib/component-patterns/withSlots.js.map +1 -1
- package/lib/immutable-merge/Merge.d.ts +6 -3
- package/lib/immutable-merge/Merge.js +79 -83
- package/lib/immutable-merge/Merge.js.map +1 -1
- package/lib/immutable-merge/Merge.test.d.ts +1 -1
- package/lib/immutable-merge/Merge.test.js +231 -219
- package/lib/immutable-merge/Merge.test.js.map +1 -1
- package/lib/index.d.ts +33 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +13 -4
- package/lib/index.js.map +1 -1
- package/lib/jsx-namespace.d.ts +65 -0
- package/lib/jsx-namespace.d.ts.map +1 -0
- package/lib/jsx-namespace.js +2 -0
- package/lib/jsx-namespace.js.map +1 -0
- package/lib/jsx-runtime.d.ts +6 -4
- package/lib/jsx-runtime.d.ts.map +1 -1
- package/lib/jsx-runtime.js +9 -7
- package/lib/jsx-runtime.js.map +1 -1
- package/lib/memo-cache/getCacheEntry.d.ts +13 -13
- package/lib/memo-cache/getCacheEntry.js +20 -22
- package/lib/memo-cache/getCacheEntry.js.map +1 -1
- package/lib/memo-cache/getCacheEntry.test.d.ts +1 -1
- package/lib/memo-cache/getCacheEntry.test.js +90 -90
- package/lib/memo-cache/getCacheEntry.test.js.map +1 -1
- package/lib/memo-cache/getMemoCache.d.ts +1 -1
- package/lib/memo-cache/getMemoCache.js +11 -11
- package/lib/memo-cache/getMemoCache.js.map +1 -1
- package/lib/memo-cache/getMemoCache.test.d.ts +1 -1
- package/lib/memo-cache/getMemoCache.test.js +73 -73
- package/lib/memo-cache/getMemoCache.test.js.map +1 -1
- package/lib/memo-cache/memoize.d.ts +1 -1
- package/lib/memo-cache/memoize.js +9 -9
- package/lib/memo-cache/memoize.js.map +1 -1
- package/lib/memo-cache/memoize.test.d.ts +1 -1
- package/lib/memo-cache/memoize.test.js +36 -38
- package/lib/memo-cache/memoize.test.js.map +1 -1
- package/lib/merge-props/index.d.ts +1 -1
- package/lib/merge-props/index.js +1 -1
- package/lib/merge-props/mergeProps.d.ts +1 -1
- package/lib/merge-props/mergeProps.js +4 -4
- package/lib/merge-props/mergeProps.js.map +1 -1
- package/lib/merge-props/mergeStyles.d.ts +33 -4
- package/lib/merge-props/mergeStyles.d.ts.map +1 -1
- package/lib/merge-props/mergeStyles.js +16 -17
- package/lib/merge-props/mergeStyles.js.map +1 -1
- package/lib/merge-props/mergeStyles.test.d.ts +1 -1
- package/lib/merge-props/mergeStyles.test.js +75 -75
- package/lib/merge-props/mergeStyles.test.js.map +1 -1
- package/lib/merge-props/mergeStyles.types.d.ts +4 -4
- package/lib/merge-props/mergeStyles.types.d.ts.map +1 -1
- package/lib/merge-props/mergeStyles.types.js +1 -1
- package/lib/utilities/filterProps.d.ts +3 -0
- package/lib/utilities/filterProps.d.ts.map +1 -0
- package/lib/utilities/filterProps.js +12 -0
- package/lib/utilities/filterProps.js.map +1 -0
- package/lib-commonjs/component-patterns/directComponent.d.ts +7 -0
- package/lib-commonjs/component-patterns/directComponent.d.ts.map +1 -0
- package/lib-commonjs/component-patterns/directComponent.js +11 -0
- package/lib-commonjs/component-patterns/directComponent.js.map +1 -0
- package/lib-commonjs/component-patterns/extract.d.ts +22 -0
- package/lib-commonjs/component-patterns/extract.d.ts.map +1 -0
- package/lib-commonjs/component-patterns/extract.js +30 -0
- package/lib-commonjs/component-patterns/extract.js.map +1 -0
- package/lib-commonjs/component-patterns/phasedComponent.d.ts +18 -0
- package/lib-commonjs/component-patterns/phasedComponent.d.ts.map +1 -0
- package/lib-commonjs/component-patterns/phasedComponent.js +60 -0
- package/lib-commonjs/component-patterns/phasedComponent.js.map +1 -0
- package/lib-commonjs/component-patterns/render.d.ts +9 -3
- package/lib-commonjs/component-patterns/render.d.ts.map +1 -1
- package/lib-commonjs/component-patterns/render.js +101 -64
- package/lib-commonjs/component-patterns/render.js.map +1 -1
- package/lib-commonjs/component-patterns/render.types.d.ts +60 -34
- package/lib-commonjs/component-patterns/render.types.d.ts.map +1 -1
- package/lib-commonjs/component-patterns/render.types.js +3 -3
- package/lib-commonjs/component-patterns/stagedComponent.d.ts +3 -8
- package/lib-commonjs/component-patterns/stagedComponent.d.ts.map +1 -1
- package/lib-commonjs/component-patterns/stagedComponent.js +64 -56
- package/lib-commonjs/component-patterns/stagedComponent.js.map +1 -1
- package/lib-commonjs/component-patterns/withSlots.d.ts +6 -2
- package/lib-commonjs/component-patterns/withSlots.d.ts.map +1 -1
- package/lib-commonjs/component-patterns/withSlots.js +7 -8
- package/lib-commonjs/component-patterns/withSlots.js.map +1 -1
- package/lib-commonjs/immutable-merge/Merge.d.ts +6 -3
- package/lib-commonjs/immutable-merge/Merge.js +85 -90
- package/lib-commonjs/immutable-merge/Merge.js.map +1 -1
- package/lib-commonjs/immutable-merge/Merge.test.d.ts +1 -1
- package/lib-commonjs/immutable-merge/Merge.test.js +234 -222
- package/lib-commonjs/immutable-merge/Merge.test.js.map +1 -1
- package/lib-commonjs/index.d.ts +33 -5
- package/lib-commonjs/index.d.ts.map +1 -1
- package/lib-commonjs/index.js +184 -31
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/jsx-namespace.d.ts +65 -0
- package/lib-commonjs/jsx-namespace.d.ts.map +1 -0
- package/lib-commonjs/jsx-namespace.js +3 -0
- package/lib-commonjs/jsx-namespace.js.map +1 -0
- package/lib-commonjs/jsx-runtime.d.ts +6 -4
- package/lib-commonjs/jsx-runtime.d.ts.map +1 -1
- package/lib-commonjs/jsx-runtime.js +69 -34
- package/lib-commonjs/jsx-runtime.js.map +1 -1
- package/lib-commonjs/memo-cache/getCacheEntry.d.ts +13 -13
- package/lib-commonjs/memo-cache/getCacheEntry.js +23 -26
- package/lib-commonjs/memo-cache/getCacheEntry.js.map +1 -1
- package/lib-commonjs/memo-cache/getCacheEntry.test.d.ts +1 -1
- package/lib-commonjs/memo-cache/getCacheEntry.test.js +93 -93
- package/lib-commonjs/memo-cache/getCacheEntry.test.js.map +1 -1
- package/lib-commonjs/memo-cache/getMemoCache.d.ts +1 -1
- package/lib-commonjs/memo-cache/getMemoCache.js +16 -17
- package/lib-commonjs/memo-cache/getMemoCache.js.map +1 -1
- package/lib-commonjs/memo-cache/getMemoCache.test.d.ts +1 -1
- package/lib-commonjs/memo-cache/getMemoCache.test.js +76 -76
- package/lib-commonjs/memo-cache/getMemoCache.test.js.map +1 -1
- package/lib-commonjs/memo-cache/memoize.d.ts +1 -1
- package/lib-commonjs/memo-cache/memoize.js +13 -14
- package/lib-commonjs/memo-cache/memoize.js.map +1 -1
- package/lib-commonjs/memo-cache/memoize.test.d.ts +1 -1
- package/lib-commonjs/memo-cache/memoize.test.js +39 -41
- package/lib-commonjs/memo-cache/memoize.test.js.map +1 -1
- package/lib-commonjs/merge-props/index.d.ts +1 -1
- package/lib-commonjs/merge-props/index.js +17 -7
- package/lib-commonjs/merge-props/index.js.map +1 -1
- package/lib-commonjs/merge-props/mergeProps.d.ts +1 -1
- package/lib-commonjs/merge-props/mergeProps.js +9 -10
- package/lib-commonjs/merge-props/mergeProps.js.map +1 -1
- package/lib-commonjs/merge-props/mergeStyles.d.ts +33 -4
- package/lib-commonjs/merge-props/mergeStyles.d.ts.map +1 -1
- package/lib-commonjs/merge-props/mergeStyles.js +23 -25
- package/lib-commonjs/merge-props/mergeStyles.js.map +1 -1
- package/lib-commonjs/merge-props/mergeStyles.test.d.ts +1 -1
- package/lib-commonjs/merge-props/mergeStyles.test.js +78 -78
- package/lib-commonjs/merge-props/mergeStyles.test.js.map +1 -1
- package/lib-commonjs/merge-props/mergeStyles.types.d.ts +4 -4
- package/lib-commonjs/merge-props/mergeStyles.types.d.ts.map +1 -1
- package/lib-commonjs/merge-props/mergeStyles.types.js +3 -3
- package/lib-commonjs/utilities/filterProps.d.ts +3 -0
- package/lib-commonjs/utilities/filterProps.d.ts.map +1 -0
- package/lib-commonjs/utilities/filterProps.js +15 -0
- package/lib-commonjs/utilities/filterProps.js.map +1 -0
- package/package.json +48 -26
- package/src/component-patterns/README.md +53 -16
- package/src/component-patterns/directComponent.ts +9 -0
- package/src/component-patterns/extract.ts +32 -0
- package/src/component-patterns/phasedComponent.ts +54 -0
- package/src/component-patterns/render.ts +21 -13
- package/src/component-patterns/render.types.ts +55 -30
- package/src/component-patterns/stagedComponent.ts +24 -0
- package/src/immutable-merge/Merge.test.ts +5 -1
- package/src/index.ts +27 -7
- package/src/jsx-namespace.ts +83 -0
- package/src/jsx-runtime.ts +8 -4
- package/src/memo-cache/README.md +1 -1
- package/src/merge-props/mergeStyles.ts +52 -4
- package/src/merge-props/mergeStyles.types.ts +2 -2
- package/src/utilities/filterProps.ts +14 -0
- package/src/component-patterns/stagedComponent.tsx +0 -45
|
@@ -1,78 +1,78 @@
|
|
|
1
1
|
import { getMemoCache, getTypedMemoCache } from './getMemoCache';
|
|
2
2
|
function getObjFactory() {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
const obj = { id: 0 };
|
|
4
|
+
return () => ({
|
|
5
|
+
id: obj.id++,
|
|
6
|
+
});
|
|
7
7
|
}
|
|
8
8
|
describe('getMemoCache unit tests', () => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
9
|
+
test('memoValue with null function', () => {
|
|
10
|
+
const memoValue = getMemoCache();
|
|
11
|
+
const [val] = memoValue(null, ['foo', 'bar']);
|
|
12
|
+
expect(val).toBeNull();
|
|
13
|
+
});
|
|
14
|
+
test('memoValue with undefined', () => {
|
|
15
|
+
const memoValue = getMemoCache();
|
|
16
|
+
const [val] = memoValue(undefined, ['foo', 'bar']);
|
|
17
|
+
expect(val).toBeUndefined();
|
|
18
|
+
});
|
|
19
|
+
test('memoValue with string', () => {
|
|
20
|
+
const memoValue = getMemoCache();
|
|
21
|
+
const [val] = memoValue('foo', ['bar', 'baz']);
|
|
22
|
+
expect(val).toEqual('foo');
|
|
23
|
+
});
|
|
24
|
+
test('memoValue with object', () => {
|
|
25
|
+
const memoValue = getMemoCache();
|
|
26
|
+
const obj = { foo: 'hello', bar: 2, baz: 'you' };
|
|
27
|
+
const [val] = memoValue(obj, ['hello', obj]);
|
|
28
|
+
expect(val).toBe(obj);
|
|
29
|
+
});
|
|
30
|
+
test('memoValue executes function', () => {
|
|
31
|
+
const memoValue = getTypedMemoCache();
|
|
32
|
+
const fn = getObjFactory();
|
|
33
|
+
const v1 = fn();
|
|
34
|
+
const [v2] = memoValue(fn, ['bar', 'baz']);
|
|
35
|
+
expect(v1).not.toBe(v2);
|
|
36
|
+
expect(v1.id).not.toEqual(v2.id);
|
|
37
|
+
});
|
|
38
|
+
test('memo calls function only once', () => {
|
|
39
|
+
const memoValue = getMemoCache();
|
|
40
|
+
const fn = getObjFactory();
|
|
41
|
+
const keys = ['hello', 'world'];
|
|
42
|
+
const [o1] = memoValue(fn, keys);
|
|
43
|
+
const [o2] = memoValue(fn, keys);
|
|
44
|
+
expect(o2).toBe(o1);
|
|
45
|
+
});
|
|
46
|
+
test('memo calls function only once for empty inputs', () => {
|
|
47
|
+
const memoValue = getMemoCache();
|
|
48
|
+
const fn = getObjFactory();
|
|
49
|
+
const [o1] = memoValue(fn, undefined);
|
|
50
|
+
const [o2] = memoValue(fn, undefined);
|
|
51
|
+
expect(o2).toBe(o1);
|
|
52
|
+
});
|
|
53
|
+
test('sub caches are separate', () => {
|
|
54
|
+
const memoValue = getMemoCache();
|
|
55
|
+
const base1 = {};
|
|
56
|
+
const base2 = {};
|
|
57
|
+
const [, getCache1] = memoValue(null, [base1]);
|
|
58
|
+
const [, getCache2] = memoValue(null, [base2]);
|
|
59
|
+
const objKey = {};
|
|
60
|
+
const fn = getObjFactory();
|
|
61
|
+
const [o1] = getCache1(fn, [objKey]);
|
|
62
|
+
const [o2] = getCache2(fn, [objKey]);
|
|
63
|
+
const [o3] = getCache2(fn, [objKey]);
|
|
64
|
+
expect(o1).not.toBe(o2);
|
|
65
|
+
expect(o3).toBe(o2);
|
|
66
|
+
});
|
|
67
|
+
test('sub caches work on branches', () => {
|
|
68
|
+
const memoValue = getMemoCache();
|
|
69
|
+
const keys1 = [{}, 2, 'hello'];
|
|
70
|
+
const keys2 = [{}, true];
|
|
71
|
+
const fn = getObjFactory();
|
|
72
|
+
const [, getMemoValue] = memoValue(null, keys1);
|
|
73
|
+
const [val1] = getMemoValue(fn, keys2);
|
|
74
|
+
const [val2] = memoValue(fn, [...keys1, ...keys2]);
|
|
75
|
+
expect(val2).toBe(val1);
|
|
76
|
+
});
|
|
77
77
|
});
|
|
78
|
-
//# sourceMappingURL=getMemoCache.test.js.map
|
|
78
|
+
//# sourceMappingURL=getMemoCache.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMemoCache.test.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMjE,SAAS,aAAa;
|
|
1
|
+
{"version":3,"file":"getMemoCache.test.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,13 @@ import { getMemoCache } from './getMemoCache';
|
|
|
5
5
|
*/
|
|
6
6
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
7
7
|
export function memoize(fn) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
// create a unique cache that will be captured in the closure
|
|
9
|
+
const cache = getMemoCache();
|
|
10
|
+
// create the closure which wraps the calling function
|
|
11
|
+
const closure = (...args) => {
|
|
12
|
+
return cache(() => fn(...(args || [])), args)[0];
|
|
13
|
+
};
|
|
14
|
+
// now return that closure strongly typed as the function.
|
|
15
|
+
return closure;
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=memoize.js.map
|
|
17
|
+
//# sourceMappingURL=memoize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,sEAAsE;AACtE,MAAM,UAAU,OAAO,CAAqB,EAAK;
|
|
1
|
+
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,sEAAsE;AACtE,MAAM,UAAU,OAAO,CAAqB,EAAK,EAAK;IACpD,6DAA6D;IAC7D,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,sDAAsD;IACtD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAAA,CAClD,CAAC;IACF,0DAA0D;IAC1D,OAAO,OAAuB,CAAC;AAAA,CAChC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=memoize.test.d.ts.map
|
|
2
|
+
//# sourceMappingURL=memoize.test.d.ts.map
|
|
@@ -1,45 +1,43 @@
|
|
|
1
1
|
import { memoize } from './memoize';
|
|
2
2
|
let _globalCalls = 0;
|
|
3
3
|
describe('Memoize unit tests', () => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
});
|
|
8
|
-
const result1 = noArgsFn();
|
|
9
|
-
expect(noArgsFn()).toEqual(result1);
|
|
4
|
+
test('simple function no args', () => {
|
|
5
|
+
const noArgsFn = memoize(() => {
|
|
6
|
+
return ++_globalCalls;
|
|
10
7
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
incrementFn(3);
|
|
19
|
-
expect(_globalCalls).toEqual(calls);
|
|
20
|
-
incrementFn(4);
|
|
21
|
-
expect(_globalCalls).toEqual(calls + 1);
|
|
22
|
-
incrementFn(4);
|
|
23
|
-
expect(_globalCalls).toEqual(calls + 1);
|
|
8
|
+
const result1 = noArgsFn();
|
|
9
|
+
expect(noArgsFn()).toEqual(result1);
|
|
10
|
+
});
|
|
11
|
+
test('simple function 1 arg', () => {
|
|
12
|
+
const incrementFn = memoize((bump) => {
|
|
13
|
+
++_globalCalls;
|
|
14
|
+
return bump + 1;
|
|
24
15
|
});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
16
|
+
expect(incrementFn(3)).toEqual(4);
|
|
17
|
+
const calls = _globalCalls;
|
|
18
|
+
incrementFn(3);
|
|
19
|
+
expect(_globalCalls).toEqual(calls);
|
|
20
|
+
incrementFn(4);
|
|
21
|
+
expect(_globalCalls).toEqual(calls + 1);
|
|
22
|
+
incrementFn(4);
|
|
23
|
+
expect(_globalCalls).toEqual(calls + 1);
|
|
24
|
+
});
|
|
25
|
+
test('void function 2 args', () => {
|
|
26
|
+
const voidFn = memoize((a, b) => {
|
|
27
|
+
if (a) {
|
|
28
|
+
++_globalCalls;
|
|
29
|
+
} else if (b) {
|
|
30
|
+
++_globalCalls;
|
|
31
|
+
} else {
|
|
32
|
+
++_globalCalls;
|
|
33
|
+
}
|
|
43
34
|
});
|
|
35
|
+
voidFn(3, 'hello');
|
|
36
|
+
const calls = _globalCalls;
|
|
37
|
+
voidFn(3, 'hello');
|
|
38
|
+
expect(_globalCalls).toEqual(calls);
|
|
39
|
+
voidFn(3, 'world');
|
|
40
|
+
expect(_globalCalls).toEqual(calls + 1);
|
|
41
|
+
});
|
|
44
42
|
});
|
|
45
|
-
//# sourceMappingURL=memoize.test.js.map
|
|
43
|
+
//# sourceMappingURL=memoize.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoize.test.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"memoize.test.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC;IACnC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC7B,OAAO,EAAE,YAAY,CAAC;QAAA,CACvB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAAA,CACrC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC;YAC5C,EAAE,YAAY,CAAC;YACf,OAAO,IAAI,GAAG,CAAC,CAAC;QAAA,CACjB,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,YAAY,CAAC;QAC3B,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC;gBACN,EAAE,YAAY,CAAC;YACjB,CAAC;iBAAM,IAAI,CAAC,EAAE,CAAC;gBACb,EAAE,YAAY,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,EAAE,YAAY,CAAC;YACjB,CAAC;QAAA,CACF,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,YAAY,CAAC;QAC3B,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnB,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnB,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC"}
|
package/lib/merge-props/index.js
CHANGED
|
@@ -4,14 +4,14 @@ import { mergeStyles } from './mergeStyles';
|
|
|
4
4
|
* Props will not deeply merge with the exception of a style property. Also className needs to be handled specially.
|
|
5
5
|
*/
|
|
6
6
|
const mergePropsOptions = {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
className: (...names) => names.filter((v) => v && typeof v === 'string').join(' '),
|
|
8
|
+
style: mergeStyles,
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* Merge props together, flattening and merging styles as appropriate
|
|
12
12
|
* @param props - props to merge together
|
|
13
13
|
*/
|
|
14
14
|
export function mergeProps(...props) {
|
|
15
|
-
|
|
15
|
+
return immutableMergeCore(mergePropsOptions, ...filterToObjects(props));
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=mergeProps.js.map
|
|
17
|
+
//# sourceMappingURL=mergeProps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeProps.js","sourceRoot":"","sources":["../../src/merge-props/mergeProps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,MAAM,iBAAiB,GAAiB;IACtC,SAAS,EAAE,CAAC,GAAG,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACzF,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAS,GAAG,KAA6B;
|
|
1
|
+
{"version":3,"file":"mergeProps.js","sourceRoot":"","sources":["../../src/merge-props/mergeProps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,MAAM,iBAAiB,GAAiB;IACtC,SAAS,EAAE,CAAC,GAAG,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACzF,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAS,GAAG,KAA6B,EAAU;IAC3E,OAAO,kBAAkB,CAAC,iBAAiB,EAAE,GAAG,eAAe,CAAS,KAAK,CAAC,CAAC,CAAC;AAAA,CACjF"}
|
|
@@ -5,12 +5,41 @@ import type { StyleProp } from './mergeStyles.types';
|
|
|
5
5
|
*
|
|
6
6
|
* @param style - StyleProp<TStyle> to flatten, this can be a TStyle or an array
|
|
7
7
|
*/
|
|
8
|
-
export declare function flattenStyle(style: StyleProp<
|
|
8
|
+
export declare function flattenStyle<T extends object>(style: StyleProp<T>): T;
|
|
9
9
|
/**
|
|
10
10
|
* Merge styles together into a single flat object and optionally finalize them, can also be used to finalize a single style
|
|
11
11
|
*
|
|
12
12
|
* @param styles - array of styles to merge together. The styles will be flattened as part of the process
|
|
13
13
|
*/
|
|
14
|
-
export declare function mergeAndFlattenStyles
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
export declare function mergeAndFlattenStyles<T1 extends object, T2 extends object>(
|
|
15
|
+
style1: StyleProp<T1>,
|
|
16
|
+
style2: StyleProp<T2>,
|
|
17
|
+
): (T1 & T2) | undefined;
|
|
18
|
+
export declare function mergeAndFlattenStyles<T1 extends object, T2 extends object, T3 extends object>(
|
|
19
|
+
style1: StyleProp<T1>,
|
|
20
|
+
style2: StyleProp<T2>,
|
|
21
|
+
style3: StyleProp<T3>,
|
|
22
|
+
): (T1 & T2 & T3) | undefined;
|
|
23
|
+
export declare function mergeAndFlattenStyles<TStyle extends object>(...styles: StyleProp<any>[]): TStyle | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Function overloads to allow merging styles of different types.
|
|
26
|
+
* This is useful when merging token-based styles with React Native StyleProp types.
|
|
27
|
+
*/
|
|
28
|
+
export declare function mergeStyles<T1 extends object>(style1: StyleProp<T1>): T1 | undefined;
|
|
29
|
+
export declare function mergeStyles<T1 extends object, T2 extends object>(
|
|
30
|
+
style1: StyleProp<T1>,
|
|
31
|
+
style2: StyleProp<T2>,
|
|
32
|
+
): (T1 & T2) | undefined;
|
|
33
|
+
export declare function mergeStyles<T1 extends object, T2 extends object, T3 extends object>(
|
|
34
|
+
style1: StyleProp<T1>,
|
|
35
|
+
style2: StyleProp<T2>,
|
|
36
|
+
style3: StyleProp<T3>,
|
|
37
|
+
): (T1 & T2 & T3) | undefined;
|
|
38
|
+
export declare function mergeStyles<T1 extends object, T2 extends object, T3 extends object, T4 extends object>(
|
|
39
|
+
style1: StyleProp<T1>,
|
|
40
|
+
style2: StyleProp<T2>,
|
|
41
|
+
style3: StyleProp<T3>,
|
|
42
|
+
style4: StyleProp<T4>,
|
|
43
|
+
): (T1 & T2 & T3 & T4) | undefined;
|
|
44
|
+
export declare function mergeStyles<TStyle extends object>(...styles: StyleProp<TStyle>[]): TStyle | undefined;
|
|
45
|
+
//# sourceMappingURL=mergeStyles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeStyles.d.ts","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"mergeStyles.d.ts","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAErE;AAED;;;;GAIG;AAGH,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EACxE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,GACpB,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;AAGzB,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAC3F,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,GACpB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;AAG9B,wBAAgB,qBAAqB,CAAC,MAAM,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;AAc9G;;;GAGG;AAGH,wBAAgB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AAGtF,wBAAgB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;AAGvI,wBAAgB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EACjF,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,GACpB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;AAG9B,wBAAgB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EACpG,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,GACpB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;AAGnC,wBAAgB,WAAW,CAAC,MAAM,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC"}
|
|
@@ -7,26 +7,25 @@ import { getMemoCache } from '../memo-cache/getMemoCache';
|
|
|
7
7
|
* @param style - StyleProp<TStyle> to flatten, this can be a TStyle or an array
|
|
8
8
|
*/
|
|
9
9
|
export function flattenStyle(style) {
|
|
10
|
-
|
|
10
|
+
return Array.isArray(style) ? immutableMerge(...style.map((v) => flattenStyle(v))) : style || {};
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
* Merge styles together into a single flat object and optionally finalize them, can also be used to finalize a single style
|
|
14
|
-
*
|
|
15
|
-
* @param styles - array of styles to merge together. The styles will be flattened as part of the process
|
|
16
|
-
*/
|
|
12
|
+
// Implementation
|
|
17
13
|
export function mergeAndFlattenStyles(...styles) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
// baseline merge and flatten the objects
|
|
15
|
+
return immutableMerge(
|
|
16
|
+
...styles.map((styleProp) => {
|
|
17
|
+
return flattenStyle(styleProp);
|
|
18
|
+
}),
|
|
19
|
+
);
|
|
22
20
|
}
|
|
23
21
|
const _styleCache = getMemoCache();
|
|
22
|
+
// Implementation
|
|
24
23
|
export function mergeStyles(...styles) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
// filter the style set to just objects (which might be arrays or plain style objects)
|
|
25
|
+
const inputs = styles.filter((s) => typeof s === 'object');
|
|
26
|
+
// now memo the results if there is more than one element or if the one element is an array
|
|
27
|
+
return inputs.length > 1 || (inputs.length === 1 && Array.isArray(inputs[0]))
|
|
28
|
+
? _styleCache(() => mergeAndFlattenStyles(undefined, ...inputs), inputs)[0]
|
|
29
|
+
: inputs[0] || {};
|
|
31
30
|
}
|
|
32
|
-
//# sourceMappingURL=mergeStyles.js.map
|
|
31
|
+
//# sourceMappingURL=mergeStyles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeStyles.js","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D;;;;;GAKG;AACH,MAAM,UAAU,YAAY,
|
|
1
|
+
{"version":3,"file":"mergeStyles.js","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAmB,KAAmB,EAAK;IACrE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,IAAI,EAAE,CAAO,CAAC;AAAA,CAC9G;AAwBD,iBAAiB;AACjB,MAAM,UAAU,qBAAqB,CAAC,GAAG,MAAwB,EAAsB;IACrF,yCAAyC;IACzC,OAAO,cAAc,CACnB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,SAA4B,EAAE,EAAE,CAAC;QAC9C,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IAAA,CAChC,CAAC,CACH,CAAC;AAAA,CACH;AAED,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC;AA+BnC,iBAAiB;AACjB,MAAM,UAAU,WAAW,CAAC,GAAG,MAAwB,EAAsB;IAC3E,sFAAsF;IACtF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAa,CAAC;IAEvE,2FAA2F;IAC3F,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,CACrB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=mergeStyles.test.d.ts.map
|
|
2
|
+
//# sourceMappingURL=mergeStyles.test.d.ts.map
|