@fluentui-react-native/use-tokens 0.6.12 → 0.7.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.
Files changed (73) hide show
  1. package/CHANGELOG.json +1 -1
  2. package/CHANGELOG.md +38 -2
  3. package/README.md +1 -1
  4. package/lib/applyPropsToTokens.d.ts +7 -2
  5. package/lib/applyPropsToTokens.js +7 -7
  6. package/lib/applyPropsToTokens.js.map +1 -1
  7. package/lib/applyPropsToTokens.test.d.ts +1 -1
  8. package/lib/applyPropsToTokens.test.js +19 -19
  9. package/lib/applyPropsToTokens.test.js.map +1 -1
  10. package/lib/applyTokenLayers.d.ts +7 -2
  11. package/lib/applyTokenLayers.js +16 -13
  12. package/lib/applyTokenLayers.js.map +1 -1
  13. package/lib/applyTokenLayers.test.d.ts +1 -1
  14. package/lib/applyTokenLayers.test.js +42 -42
  15. package/lib/applyTokenLayers.test.js.map +1 -1
  16. package/lib/buildUseTokens.d.ts +6 -3
  17. package/lib/buildUseTokens.js +22 -22
  18. package/lib/buildUseTokens.js.map +1 -1
  19. package/lib/buildUseTokens.test.d.ts +1 -1
  20. package/lib/buildUseTokens.test.js +68 -68
  21. package/lib/buildUseTokens.test.js.map +1 -1
  22. package/lib/customizable.d.ts +9 -5
  23. package/lib/customizable.d.ts.map +1 -1
  24. package/lib/customizable.js +8 -8
  25. package/lib/customizable.js.map +1 -1
  26. package/lib/index.d.ts +1 -1
  27. package/lib/index.js +1 -1
  28. package/lib/patchTokens.d.ts +6 -2
  29. package/lib/patchTokens.js +12 -12
  30. package/lib/patchTokens.js.map +1 -1
  31. package/lib/patchTokens.test.d.ts +1 -1
  32. package/lib/patchTokens.test.js +32 -32
  33. package/lib/patchTokens.test.js.map +1 -1
  34. package/lib/useTokens.samples.test.d.ts +1 -1
  35. package/lib/useTokens.samples.test.js +134 -111
  36. package/lib/useTokens.samples.test.js.map +1 -1
  37. package/lib-commonjs/applyPropsToTokens.d.ts +7 -2
  38. package/lib-commonjs/applyPropsToTokens.js +10 -11
  39. package/lib-commonjs/applyPropsToTokens.js.map +1 -1
  40. package/lib-commonjs/applyPropsToTokens.test.d.ts +1 -1
  41. package/lib-commonjs/applyPropsToTokens.test.js +23 -23
  42. package/lib-commonjs/applyPropsToTokens.test.js.map +1 -1
  43. package/lib-commonjs/applyTokenLayers.d.ts +7 -2
  44. package/lib-commonjs/applyTokenLayers.js +20 -18
  45. package/lib-commonjs/applyTokenLayers.js.map +1 -1
  46. package/lib-commonjs/applyTokenLayers.test.d.ts +1 -1
  47. package/lib-commonjs/applyTokenLayers.test.js +46 -46
  48. package/lib-commonjs/applyTokenLayers.test.js.map +1 -1
  49. package/lib-commonjs/buildUseTokens.d.ts +6 -3
  50. package/lib-commonjs/buildUseTokens.js +30 -28
  51. package/lib-commonjs/buildUseTokens.js.map +1 -1
  52. package/lib-commonjs/buildUseTokens.test.d.ts +1 -1
  53. package/lib-commonjs/buildUseTokens.test.js +71 -71
  54. package/lib-commonjs/buildUseTokens.test.js.map +1 -1
  55. package/lib-commonjs/customizable.d.ts +9 -5
  56. package/lib-commonjs/customizable.d.ts.map +1 -1
  57. package/lib-commonjs/customizable.js +11 -12
  58. package/lib-commonjs/customizable.js.map +1 -1
  59. package/lib-commonjs/index.d.ts +1 -1
  60. package/lib-commonjs/index.js +38 -13
  61. package/lib-commonjs/index.js.map +1 -1
  62. package/lib-commonjs/patchTokens.d.ts +6 -2
  63. package/lib-commonjs/patchTokens.js +15 -16
  64. package/lib-commonjs/patchTokens.js.map +1 -1
  65. package/lib-commonjs/patchTokens.test.d.ts +1 -1
  66. package/lib-commonjs/patchTokens.test.js +36 -36
  67. package/lib-commonjs/patchTokens.test.js.map +1 -1
  68. package/lib-commonjs/useTokens.samples.test.d.ts +1 -1
  69. package/lib-commonjs/useTokens.samples.test.js +195 -141
  70. package/lib-commonjs/useTokens.samples.test.js.map +1 -1
  71. package/package.json +45 -45
  72. package/src/customizable.ts +3 -2
  73. package/src/useTokens.samples.test.tsx +24 -15
@@ -1,31 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const framework_base_1 = require("@fluentui-react-native/framework-base");
4
- const applyPropsToTokens_1 = require("./applyPropsToTokens");
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ const framework_base_1 = require('@fluentui-react-native/framework-base');
4
+ const applyPropsToTokens_1 = require('./applyPropsToTokens');
5
5
  const tokenProps = ['dos', 'quatro', 'cinco'];
6
6
  const themeTokens = {
7
- uno: 'uno',
8
- dos: 'dos',
9
- tres: 3,
10
- quatro: 4,
11
- cinco: true,
7
+ uno: 'uno',
8
+ dos: 'dos',
9
+ tres: 3,
10
+ quatro: 4,
11
+ cinco: true,
12
12
  };
13
13
  const props1 = { dos: 'two', quatro: 'four', cinco: false, foo: 'foo', bar: 'bar' };
14
14
  // const props2: Props = { dos: 'two' };
15
15
  // const props3: Props = { foo: 'foo', bar: 'bar' };
16
16
  describe('applyPropsToTokens tests', () => {
17
- test('props get copied', () => {
18
- const cache = (0, framework_base_1.getTypedMemoCache)();
19
- const [tokens] = (0, applyPropsToTokens_1.applyPropsToTokens)(props1, themeTokens, cache, tokenProps);
20
- expect(tokens).not.toBe(themeTokens);
21
- for (const key of tokenProps) {
22
- expect(tokens[key]).toEqual(props1[key]);
23
- }
24
- });
25
- test('no copied props does not change tokens', () => {
26
- const cache = (0, framework_base_1.getTypedMemoCache)();
27
- const [tokens] = (0, applyPropsToTokens_1.applyPropsToTokens)({}, themeTokens, cache, tokenProps);
28
- expect(tokens).toBe(themeTokens);
29
- });
17
+ test('props get copied', () => {
18
+ const cache = (0, framework_base_1.getTypedMemoCache)();
19
+ const [tokens] = (0, applyPropsToTokens_1.applyPropsToTokens)(props1, themeTokens, cache, tokenProps);
20
+ expect(tokens).not.toBe(themeTokens);
21
+ for (const key of tokenProps) {
22
+ expect(tokens[key]).toEqual(props1[key]);
23
+ }
24
+ });
25
+ test('no copied props does not change tokens', () => {
26
+ const cache = (0, framework_base_1.getTypedMemoCache)();
27
+ const [tokens] = (0, applyPropsToTokens_1.applyPropsToTokens)({}, themeTokens, cache, tokenProps);
28
+ expect(tokens).toBe(themeTokens);
29
+ });
30
30
  });
31
- //# sourceMappingURL=applyPropsToTokens.test.js.map
31
+ //# sourceMappingURL=applyPropsToTokens.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyPropsToTokens.test.js","sourceRoot":"","sources":["../src/applyPropsToTokens.test.ts"],"names":[],"mappings":";;AAAA,0EAA0E;AAE1E,6DAA0D;AAW1D,MAAM,UAAU,GAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAOpE,MAAM,WAAW,GAAW;IAC1B,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,MAAM,MAAM,GAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC3F,wCAAwC;AACxC,oDAAoD;AAEpD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC5B,MAAM,KAAK,GAAG,IAAA,kCAAiB,GAAU,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,uCAAkB,EAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC5B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1C;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,KAAK,GAAG,IAAA,kCAAiB,GAAU,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,uCAAkB,EAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"applyPropsToTokens.test.js","sourceRoot":"","sources":["../src/applyPropsToTokens.test.ts"],"names":[],"mappings":";;AAAA,0EAA0E;AAE1E,6DAA0D;AAW1D,MAAM,UAAU,GAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAOpE,MAAM,WAAW,GAAW;IAC1B,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,MAAM,MAAM,GAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC3F,wCAAwC;AACxC,oDAAoD;AAEpD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC;IACzC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAA,kCAAiB,GAAU,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,uCAAkB,EAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC;IAAA,CACF,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,IAAA,kCAAiB,GAAU,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,uCAAkB,EAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAClC,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC"}
@@ -12,5 +12,10 @@ export type HasLayer = (name: string) => boolean;
12
12
  * @param subCache - cache scoped to the root object with no layers applied
13
13
  * @param hasLayer - a function which returns whether a given layer should be applied
14
14
  */
15
- export declare function applyTokenLayers<TTokens>(tokens: TTokens, states: string[], subCache: GetTypedMemoValue<TTokens>, hasLayer: HasLayer): [TTokens, GetTypedMemoValue<TTokens>];
16
- //# sourceMappingURL=applyTokenLayers.d.ts.map
15
+ export declare function applyTokenLayers<TTokens>(
16
+ tokens: TTokens,
17
+ states: string[],
18
+ subCache: GetTypedMemoValue<TTokens>,
19
+ hasLayer: HasLayer,
20
+ ): [TTokens, GetTypedMemoValue<TTokens>];
21
+ //# sourceMappingURL=applyTokenLayers.d.ts.map
@@ -1,7 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyTokenLayers = void 0;
4
- const framework_base_1 = require("@fluentui-react-native/framework-base");
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.applyTokenLayers = applyTokenLayers;
4
+ const framework_base_1 = require('@fluentui-react-native/framework-base');
5
5
  /**
6
6
  * Apply token layers, building them up applied layer by applied layer, using the cache to store intermediate
7
7
  * values
@@ -12,18 +12,20 @@ const framework_base_1 = require("@fluentui-react-native/framework-base");
12
12
  * @param hasLayer - a function which returns whether a given layer should be applied
13
13
  */
14
14
  function applyTokenLayers(tokens, states, subCache, hasLayer) {
15
- let final = { tokens, subCache };
16
- if (states && states.length > 0) {
17
- // now walk the overrides that are set, merging in props, caching results, and getting a new sub cache
18
- final = states
19
- .filter((val) => hasLayer(val))
20
- .reduce((previous, layerName) => {
21
- const layer = previous.tokens[layerName];
22
- const [tokens, subCache] = previous.subCache(() => (layer && typeof layer === 'object' ? (0, framework_base_1.immutableMerge)(previous.tokens, layer) : previous.tokens), [layer]);
23
- return { tokens, subCache };
24
- }, final);
25
- }
26
- return [final.tokens, final.subCache];
15
+ let final = { tokens, subCache };
16
+ if (states && states.length > 0) {
17
+ // now walk the overrides that are set, merging in props, caching results, and getting a new sub cache
18
+ final = states
19
+ .filter((val) => hasLayer(val))
20
+ .reduce((previous, layerName) => {
21
+ const layer = previous.tokens[layerName];
22
+ const [tokens, subCache] = previous.subCache(
23
+ () => (layer && typeof layer === 'object' ? (0, framework_base_1.immutableMerge)(previous.tokens, layer) : previous.tokens),
24
+ [layer],
25
+ );
26
+ return { tokens, subCache };
27
+ }, final);
28
+ }
29
+ return [final.tokens, final.subCache];
27
30
  }
28
- exports.applyTokenLayers = applyTokenLayers;
29
- //# sourceMappingURL=applyTokenLayers.js.map
31
+ //# sourceMappingURL=applyTokenLayers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyTokenLayers.js","sourceRoot":"","sources":["../src/applyTokenLayers.ts"],"names":[],"mappings":";;;AAAA,0EAAuE;AAQvE;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAC9B,MAAe,EACf,MAAgB,EAChB,QAAoC,EACpC,QAAkB;IAGlB,IAAI,KAAK,GAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACjD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/B,sGAAsG;QACtG,KAAK,GAAG,MAAM;aACX,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC9B,MAAM,CAAC,CAAC,QAAwB,EAAE,SAAiB,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAC1C,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,+BAAc,EAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EACrG,CAAC,KAAK,CAAC,CACR,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC,EAAE,KAAK,CAAC,CAAC;KACb;IACD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAtBD,4CAsBC"}
1
+ {"version":3,"file":"applyTokenLayers.js","sourceRoot":"","sources":["../src/applyTokenLayers.ts"],"names":[],"mappings":";;;AAAA,0EAAuE;AAQvE;;;;;;;;GAQG;AACH,0BACE,MAAe,EACf,MAAgB,EAChB,QAAoC,EACpC,QAAkB,EACqB;IAEvC,IAAI,KAAK,GAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACjD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,sGAAsG;QACtG,KAAK,GAAG,MAAM;aACX,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC9B,MAAM,CAAC,CAAC,QAAwB,EAAE,SAAiB,EAAE,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAC1C,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,+BAAc,EAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EACrG,CAAC,KAAK,CAAC,CACR,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAAA,CAC7B,EAAE,KAAK,CAAC,CAAC;IACd,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAAA,CACvC"}
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=applyTokenLayers.test.d.ts.map
2
+ //# sourceMappingURL=applyTokenLayers.test.d.ts.map
@@ -1,55 +1,55 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const framework_base_1 = require("@fluentui-react-native/framework-base");
4
- const applyTokenLayers_1 = require("./applyTokenLayers");
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ const framework_base_1 = require('@fluentui-react-native/framework-base');
4
+ const applyTokenLayers_1 = require('./applyTokenLayers');
5
5
  const stateOrder = ['hover', 'press', 'disabled'];
6
6
  const tokens1 = {
7
- a: 'a',
8
- b: 'b',
9
- c: 'c',
10
- hover: {
11
- a: 'a-hover',
12
- b: 'b-hover',
13
- press: {
14
- a: 'a-hover-press',
15
- },
16
- },
7
+ a: 'a',
8
+ b: 'b',
9
+ c: 'c',
10
+ hover: {
11
+ a: 'a-hover',
12
+ b: 'b-hover',
17
13
  press: {
18
- a: 'a-press',
19
- b: 'b-press',
20
- },
21
- disabled: {
22
- a: 'disabled',
23
- b: 'disabled',
24
- c: 'disabled',
14
+ a: 'a-hover-press',
25
15
  },
16
+ },
17
+ press: {
18
+ a: 'a-press',
19
+ b: 'b-press',
20
+ },
21
+ disabled: {
22
+ a: 'disabled',
23
+ b: 'disabled',
24
+ c: 'disabled',
25
+ },
26
26
  };
27
27
  function stripLayers(tokens) {
28
- const t = { ...tokens };
29
- delete t.hover;
30
- delete t.press;
31
- delete t.disabled;
32
- return t;
28
+ const t = { ...tokens };
29
+ delete t.hover;
30
+ delete t.press;
31
+ delete t.disabled;
32
+ return t;
33
33
  }
34
34
  describe('applyLayers tests', () => {
35
- test('no layers returns tokens', () => {
36
- const cache = (0, framework_base_1.getMemoCache)();
37
- const tokens = (0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, () => false)[0];
38
- expect(tokens).toBe(tokens1);
39
- });
40
- test('apply hover works', () => {
41
- const cache = (0, framework_base_1.getMemoCache)();
42
- const lookup = (layer) => layer === 'hover';
43
- const result1 = (0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, lookup)[0];
44
- expect((0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, lookup)[0]).toBe(result1);
45
- expect(stripLayers(result1)).toEqual({ a: 'a-hover', b: 'b-hover', c: 'c' });
46
- });
47
- test('apply hover and press layer correctly', () => {
48
- const cache = (0, framework_base_1.getMemoCache)();
49
- const lookup = (layer) => layer === 'hover' || layer === 'press';
50
- const result1 = (0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, lookup)[0];
51
- expect((0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, lookup)[0]).toBe(result1);
52
- expect(stripLayers(result1)).toEqual({ a: 'a-hover-press', b: 'b-press', c: 'c' });
53
- });
35
+ test('no layers returns tokens', () => {
36
+ const cache = (0, framework_base_1.getMemoCache)();
37
+ const tokens = (0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, () => false)[0];
38
+ expect(tokens).toBe(tokens1);
39
+ });
40
+ test('apply hover works', () => {
41
+ const cache = (0, framework_base_1.getMemoCache)();
42
+ const lookup = (layer) => layer === 'hover';
43
+ const result1 = (0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, lookup)[0];
44
+ expect((0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, lookup)[0]).toBe(result1);
45
+ expect(stripLayers(result1)).toEqual({ a: 'a-hover', b: 'b-hover', c: 'c' });
46
+ });
47
+ test('apply hover and press layer correctly', () => {
48
+ const cache = (0, framework_base_1.getMemoCache)();
49
+ const lookup = (layer) => layer === 'hover' || layer === 'press';
50
+ const result1 = (0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, lookup)[0];
51
+ expect((0, applyTokenLayers_1.applyTokenLayers)(tokens1, stateOrder, cache, lookup)[0]).toBe(result1);
52
+ expect(stripLayers(result1)).toEqual({ a: 'a-hover-press', b: 'b-press', c: 'c' });
53
+ });
54
54
  });
55
- //# sourceMappingURL=applyTokenLayers.test.js.map
55
+ //# sourceMappingURL=applyTokenLayers.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyTokenLayers.test.js","sourceRoot":"","sources":["../src/applyTokenLayers.test.ts"],"names":[],"mappings":";;AAAA,0EAAqE;AAErE,yDAAsD;AAWtD,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAElD,MAAM,OAAO,GAAW;IACtB,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,KAAK,EAAE;QACL,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,SAAS;QACZ,KAAK,EAAE;YACL,CAAC,EAAE,eAAe;SACnB;KACF;IACD,KAAK,EAAE;QACL,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,SAAS;KACb;IACD,QAAQ,EAAE;QACR,CAAC,EAAE,UAAU;QACb,CAAC,EAAE,UAAU;QACb,CAAC,EAAE,UAAU;KACd;CACF,CAAC;AAEF,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,CAAC,KAAK,CAAC;IACf,OAAO,CAAC,CAAC,KAAK,CAAC;IACf,OAAO,CAAC,CAAC,QAAQ,CAAC;IAClB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,MAAM,KAAK,GAAG,IAAA,6BAAY,GAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAA,mCAAgB,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAA,6BAAY,GAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAA,mCAAgB,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,IAAA,mCAAgB,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9E,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,IAAA,6BAAY,GAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC;QACjE,MAAM,OAAO,GAAG,IAAA,mCAAgB,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,IAAA,mCAAgB,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9E,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"applyTokenLayers.test.js","sourceRoot":"","sources":["../src/applyTokenLayers.test.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export type UseTokensCore<TTokens, TTheme> = (theme: TTheme) => [TTokens, GetTyp
19
19
  * that captures both the previous values, and layers in the new values specified
20
20
  */
21
21
  export type UseTokens<TTokens, TTheme> = UseTokensCore<TTokens, TTheme> & {
22
- customize: (...tokens: TokenSettings<TTokens, TTheme>[]) => UseTokens<TTokens, TTheme>;
22
+ customize: (...tokens: TokenSettings<TTokens, TTheme>[]) => UseTokens<TTokens, TTheme>;
23
23
  };
24
24
  /**
25
25
  * Helper function that knows how to try to look up token information from the theme
@@ -31,5 +31,8 @@ export type GetComponentInfo<TTokens, TTheme> = (theme: TTheme, name: string) =>
31
31
  * @param options - options which drive behavior for the generated styling hook
32
32
  * @param themeHelper - injected theme functionality
33
33
  */
34
- export declare function buildUseTokens<TTokens, TTheme>(getComponentInfo: GetComponentInfo<TTokens, TTheme> | undefined, ...tokens: TokenSettings<TTokens, TTheme>[]): UseTokens<TTokens, TTheme>;
35
- //# sourceMappingURL=buildUseTokens.d.ts.map
34
+ export declare function buildUseTokens<TTokens, TTheme>(
35
+ getComponentInfo: GetComponentInfo<TTokens, TTheme> | undefined,
36
+ ...tokens: TokenSettings<TTokens, TTheme>[]
37
+ ): UseTokens<TTokens, TTheme>;
38
+ //# sourceMappingURL=buildUseTokens.d.ts.map
@@ -1,8 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildUseTokens = void 0;
4
- const framework_base_1 = require("@fluentui-react-native/framework-base");
5
- const framework_base_2 = require("@fluentui-react-native/framework-base");
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.buildUseTokens = buildUseTokens;
4
+ const framework_base_1 = require('@fluentui-react-native/framework-base');
5
+ const framework_base_2 = require('@fluentui-react-native/framework-base');
6
6
  /**
7
7
  * Tokens are defined as either:
8
8
  * TTokens - an object
@@ -17,13 +17,13 @@ const framework_base_2 = require("@fluentui-react-native/framework-base");
17
17
  * @param getComponentInfo - helper to use to lookup the component in the theme
18
18
  */
19
19
  function mapToTokens(tokenEntry, theme, getComponentInfo) {
20
- if (typeof tokenEntry === 'string') {
21
- tokenEntry = (getComponentInfo && getComponentInfo(theme, tokenEntry)) || {};
22
- }
23
- if (typeof tokenEntry === 'function') {
24
- tokenEntry = tokenEntry(theme);
25
- }
26
- return tokenEntry;
20
+ if (typeof tokenEntry === 'string') {
21
+ tokenEntry = (getComponentInfo && getComponentInfo(theme, tokenEntry)) || {};
22
+ }
23
+ if (typeof tokenEntry === 'function') {
24
+ tokenEntry = tokenEntry(theme);
25
+ }
26
+ return tokenEntry;
27
27
  }
28
28
  /**
29
29
  * Construct a useStyling hook which returns styled slot props based on props and tokens defined in options and in the theme
@@ -32,20 +32,22 @@ function mapToTokens(tokenEntry, theme, getComponentInfo) {
32
32
  * @param themeHelper - injected theme functionality
33
33
  */
34
34
  function buildUseTokens(getComponentInfo, ...tokens) {
35
- // create a cache instance for use in this particular call to buildUseTokens
36
- const cache = (0, framework_base_2.getMemoCache)();
37
- // the core function simply merges layers together, looking up component definitions in the theme as well as executing any
38
- // theme functions. This turns the tokens into an array of token objects that then get merged together
39
- const useTokensCore = (theme) => {
40
- // get the base styles all merged together, these will only depend on internal tokens and theme
41
- return cache(() => (0, framework_base_1.immutableMerge)(...tokens.map((value) => mapToTokens(value, theme, getComponentInfo))), [theme]);
42
- };
43
- // attach a customize function to generate a new use
44
- useTokensCore.customize = (...newTokens) => {
45
- const mergedTokens = [...tokens, ...newTokens];
46
- return buildUseTokens(getComponentInfo, ...mergedTokens);
47
- };
48
- return useTokensCore;
35
+ // create a cache instance for use in this particular call to buildUseTokens
36
+ const cache = (0, framework_base_2.getMemoCache)();
37
+ // the core function simply merges layers together, looking up component definitions in the theme as well as executing any
38
+ // theme functions. This turns the tokens into an array of token objects that then get merged together
39
+ const useTokensCore = (theme) => {
40
+ // get the base styles all merged together, these will only depend on internal tokens and theme
41
+ return cache(
42
+ () => (0, framework_base_1.immutableMerge)(...tokens.map((value) => mapToTokens(value, theme, getComponentInfo))),
43
+ [theme],
44
+ );
45
+ };
46
+ // attach a customize function to generate a new use
47
+ useTokensCore.customize = (...newTokens) => {
48
+ const mergedTokens = [...tokens, ...newTokens];
49
+ return buildUseTokens(getComponentInfo, ...mergedTokens);
50
+ };
51
+ return useTokensCore;
49
52
  }
50
- exports.buildUseTokens = buildUseTokens;
51
- //# sourceMappingURL=buildUseTokens.js.map
53
+ //# sourceMappingURL=buildUseTokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildUseTokens.js","sourceRoot":"","sources":["../src/buildUseTokens.ts"],"names":[],"mappings":";;;AAAA,0EAAuE;AAEvE,0EAAqE;AAiCrE;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CAClB,UAA+D,EAC/D,KAAa,EACb,gBAA+D;IAE/D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,UAAU,GAAG,CAAC,gBAAgB,IAAK,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAa,CAAC,IAAK,EAAc,CAAC;KACxG;IACD,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;QACpC,UAAU,GAAI,UAA+C,CAAC,KAAK,CAAC,CAAC;KACtE;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,gBAA+D,EAC/D,GAAG,MAAwC;IAE3C,4EAA4E;IAC5E,MAAM,KAAK,GAAG,IAAA,6BAAY,GAAE,CAAC;IAE7B,0HAA0H;IAC1H,sGAAsG;IACtG,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE;QACtC,+FAA+F;QAC/F,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,IAAA,+BAAc,EAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9H,CAAC,CAAC;IAEF,oDAAoD;IACpD,aAAa,CAAC,SAAS,GAAG,CAAC,GAAG,SAA2C,EAAE,EAAE;QAC3E,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;QAC/C,OAAO,cAAc,CAAkB,gBAAgB,EAAE,GAAG,YAAY,CAAC,CAAC;IAC5E,CAAC,CAAC;IAEF,OAAO,aAAa,CAAC;AACvB,CAAC;AArBD,wCAqBC"}
1
+ {"version":3,"file":"buildUseTokens.js","sourceRoot":"","sources":["../src/buildUseTokens.ts"],"names":[],"mappings":";;;AAAA,0EAAuE;AAEvE,0EAAqE;AAiCrE;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CAClB,UAA+D,EAC/D,KAAa,EACb,gBAA+D,EACtD;IACT,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,UAAU,GAAG,CAAC,gBAAgB,IAAK,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAa,CAAC,IAAK,EAAc,CAAC;IACzG,CAAC;IACD,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;QACrC,UAAU,GAAI,UAA+C,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,UAAU,CAAC;AAAA,CACnB;AAED;;;;;GAKG;AACH,wBACE,gBAA+D,EAC/D,GAAG,MAAwC,EACf;IAC5B,4EAA4E;IAC5E,MAAM,KAAK,GAAG,IAAA,6BAAY,GAAE,CAAC;IAE7B,0HAA0H;IAC1H,sGAAsG;IACtG,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC;QACvC,+FAA+F;QAC/F,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,IAAA,+BAAc,EAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAAA,CAC7H,CAAC;IAEF,oDAAoD;IACpD,aAAa,CAAC,SAAS,GAAG,CAAC,GAAG,SAA2C,EAAE,EAAE,CAAC;QAC5E,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;QAC/C,OAAO,cAAc,CAAkB,gBAAgB,EAAE,GAAG,YAAY,CAAC,CAAC;IAAA,CAC3E,CAAC;IAEF,OAAO,aAAa,CAAC;AAAA,CACtB"}
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=buildUseTokens.test.d.ts.map
2
+ //# sourceMappingURL=buildUseTokens.test.d.ts.map
@@ -1,87 +1,87 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const buildUseTokens_1 = require("./buildUseTokens");
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ const buildUseTokens_1 = require('./buildUseTokens');
4
4
  const baseTokens = {
5
- a: 'a-base',
6
- b: 'b-base',
7
- c: 'c-base',
8
- hover: {
9
- c: 'c-base-hover',
10
- },
11
- press: {
12
- c: 'c-base-press',
13
- },
5
+ a: 'a-base',
6
+ b: 'b-base',
7
+ c: 'c-base',
8
+ hover: {
9
+ c: 'c-base-hover',
10
+ },
11
+ press: {
12
+ c: 'c-base-press',
13
+ },
14
14
  };
15
15
  const defaultTheme = {
16
- vals: {
17
- foo: 'foo',
18
- bar: 'bar',
16
+ vals: {
17
+ foo: 'foo',
18
+ bar: 'bar',
19
+ },
20
+ components: {
21
+ uno: {
22
+ a: 'uno-a',
23
+ c: 'uno-c',
19
24
  },
20
- components: {
21
- uno: {
22
- a: 'uno-a',
23
- c: 'uno-c',
24
- },
25
- dos: {
26
- b: 'dos-b',
27
- c: 'dos-c',
28
- },
25
+ dos: {
26
+ b: 'dos-b',
27
+ c: 'dos-c',
29
28
  },
29
+ },
30
30
  };
31
31
  const variantTheme = {
32
- vals: {
33
- foo: 'variant',
34
- },
35
- components: {},
32
+ vals: {
33
+ foo: 'variant',
34
+ },
35
+ components: {},
36
36
  };
37
37
  const getComponentInfo = (theme, name) => theme.components[name];
38
38
  const componentTokens = [baseTokens, 'uno', (theme) => ({ b: theme.vals.foo })];
39
39
  const resolvedTokens = {
40
- a: 'uno-a',
41
- b: 'foo',
42
- c: 'uno-c',
43
- hover: {
44
- c: 'c-base-hover',
45
- },
46
- press: {
47
- c: 'c-base-press',
48
- },
40
+ a: 'uno-a',
41
+ b: 'foo',
42
+ c: 'uno-c',
43
+ hover: {
44
+ c: 'c-base-hover',
45
+ },
46
+ press: {
47
+ c: 'c-base-press',
48
+ },
49
49
  };
50
50
  const variantTokens = {
51
- a: 'a-base',
52
- b: 'variant',
53
- c: 'c-base',
54
- hover: {
55
- c: 'c-base-hover',
56
- },
57
- press: {
58
- c: 'c-base-press',
59
- },
51
+ a: 'a-base',
52
+ b: 'variant',
53
+ c: 'c-base',
54
+ hover: {
55
+ c: 'c-base-hover',
56
+ },
57
+ press: {
58
+ c: 'c-base-press',
59
+ },
60
60
  };
61
61
  describe('buildUseTokens test suite', () => {
62
- test('basic built hook', () => {
63
- const useTokens = (0, buildUseTokens_1.buildUseTokens)(getComponentInfo, ...componentTokens);
64
- const [tokens] = useTokens(defaultTheme);
65
- expect(tokens).toEqual(resolvedTokens);
66
- });
67
- test('multiple calls return same object', () => {
68
- const useTokens = (0, buildUseTokens_1.buildUseTokens)(getComponentInfo, ...componentTokens);
69
- const [tokens1] = useTokens(defaultTheme);
70
- const [tokens2] = useTokens(defaultTheme);
71
- expect(tokens1).toBe(tokens2);
72
- });
73
- test('variant theme is separate', () => {
74
- const useTokens = (0, buildUseTokens_1.buildUseTokens)(getComponentInfo, ...componentTokens);
75
- const [tokensDefault] = useTokens(defaultTheme);
76
- const [tokensVariant] = useTokens(variantTheme);
77
- expect(tokensVariant).not.toBe(tokensDefault);
78
- expect(tokensVariant).toEqual(variantTokens);
79
- });
80
- test('simple customization layers on top', () => {
81
- const useTokens = (0, buildUseTokens_1.buildUseTokens)(getComponentInfo, ...componentTokens);
82
- const useTokensCustom = useTokens.customize({ a: 'custom' });
83
- const [tokens] = useTokensCustom(defaultTheme);
84
- expect(tokens).toEqual({ ...resolvedTokens, a: 'custom' });
85
- });
62
+ test('basic built hook', () => {
63
+ const useTokens = (0, buildUseTokens_1.buildUseTokens)(getComponentInfo, ...componentTokens);
64
+ const [tokens] = useTokens(defaultTheme);
65
+ expect(tokens).toEqual(resolvedTokens);
66
+ });
67
+ test('multiple calls return same object', () => {
68
+ const useTokens = (0, buildUseTokens_1.buildUseTokens)(getComponentInfo, ...componentTokens);
69
+ const [tokens1] = useTokens(defaultTheme);
70
+ const [tokens2] = useTokens(defaultTheme);
71
+ expect(tokens1).toBe(tokens2);
72
+ });
73
+ test('variant theme is separate', () => {
74
+ const useTokens = (0, buildUseTokens_1.buildUseTokens)(getComponentInfo, ...componentTokens);
75
+ const [tokensDefault] = useTokens(defaultTheme);
76
+ const [tokensVariant] = useTokens(variantTheme);
77
+ expect(tokensVariant).not.toBe(tokensDefault);
78
+ expect(tokensVariant).toEqual(variantTokens);
79
+ });
80
+ test('simple customization layers on top', () => {
81
+ const useTokens = (0, buildUseTokens_1.buildUseTokens)(getComponentInfo, ...componentTokens);
82
+ const useTokensCustom = useTokens.customize({ a: 'custom' });
83
+ const [tokens] = useTokensCustom(defaultTheme);
84
+ expect(tokens).toEqual({ ...resolvedTokens, a: 'custom' });
85
+ });
86
86
  });
87
- //# sourceMappingURL=buildUseTokens.test.js.map
87
+ //# sourceMappingURL=buildUseTokens.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildUseTokens.test.js","sourceRoot":"","sources":["../src/buildUseTokens.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildUseTokens.test.js","sourceRoot":"","sources":["../src/buildUseTokens.test.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,28 @@
1
1
  import type React from 'react';
2
2
  import type { TokenSettings, UseTokens } from './buildUseTokens';
3
+ import type { FurnJSX } from '@fluentui-react-native/framework-base';
3
4
  /**
4
5
  * A component implementation, with a use tokens hook passed in. Implementing it this way allows the useTokens hook to be
5
6
  * modified by the customization handler
6
7
  */
7
- export type InjectableComponent<TProps, TTokens, TTheme> = (props: TProps, useTokens: UseTokens<TTokens, TTheme>) => JSX.Element | null;
8
+ export type InjectableComponent<TProps, TTokens, TTheme> = (props: TProps, useTokens: UseTokens<TTokens, TTheme>) => FurnJSX.Element | null;
8
9
  /**
9
10
  * A component with an attached customize function, used to create alternatively styled versions of the component
10
11
  */
11
12
  export type CustomizableComponent<TProps, TTokens, TTheme> = React.FunctionComponent<TProps> & {
12
- customize: (...tokens: TokenSettings<TTokens, TTheme>[]) => CustomizableComponent<TProps, TTokens, TTheme>;
13
+ customize: (...tokens: TokenSettings<TTokens, TTheme>[]) => CustomizableComponent<TProps, TTokens, TTheme>;
13
14
  };
14
15
  /**
15
16
  * Function helper for easily creating a customizable component based on the useTokens hook
16
17
  *
17
- * @param injectable - a function component implementation, written in (props, useTokens) => JSX.Element form
18
+ * @param injectable - a function component implementation, written in (props, useTokens) => FurnJSX.Element form
18
19
  * @param useTokens - a hook function, generally built via buildUseTokens, used to retrieve design tokens for the component
19
20
  *
20
21
  * @returns - a function component that has a static function called customize attached. Customize will return a
21
22
  * new component (which can also be customized)
22
23
  */
23
- export declare function customizable<TProps, TTokens, TTheme>(injectable: InjectableComponent<TProps, TTokens, TTheme>, useTokens: UseTokens<TTokens, TTheme>): CustomizableComponent<TProps, TTokens, TTheme>;
24
- //# sourceMappingURL=customizable.d.ts.map
24
+ export declare function customizable<TProps, TTokens, TTheme>(
25
+ injectable: InjectableComponent<TProps, TTokens, TTheme>,
26
+ useTokens: UseTokens<TTokens, TTheme>,
27
+ ): CustomizableComponent<TProps, TTokens, TTheme>;
28
+ //# sourceMappingURL=customizable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"customizable.d.ts","sourceRoot":"","sources":["../src/customizable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;AAExI;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG;IAC7F,SAAS,EAAE,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CAC5G,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAClD,UAAU,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EACxD,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,GACpC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAOhD"}
1
+ {"version":3,"file":"customizable.d.ts","sourceRoot":"","sources":["../src/customizable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAE5I;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG;IAC7F,SAAS,EAAE,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CAC5G,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAClD,UAAU,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EACxD,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,GACpC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAOhD"}
@@ -1,22 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.customizable = void 0;
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.customizable = customizable;
4
4
  /**
5
5
  * Function helper for easily creating a customizable component based on the useTokens hook
6
6
  *
7
- * @param injectable - a function component implementation, written in (props, useTokens) => JSX.Element form
7
+ * @param injectable - a function component implementation, written in (props, useTokens) => FurnJSX.Element form
8
8
  * @param useTokens - a hook function, generally built via buildUseTokens, used to retrieve design tokens for the component
9
9
  *
10
10
  * @returns - a function component that has a static function called customize attached. Customize will return a
11
11
  * new component (which can also be customized)
12
12
  */
13
13
  function customizable(injectable, useTokens) {
14
- const component = (props) => injectable(props, useTokens);
15
- component.customize = (...tokens) => {
16
- const useTokensNew = useTokens.customize(...tokens);
17
- return customizable(injectable, useTokensNew);
18
- };
19
- return component;
14
+ const component = (props) => injectable(props, useTokens);
15
+ component.customize = (...tokens) => {
16
+ const useTokensNew = useTokens.customize(...tokens);
17
+ return customizable(injectable, useTokensNew);
18
+ };
19
+ return component;
20
20
  }
21
- exports.customizable = customizable;
22
- //# sourceMappingURL=customizable.js.map
21
+ //# sourceMappingURL=customizable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"customizable.js","sourceRoot":"","sources":["../src/customizable.ts"],"names":[],"mappings":";;;AAiBA;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAC1B,UAAwD,EACxD,SAAqC;IAErC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClE,SAAS,CAAC,SAAS,GAAG,CAAC,GAAG,MAAwC,EAAE,EAAE;QACpE,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC;QACpD,OAAO,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAVD,oCAUC"}
1
+ {"version":3,"file":"customizable.js","sourceRoot":"","sources":["../src/customizable.ts"],"names":[],"mappings":";;;AAkBA;;;;;;;;GAQG;AACH,sBACE,UAAwD,EACxD,SAAqC,EACW;IAChD,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClE,SAAS,CAAC,SAAS,GAAG,CAAC,GAAG,MAAwC,EAAE,EAAE,CAAC;QACrE,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC;QACpD,OAAO,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAAA,CAC/C,CAAC;IACF,OAAO,SAAS,CAAC;AAAA,CAClB"}