@fluentui-react-native/framework-base 0.1.1
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 +20 -0
- package/CHANGELOG.md +13 -0
- package/README.md +20 -0
- package/babel.config.js +1 -0
- package/eslint.config.js +3 -0
- package/lib/immutable-merge/Merge.d.ts +78 -0
- package/lib/immutable-merge/Merge.d.ts.map +1 -0
- package/lib/immutable-merge/Merge.js +179 -0
- package/lib/immutable-merge/Merge.js.map +1 -0
- package/lib/immutable-merge/Merge.test.d.ts +2 -0
- package/lib/immutable-merge/Merge.test.d.ts.map +1 -0
- package/lib/immutable-merge/Merge.test.js +262 -0
- package/lib/immutable-merge/Merge.test.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -0
- package/lib/memo-cache/getCacheEntry.d.ts +22 -0
- package/lib/memo-cache/getCacheEntry.d.ts.map +1 -0
- package/lib/memo-cache/getCacheEntry.js +49 -0
- package/lib/memo-cache/getCacheEntry.js.map +1 -0
- package/lib/memo-cache/getCacheEntry.test.d.ts +2 -0
- package/lib/memo-cache/getCacheEntry.test.d.ts.map +1 -0
- package/lib/memo-cache/getCacheEntry.test.js +95 -0
- package/lib/memo-cache/getCacheEntry.test.js.map +1 -0
- package/lib/memo-cache/getMemoCache.d.ts +11 -0
- package/lib/memo-cache/getMemoCache.d.ts.map +1 -0
- package/lib/memo-cache/getMemoCache.js +29 -0
- package/lib/memo-cache/getMemoCache.js.map +1 -0
- package/lib/memo-cache/getMemoCache.test.d.ts +2 -0
- package/lib/memo-cache/getMemoCache.test.d.ts.map +1 -0
- package/lib/memo-cache/getMemoCache.test.js +78 -0
- package/lib/memo-cache/getMemoCache.test.js.map +1 -0
- package/lib/memo-cache/index.d.ts +4 -0
- package/lib/memo-cache/index.d.ts.map +1 -0
- package/lib/memo-cache/index.js +3 -0
- package/lib/memo-cache/index.js.map +1 -0
- package/lib/memo-cache/memoize.d.ts +6 -0
- package/lib/memo-cache/memoize.d.ts.map +1 -0
- package/lib/memo-cache/memoize.js +17 -0
- package/lib/memo-cache/memoize.js.map +1 -0
- package/lib/memo-cache/memoize.test.d.ts +2 -0
- package/lib/memo-cache/memoize.test.d.ts.map +1 -0
- package/lib/memo-cache/memoize.test.js +45 -0
- package/lib/memo-cache/memoize.test.js.map +1 -0
- package/lib/merge-props/index.d.ts +4 -0
- package/lib/merge-props/index.d.ts.map +1 -0
- package/lib/merge-props/index.js +3 -0
- package/lib/merge-props/index.js.map +1 -0
- package/lib/merge-props/mergeProps.d.ts +6 -0
- package/lib/merge-props/mergeProps.d.ts.map +1 -0
- package/lib/merge-props/mergeProps.js +17 -0
- package/lib/merge-props/mergeProps.js.map +1 -0
- package/lib/merge-props/mergeStyles.d.ts +16 -0
- package/lib/merge-props/mergeStyles.d.ts.map +1 -0
- package/lib/merge-props/mergeStyles.js +32 -0
- package/lib/merge-props/mergeStyles.js.map +1 -0
- package/lib/merge-props/mergeStyles.test.d.ts +2 -0
- package/lib/merge-props/mergeStyles.test.d.ts.map +1 -0
- package/lib/merge-props/mergeStyles.test.js +94 -0
- package/lib/merge-props/mergeStyles.test.js.map +1 -0
- package/lib/merge-props/mergeStyles.types.d.ts +12 -0
- package/lib/merge-props/mergeStyles.types.d.ts.map +1 -0
- package/lib/merge-props/mergeStyles.types.js +2 -0
- package/lib/merge-props/mergeStyles.types.js.map +1 -0
- package/lib-commonjs/immutable-merge/Merge.d.ts +78 -0
- package/lib-commonjs/immutable-merge/Merge.d.ts.map +1 -0
- package/lib-commonjs/immutable-merge/Merge.js +186 -0
- package/lib-commonjs/immutable-merge/Merge.js.map +1 -0
- package/lib-commonjs/immutable-merge/Merge.test.d.ts +2 -0
- package/lib-commonjs/immutable-merge/Merge.test.d.ts.map +1 -0
- package/lib-commonjs/immutable-merge/Merge.test.js +264 -0
- package/lib-commonjs/immutable-merge/Merge.test.js.map +1 -0
- package/lib-commonjs/index.d.ts +9 -0
- package/lib-commonjs/index.d.ts.map +1 -0
- package/lib-commonjs/index.js +18 -0
- package/lib-commonjs/index.js.map +1 -0
- package/lib-commonjs/memo-cache/getCacheEntry.d.ts +22 -0
- package/lib-commonjs/memo-cache/getCacheEntry.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/getCacheEntry.js +53 -0
- package/lib-commonjs/memo-cache/getCacheEntry.js.map +1 -0
- package/lib-commonjs/memo-cache/getCacheEntry.test.d.ts +2 -0
- package/lib-commonjs/memo-cache/getCacheEntry.test.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/getCacheEntry.test.js +97 -0
- package/lib-commonjs/memo-cache/getCacheEntry.test.js.map +1 -0
- package/lib-commonjs/memo-cache/getMemoCache.d.ts +11 -0
- package/lib-commonjs/memo-cache/getMemoCache.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/getMemoCache.js +33 -0
- package/lib-commonjs/memo-cache/getMemoCache.js.map +1 -0
- package/lib-commonjs/memo-cache/getMemoCache.test.d.ts +2 -0
- package/lib-commonjs/memo-cache/getMemoCache.test.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/getMemoCache.test.js +80 -0
- package/lib-commonjs/memo-cache/getMemoCache.test.js.map +1 -0
- package/lib-commonjs/memo-cache/index.d.ts +4 -0
- package/lib-commonjs/memo-cache/index.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/index.js +8 -0
- package/lib-commonjs/memo-cache/index.js.map +1 -0
- package/lib-commonjs/memo-cache/memoize.d.ts +6 -0
- package/lib-commonjs/memo-cache/memoize.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/memoize.js +21 -0
- package/lib-commonjs/memo-cache/memoize.js.map +1 -0
- package/lib-commonjs/memo-cache/memoize.test.d.ts +2 -0
- package/lib-commonjs/memo-cache/memoize.test.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/memoize.test.js +47 -0
- package/lib-commonjs/memo-cache/memoize.test.js.map +1 -0
- package/lib-commonjs/merge-props/index.d.ts +4 -0
- package/lib-commonjs/merge-props/index.d.ts.map +1 -0
- package/lib-commonjs/merge-props/index.js +8 -0
- package/lib-commonjs/merge-props/index.js.map +1 -0
- package/lib-commonjs/merge-props/mergeProps.d.ts +6 -0
- package/lib-commonjs/merge-props/mergeProps.d.ts.map +1 -0
- package/lib-commonjs/merge-props/mergeProps.js +21 -0
- package/lib-commonjs/merge-props/mergeProps.js.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.d.ts +16 -0
- package/lib-commonjs/merge-props/mergeStyles.d.ts.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.js +38 -0
- package/lib-commonjs/merge-props/mergeStyles.js.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.test.d.ts +2 -0
- package/lib-commonjs/merge-props/mergeStyles.test.d.ts.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.test.js +96 -0
- package/lib-commonjs/merge-props/mergeStyles.test.js.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.types.d.ts +12 -0
- package/lib-commonjs/merge-props/mergeStyles.types.d.ts.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.types.js +3 -0
- package/lib-commonjs/merge-props/mergeStyles.types.js.map +1 -0
- package/package.json +58 -0
- package/src/immutable-merge/Merge.test.ts +342 -0
- package/src/immutable-merge/Merge.ts +255 -0
- package/src/index.ts +20 -0
- package/src/memo-cache/getCacheEntry.test.ts +120 -0
- package/src/memo-cache/getCacheEntry.ts +67 -0
- package/src/memo-cache/getMemoCache.test.ts +91 -0
- package/src/memo-cache/getMemoCache.ts +37 -0
- package/src/memo-cache/index.ts +3 -0
- package/src/memo-cache/memoize.test.ts +48 -0
- package/src/memo-cache/memoize.ts +17 -0
- package/src/merge-props/index.ts +3 -0
- package/src/merge-props/mergeProps.ts +20 -0
- package/src/merge-props/mergeStyles.test.ts +124 -0
- package/src/merge-props/mergeStyles.ts +40 -0
- package/src/merge-props/mergeStyles.types.ts +9 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const getMemoCache_1 = require("./getMemoCache");
|
|
4
|
+
function getObjFactory() {
|
|
5
|
+
const obj = { id: 0 };
|
|
6
|
+
return () => ({
|
|
7
|
+
id: obj.id++,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
describe('getMemoCache unit tests', () => {
|
|
11
|
+
test('memoValue with null function', () => {
|
|
12
|
+
const memoValue = (0, getMemoCache_1.getMemoCache)();
|
|
13
|
+
const [val] = memoValue(null, ['foo', 'bar']);
|
|
14
|
+
expect(val).toBeNull();
|
|
15
|
+
});
|
|
16
|
+
test('memoValue with undefined', () => {
|
|
17
|
+
const memoValue = (0, getMemoCache_1.getMemoCache)();
|
|
18
|
+
const [val] = memoValue(undefined, ['foo', 'bar']);
|
|
19
|
+
expect(val).toBeUndefined();
|
|
20
|
+
});
|
|
21
|
+
test('memoValue with string', () => {
|
|
22
|
+
const memoValue = (0, getMemoCache_1.getMemoCache)();
|
|
23
|
+
const [val] = memoValue('foo', ['bar', 'baz']);
|
|
24
|
+
expect(val).toEqual('foo');
|
|
25
|
+
});
|
|
26
|
+
test('memoValue with object', () => {
|
|
27
|
+
const memoValue = (0, getMemoCache_1.getMemoCache)();
|
|
28
|
+
const obj = { foo: 'hello', bar: 2, baz: 'you' };
|
|
29
|
+
const [val] = memoValue(obj, ['hello', obj]);
|
|
30
|
+
expect(val).toBe(obj);
|
|
31
|
+
});
|
|
32
|
+
test('memoValue executes function', () => {
|
|
33
|
+
const memoValue = (0, getMemoCache_1.getMemoCache)();
|
|
34
|
+
const fn = getObjFactory();
|
|
35
|
+
const v1 = fn();
|
|
36
|
+
const [v2] = memoValue(fn, ['bar', 'baz']);
|
|
37
|
+
expect(v1).not.toBe(v2);
|
|
38
|
+
expect(v1.id).not.toEqual(v2.id);
|
|
39
|
+
});
|
|
40
|
+
test('memo calls function only once', () => {
|
|
41
|
+
const memoValue = (0, getMemoCache_1.getMemoCache)();
|
|
42
|
+
const fn = getObjFactory();
|
|
43
|
+
const keys = ['hello', 'world'];
|
|
44
|
+
const [o1] = memoValue(fn, keys);
|
|
45
|
+
const [o2] = memoValue(fn, keys);
|
|
46
|
+
expect(o2).toBe(o1);
|
|
47
|
+
});
|
|
48
|
+
test('memo calls function only once for empty inputs', () => {
|
|
49
|
+
const memoValue = (0, getMemoCache_1.getMemoCache)();
|
|
50
|
+
const fn = getObjFactory();
|
|
51
|
+
const [o1] = memoValue(fn, undefined);
|
|
52
|
+
const [o2] = memoValue(fn, undefined);
|
|
53
|
+
expect(o2).toBe(o1);
|
|
54
|
+
});
|
|
55
|
+
test('sub caches are separate', () => {
|
|
56
|
+
const memoValue = (0, getMemoCache_1.getMemoCache)();
|
|
57
|
+
const base1 = {};
|
|
58
|
+
const base2 = {};
|
|
59
|
+
const [, getCache1] = memoValue(null, [base1]);
|
|
60
|
+
const [, getCache2] = memoValue(null, [base2]);
|
|
61
|
+
const objKey = {};
|
|
62
|
+
const fn = getObjFactory();
|
|
63
|
+
const [o1] = getCache1(fn, [objKey]);
|
|
64
|
+
const [o2] = getCache2(fn, [objKey]);
|
|
65
|
+
const [o3] = getCache2(fn, [objKey]);
|
|
66
|
+
expect(o1).not.toBe(o2);
|
|
67
|
+
expect(o3).toBe(o2);
|
|
68
|
+
});
|
|
69
|
+
test('sub caches work on branches', () => {
|
|
70
|
+
const memoValue = (0, getMemoCache_1.getMemoCache)();
|
|
71
|
+
const keys1 = [{}, 2, 'hello'];
|
|
72
|
+
const keys2 = [{}, true];
|
|
73
|
+
const fn = getObjFactory();
|
|
74
|
+
const [, getMemoValue] = memoValue(null, keys1);
|
|
75
|
+
const [val1] = getMemoValue(fn, keys2);
|
|
76
|
+
const [val2] = memoValue(fn, [...keys1, ...keys2]);
|
|
77
|
+
expect(val2).toBe(val1);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=getMemoCache.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMemoCache.test.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memo-cache/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.memoize = exports.getMemoCache = void 0;
|
|
4
|
+
var getMemoCache_1 = require("./getMemoCache");
|
|
5
|
+
Object.defineProperty(exports, "getMemoCache", { enumerable: true, get: function () { return getMemoCache_1.getMemoCache; } });
|
|
6
|
+
var memoize_1 = require("./memoize");
|
|
7
|
+
Object.defineProperty(exports, "memoize", { enumerable: true, get: function () { return memoize_1.memoize; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memo-cache/index.ts"],"names":[],"mappings":";;;AACA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../../src/memo-cache/memoize.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CASpD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.memoize = void 0;
|
|
4
|
+
const getMemoCache_1 = require("./getMemoCache");
|
|
5
|
+
/**
|
|
6
|
+
* This wraps a function to memoize the results using the standard javascript memoization pattern
|
|
7
|
+
* @param fn - function to memoize
|
|
8
|
+
*/
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
10
|
+
function memoize(fn) {
|
|
11
|
+
// create a unique cache that will be captured in the closure
|
|
12
|
+
const cache = (0, getMemoCache_1.getMemoCache)();
|
|
13
|
+
// create the closure which wraps the calling function
|
|
14
|
+
const closure = (...args) => {
|
|
15
|
+
return cache(() => fn(...(args || [])), args)[0];
|
|
16
|
+
};
|
|
17
|
+
// now return that closure strongly typed as the function.
|
|
18
|
+
return closure;
|
|
19
|
+
}
|
|
20
|
+
exports.memoize = memoize;
|
|
21
|
+
//# sourceMappingURL=memoize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C;;;GAGG;AACH,sEAAsE;AACtE,SAAgB,OAAO,CAAqB,EAAK;IAC/C,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAAA,2BAAY,GAAO,CAAC;IAClC,sDAAsD;IACtD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;QACjC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,0DAA0D;IAC1D,OAAO,OAAuB,CAAC;AACjC,CAAC;AATD,0BASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.test.d.ts","sourceRoot":"","sources":["../../src/memo-cache/memoize.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const memoize_1 = require("./memoize");
|
|
4
|
+
let _globalCalls = 0;
|
|
5
|
+
describe('Memoize unit tests', () => {
|
|
6
|
+
test('simple function no args', () => {
|
|
7
|
+
const noArgsFn = (0, memoize_1.memoize)(() => {
|
|
8
|
+
return ++_globalCalls;
|
|
9
|
+
});
|
|
10
|
+
const result1 = noArgsFn();
|
|
11
|
+
expect(noArgsFn()).toEqual(result1);
|
|
12
|
+
});
|
|
13
|
+
test('simple function 1 arg', () => {
|
|
14
|
+
const incrementFn = (0, memoize_1.memoize)((bump) => {
|
|
15
|
+
++_globalCalls;
|
|
16
|
+
return bump + 1;
|
|
17
|
+
});
|
|
18
|
+
expect(incrementFn(3)).toEqual(4);
|
|
19
|
+
const calls = _globalCalls;
|
|
20
|
+
incrementFn(3);
|
|
21
|
+
expect(_globalCalls).toEqual(calls);
|
|
22
|
+
incrementFn(4);
|
|
23
|
+
expect(_globalCalls).toEqual(calls + 1);
|
|
24
|
+
incrementFn(4);
|
|
25
|
+
expect(_globalCalls).toEqual(calls + 1);
|
|
26
|
+
});
|
|
27
|
+
test('void function 2 args', () => {
|
|
28
|
+
const voidFn = (0, memoize_1.memoize)((a, b) => {
|
|
29
|
+
if (a) {
|
|
30
|
+
++_globalCalls;
|
|
31
|
+
}
|
|
32
|
+
else if (b) {
|
|
33
|
+
++_globalCalls;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
++_globalCalls;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
voidFn(3, 'hello');
|
|
40
|
+
const calls = _globalCalls;
|
|
41
|
+
voidFn(3, 'hello');
|
|
42
|
+
expect(_globalCalls).toEqual(calls);
|
|
43
|
+
voidFn(3, 'world');
|
|
44
|
+
expect(_globalCalls).toEqual(calls + 1);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=memoize.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.test.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.test.ts"],"names":[],"mappings":";;AAAA,uCAAoC;AAEpC,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,MAAM,QAAQ,GAAG,IAAA,iBAAO,EAAC,GAAG,EAAE;YAC5B,OAAO,EAAE,YAAY,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,MAAM,WAAW,GAAG,IAAA,iBAAO,EAAC,CAAC,IAAY,EAAE,EAAE;YAC3C,EAAE,YAAY,CAAC;YACf,OAAO,IAAI,GAAG,CAAC,CAAC;QAClB,CAAC,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;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,IAAA,iBAAO,EAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YAC9C,IAAI,CAAC,EAAE;gBACL,EAAE,YAAY,CAAC;aAChB;iBAAM,IAAI,CAAC,EAAE;gBACZ,EAAE,YAAY,CAAC;aAChB;iBAAM;gBACL,EAAE,YAAY,CAAC;aAChB;QACH,CAAC,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;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/merge-props/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeProps = exports.mergeStyles = void 0;
|
|
4
|
+
var mergeStyles_1 = require("./mergeStyles");
|
|
5
|
+
Object.defineProperty(exports, "mergeStyles", { enumerable: true, get: function () { return mergeStyles_1.mergeStyles; } });
|
|
6
|
+
var mergeProps_1 = require("./mergeProps");
|
|
7
|
+
Object.defineProperty(exports, "mergeProps", { enumerable: true, get: function () { return mergeProps_1.mergeProps; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/merge-props/index.ts"],"names":[],"mappings":";;;AACA,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeProps.d.ts","sourceRoot":"","sources":["../../src/merge-props/mergeProps.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAE3E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeProps = void 0;
|
|
4
|
+
const Merge_1 = require("../immutable-merge/Merge");
|
|
5
|
+
const mergeStyles_1 = require("./mergeStyles");
|
|
6
|
+
/**
|
|
7
|
+
* Props will not deeply merge with the exception of a style property. Also className needs to be handled specially.
|
|
8
|
+
*/
|
|
9
|
+
const mergePropsOptions = {
|
|
10
|
+
className: (...names) => names.filter((v) => v && typeof v === 'string').join(' '),
|
|
11
|
+
style: mergeStyles_1.mergeStyles,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Merge props together, flattening and merging styles as appropriate
|
|
15
|
+
* @param props - props to merge together
|
|
16
|
+
*/
|
|
17
|
+
function mergeProps(...props) {
|
|
18
|
+
return (0, Merge_1.immutableMergeCore)(mergePropsOptions, ...(0, Merge_1.filterToObjects)(props));
|
|
19
|
+
}
|
|
20
|
+
exports.mergeProps = mergeProps;
|
|
21
|
+
//# sourceMappingURL=mergeProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeProps.js","sourceRoot":"","sources":["../../src/merge-props/mergeProps.ts"],"names":[],"mappings":";;;AACA,oDAA+E;AAE/E,+CAA4C;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,yBAAW;CACnB,CAAC;AAEF;;;GAGG;AACH,SAAgB,UAAU,CAAS,GAAG,KAA6B;IACjE,OAAO,IAAA,0BAAkB,EAAC,iBAAiB,EAAE,GAAG,IAAA,uBAAe,EAAS,KAAK,CAAC,CAAC,CAAC;AAClF,CAAC;AAFD,gCAEC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { StyleProp } from './mergeStyles.types';
|
|
2
|
+
/**
|
|
3
|
+
* Take a react-native style, which may be a recursive array, and return as a flattened
|
|
4
|
+
* style. This is analagous to the flatten routine that is part of the style sheet API
|
|
5
|
+
*
|
|
6
|
+
* @param style - StyleProp<TStyle> to flatten, this can be a TStyle or an array
|
|
7
|
+
*/
|
|
8
|
+
export declare function flattenStyle(style: StyleProp<object>): object;
|
|
9
|
+
/**
|
|
10
|
+
* Merge styles together into a single flat object and optionally finalize them, can also be used to finalize a single style
|
|
11
|
+
*
|
|
12
|
+
* @param styles - array of styles to merge together. The styles will be flattened as part of the process
|
|
13
|
+
*/
|
|
14
|
+
export declare function mergeAndFlattenStyles(...styles: StyleProp<object>[]): object | undefined;
|
|
15
|
+
export declare function mergeStyles(...styles: StyleProp<object>[]): object | undefined;
|
|
16
|
+
//# sourceMappingURL=mergeStyles.d.ts.map
|
|
@@ -0,0 +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,MAAM,CAAC,GAAG,MAAM,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,SAAS,CAOxF;AAID,wBAAgB,WAAW,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,SAAS,CAQ9E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeStyles = exports.mergeAndFlattenStyles = exports.flattenStyle = void 0;
|
|
4
|
+
const Merge_1 = require("../immutable-merge/Merge");
|
|
5
|
+
const getMemoCache_1 = require("../memo-cache/getMemoCache");
|
|
6
|
+
/**
|
|
7
|
+
* Take a react-native style, which may be a recursive array, and return as a flattened
|
|
8
|
+
* style. This is analagous to the flatten routine that is part of the style sheet API
|
|
9
|
+
*
|
|
10
|
+
* @param style - StyleProp<TStyle> to flatten, this can be a TStyle or an array
|
|
11
|
+
*/
|
|
12
|
+
function flattenStyle(style) {
|
|
13
|
+
return Array.isArray(style) ? (0, Merge_1.immutableMerge)(...style.map((v) => flattenStyle(v))) : style || {};
|
|
14
|
+
}
|
|
15
|
+
exports.flattenStyle = flattenStyle;
|
|
16
|
+
/**
|
|
17
|
+
* Merge styles together into a single flat object and optionally finalize them, can also be used to finalize a single style
|
|
18
|
+
*
|
|
19
|
+
* @param styles - array of styles to merge together. The styles will be flattened as part of the process
|
|
20
|
+
*/
|
|
21
|
+
function mergeAndFlattenStyles(...styles) {
|
|
22
|
+
// baseline merge and flatten the objects
|
|
23
|
+
return (0, Merge_1.immutableMerge)(...styles.map((styleProp) => {
|
|
24
|
+
return flattenStyle(styleProp);
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
exports.mergeAndFlattenStyles = mergeAndFlattenStyles;
|
|
28
|
+
const _styleCache = (0, getMemoCache_1.getMemoCache)();
|
|
29
|
+
function mergeStyles(...styles) {
|
|
30
|
+
// filter the style set to just objects (which might be arrays or plain style objects)
|
|
31
|
+
const inputs = styles.filter((s) => typeof s === 'object');
|
|
32
|
+
// now memo the results if there is more than one element or if the one element is an array
|
|
33
|
+
return inputs.length > 1 || (inputs.length === 1 && Array.isArray(inputs[0]))
|
|
34
|
+
? _styleCache(() => mergeAndFlattenStyles(undefined, ...inputs), inputs)[0]
|
|
35
|
+
: inputs[0] || {};
|
|
36
|
+
}
|
|
37
|
+
exports.mergeStyles = mergeStyles;
|
|
38
|
+
//# sourceMappingURL=mergeStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeStyles.js","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.ts"],"names":[],"mappings":";;;AAAA,oDAA0D;AAC1D,6DAA0D;AAI1D;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAwB;IACnD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAc,EAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;AACnG,CAAC;AAFD,oCAEC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,GAAG,MAA2B;IAClE,yCAAyC;IACzC,OAAO,IAAA,sBAAc,EACnB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,SAA4B,EAAE,EAAE;QAC7C,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAPD,sDAOC;AAED,MAAM,WAAW,GAAG,IAAA,2BAAY,GAAE,CAAC;AAEnC,SAAgB,WAAW,CAAC,GAAG,MAA2B;IACxD,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;AACtB,CAAC;AARD,kCAQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeStyles.test.d.ts","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const mergeStyles_1 = require("./mergeStyles");
|
|
4
|
+
const s1 = [
|
|
5
|
+
{ backgroundColor: 'blue' },
|
|
6
|
+
[{ color: 'red', borderWidth: 1 }, { fontFamily: 'segoe' }, [{ backgroundColor: 'bodyBackground' }]],
|
|
7
|
+
];
|
|
8
|
+
const s1flatten = {
|
|
9
|
+
backgroundColor: 'bodyBackground',
|
|
10
|
+
color: 'red',
|
|
11
|
+
borderWidth: 1,
|
|
12
|
+
fontFamily: 'segoe',
|
|
13
|
+
};
|
|
14
|
+
const s2 = {
|
|
15
|
+
borderWidth: 2,
|
|
16
|
+
fontFamily: 'primary',
|
|
17
|
+
color: 'bodyText',
|
|
18
|
+
};
|
|
19
|
+
const sMerged = {
|
|
20
|
+
backgroundColor: 'bodyBackground',
|
|
21
|
+
borderWidth: 2,
|
|
22
|
+
fontFamily: 'primary',
|
|
23
|
+
color: 'bodyText',
|
|
24
|
+
};
|
|
25
|
+
const sSelector = {
|
|
26
|
+
borderWidth: 1,
|
|
27
|
+
':hover': {
|
|
28
|
+
borderWidth: 2,
|
|
29
|
+
fontFamily: 'primary',
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
const sSelector2 = {
|
|
33
|
+
backgroundColor: 'white',
|
|
34
|
+
':hover': {
|
|
35
|
+
backgroundColor: 'black',
|
|
36
|
+
borderWidth: 3,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
const sArraySelector = [[sSelector]];
|
|
40
|
+
const sArraySelector2 = [sSelector2];
|
|
41
|
+
const sMergedSelectors = {
|
|
42
|
+
borderWidth: 1,
|
|
43
|
+
backgroundColor: 'white',
|
|
44
|
+
':hover': {
|
|
45
|
+
borderWidth: 3,
|
|
46
|
+
fontFamily: 'primary',
|
|
47
|
+
backgroundColor: 'black',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
describe('Style flatten and merge tests', () => {
|
|
51
|
+
test('flatten recursive arrays', () => {
|
|
52
|
+
const flattened = (0, mergeStyles_1.flattenStyle)(s1);
|
|
53
|
+
expect(flattened).toEqual(s1flatten);
|
|
54
|
+
expect(flattened).not.toBe(s1);
|
|
55
|
+
});
|
|
56
|
+
test('flatten flat style returns style', () => {
|
|
57
|
+
const flattened = (0, mergeStyles_1.flattenStyle)(s2);
|
|
58
|
+
expect(flattened).toBe(s2);
|
|
59
|
+
});
|
|
60
|
+
test('merge also flattens', () => {
|
|
61
|
+
const merged = (0, mergeStyles_1.mergeAndFlattenStyles)(undefined, undefined, s1, s2);
|
|
62
|
+
expect(merged).toEqual(sMerged);
|
|
63
|
+
});
|
|
64
|
+
test('merge with sub objects', () => {
|
|
65
|
+
const merged = (0, mergeStyles_1.mergeAndFlattenStyles)(undefined, undefined, sSelector, sSelector2);
|
|
66
|
+
expect(merged).toEqual(sMergedSelectors);
|
|
67
|
+
});
|
|
68
|
+
test('merge sub objects in arrays', () => {
|
|
69
|
+
const merged = (0, mergeStyles_1.mergeAndFlattenStyles)(undefined, undefined, sArraySelector, sArraySelector2);
|
|
70
|
+
expect(merged).toEqual(sMergedSelectors);
|
|
71
|
+
});
|
|
72
|
+
test('memo recursive arrays', () => {
|
|
73
|
+
const flattened = (0, mergeStyles_1.mergeStyles)(s1);
|
|
74
|
+
const flattened2 = (0, mergeStyles_1.mergeStyles)(s1);
|
|
75
|
+
expect(flattened).toEqual(s1flatten);
|
|
76
|
+
expect(flattened2).toBe(flattened);
|
|
77
|
+
});
|
|
78
|
+
test('memo flat style', () => {
|
|
79
|
+
const flattened = (0, mergeStyles_1.mergeStyles)(s2);
|
|
80
|
+
const flattened2 = (0, mergeStyles_1.mergeStyles)(s2);
|
|
81
|
+
expect(flattened).toBe(s2);
|
|
82
|
+
expect(flattened2).toBe(flattened);
|
|
83
|
+
});
|
|
84
|
+
test('memo and flatten multiple', () => {
|
|
85
|
+
const flattened = (0, mergeStyles_1.mergeStyles)(s1, s2);
|
|
86
|
+
const flattened2 = (0, mergeStyles_1.mergeStyles)(s1, s2);
|
|
87
|
+
expect(flattened).toEqual(sMerged);
|
|
88
|
+
expect(flattened2).toBe(flattened);
|
|
89
|
+
});
|
|
90
|
+
test('memo styles ignores undefined values', () => {
|
|
91
|
+
const result1 = (0, mergeStyles_1.mergeStyles)(s1, s2, undefined, s1flatten);
|
|
92
|
+
const result2 = (0, mergeStyles_1.mergeStyles)(s1, undefined, s2, s1flatten);
|
|
93
|
+
expect(result2).toBe(result1);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=mergeStyles.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeStyles.test.js","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is a copy of the react-native style prop type, copied here to avoid RN dependencies for web clients
|
|
3
|
+
*/
|
|
4
|
+
type Falsy = undefined | null | false;
|
|
5
|
+
type RecursiveArray<T> = (T | RecursiveArray<T>)[];
|
|
6
|
+
/** Keep a brand of 'T' so that calls to `StyleSheet.flatten` can take `RegisteredStyle<T>` and return `T`. */
|
|
7
|
+
type RegisteredStyle<T> = number & {
|
|
8
|
+
__registeredStyleBrand: T;
|
|
9
|
+
};
|
|
10
|
+
export type StyleProp<T> = T | RegisteredStyle<T> | RecursiveArray<T | RegisteredStyle<T> | Falsy> | Falsy;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=mergeStyles.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeStyles.types.d.ts","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,KAAK,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AACtC,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,8GAA8G;AAC9G,KAAK,eAAe,CAAC,CAAC,IAAI,MAAM,GAAG;IAAE,sBAAsB,EAAE,CAAC,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeStyles.types.js","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fluentui-react-native/framework-base",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Base types and utilities fluentui-react-native frameworks",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/microsoft/fluentui-react-native",
|
|
8
|
+
"directory": "packages/framework-base"
|
|
9
|
+
},
|
|
10
|
+
"main": "lib-commonjs/index.js",
|
|
11
|
+
"module": "lib/index.js",
|
|
12
|
+
"typings": "lib/index.d.ts",
|
|
13
|
+
"react-native": "src/index.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"import": "./lib/index.js",
|
|
17
|
+
"require": "./lib-commonjs/index.js",
|
|
18
|
+
"types": "./lib/index.d.ts"
|
|
19
|
+
},
|
|
20
|
+
"./immutable-merge": {
|
|
21
|
+
"import": "./lib/immutable-merge/Merge.js",
|
|
22
|
+
"require": "./lib-commonjs/immutable-merge/Merge.js",
|
|
23
|
+
"types": "./lib/immutable-merge/Merge.d.ts"
|
|
24
|
+
},
|
|
25
|
+
"./memo-cache": {
|
|
26
|
+
"import": "./lib/memo-cache/index.js",
|
|
27
|
+
"require": "./lib-commonjs/memo-cache/index.js",
|
|
28
|
+
"types": "./lib/memo-cache/index.d.ts"
|
|
29
|
+
},
|
|
30
|
+
"./merge-props": {
|
|
31
|
+
"import": "./lib/merge-props/index.js",
|
|
32
|
+
"require": "./lib-commonjs/merge-props/index.js",
|
|
33
|
+
"types": "./lib/merge-props/lib/index.d.ts"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "fluentui-scripts build",
|
|
38
|
+
"just": "fluentui-scripts",
|
|
39
|
+
"clean": "fluentui-scripts clean",
|
|
40
|
+
"depcheck": "fluentui-scripts depcheck",
|
|
41
|
+
"test": "fluentui-scripts jest",
|
|
42
|
+
"lint": "fluentui-scripts eslint",
|
|
43
|
+
"start": "fluentui-scripts dev",
|
|
44
|
+
"start-test": "fluentui-scripts jest-watch",
|
|
45
|
+
"update-snapshots": "fluentui-scripts jest -u",
|
|
46
|
+
"prettier": "fluentui-scripts prettier",
|
|
47
|
+
"prettier-fix": "fluentui-scripts prettier --fix true"
|
|
48
|
+
},
|
|
49
|
+
"keywords": [],
|
|
50
|
+
"author": "",
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@fluentui-react-native/eslint-config-rules": "0.1.1",
|
|
54
|
+
"@fluentui-react-native/scripts": "0.1.1",
|
|
55
|
+
"@types/jest": "^29.0.0",
|
|
56
|
+
"@types/node": "^10.3.5"
|
|
57
|
+
}
|
|
58
|
+
}
|