react-native-skelo 0.0.2 → 0.0.5

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 (41) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +86 -90
  3. package/lib/commonjs/animations/PulseAnimation.js +17 -42
  4. package/lib/commonjs/animations/PulseAnimation.js.map +1 -1
  5. package/lib/commonjs/animations/ShimmerAnimation.js +54 -65
  6. package/lib/commonjs/animations/ShimmerAnimation.js.map +1 -1
  7. package/lib/commonjs/components/Skeleton.js +22 -16
  8. package/lib/commonjs/components/Skeleton.js.map +1 -1
  9. package/lib/commonjs/core/parser/expandLists.js +67 -0
  10. package/lib/commonjs/core/parser/expandLists.js.map +1 -0
  11. package/lib/commonjs/index.js +1 -0
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/module/animations/PulseAnimation.js +18 -43
  14. package/lib/module/animations/PulseAnimation.js.map +1 -1
  15. package/lib/module/animations/ShimmerAnimation.js +55 -66
  16. package/lib/module/animations/ShimmerAnimation.js.map +1 -1
  17. package/lib/module/components/Skeleton.js +22 -16
  18. package/lib/module/components/Skeleton.js.map +1 -1
  19. package/lib/module/core/parser/expandLists.js +61 -0
  20. package/lib/module/core/parser/expandLists.js.map +1 -0
  21. package/lib/module/index.js +4 -0
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/typescript/animations/PulseAnimation.d.ts +0 -44
  24. package/lib/typescript/animations/PulseAnimation.d.ts.map +1 -1
  25. package/lib/typescript/animations/ShimmerAnimation.d.ts +0 -44
  26. package/lib/typescript/animations/ShimmerAnimation.d.ts.map +1 -1
  27. package/lib/typescript/components/Skeleton.d.ts +1 -1
  28. package/lib/typescript/components/Skeleton.d.ts.map +1 -1
  29. package/lib/typescript/core/parser/expandLists.d.ts +3 -0
  30. package/lib/typescript/core/parser/expandLists.d.ts.map +1 -0
  31. package/lib/typescript/index.d.ts +1 -0
  32. package/lib/typescript/index.d.ts.map +1 -1
  33. package/lib/typescript/types/skeleton.d.ts +8 -0
  34. package/lib/typescript/types/skeleton.d.ts.map +1 -1
  35. package/package.json +5 -12
  36. package/src/animations/PulseAnimation.tsx +17 -89
  37. package/src/animations/ShimmerAnimation.tsx +39 -118
  38. package/src/components/Skeleton.tsx +24 -18
  39. package/src/core/parser/expandLists.tsx +77 -0
  40. package/src/index.ts +4 -0
  41. package/src/types/skeleton.ts +9 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_parser","_SkeletonRenderer","_SkeletonIgnore","_StyleSkeleton","_deepRegistry","_defaults","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Skeleton","loading","children","styles","excludeStyles","deep","animation","DEFAULT_CONFIG","duration","baseColor","highlightColor","borderRadius","accessible","accessibilityLabel","debug","skeletonTree","useMemo","__DEV__","console","log","expand","getDeepExpander","expanded","createElement","Fragment","length","warn","parsed","Parser","parse","summarize","nodes","map","node","type","style","JSON","stringify","error","config","StyleSkeleton","exclude","SkeletonRenderer","tree","displayName","Ignore","SkeletonIgnore"],"sourceRoot":"../../../src","sources":["components/Skeleton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_parser","_SkeletonRenderer","_SkeletonIgnore","_StyleSkeleton","_deepRegistry","_expandLists","_defaults","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Skeleton","loading","children","styles","excludeStyles","deep","count","animation","DEFAULT_CONFIG","duration","baseColor","highlightColor","borderRadius","accessible","accessibilityLabel","debug","skeletonTree","useMemo","__DEV__","console","log","prepared","expandListPlaceholders","expand","getDeepExpander","wantDeep","undefined","expanded","createElement","Fragment","length","warn","parsed","Parser","parse","summarize","nodes","map","node","type","style","JSON","stringify","error","config","StyleSkeleton","exclude","SkeletonRenderer","tree","displayName","Ignore","SkeletonIgnore"],"sourceRoot":"../../../src","sources":["components/Skeleton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.expandListPlaceholders = expandListPlaceholders;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _componentUtils = require("../../utils/componentUtils");
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ // List components whose rows come from `renderItem` (not JSX children).
12
+ const LIST_TYPES = new Set(['FlatList', 'SectionList', 'VirtualizedList', 'FlashList']);
13
+ const NOOP_SEPARATORS = {
14
+ highlight: () => {},
15
+ unhighlight: () => {},
16
+ updateProps: () => {}
17
+ };
18
+
19
+ // Renders `count` sample rows from a list's `renderItem` so there's something
20
+ // to skeletonize while the real data is still loading (the rows don't exist in
21
+ // the tree yet). Rows that throw on placeholder data are skipped.
22
+ function renderSampleRows(list, count) {
23
+ const props = list.props || {};
24
+ const data = Array.isArray(props.data) ? props.data : [];
25
+ const sample = data.length > 0 ? data[0] : {};
26
+ const rows = [];
27
+ for (let i = 0; i < count; i++) {
28
+ try {
29
+ const row = props.renderItem?.({
30
+ item: sample,
31
+ index: i,
32
+ section: {},
33
+ separators: NOOP_SEPARATORS
34
+ });
35
+ if (row) {
36
+ rows.push(/*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
37
+ key: i
38
+ }, row));
39
+ }
40
+ } catch {
41
+ // Row couldn't render with placeholder data — skip it.
42
+ }
43
+ }
44
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
45
+ style: props.contentContainerStyle
46
+ }, rows);
47
+ }
48
+
49
+ // Walks a child tree and replaces FlatList/SectionList with sample rows so a
50
+ // plain `<Skeleton><FlatList/></Skeleton>` produces a skeleton while loading.
51
+ function expandListPlaceholders(children, count) {
52
+ return _react.default.Children.map(children, child => {
53
+ if (! /*#__PURE__*/(0, _react.isValidElement)(child)) {
54
+ return child;
55
+ }
56
+ const name = (0, _componentUtils.getComponentName)(child);
57
+ const props = child.props || {};
58
+ if (LIST_TYPES.has(name) && typeof props.renderItem === 'function') {
59
+ return renderSampleRows(child, count);
60
+ }
61
+ if (props.children) {
62
+ return /*#__PURE__*/_react.default.cloneElement(child, undefined, expandListPlaceholders(props.children, count));
63
+ }
64
+ return child;
65
+ });
66
+ }
67
+ //# sourceMappingURL=expandLists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_componentUtils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LIST_TYPES","Set","NOOP_SEPARATORS","highlight","unhighlight","updateProps","renderSampleRows","list","count","props","data","Array","isArray","sample","length","rows","row","renderItem","item","index","section","separators","push","createElement","Fragment","key","View","style","contentContainerStyle","expandListPlaceholders","children","React","Children","map","child","isValidElement","name","getComponentName","cloneElement","undefined"],"sourceRoot":"../../../../src","sources":["core/parser/expandLists.tsx"],"mappings":"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","ignoreList":[]}
@@ -57,6 +57,7 @@ Object.defineProperty(exports, "withSkeleton", {
57
57
  return _withSkeleton.withSkeleton;
58
58
  }
59
59
  });
60
+ require("./deep");
60
61
  var _Skeleton = require("./components/Skeleton");
61
62
  var _SkeletonIgnore = require("./components/SkeletonIgnore");
62
63
  var _withSkeleton = require("./components/withSkeleton");
@@ -1 +1 @@
1
- {"version":3,"names":["_Skeleton","require","_SkeletonIgnore","_withSkeleton","_StyleSkeleton","_Skelo","_primitives"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AAEA,IAAAG,cAAA,GAAAH,OAAA;AAIA,IAAAI,MAAA,GAAAJ,OAAA;AAYA,IAAAK,WAAA,GAAAL,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["require","_Skeleton","_SkeletonIgnore","_withSkeleton","_StyleSkeleton","_Skelo","_primitives"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUAA,OAAA;AAGA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAEA,IAAAI,cAAA,GAAAJ,OAAA;AAIA,IAAAK,MAAA,GAAAL,OAAA;AAYA,IAAAM,WAAA,GAAAN,OAAA","ignoreList":[]}
@@ -1,23 +1,6 @@
1
- import React, { useEffect } from 'react';
2
- import { StyleSheet } from 'react-native';
3
- import Animated, { useSharedValue, useAnimatedStyle, withRepeat, withSequence, withTiming, Easing } from 'react-native-reanimated';
4
- /**
5
- * Pulse animation component using Reanimated 3
6
- *
7
- * Creates a subtle breathing/pulsing effect using:
8
- * - Shared values for performance
9
- * - Worklets for 60 FPS on UI thread
10
- * - Opacity animation for pulse effect
11
- *
12
- * @example
13
- * ```tsx
14
- * <PulseAnimation
15
- * width={200}
16
- * height={20}
17
- * borderRadius={4}
18
- * />
19
- * ```
20
- */
1
+ import React, { useEffect, useRef } from 'react';
2
+ import { Animated, Easing, StyleSheet } from 'react-native';
3
+ // Breathing opacity loop using React Native's built-in Animated (native driver).
21
4
  export function PulseAnimation({
22
5
  width,
23
6
  height,
@@ -27,38 +10,30 @@ export function PulseAnimation({
27
10
  style,
28
11
  children
29
12
  }) {
30
- // Shared value for opacity (0 to 1)
31
- const opacity = useSharedValue(1);
13
+ const opacity = useRef(new Animated.Value(1)).current;
32
14
  useEffect(() => {
33
- // Start infinite pulse animation
34
- // Sequence: fade out -> fade in
35
- opacity.value = withRepeat(withSequence(withTiming(0.5, {
15
+ const loop = Animated.loop(Animated.sequence([Animated.timing(opacity, {
16
+ toValue: 0.5,
36
17
  duration: duration / 2,
37
- easing: Easing.inOut(Easing.ease)
38
- }), withTiming(1, {
18
+ easing: Easing.inOut(Easing.ease),
19
+ useNativeDriver: true
20
+ }), Animated.timing(opacity, {
21
+ toValue: 1,
39
22
  duration: duration / 2,
40
- easing: Easing.inOut(Easing.ease)
41
- })), -1,
42
- // Infinite repeat
43
- false // Don't reverse
44
- );
23
+ easing: Easing.inOut(Easing.ease),
24
+ useNativeDriver: true
25
+ })]));
26
+ loop.start();
27
+ return () => loop.stop();
45
28
  }, [duration, opacity]);
46
-
47
- // Animated style for pulse effect
48
- const animatedStyle = useAnimatedStyle(() => {
49
- 'worklet';
50
-
51
- return {
52
- opacity: opacity.value
53
- };
54
- }, []);
55
29
  return /*#__PURE__*/React.createElement(Animated.View, {
56
30
  style: [styles.container, {
57
31
  width,
58
32
  height,
59
33
  borderRadius,
60
- backgroundColor: baseColor
61
- }, animatedStyle, style]
34
+ backgroundColor: baseColor,
35
+ opacity
36
+ }, style]
62
37
  }, children);
63
38
  }
64
39
  const styles = StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","StyleSheet","Animated","useSharedValue","useAnimatedStyle","withRepeat","withSequence","withTiming","Easing","PulseAnimation","width","height","baseColor","duration","borderRadius","style","children","opacity","value","easing","inOut","ease","animatedStyle","createElement","View","styles","container","backgroundColor","create","overflow"],"sourceRoot":"../../../src","sources":["animations/PulseAnimation.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AAExC,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,QAAQ,IACbC,cAAc,EACdC,gBAAgB,EAChBC,UAAU,EACVC,YAAY,EACZC,UAAU,EACVC,MAAM,QACD,yBAAyB;AA+ChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAC;EAC7BC,KAAK;EACLC,MAAM;EACNC,SAAS,GAAG,SAAS;EACrBC,QAAQ,GAAG,IAAI;EACfC,YAAY,GAAG,CAAC;EAChBC,KAAK;EACLC;AACU,CAAC,EAAE;EACb;EACA,MAAMC,OAAO,GAAGd,cAAc,CAAC,CAAC,CAAC;EAEjCH,SAAS,CAAC,MAAM;IACd;IACA;IACAiB,OAAO,CAACC,KAAK,GAAGb,UAAU,CACxBC,YAAY,CACVC,UAAU,CAAC,GAAG,EAAE;MACdM,QAAQ,EAAEA,QAAQ,GAAG,CAAC;MACtBM,MAAM,EAAEX,MAAM,CAACY,KAAK,CAACZ,MAAM,CAACa,IAAI;IAClC,CAAC,CAAC,EACFd,UAAU,CAAC,CAAC,EAAE;MACZM,QAAQ,EAAEA,QAAQ,GAAG,CAAC;MACtBM,MAAM,EAAEX,MAAM,CAACY,KAAK,CAACZ,MAAM,CAACa,IAAI;IAClC,CAAC,CACH,CAAC,EACD,CAAC,CAAC;IAAE;IACJ,KAAK,CAAC;IACR,CAAC;EACH,CAAC,EAAE,CAACR,QAAQ,EAAEI,OAAO,CAAC,CAAC;;EAEvB;EACA,MAAMK,aAAa,GAAGlB,gBAAgB,CAAC,MAAM;IAC3C,SAAS;;IAET,OAAO;MACLa,OAAO,EAAEA,OAAO,CAACC;IACnB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEnB,KAAA,CAAAwB,aAAA,CAACrB,QAAQ,CAACsB,IAAI;IACZT,KAAK,EAAE,CACLU,MAAM,CAACC,SAAS,EAChB;MACEhB,KAAK;MACLC,MAAM;MACNG,YAAY;MACZa,eAAe,EAAEf;IACnB,CAAC,EACDU,aAAa,EACbP,KAAK;EACL,GAEDC,QACY,CAAC;AAEpB;AAEA,MAAMS,MAAM,GAAGxB,UAAU,CAAC2B,MAAM,CAAC;EAC/BF,SAAS,EAAE;IACTG,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useRef","Animated","Easing","StyleSheet","PulseAnimation","width","height","baseColor","duration","borderRadius","style","children","opacity","Value","current","loop","sequence","timing","toValue","easing","inOut","ease","useNativeDriver","start","stop","createElement","View","styles","container","backgroundColor","create","overflow"],"sourceRoot":"../../../src","sources":["animations/PulseAnimation.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEhD,SAASC,QAAQ,EAAEC,MAAM,EAAEC,UAAU,QAAQ,cAAc;AAa3D;AACA,OAAO,SAASC,cAAcA,CAAC;EAC7BC,KAAK;EACLC,MAAM;EACNC,SAAS,GAAG,SAAS;EACrBC,QAAQ,GAAG,IAAI;EACfC,YAAY,GAAG,CAAC;EAChBC,KAAK;EACLC;AACU,CAAC,EAAE;EACb,MAAMC,OAAO,GAAGZ,MAAM,CAAC,IAAIC,QAAQ,CAACY,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAErDf,SAAS,CAAC,MAAM;IACd,MAAMgB,IAAI,GAAGd,QAAQ,CAACc,IAAI,CACxBd,QAAQ,CAACe,QAAQ,CAAC,CAChBf,QAAQ,CAACgB,MAAM,CAACL,OAAO,EAAE;MACvBM,OAAO,EAAE,GAAG;MACZV,QAAQ,EAAEA,QAAQ,GAAG,CAAC;MACtBW,MAAM,EAAEjB,MAAM,CAACkB,KAAK,CAAClB,MAAM,CAACmB,IAAI,CAAC;MACjCC,eAAe,EAAE;IACnB,CAAC,CAAC,EACFrB,QAAQ,CAACgB,MAAM,CAACL,OAAO,EAAE;MACvBM,OAAO,EAAE,CAAC;MACVV,QAAQ,EAAEA,QAAQ,GAAG,CAAC;MACtBW,MAAM,EAAEjB,MAAM,CAACkB,KAAK,CAAClB,MAAM,CAACmB,IAAI,CAAC;MACjCC,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CACH,CAAC;IACDP,IAAI,CAACQ,KAAK,CAAC,CAAC;IACZ,OAAO,MAAMR,IAAI,CAACS,IAAI,CAAC,CAAC;EAC1B,CAAC,EAAE,CAAChB,QAAQ,EAAEI,OAAO,CAAC,CAAC;EAEvB,oBACEd,KAAA,CAAA2B,aAAA,CAACxB,QAAQ,CAACyB,IAAI;IACZhB,KAAK,EAAE,CACLiB,MAAM,CAACC,SAAS,EAChB;MAAEvB,KAAK;MAAEC,MAAM;MAAEG,YAAY;MAAEoB,eAAe,EAAEtB,SAAS;MAAEK;IAAQ,CAAC,EACpEF,KAAK;EACL,GAEDC,QACY,CAAC;AAEpB;AAEA,MAAMgB,MAAM,GAAGxB,UAAU,CAAC2B,MAAM,CAAC;EAC/BF,SAAS,EAAE;IACTG,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,24 +1,8 @@
1
- import React, { useEffect } from 'react';
2
- import { StyleSheet, View } from 'react-native';
3
- import Animated, { useSharedValue, useAnimatedStyle, withRepeat, withTiming, interpolate, Easing } from 'react-native-reanimated';
4
- import { LinearGradient } from 'react-native-linear-gradient';
5
- /**
6
- * Shimmer animation component using Reanimated 3
7
- *
8
- * Creates a smooth left-to-right shimmer effect using:
9
- * - Shared values for performance
10
- * - Worklets for 60 FPS on UI thread
11
- * - Linear gradient for shimmer effect
12
- *
13
- * @example
14
- * ```tsx
15
- * <ShimmerAnimation
16
- * width={200}
17
- * height={20}
18
- * borderRadius={4}
19
- * />
20
- * ```
21
- */
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { Animated, Easing, StyleSheet, View } from 'react-native';
3
+ // Zero-dependency shimmer: a highlight band (dim/bright/dim segments to fake a
4
+ // soft gradient) sweeps across the base, driven by React Native's built-in
5
+ // Animated native driver. Plain Views only — guaranteed to render and animate.
22
6
  export function ShimmerAnimation({
23
7
  width,
24
8
  height,
@@ -29,33 +13,30 @@ export function ShimmerAnimation({
29
13
  style,
30
14
  children
31
15
  }) {
32
- // Shared value for animation progress (0 to 1)
33
- const progress = useSharedValue(0);
16
+ const progress = useRef(new Animated.Value(0)).current;
17
+ const [measuredWidth, setMeasuredWidth] = useState(0);
34
18
  useEffect(() => {
35
- // Start infinite shimmer animation
36
- progress.value = withRepeat(withTiming(1, {
19
+ const loop = Animated.loop(Animated.timing(progress, {
20
+ toValue: 1,
37
21
  duration,
38
- easing: Easing.linear
39
- }), -1,
40
- // Infinite repeat
41
- false // Don't reverse
42
- );
22
+ easing: Easing.linear,
23
+ useNativeDriver: true
24
+ }));
25
+ loop.start();
26
+ return () => loop.stop();
43
27
  }, [duration, progress]);
44
-
45
- // Animated style for shimmer overlay
46
- const animatedStyle = useAnimatedStyle(() => {
47
- 'worklet';
48
-
49
- // Calculate shimmer position
50
- // Interpolate from -100% to 100% to create left-to-right sweep
51
- const translateX = interpolate(progress.value, [0, 1], [-1, 1]);
52
- return {
53
- transform: [{
54
- translateX: translateX * (typeof width === 'number' ? width : 200)
55
- }]
56
- };
57
- }, [width]);
28
+ const onLayout = event => {
29
+ const w = event.nativeEvent.layout.width;
30
+ setMeasuredWidth(prev => prev === w ? prev : w);
31
+ };
32
+ const containerWidth = typeof width === 'number' ? width : measuredWidth || 200;
33
+ const bandWidth = Math.max(containerWidth * 0.6, 80);
34
+ const translateX = progress.interpolate({
35
+ inputRange: [0, 1],
36
+ outputRange: [-bandWidth, containerWidth]
37
+ });
58
38
  return /*#__PURE__*/React.createElement(View, {
39
+ onLayout: onLayout,
59
40
  style: [styles.container, {
60
41
  width,
61
42
  height,
@@ -63,34 +44,42 @@ export function ShimmerAnimation({
63
44
  backgroundColor: baseColor
64
45
  }, style]
65
46
  }, /*#__PURE__*/React.createElement(Animated.View, {
66
- style: [StyleSheet.absoluteFill, {
67
- overflow: 'hidden',
68
- borderRadius
47
+ pointerEvents: "none",
48
+ style: [styles.band, {
49
+ width: bandWidth,
50
+ transform: [{
51
+ translateX
52
+ }]
69
53
  }]
70
- }, /*#__PURE__*/React.createElement(Animated.View, {
71
- style: [styles.shimmer, {
72
- width: typeof width === 'number' ? width : '100%',
73
- height: '100%'
74
- }, animatedStyle]
75
- }, /*#__PURE__*/React.createElement(LinearGradient, {
76
- colors: [baseColor, highlightColor, highlightColor, baseColor],
77
- start: {
78
- x: 0,
79
- y: 0
80
- },
81
- end: {
82
- x: 1,
83
- y: 0
84
- },
85
- style: StyleSheet.absoluteFill
86
- }))), children);
54
+ }, /*#__PURE__*/React.createElement(View, {
55
+ style: [styles.segment, {
56
+ backgroundColor: highlightColor,
57
+ opacity: 0.25
58
+ }]
59
+ }), /*#__PURE__*/React.createElement(View, {
60
+ style: [styles.segment, {
61
+ backgroundColor: highlightColor,
62
+ opacity: 0.9
63
+ }]
64
+ }), /*#__PURE__*/React.createElement(View, {
65
+ style: [styles.segment, {
66
+ backgroundColor: highlightColor,
67
+ opacity: 0.25
68
+ }]
69
+ })), children);
87
70
  }
88
71
  const styles = StyleSheet.create({
89
72
  container: {
90
73
  overflow: 'hidden'
91
74
  },
92
- shimmer: {
93
- position: 'absolute'
75
+ band: {
76
+ position: 'absolute',
77
+ top: 0,
78
+ bottom: 0,
79
+ flexDirection: 'row'
80
+ },
81
+ segment: {
82
+ flex: 1
94
83
  }
95
84
  });
96
85
  //# sourceMappingURL=ShimmerAnimation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","StyleSheet","View","Animated","useSharedValue","useAnimatedStyle","withRepeat","withTiming","interpolate","Easing","LinearGradient","ShimmerAnimation","width","height","baseColor","highlightColor","duration","borderRadius","style","children","progress","value","easing","linear","animatedStyle","translateX","transform","createElement","styles","container","backgroundColor","absoluteFill","overflow","shimmer","colors","start","x","y","end","create","position"],"sourceRoot":"../../../src","sources":["animations/ShimmerAnimation.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useRef","useState","Animated","Easing","StyleSheet","View","ShimmerAnimation","width","height","baseColor","highlightColor","duration","borderRadius","style","children","progress","Value","current","measuredWidth","setMeasuredWidth","loop","timing","toValue","easing","linear","useNativeDriver","start","stop","onLayout","event","w","nativeEvent","layout","prev","containerWidth","bandWidth","Math","max","translateX","interpolate","inputRange","outputRange","createElement","styles","container","backgroundColor","pointerEvents","band","transform","segment","opacity","create","overflow","position","top","bottom","flexDirection","flex"],"sourceRoot":"../../../src","sources":["animations/ShimmerAnimation.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,7 @@ import { SkeletonRenderer } from './SkeletonRenderer';
4
4
  import { SkeletonIgnore } from './SkeletonIgnore';
5
5
  import { StyleSkeleton } from '../core/generator/StyleSkeleton';
6
6
  import { getDeepExpander } from '../core/deepRegistry';
7
+ import { expandListPlaceholders } from '../core/parser/expandLists';
7
8
  import { DEFAULT_CONFIG } from '../constants/defaults';
8
9
 
9
10
  /**
@@ -39,7 +40,8 @@ export function Skeleton({
39
40
  children,
40
41
  styles,
41
42
  excludeStyles,
42
- deep = false,
43
+ deep,
44
+ count = 6,
43
45
  animation = DEFAULT_CONFIG.animation,
44
46
  duration = DEFAULT_CONFIG.duration,
45
47
  baseColor = DEFAULT_CONFIG.baseColor,
@@ -60,24 +62,28 @@ export function Skeleton({
60
62
  console.log('[Skelo] Parsing component tree...');
61
63
  }
62
64
  try {
65
+ // Turn FlatList/SectionList into placeholder rows so lists show a
66
+ // skeleton even though their data (and rows) don't exist yet.
67
+ const prepared = expandListPlaceholders(children, count);
68
+
63
69
  // Deep mode: expand opaque components into their real host tree via the
64
70
  // opt-in expander (registered by importing 'react-native-skelo/deep').
65
- // Falls back to static parsing if unavailable or it returns nothing.
66
- if (deep) {
67
- const expand = getDeepExpander();
68
- if (expand) {
69
- const expanded = expand(/*#__PURE__*/React.createElement(React.Fragment, null, children));
70
- if (expanded && expanded.length > 0) {
71
- return expanded;
72
- }
73
- if (__DEV__) {
74
- console.warn('[Skelo] deep expansion returned nothing; falling back to static parsing.');
75
- }
76
- } else if (__DEV__) {
77
- console.warn("[Skelo] `deep` requires react-reconciler. Install it and add `import 'react-native-skelo/deep';` in your app entry.");
71
+ // When `deep` is not set explicitly, it's used automatically whenever the
72
+ // expander is available. Falls back to static parsing otherwise.
73
+ const expand = getDeepExpander();
74
+ const wantDeep = deep === undefined ? expand !== null : deep;
75
+ if (wantDeep && expand) {
76
+ const expanded = expand(/*#__PURE__*/React.createElement(React.Fragment, null, prepared));
77
+ if (expanded && expanded.length > 0) {
78
+ return expanded;
79
+ }
80
+ if (__DEV__) {
81
+ console.warn('[Skelo] deep expansion returned nothing; falling back to static parsing.');
78
82
  }
83
+ } else if (deep === true && !expand && __DEV__) {
84
+ console.warn("[Skelo] `deep` requires react-reconciler. Install it and add `import 'react-native-skelo/deep';` in your app entry.");
79
85
  }
80
- const parsed = Parser.parse(children);
86
+ const parsed = Parser.parse(prepared);
81
87
  if (__DEV__ && debug) {
82
88
  // Log a lightweight summary: the raw nodes hold React elements
83
89
  // (`element`) and arbitrary props that aren't safely serializable.
@@ -95,7 +101,7 @@ export function Skeleton({
95
101
  }
96
102
  return [];
97
103
  }
98
- }, [loading, styles, deep, children, debug]);
104
+ }, [loading, styles, deep, count, children, debug]);
99
105
 
100
106
  // Create skeleton config
101
107
  const config = useMemo(() => ({
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","Parser","SkeletonRenderer","SkeletonIgnore","StyleSkeleton","getDeepExpander","DEFAULT_CONFIG","Skeleton","loading","children","styles","excludeStyles","deep","animation","duration","baseColor","highlightColor","borderRadius","accessible","accessibilityLabel","debug","skeletonTree","__DEV__","console","log","expand","expanded","createElement","Fragment","length","warn","parsed","parse","summarize","nodes","map","node","type","style","JSON","stringify","error","config","exclude","tree","displayName","Ignore"],"sourceRoot":"../../../src","sources":["components/Skeleton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","Parser","SkeletonRenderer","SkeletonIgnore","StyleSkeleton","getDeepExpander","expandListPlaceholders","DEFAULT_CONFIG","Skeleton","loading","children","styles","excludeStyles","deep","count","animation","duration","baseColor","highlightColor","borderRadius","accessible","accessibilityLabel","debug","skeletonTree","__DEV__","console","log","prepared","expand","wantDeep","undefined","expanded","createElement","Fragment","length","warn","parsed","parse","summarize","nodes","map","node","type","style","JSON","stringify","error","config","exclude","tree","displayName","Ignore"],"sourceRoot":"../../../src","sources":["components/Skeleton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,61 @@
1
+ import React, { isValidElement } from 'react';
2
+ import { View } from 'react-native';
3
+ import { getComponentName } from '../../utils/componentUtils';
4
+
5
+ // List components whose rows come from `renderItem` (not JSX children).
6
+ const LIST_TYPES = new Set(['FlatList', 'SectionList', 'VirtualizedList', 'FlashList']);
7
+ const NOOP_SEPARATORS = {
8
+ highlight: () => {},
9
+ unhighlight: () => {},
10
+ updateProps: () => {}
11
+ };
12
+
13
+ // Renders `count` sample rows from a list's `renderItem` so there's something
14
+ // to skeletonize while the real data is still loading (the rows don't exist in
15
+ // the tree yet). Rows that throw on placeholder data are skipped.
16
+ function renderSampleRows(list, count) {
17
+ const props = list.props || {};
18
+ const data = Array.isArray(props.data) ? props.data : [];
19
+ const sample = data.length > 0 ? data[0] : {};
20
+ const rows = [];
21
+ for (let i = 0; i < count; i++) {
22
+ try {
23
+ const row = props.renderItem?.({
24
+ item: sample,
25
+ index: i,
26
+ section: {},
27
+ separators: NOOP_SEPARATORS
28
+ });
29
+ if (row) {
30
+ rows.push(/*#__PURE__*/React.createElement(React.Fragment, {
31
+ key: i
32
+ }, row));
33
+ }
34
+ } catch {
35
+ // Row couldn't render with placeholder data — skip it.
36
+ }
37
+ }
38
+ return /*#__PURE__*/React.createElement(View, {
39
+ style: props.contentContainerStyle
40
+ }, rows);
41
+ }
42
+
43
+ // Walks a child tree and replaces FlatList/SectionList with sample rows so a
44
+ // plain `<Skeleton><FlatList/></Skeleton>` produces a skeleton while loading.
45
+ export function expandListPlaceholders(children, count) {
46
+ return React.Children.map(children, child => {
47
+ if (! /*#__PURE__*/isValidElement(child)) {
48
+ return child;
49
+ }
50
+ const name = getComponentName(child);
51
+ const props = child.props || {};
52
+ if (LIST_TYPES.has(name) && typeof props.renderItem === 'function') {
53
+ return renderSampleRows(child, count);
54
+ }
55
+ if (props.children) {
56
+ return /*#__PURE__*/React.cloneElement(child, undefined, expandListPlaceholders(props.children, count));
57
+ }
58
+ return child;
59
+ });
60
+ }
61
+ //# sourceMappingURL=expandLists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","isValidElement","View","getComponentName","LIST_TYPES","Set","NOOP_SEPARATORS","highlight","unhighlight","updateProps","renderSampleRows","list","count","props","data","Array","isArray","sample","length","rows","i","row","renderItem","item","index","section","separators","push","createElement","Fragment","key","style","contentContainerStyle","expandListPlaceholders","children","Children","map","child","name","has","cloneElement","undefined"],"sourceRoot":"../../../../src","sources":["core/parser/expandLists.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,cAAc,QAAQ,OAAO;AAE7C,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,gBAAgB,QAAQ,4BAA4B;;AAE7D;AACA,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAEvF,MAAMC,eAAe,GAAG;EACtBC,SAAS,EAAEA,CAAA,KAAM,CAAC,CAAC;EACnBC,WAAW,EAAEA,CAAA,KAAM,CAAC,CAAC;EACrBC,WAAW,EAAEA,CAAA,KAAM,CAAC;AACtB,CAAC;;AAED;AACA;AACA;AACA,SAASC,gBAAgBA,CAACC,IAAkB,EAAEC,KAAa,EAAa;EACtE,MAAMC,KAAK,GAAIF,IAAI,CAACE,KAAK,IAAI,CAAC,CAS7B;EAED,MAAMC,IAAI,GAAGC,KAAK,CAACC,OAAO,CAACH,KAAK,CAACC,IAAI,CAAC,GAAGD,KAAK,CAACC,IAAI,GAAG,EAAE;EACxD,MAAMG,MAAM,GAAGH,IAAI,CAACI,MAAM,GAAG,CAAC,GAAGJ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAE7C,MAAMK,IAAiB,GAAG,EAAE;EAC5B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGR,KAAK,EAAEQ,CAAC,EAAE,EAAE;IAC9B,IAAI;MACF,MAAMC,GAAG,GAAGR,KAAK,CAACS,UAAU,GAAG;QAC7BC,IAAI,EAAEN,MAAM;QACZO,KAAK,EAAEJ,CAAC;QACRK,OAAO,EAAE,CAAC,CAAC;QACXC,UAAU,EAAEpB;MACd,CAAC,CAAC;MACF,IAAIe,GAAG,EAAE;QACPF,IAAI,CAACQ,IAAI,cAAC3B,KAAA,CAAA4B,aAAA,CAAC5B,KAAK,CAAC6B,QAAQ;UAACC,GAAG,EAAEV;QAAE,GAAEC,GAAoB,CAAC,CAAC;MAC3D;IACF,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;EAEA,oBAAOrB,KAAA,CAAA4B,aAAA,CAAC1B,IAAI;IAAC6B,KAAK,EAAElB,KAAK,CAACmB;EAA+B,GAAEb,IAAW,CAAC;AACzE;;AAEA;AACA;AACA,OAAO,SAASc,sBAAsBA,CAACC,QAAmB,EAAEtB,KAAa,EAAa;EACpF,OAAOZ,KAAK,CAACmC,QAAQ,CAACC,GAAG,CAACF,QAAQ,EAAEG,KAAK,IAAI;IAC3C,IAAI,eAACpC,cAAc,CAACoC,KAAK,CAAC,EAAE;MAC1B,OAAOA,KAAK;IACd;IAEA,MAAMC,IAAI,GAAGnC,gBAAgB,CAACkC,KAAK,CAAC;IACpC,MAAMxB,KAAK,GAAIwB,KAAK,CAACxB,KAAK,IAAI,CAAC,CAA8B;IAE7D,IACET,UAAU,CAACmC,GAAG,CAACD,IAAI,CAAC,IACpB,OAAQzB,KAAK,CAA8BS,UAAU,KAAK,UAAU,EACpE;MACA,OAAOZ,gBAAgB,CAAC2B,KAAK,EAAEzB,KAAK,CAAC;IACvC;IAEA,IAAIC,KAAK,CAACqB,QAAQ,EAAE;MAClB,oBAAOlC,KAAK,CAACwC,YAAY,CAACH,KAAK,EAAEI,SAAS,EAAER,sBAAsB,CAACpB,KAAK,CAACqB,QAAQ,EAAEtB,KAAK,CAAC,CAAC;IAC5F;IAEA,OAAOyB,KAAK;EACd,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -6,6 +6,10 @@
6
6
  * @packageDocumentation
7
7
  */
8
8
 
9
+ // Auto-register deep expansion (react-reconciler ships as a dependency), so
10
+ // `<Skeleton deep>` / opaque components work with zero setup.
11
+ import './deep';
12
+
9
13
  // Main component
10
14
  export { Skeleton } from './components/Skeleton';
11
15
  export { SkeletonIgnore } from './components/SkeletonIgnore';
@@ -1 +1 @@
1
- {"version":3,"names":["Skeleton","SkeletonIgnore","withSkeleton","StyleSkeleton","Skelo","SkeletonBox","SkeletonText","SkeletonImage","SkeletonCircle"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,cAAc,QAAQ,6BAA6B;AAC5D,SAASC,YAAY,QAAQ,2BAA2B;AAExD,SAASC,aAAa,QAAQ,gCAAgC;AAG9D;AACA,SAASC,KAAK,QAAQ,SAAS;;AAE/B;;AASA;AACA,SAASC,WAAW,EAAEC,YAAY,EAAEC,aAAa,EAAEC,cAAc,QAAQ,yBAAyB","ignoreList":[]}
1
+ {"version":3,"names":["Skeleton","SkeletonIgnore","withSkeleton","StyleSkeleton","Skelo","SkeletonBox","SkeletonText","SkeletonImage","SkeletonCircle"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,QAAQ;;AAEf;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,cAAc,QAAQ,6BAA6B;AAC5D,SAASC,YAAY,QAAQ,2BAA2B;AAExD,SAASC,aAAa,QAAQ,gCAAgC;AAG9D;AACA,SAASC,KAAK,QAAQ,SAAS;;AAE/B;;AASA;AACA,SAASC,WAAW,EAAEC,YAAY,EAAEC,aAAa,EAAEC,cAAc,QAAQ,yBAAyB","ignoreList":[]}