@fluentui-react-native/experimental-shimmer 0.8.12 → 0.8.14

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 (85) hide show
  1. package/CHANGELOG.json +78 -1
  2. package/CHANGELOG.md +22 -2
  3. package/SPEC.md +324 -0
  4. package/assets/dark_shimmer_android.png +0 -0
  5. package/assets/dark_shimmer_win32.png +0 -0
  6. package/assets/light_shimmer_android.png +0 -0
  7. package/assets/light_shimmer_win32.png +0 -0
  8. package/jest.config.js +2 -0
  9. package/lib/Shimmer.d.ts.map +1 -1
  10. package/lib/Shimmer.js +27 -30
  11. package/lib/Shimmer.js.map +1 -1
  12. package/lib/Shimmer.styling.d.ts.map +1 -1
  13. package/lib/Shimmer.styling.js +5 -16
  14. package/lib/Shimmer.styling.js.map +1 -1
  15. package/lib/Shimmer.styling.win32.d.ts +1 -2
  16. package/lib/Shimmer.styling.win32.d.ts.map +1 -1
  17. package/lib/Shimmer.styling.win32.js +1 -13
  18. package/lib/Shimmer.styling.win32.js.map +1 -1
  19. package/lib/Shimmer.test.d.ts +2 -0
  20. package/lib/Shimmer.test.d.ts.map +1 -0
  21. package/lib/Shimmer.test.js +48 -0
  22. package/lib/Shimmer.test.js.map +1 -0
  23. package/lib/Shimmer.types.d.ts +22 -10
  24. package/lib/Shimmer.types.d.ts.map +1 -1
  25. package/lib/Shimmer.types.win32.d.ts +1 -1
  26. package/lib/Shimmer.types.win32.d.ts.map +1 -1
  27. package/lib/Shimmer.win32.js +1 -1
  28. package/lib/Shimmer.win32.js.map +1 -1
  29. package/lib/ShimmerTokens.android.d.ts +5 -0
  30. package/lib/ShimmerTokens.android.d.ts.map +1 -0
  31. package/lib/ShimmerTokens.android.js +12 -0
  32. package/lib/ShimmerTokens.android.js.map +1 -0
  33. package/lib/ShimmerTokens.d.ts +5 -0
  34. package/lib/ShimmerTokens.d.ts.map +1 -0
  35. package/lib/ShimmerTokens.js +13 -0
  36. package/lib/ShimmerTokens.js.map +1 -0
  37. package/lib/ShimmerTokens.win32.d.ts +5 -0
  38. package/lib/ShimmerTokens.win32.d.ts.map +1 -0
  39. package/lib/ShimmerTokens.win32.js +14 -0
  40. package/lib/ShimmerTokens.win32.js.map +1 -0
  41. package/lib-commonjs/Shimmer.d.ts.map +1 -1
  42. package/lib-commonjs/Shimmer.js +27 -30
  43. package/lib-commonjs/Shimmer.js.map +1 -1
  44. package/lib-commonjs/Shimmer.styling.d.ts.map +1 -1
  45. package/lib-commonjs/Shimmer.styling.js +5 -16
  46. package/lib-commonjs/Shimmer.styling.js.map +1 -1
  47. package/lib-commonjs/Shimmer.styling.win32.d.ts +1 -2
  48. package/lib-commonjs/Shimmer.styling.win32.d.ts.map +1 -1
  49. package/lib-commonjs/Shimmer.styling.win32.js +3 -16
  50. package/lib-commonjs/Shimmer.styling.win32.js.map +1 -1
  51. package/lib-commonjs/Shimmer.test.d.ts +2 -0
  52. package/lib-commonjs/Shimmer.test.d.ts.map +1 -0
  53. package/lib-commonjs/Shimmer.test.js +69 -0
  54. package/lib-commonjs/Shimmer.test.js.map +1 -0
  55. package/lib-commonjs/Shimmer.types.d.ts +22 -10
  56. package/lib-commonjs/Shimmer.types.d.ts.map +1 -1
  57. package/lib-commonjs/Shimmer.types.win32.d.ts +1 -1
  58. package/lib-commonjs/Shimmer.types.win32.d.ts.map +1 -1
  59. package/lib-commonjs/Shimmer.win32.js +1 -1
  60. package/lib-commonjs/Shimmer.win32.js.map +1 -1
  61. package/lib-commonjs/ShimmerTokens.android.d.ts +5 -0
  62. package/lib-commonjs/ShimmerTokens.android.d.ts.map +1 -0
  63. package/lib-commonjs/ShimmerTokens.android.js +16 -0
  64. package/lib-commonjs/ShimmerTokens.android.js.map +1 -0
  65. package/lib-commonjs/ShimmerTokens.d.ts +5 -0
  66. package/lib-commonjs/ShimmerTokens.d.ts.map +1 -0
  67. package/lib-commonjs/ShimmerTokens.js +17 -0
  68. package/lib-commonjs/ShimmerTokens.js.map +1 -0
  69. package/lib-commonjs/ShimmerTokens.win32.d.ts +5 -0
  70. package/lib-commonjs/ShimmerTokens.win32.d.ts.map +1 -0
  71. package/lib-commonjs/ShimmerTokens.win32.js +18 -0
  72. package/lib-commonjs/ShimmerTokens.win32.js.map +1 -0
  73. package/package.json +9 -3
  74. package/src/Shimmer.styling.ts +6 -17
  75. package/src/Shimmer.styling.win32.ts +2 -14
  76. package/src/Shimmer.test.tsx +53 -0
  77. package/src/Shimmer.tsx +12 -17
  78. package/src/Shimmer.types.ts +22 -10
  79. package/src/Shimmer.types.win32.ts +1 -1
  80. package/src/Shimmer.win32.tsx +2 -2
  81. package/src/ShimmerTokens.android.ts +14 -0
  82. package/src/ShimmerTokens.ts +15 -0
  83. package/src/ShimmerTokens.win32.ts +16 -0
  84. package/src/__snapshots__/Shimmer.test.tsx.snap +249 -0
  85. package/tsconfig.json +2 -1
@@ -72,19 +72,25 @@ export interface ShimmerRectElement {
72
72
  export declare type ShimmerElementTypes = ShimmerCircleElement | ShimmerRectElement;
73
73
  export interface ShimmerTokens extends IBackgroundColorTokens {
74
74
  /**
75
- * Specifies the Shimmer effect angle in degrees (produced by a gradient)
76
- * @defaultValue 0
75
+ * Specifies the Shimmer effect angle in degrees (produced by a gradient).
76
+ *
77
+ * @defaultValue 45 on @platform Android
78
+ * @defaultValue 0 on other platforms.
77
79
  */
78
80
  angle?: number;
79
81
  /**
80
- * Specifies the animation delay time in milliseconds
81
- * @defaultValue 0
82
+ * Specifies the animation delay time in milliseconds.
83
+ *
84
+ * @defaultValue 500 on @platform win32
85
+ * @defaultValue 0 on other platforms.
82
86
  */
83
87
  delay?: number;
84
88
  /**
85
- * Specifies the time required to traverse the control in milliseconds
89
+ * Specifies the time required to traverse the control in milliseconds.
86
90
  *
87
- * @defaultValue 2000
91
+ * @defaultValue 1000 on @platform Android
92
+ * @defaultValue 2000 on @platform win32
93
+ * @defaultValue 7000 on other platforms.
88
94
  */
89
95
  duration?: number;
90
96
  /**
@@ -100,30 +106,36 @@ export interface ShimmerTokens extends IBackgroundColorTokens {
100
106
  /**
101
107
  * Color you see when the shimmer wave is not animating.
102
108
  *
103
- * @defaultValue theme.colors.bodyFrameDivider
109
+ * @defaultValue theme.colors.neutralStencil1 on @platform Android
110
+ * @defaultValue theme.colors.bodyFrameDivider on @platform win32
111
+ * @defaultValue #E1E1E1/#404040 for light/dark theme on other platforms.
104
112
  */
105
113
  shimmerColor?: ColorValue;
106
114
  /**
107
115
  * Defines the tip color of the wave which has a linear gradient.
108
116
  * from shimmerColor to shimmerWaveColor to shimmerColor.
109
117
  *
110
- * @defaultValue '#E1E1E1'
118
+ * @defaultValue theme.colors.neutralStencil2 on @platform Android
119
+ * @defaultValue #E1E1E1 on @platform win32
120
+ * @defaultValue white/black for light/dark theme on other platforms.
111
121
  */
112
122
  shimmerWaveColor?: ColorValue;
113
123
  /**
114
124
  * Width of the Shimmer wave.
125
+ *
115
126
  * @defaultValue '100%' of the 'width' property
127
+ * @platform win32
116
128
  */
117
129
  shimmerWaveWidth?: number | string;
118
130
  }
119
- export interface ShimmerSlotProps extends ShimmerProps {
131
+ export interface ShimmerSlotProps {
120
132
  root: SvgProps;
121
133
  }
122
134
  export interface ShimmerProps extends ViewProps, ShimmerTokens {
123
135
  /**
124
136
  * Shimmer shapes that define the masking effect of the Shimmer control.
125
137
  */
126
- elements?: Array<ShimmerElementTypes>;
138
+ elements: Array<ShimmerElementTypes>;
127
139
  }
128
140
  export interface ShimmerType {
129
141
  props: ShimmerProps;
@@ -1 +1 @@
1
- {"version":3,"file":"Shimmer.types.d.ts","sourceRoot":"","sources":["../src/Shimmer.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IAEH;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IAEH;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;IAEV;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;CACX;AAED,oBAAY,mBAAmB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE5E,MAAM,WAAW,aAAc,SAAQ,sBAAsB;IAC3D;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;OAIG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS,EAAE,aAAa;IAC5D;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;CACvB"}
1
+ {"version":3,"file":"Shimmer.types.d.ts","sourceRoot":"","sources":["../src/Shimmer.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IAEH;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IAEH;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;IAEV;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;CACX;AAED,oBAAY,mBAAmB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE5E,MAAM,WAAW,aAAc,SAAQ,sBAAsB;IAC3D;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAE9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS,EAAE,aAAa;IAC5D;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;CACvB"}
@@ -22,7 +22,7 @@ export interface ShimmerWaveProps extends ShimmerTokens {
22
22
  viewBoxHeight: number;
23
23
  viewBoxWidth: number;
24
24
  }
25
- export interface ShimmerSlotProps extends ShimmerProps {
25
+ export interface ShimmerSlotProps {
26
26
  root: ViewProps;
27
27
  clippingMask: ClippingMaskProps;
28
28
  shimmerWave: ShimmerWaveProps;
@@ -1 +1 @@
1
- {"version":3,"file":"Shimmer.types.win32.d.ts","sourceRoot":"","sources":["../src/Shimmer.types.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,oBAAoB,EAAE,gBAAgB,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;CACvB"}
1
+ {"version":3,"file":"Shimmer.types.win32.d.ts","sourceRoot":"","sources":["../src/Shimmer.types.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,oBAAoB,EAAE,gBAAgB,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;CACvB"}
@@ -80,9 +80,9 @@ exports.Shimmer = (0, framework_1.compose)(__assign(__assign({ displayName: Shim
80
80
  shimmerWave: wave,
81
81
  shimmerWaveContainer: waveContainer,
82
82
  }, useRender: function (props, useSlots) {
83
+ var Slots = useSlots(props);
83
84
  return function (rest) {
84
85
  var _a = (0, framework_1.mergeProps)(props, rest), elements = _a.elements, mergedProps = __rest(_a, ["elements"]);
85
- var Slots = useSlots(mergedProps);
86
86
  /**
87
87
  * Generate a clip path from the provided element shapes, with their path parameter strings generated from their corresponding properties.
88
88
  * Ideally this would be better possible with functions from the shape elements themselves and not to rely on our own calculations.
@@ -1 +1 @@
1
- {"version":3,"file":"Shimmer.win32.js","sourceRoot":"","sources":["../src/Shimmer.win32.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Shimmer.win32.js","sourceRoot":"","sources":["../src/Shimmer.win32.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { ShimmerTokens } from './Shimmer.types';
3
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
4
+ export declare const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme>;
5
+ //# sourceMappingURL=ShimmerTokens.android.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShimmerTokens.android.d.ts","sourceRoot":"","sources":["../src/ShimmerTokens.android.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAShD,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultShimmerTokens = void 0;
4
+ var defaultShimmerTokens = function (theme) {
5
+ return ({
6
+ angle: 45,
7
+ delay: 0,
8
+ duration: 1000,
9
+ shimmerColor: theme.colors.neutralStencil1,
10
+ shimmerColorOpacity: 1,
11
+ shimmerWaveColor: theme.colors.neutralStencil2,
12
+ shimmerWaveColorOpacity: 1,
13
+ });
14
+ };
15
+ exports.defaultShimmerTokens = defaultShimmerTokens;
16
+ //# sourceMappingURL=ShimmerTokens.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShimmerTokens.android.js","sourceRoot":"","sources":["../src/ShimmerTokens.android.ts"],"names":[],"mappings":";;;AAIO,IAAM,oBAAoB,GAAwC,UAAC,KAAY;IACpF,OAAA,CAAC;QACC,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;QAC1C,mBAAmB,EAAE,CAAC;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;QAC9C,uBAAuB,EAAE,CAAC;KACT,CAAA;AARnB,CAQmB,CAAC;AATT,QAAA,oBAAoB,wBASX"}
@@ -0,0 +1,5 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { ShimmerTokens } from './Shimmer.types';
3
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
4
+ export declare const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme>;
5
+ //# sourceMappingURL=ShimmerTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShimmerTokens.d.ts","sourceRoot":"","sources":["../src/ShimmerTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAGnE,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAShD,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultShimmerTokens = void 0;
4
+ var theming_utils_1 = require("@fluentui-react-native/theming-utils");
5
+ var defaultShimmerTokens = function (theme) {
6
+ return ({
7
+ angle: 0,
8
+ delay: 0,
9
+ duration: 7000,
10
+ shimmerColor: (0, theming_utils_1.getCurrentAppearance)(theme.host.appearance, 'light') === 'light' ? '#E1E1E1' : '#404040',
11
+ shimmerColorOpacity: 1,
12
+ shimmerWaveColor: (0, theming_utils_1.getCurrentAppearance)(theme.host.appearance, 'light') === 'light' ? 'white' : 'black',
13
+ shimmerWaveColorOpacity: 1,
14
+ });
15
+ };
16
+ exports.defaultShimmerTokens = defaultShimmerTokens;
17
+ //# sourceMappingURL=ShimmerTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShimmerTokens.js","sourceRoot":"","sources":["../src/ShimmerTokens.ts"],"names":[],"mappings":";;;AAGA,sEAA4E;AAErE,IAAM,oBAAoB,GAAwC,UAAC,KAAY;IACpF,OAAA,CAAC;QACC,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAA,oCAAoB,EAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACtG,mBAAmB,EAAE,CAAC;QACtB,gBAAgB,EAAE,IAAA,oCAAoB,EAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;QACtG,uBAAuB,EAAE,CAAC;KACT,CAAA;AARnB,CAQmB,CAAC;AATT,QAAA,oBAAoB,wBASX"}
@@ -0,0 +1,5 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { ShimmerTokens } from './Shimmer.types';
3
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
4
+ export declare const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme>;
5
+ //# sourceMappingURL=ShimmerTokens.win32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShimmerTokens.win32.d.ts","sourceRoot":"","sources":["../src/ShimmerTokens.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAWhD,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultShimmerTokens = void 0;
4
+ var defaultShimmerTokens = function (theme) {
5
+ return ({
6
+ angle: 0,
7
+ backgroundColor: theme.colors.background,
8
+ delay: 500,
9
+ duration: 2000,
10
+ shimmerColor: theme.colors.bodyFrameDivider,
11
+ shimmerColorOpacity: 1,
12
+ shimmerWaveColor: '#E1E1E1',
13
+ shimmerWaveColorOpacity: 1,
14
+ shimmerWaveWidth: '100%',
15
+ });
16
+ };
17
+ exports.defaultShimmerTokens = defaultShimmerTokens;
18
+ //# sourceMappingURL=ShimmerTokens.win32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShimmerTokens.win32.js","sourceRoot":"","sources":["../src/ShimmerTokens.win32.ts"],"names":[],"mappings":";;;AAIO,IAAM,oBAAoB,GAAwC,UAAC,KAAY;IACpF,OAAA,CAAC;QACC,KAAK,EAAE,CAAC;QACR,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;QACxC,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB;QAC3C,mBAAmB,EAAE,CAAC;QACtB,gBAAgB,EAAE,SAAS;QAC3B,uBAAuB,EAAE,CAAC;QAC1B,gBAAgB,EAAE,MAAM;KACP,CAAA;AAVnB,CAUmB,CAAC;AAXT,QAAA,oBAAoB,wBAWX"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/experimental-shimmer",
3
- "version": "0.8.12",
3
+ "version": "0.8.14",
4
4
  "description": "A cross-platform Fluent Shimmer component",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -9,6 +9,9 @@
9
9
  "build": "fluentui-scripts build",
10
10
  "just": "fluentui-scripts",
11
11
  "clean": "fluentui-scripts clean",
12
+ "depcheck": "fluentui-scripts depcheck",
13
+ "lint": "fluentui-scripts eslint",
14
+ "test": "fluentui-scripts jest",
12
15
  "update-snapshots": "fluentui-scripts jest -u",
13
16
  "prettier": "fluentui-scripts prettier",
14
17
  "prettier-fix": "fluentui-scripts prettier --fix true"
@@ -19,8 +22,11 @@
19
22
  "directory": "packages/experimental/Shimmer"
20
23
  },
21
24
  "dependencies": {
22
- "@fluentui-react-native/framework": "0.8.35",
23
- "@fluentui-react-native/tokens": ">=0.20.4 <1.0.0",
25
+ "@fluentui-react-native/framework": "0.8.37",
26
+ "@fluentui-react-native/tokens": ">=0.20.6 <1.0.0",
27
+ "@fluentui-react-native/theming-utils": ">=0.23.1 <1.0.0",
28
+ "@fluentui-react-native/component-cache": "^1.4.2",
29
+ "@fluentui-react-native/use-styling": "^0.9.1",
24
30
  "react-native-svg": "12.5.0"
25
31
  },
26
32
  "devDependencies": {
@@ -1,31 +1,20 @@
1
- import { UseStylingOptions, buildProps, Theme } from '@fluentui-react-native/framework';
2
- import { getCurrentAppearance } from '@fluentui-react-native/theming-utils';
1
+ import { UseStylingOptions, buildProps } from '@fluentui-react-native/framework';
3
2
  import { shimmerName, ShimmerProps, ShimmerSlotProps, ShimmerTokens } from './Shimmer.types';
3
+ import { defaultShimmerTokens } from './ShimmerTokens';
4
4
 
5
5
  export const stylingSettings: UseStylingOptions<ShimmerProps, ShimmerSlotProps, ShimmerTokens> = {
6
- tokens: [
7
- () => ({
8
- angle: 0,
9
- delay: 0,
10
- duration: 7000,
11
- shimmerColor: '#E1E1E1', // Baseline component is the light mode color
12
- shimmerColorOpacity: 1,
13
- shimmerWaveColor: 'white', // Baseline component is the light mode color
14
- shimmerWaveColorOpacity: 1,
15
- }),
16
- shimmerName,
17
- ],
6
+ tokens: [defaultShimmerTokens, shimmerName],
18
7
  slotProps: {
19
8
  root: buildProps(
20
- (tokens: ShimmerTokens, theme: Theme) => ({
9
+ (tokens: ShimmerTokens) => ({
21
10
  accessibilityRole: 'progressbar',
22
11
  accessible: true,
23
12
  angle: tokens.angle,
24
13
  delay: tokens.delay,
25
14
  duration: tokens.duration,
26
- shimmerColor: getCurrentAppearance(theme.host.appearance, 'light') === 'light' ? '#E1E1E1' : '#404040',
15
+ shimmerColor: tokens.shimmerColor,
27
16
  shimmerColorOpacity: tokens.shimmerColorOpacity,
28
- shimmerWaveColor: getCurrentAppearance(theme.host.appearance, 'light') === 'light' ? 'white' : 'black',
17
+ shimmerWaveColor: tokens.shimmerWaveColor,
29
18
  shimmerWaveColorOpacity: tokens.shimmerWaveColorOpacity,
30
19
  }),
31
20
  ['angle', 'delay', 'duration', 'shimmerColor', 'shimmerColorOpacity', 'shimmerWaveColor', 'shimmerWaveColorOpacity'],
@@ -1,19 +1,7 @@
1
- import { UseStylingOptions, buildProps, Theme, TokenSettings } from '@fluentui-react-native/framework';
1
+ import { UseStylingOptions, buildProps } from '@fluentui-react-native/framework';
2
2
  import { shimmerName, ShimmerProps, ShimmerTokens } from './Shimmer.types';
3
3
  import { ShimmerSlotProps } from './Shimmer.types.win32';
4
-
5
- export const defaultShimmerTokens: TokenSettings<ShimmerTokens> = (theme: Theme) =>
6
- ({
7
- angle: 0,
8
- backgroundColor: theme.colors.background,
9
- delay: 500,
10
- duration: 2000,
11
- shimmerColor: theme.colors.bodyFrameDivider,
12
- shimmerColorOpacity: 1,
13
- shimmerWaveColor: '#E1E1E1',
14
- shimmerWaveColorOpacity: 1,
15
- shimmerWaveWidth: '100%',
16
- } as ShimmerTokens);
4
+ import { defaultShimmerTokens } from './ShimmerTokens.win32';
17
5
 
18
6
  /**
19
7
  * tell the styling hook how to build up the tokens
@@ -0,0 +1,53 @@
1
+ import * as React from 'react';
2
+ import * as renderer from 'react-test-renderer';
3
+ import { Shimmer } from './Shimmer';
4
+ import { ShimmerCircleElement, ShimmerRectElement } from './Shimmer.types';
5
+
6
+ // mocks out setTimeout and other timer functions with mock functions, test will fail without this as we're using Animated API
7
+ jest.useFakeTimers();
8
+
9
+ function shimmerRects(): Array<ShimmerRectElement | ShimmerCircleElement> {
10
+ return [
11
+ {
12
+ type: 'rect',
13
+ borderRadiusX: 3,
14
+ borderRadiusY: 3,
15
+ width: 100,
16
+ height: 20,
17
+ x: 90,
18
+ y: 70,
19
+ },
20
+ {
21
+ type: 'rect',
22
+ borderRadiusX: 3,
23
+ borderRadiusY: 3,
24
+ width: 150,
25
+ height: 20,
26
+ x: 90,
27
+ y: 42,
28
+ },
29
+ {
30
+ type: 'rect',
31
+ borderRadiusX: 3,
32
+ borderRadiusY: 3,
33
+ width: 200,
34
+ height: 20,
35
+ x: 90,
36
+ y: 15,
37
+ },
38
+ ];
39
+ }
40
+
41
+ const style = { width: 300, height: 100 };
42
+
43
+ describe('Shimmer component tests', () => {
44
+ it('Shimmer default', () => {
45
+ const tree = renderer.create(<Shimmer elements={shimmerRects()} />).toJSON();
46
+ expect(tree).toMatchSnapshot();
47
+ });
48
+
49
+ it('Shimmer with style prop', () => {
50
+ const tree = renderer.create(<Shimmer elements={shimmerRects()} style={style} />).toJSON();
51
+ expect(tree).toMatchSnapshot();
52
+ });
53
+ });
package/src/Shimmer.tsx CHANGED
@@ -21,8 +21,8 @@ export const Shimmer = compose<ShimmerType>({
21
21
  const memoizedShimmerData = useMemo(
22
22
  () => ({
23
23
  angle: props.angle ? props.angle : tokens['angle'],
24
- containerWidth: props?.style['width'] ? props?.style['width'] : '100%',
25
- containerHeight: props?.style['height'] ? props?.style['height'] : '100%',
24
+ containerWidth: props?.style?.['width'] ? props?.style['width'] : '100%',
25
+ containerHeight: props?.style?.['height'] ? props?.style['height'] : '100%',
26
26
  delay: props.delay ? props.delay : tokens['delay'],
27
27
  duration: props.duration ? props.duration : tokens['duration'],
28
28
  shimmerColor: props.shimmerColor ? props.shimmerColor : tokens['shimmerColor'],
@@ -42,27 +42,22 @@ export const Shimmer = compose<ShimmerType>({
42
42
  ],
43
43
  );
44
44
 
45
- const startValue = useRef(new Animated.Value(0)).current;
46
-
47
- /**
48
- * https://github.com/facebook/react-native/pull/29585
49
- * For Animated.loop() to work with the native driver, React Native needs this fix.
50
- * It's only available in React Native 0.66+, and React Native macOS 0.62+
51
- * To workaround this, let's just rerun the loop everytime the animation finishes
45
+ /* The shimmer animation is implemented using a LinearGradient which travels from left to right.
46
+ * Different angles are handled by rotating this gradient.
47
+ * The startValue is used to control the start position of the gradient animation, it is set as -1 to make sure it is starts off the screen for any angle.
48
+ * Similarly the endValue is set to 2 to make sure the gradient animation exits the entire screen for any angle.
52
49
  */
50
+ const startValue = useRef(new Animated.Value(-1)).current;
53
51
  const shimmerAnimation = useCallback(() => {
54
- Animated.sequence([
52
+ Animated.loop(
55
53
  Animated.timing(startValue, {
56
- toValue: 30,
54
+ toValue: 2,
57
55
  duration: memoizedShimmerData.duration,
58
56
  delay: memoizedShimmerData.delay,
59
57
  useNativeDriver: true,
60
58
  }),
61
- ]).start(() => {
62
- startValue.setValue(0);
63
- shimmerAnimation();
64
- });
65
- }, [memoizedShimmerData.duration, memoizedShimmerData.delay]);
59
+ ).start();
60
+ }, [memoizedShimmerData.delay, memoizedShimmerData.duration]);
66
61
 
67
62
  useEffect(() => {
68
63
  shimmerAnimation();
@@ -101,7 +96,7 @@ export const Shimmer = compose<ShimmerType>({
101
96
  return (
102
97
  <Slots.root {...mergedProps}>
103
98
  <Defs>
104
- <AnimatedLinearGradient id="gradient" x1={startValue} y1={memoizedShimmerData.angle} x2="-1" y2="-1">
99
+ <AnimatedLinearGradient id="gradient" x1={startValue} x2="-1" gradientTransform={`rotate(${memoizedShimmerData.angle})`}>
105
100
  <Stop offset="10%" stopColor={memoizedShimmerData.shimmerColor} stopOpacity={memoizedShimmerData.shimmerColorOpacity} />
106
101
  <Stop
107
102
  offset="20%"
@@ -88,21 +88,27 @@ export type ShimmerElementTypes = ShimmerCircleElement | ShimmerRectElement;
88
88
 
89
89
  export interface ShimmerTokens extends IBackgroundColorTokens {
90
90
  /**
91
- * Specifies the Shimmer effect angle in degrees (produced by a gradient)
92
- * @defaultValue 0
91
+ * Specifies the Shimmer effect angle in degrees (produced by a gradient).
92
+ *
93
+ * @defaultValue 45 on @platform Android
94
+ * @defaultValue 0 on other platforms.
93
95
  */
94
96
  angle?: number;
95
97
 
96
98
  /**
97
- * Specifies the animation delay time in milliseconds
98
- * @defaultValue 0
99
+ * Specifies the animation delay time in milliseconds.
100
+ *
101
+ * @defaultValue 500 on @platform win32
102
+ * @defaultValue 0 on other platforms.
99
103
  */
100
104
  delay?: number;
101
105
 
102
106
  /**
103
- * Specifies the time required to traverse the control in milliseconds
107
+ * Specifies the time required to traverse the control in milliseconds.
104
108
  *
105
- * @defaultValue 2000
109
+ * @defaultValue 1000 on @platform Android
110
+ * @defaultValue 2000 on @platform win32
111
+ * @defaultValue 7000 on other platforms.
106
112
  */
107
113
  duration?: number;
108
114
 
@@ -121,7 +127,9 @@ export interface ShimmerTokens extends IBackgroundColorTokens {
121
127
  /**
122
128
  * Color you see when the shimmer wave is not animating.
123
129
  *
124
- * @defaultValue theme.colors.bodyFrameDivider
130
+ * @defaultValue theme.colors.neutralStencil1 on @platform Android
131
+ * @defaultValue theme.colors.bodyFrameDivider on @platform win32
132
+ * @defaultValue #E1E1E1/#404040 for light/dark theme on other platforms.
125
133
  */
126
134
  shimmerColor?: ColorValue;
127
135
 
@@ -129,18 +137,22 @@ export interface ShimmerTokens extends IBackgroundColorTokens {
129
137
  * Defines the tip color of the wave which has a linear gradient.
130
138
  * from shimmerColor to shimmerWaveColor to shimmerColor.
131
139
  *
132
- * @defaultValue '#E1E1E1'
140
+ * @defaultValue theme.colors.neutralStencil2 on @platform Android
141
+ * @defaultValue #E1E1E1 on @platform win32
142
+ * @defaultValue white/black for light/dark theme on other platforms.
133
143
  */
134
144
  shimmerWaveColor?: ColorValue;
135
145
 
136
146
  /**
137
147
  * Width of the Shimmer wave.
148
+ *
138
149
  * @defaultValue '100%' of the 'width' property
150
+ * @platform win32
139
151
  */
140
152
  shimmerWaveWidth?: number | string;
141
153
  }
142
154
 
143
- export interface ShimmerSlotProps extends ShimmerProps {
155
+ export interface ShimmerSlotProps {
144
156
  root: SvgProps;
145
157
  }
146
158
 
@@ -148,7 +160,7 @@ export interface ShimmerProps extends ViewProps, ShimmerTokens {
148
160
  /**
149
161
  * Shimmer shapes that define the masking effect of the Shimmer control.
150
162
  */
151
- elements?: Array<ShimmerElementTypes>;
163
+ elements: Array<ShimmerElementTypes>;
152
164
  }
153
165
 
154
166
  export interface ShimmerType {
@@ -26,7 +26,7 @@ export interface ShimmerWaveProps extends ShimmerTokens {
26
26
  viewBoxWidth: number;
27
27
  }
28
28
 
29
- export interface ShimmerSlotProps extends ShimmerProps {
29
+ export interface ShimmerSlotProps {
30
30
  root: ViewProps;
31
31
  clippingMask: ClippingMaskProps;
32
32
  shimmerWave: ShimmerWaveProps;
@@ -82,10 +82,10 @@ export const Shimmer = compose<ShimmerType>({
82
82
  },
83
83
 
84
84
  useRender: (props: ShimmerProps, useSlots: UseSlots<ShimmerType>) => {
85
+ const Slots = useSlots(props);
86
+
85
87
  return (rest: ShimmerProps) => {
86
88
  const { elements, ...mergedProps } = mergeProps(props, rest);
87
- const Slots = useSlots(mergedProps);
88
-
89
89
  /**
90
90
  * Generate a clip path from the provided element shapes, with their path parameter strings generated from their corresponding properties.
91
91
  * Ideally this would be better possible with functions from the shape elements themselves and not to rely on our own calculations.
@@ -0,0 +1,14 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { ShimmerTokens } from './Shimmer.types';
3
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
4
+
5
+ export const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme> = (theme: Theme) =>
6
+ ({
7
+ angle: 45,
8
+ delay: 0,
9
+ duration: 1000,
10
+ shimmerColor: theme.colors.neutralStencil1,
11
+ shimmerColorOpacity: 1,
12
+ shimmerWaveColor: theme.colors.neutralStencil2,
13
+ shimmerWaveColorOpacity: 1,
14
+ } as ShimmerTokens);
@@ -0,0 +1,15 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { ShimmerTokens } from './Shimmer.types';
3
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
4
+ import { getCurrentAppearance } from '@fluentui-react-native/theming-utils';
5
+
6
+ export const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme> = (theme: Theme) =>
7
+ ({
8
+ angle: 0,
9
+ delay: 0,
10
+ duration: 7000,
11
+ shimmerColor: getCurrentAppearance(theme.host.appearance, 'light') === 'light' ? '#E1E1E1' : '#404040',
12
+ shimmerColorOpacity: 1,
13
+ shimmerWaveColor: getCurrentAppearance(theme.host.appearance, 'light') === 'light' ? 'white' : 'black',
14
+ shimmerWaveColorOpacity: 1,
15
+ } as ShimmerTokens);
@@ -0,0 +1,16 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { ShimmerTokens } from './Shimmer.types';
3
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
4
+
5
+ export const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme> = (theme: Theme) =>
6
+ ({
7
+ angle: 0,
8
+ backgroundColor: theme.colors.background,
9
+ delay: 500,
10
+ duration: 2000,
11
+ shimmerColor: theme.colors.bodyFrameDivider,
12
+ shimmerColorOpacity: 1,
13
+ shimmerWaveColor: '#E1E1E1',
14
+ shimmerWaveColorOpacity: 1,
15
+ shimmerWaveWidth: '100%',
16
+ } as ShimmerTokens);