react-native-animated-header-flat-list 1.6.7 → 1.6.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Karen
3
+ Copyright (c) 2026 Karen
4
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  of this software and associated documentation files (the "Software"), to deal
6
6
  in the Software without restriction, including without limitation the rights
@@ -43,14 +43,11 @@ function AnimatedHeaderFlatListInner({
43
43
  navigationTitleTranslateX,
44
44
  navigationTitleTranslateY
45
45
  });
46
- const navigationTitle = useCallback(() => title.length > 0 ? /*#__PURE__*/_jsx(Animated.View, {
47
- style: navigationTitleAnimatedStyle,
48
- children: /*#__PURE__*/_jsx(Animated.Text, {
49
- style: navigationTitleStyle,
50
- numberOfLines: 1,
51
- children: title
52
- })
53
- }) : null, [navigationTitleAnimatedStyle, navigationTitleStyle, title]);
46
+ const navigationTitle = useCallback(() => /*#__PURE__*/_jsx(Animated.Text, {
47
+ style: [navigationTitleAnimatedStyle, navigationTitleStyle],
48
+ numberOfLines: 1,
49
+ children: title
50
+ }), [navigationTitleAnimatedStyle, navigationTitleStyle, title]);
54
51
  useLayoutEffect(() => {
55
52
  navigation.setOptions({
56
53
  headerShown: true,
@@ -61,7 +58,7 @@ function AnimatedHeaderFlatListInner({
61
58
  headerTitleAlign: 'center'
62
59
  });
63
60
  }, [navigationTitle, navigation]);
64
- const createHeaderComponent = useCallback(key => {
61
+ const ListHeaderComponent = useMemo(() => {
65
62
  return /*#__PURE__*/_jsx(View, {
66
63
  style: styles.headerWrapper,
67
64
  children: /*#__PURE__*/_jsxs(View, {
@@ -84,19 +81,16 @@ function AnimatedHeaderFlatListInner({
84
81
  style: [navigationBarAnimatedStyle, styles.animatedNavigationBar, {
85
82
  backgroundColor: navigationBarColor
86
83
  }]
87
- }), title.length > 0 && /*#__PURE__*/_jsx(Animated.View, {
88
- style: headerTitleAnimatedStyle,
84
+ }), /*#__PURE__*/_jsx(Animated.Text, {
89
85
  onLayout: event => {
90
86
  setHeaderTitleLayout(event.nativeEvent.layout);
91
87
  },
92
- children: /*#__PURE__*/_jsx(Animated.Text, {
93
- numberOfLines: 1,
94
- style: [styles.headerTitle, headerTitleStyle],
95
- children: title
96
- }, `${key}-title`)
88
+ numberOfLines: 1,
89
+ style: [headerTitleAnimatedStyle, styles.headerTitle, headerTitleStyle],
90
+ children: title
97
91
  })]
98
92
  })
99
- }, key);
93
+ });
100
94
  }, [navigationBarHeight, parallax, headerBackgroundAnimatedStyle, HeaderBackground, HeaderContent, headerContentAnimatedStyle, headerTitleAnimatedStyle, headerTitleStyle, title, setHeaderLayout, setHeaderTitleLayout, navigationBarAnimatedStyle, navigationBarColor]);
101
95
  const renderItem = useCallback(({
102
96
  item
@@ -110,7 +104,7 @@ function AnimatedHeaderFlatListInner({
110
104
  style: [stickyHeaderAnimatedStyle, styles.stickyHeader, {
111
105
  bottom: headerLayout.height - navigationBarHeight * 2 + stickyComponentLayout.height
112
106
  }],
113
- children: createHeaderComponent('sticky')
107
+ children: ListHeaderComponent
114
108
  }), StickyComponent && /*#__PURE__*/_jsx(Animated.View, {
115
109
  style: [styles.stickyComponentContainer, stickyComponentAnimatedStyle],
116
110
  onLayout: event => {
@@ -123,7 +117,7 @@ function AnimatedHeaderFlatListInner({
123
117
  return flatListProps.renderItem && typeof flatListProps.renderItem === 'function' ? flatListProps.renderItem({
124
118
  item
125
119
  }) : null;
126
- }, [flatListProps, navigationBarHeight, stickyComponentLayout.height, stickyComponentAnimatedStyle, stickyHeaderAnimatedStyle, headerLayout.height, createHeaderComponent, StickyComponent, setStickyComponentLayout]);
120
+ }, [flatListProps, navigationBarHeight, stickyComponentLayout.height, stickyComponentAnimatedStyle, stickyHeaderAnimatedStyle, headerLayout.height, ListHeaderComponent, StickyComponent, setStickyComponentLayout]);
127
121
  const data = useMemo(() => {
128
122
  const listData = Array.isArray(flatListProps.data) ? flatListProps.data : [];
129
123
  return [HEADER_ITEM, ...listData];
@@ -143,7 +137,7 @@ function AnimatedHeaderFlatListInner({
143
137
  translateY: navigationBarHeight
144
138
  }]
145
139
  }],
146
- children: createHeaderComponent('main')
140
+ children: ListHeaderComponent
147
141
  }),
148
142
  onScroll: scrollHandler,
149
143
  data: data,
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","useLayoutEffect","useCallback","useMemo","StatusBar","StyleSheet","View","Animated","useAnimatedHeaderFlatListAnimatedStyles","getFontSizeFromStyle","useNavigation","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","HEADER_ITEM","AnimatedHeaderFlatListInner","title","navigationBarColor","headerTitleStyle","navigationTitleStyle","HeaderBackground","HeaderContent","StickyComponent","parallax","navigationTitleTranslateX","navigationTitleTranslateY","flatListProps","ref","navigation","scrollHandler","navigationBarHeight","headerLayout","setHeaderLayout","setHeaderTitleLayout","stickyComponentLayout","setStickyComponentLayout","stickyComponentAnimatedStyle","navigationBarAnimatedStyle","navigationTitleAnimatedStyle","headerTitleAnimatedStyle","stickyHeaderAnimatedStyle","headerContentAnimatedStyle","headerBackgroundAnimatedStyle","headerTitleFontSize","navigationTitleFontSize","navigationTitle","length","style","children","Text","numberOfLines","setOptions","headerShown","headerStyle","styles","navigationBar","headerShadowVisible","headerTransparent","headerTitle","headerTitleAlign","createHeaderComponent","key","headerWrapper","headerContainer","top","onLayout","event","nativeEvent","layout","height","undefined","headerContentContainer","animatedNavigationBar","backgroundColor","renderItem","item","stickyHeaderContainer","stickyHeader","bottom","stickyComponentContainer","data","listData","Array","isArray","translucent","FlatList","stickyHeaderIndices","ListHeaderComponent","mainHeaderContainer","transform","translateY","onScroll","create","overflow","position","left","right","width","AnimatedHeaderFlatList"],"sourceRoot":"../../../src","sources":["components/AnimatedHeaderFlatList.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","useLayoutEffect","useCallback","useMemo","StatusBar","StyleSheet","View","Animated","useAnimatedHeaderFlatListAnimatedStyles","getFontSizeFromStyle","useNavigation","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","HEADER_ITEM","AnimatedHeaderFlatListInner","title","navigationBarColor","headerTitleStyle","navigationTitleStyle","HeaderBackground","HeaderContent","StickyComponent","parallax","navigationTitleTranslateX","navigationTitleTranslateY","flatListProps","ref","navigation","scrollHandler","navigationBarHeight","headerLayout","setHeaderLayout","setHeaderTitleLayout","stickyComponentLayout","setStickyComponentLayout","stickyComponentAnimatedStyle","navigationBarAnimatedStyle","navigationTitleAnimatedStyle","headerTitleAnimatedStyle","stickyHeaderAnimatedStyle","headerContentAnimatedStyle","headerBackgroundAnimatedStyle","headerTitleFontSize","navigationTitleFontSize","navigationTitle","Text","style","numberOfLines","children","setOptions","headerShown","headerStyle","styles","navigationBar","headerShadowVisible","headerTransparent","headerTitle","headerTitleAlign","ListHeaderComponent","headerWrapper","headerContainer","top","onLayout","event","nativeEvent","layout","height","undefined","headerContentContainer","animatedNavigationBar","backgroundColor","renderItem","item","stickyHeaderContainer","stickyHeader","bottom","stickyComponentContainer","data","listData","Array","isArray","translucent","FlatList","stickyHeaderIndices","mainHeaderContainer","transform","translateY","onScroll","create","overflow","position","left","right","width","AnimatedHeaderFlatList"],"sourceRoot":"../../../src","sources":["components/AnimatedHeaderFlatList.tsx"],"mappings":";;AAAA,SAGEA,UAAU,EACVC,eAAe,EACfC,WAAW,EACXC,OAAO,QAIF,OAAO;AACd,SAEEC,SAAS,EACTC,UAAU,EACVC,IAAI,QAMC,cAAc;AAErB,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,uCAAuC,QAAQ,qDAAkD;AAC1G,SAASC,oBAAoB,QAAQ,wBAAqB;AAC1D,SAASC,aAAa,QAAQ,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAqBzD,MAAMC,WAAW,GAAG,+CAA+C;AAEnE,SAASC,2BAA2BA,CAClC;EACEC,KAAK;EACLC,kBAAkB;EAClBC,gBAAgB;EAChBC,oBAAoB;EACpBC,gBAAgB;EAChBC,aAAa;EACbC,eAAe;EACfC,QAAQ,GAAG,IAAI;EACfC,yBAAyB,GAAG,CAAC;EAC7BC,yBAAyB,GAAG,CAAC;EAC7B,GAAGC;AAC2B,CAAC,EACjCC,GAA8B,EAC9B;EACA,MAAMC,UAAU,GAAGrB,aAAa,CAAC,CAAC;EAClC,MAAM;IACJsB,aAAa;IACbC,mBAAmB;IACnBC,YAAY;IACZC,eAAe;IACfC,oBAAoB;IACpBC,qBAAqB;IACrBC,wBAAwB;IACxBC,4BAA4B;IAC5BC,0BAA0B;IAC1BC,4BAA4B;IAC5BC,wBAAwB;IACxBC,yBAAyB;IACzBC,0BAA0B;IAC1BC;EACF,CAAC,GAAGrC,uCAAuC,CAAC;IAC1CsC,mBAAmB,EAAErC,oBAAoB,CAACY,gBAAgB,CAAC;IAC3D0B,uBAAuB,EAAEtC,oBAAoB,CAACa,oBAAoB,CAAC;IACnEK,yBAAyB;IACzBC;EACF,CAAC,CAAC;EAEF,MAAMoB,eAAe,GAAG9C,WAAW,CACjC,mBACEU,IAAA,CAACL,QAAQ,CAAC0C,IAAI;IACZC,KAAK,EAAE,CAACT,4BAA4B,EAAEnB,oBAAoB,CAAE;IAC5D6B,aAAa,EAAE,CAAE;IAAAC,QAAA,EAEhBjC;EAAK,CACO,CAChB,EACD,CAACsB,4BAA4B,EAAEnB,oBAAoB,EAAEH,KAAK,CAC5D,CAAC;EAEDlB,eAAe,CAAC,MAAM;IACpB8B,UAAU,CAACsB,UAAU,CAAC;MACpBC,WAAW,EAAE,IAAI;MACjBC,WAAW,EAAEC,MAAM,CAACC,aAAa;MACjCC,mBAAmB,EAAE,KAAK;MAC1BC,iBAAiB,EAAE,IAAI;MACvBC,WAAW,EAAEZ,eAAe;MAC5Ba,gBAAgB,EAAE;IACpB,CAAC,CAAC;EACJ,CAAC,EAAE,CAACb,eAAe,EAAEjB,UAAU,CAAC,CAAC;EAEjC,MAAM+B,mBAAmB,GAAG3D,OAAO,CAAC,MAAM;IACxC,oBACES,IAAA,CAACN,IAAI;MAAC4C,KAAK,EAAEM,MAAM,CAACO,aAAc;MAAAX,QAAA,eAChCtC,KAAA,CAACR,IAAI;QACH4C,KAAK,EAAE,CAACM,MAAM,CAACQ,eAAe,EAAE;UAAEC,GAAG,EAAE,CAAChC;QAAoB,CAAC,CAAE;QAC/DiC,QAAQ,EAAGC,KAAwB,IAAK;UACtChC,eAAe,CAAC;YACd,GAAGgC,KAAK,CAACC,WAAW,CAACC,MAAM;YAC3BC,MAAM,EAAEH,KAAK,CAACC,WAAW,CAACC,MAAM,CAACC,MAAM,GAAGrC;UAC5C,CAAC,CAAC;QACJ,CAAE;QAAAmB,QAAA,gBAEFxC,IAAA,CAACL,QAAQ,CAACD,IAAI;UACZ4C,KAAK,EAAExB,QAAQ,GAAGmB,6BAA6B,GAAG0B,SAAU;UAAAnB,QAAA,eAE5DxC,IAAA,CAACW,gBAAgB,IAAE;QAAC,CACP,CAAC,EACfC,aAAa,iBACZZ,IAAA,CAACL,QAAQ,CAACD,IAAI;UACZ4C,KAAK,EAAE,CACLN,0BAA0B,EAC1BY,MAAM,CAACgB,sBAAsB,CAC7B;UAAApB,QAAA,eAEFxC,IAAA,CAACY,aAAa,IAAE;QAAC,CACJ,CAChB,EACAJ,kBAAkB,iBACjBR,IAAA,CAACL,QAAQ,CAACD,IAAI;UACZ4C,KAAK,EAAE,CACLV,0BAA0B,EAC1BgB,MAAM,CAACiB,qBAAqB,EAC5B;YAAEC,eAAe,EAAEtD;UAAmB,CAAC;QACvC,CACH,CACF,eACDR,IAAA,CAACL,QAAQ,CAAC0C,IAAI;UACZiB,QAAQ,EAAGC,KAAwB,IAAK;YACtC/B,oBAAoB,CAAC+B,KAAK,CAACC,WAAW,CAACC,MAAM,CAAC;UAChD,CAAE;UACFlB,aAAa,EAAE,CAAE;UACjBD,KAAK,EAAE,CACLR,wBAAwB,EACxBc,MAAM,CAACI,WAAW,EAClBvC,gBAAgB,CAChB;UAAA+B,QAAA,EAEDjC;QAAK,CACO,CAAC;MAAA,CACZ;IAAC,CACH,CAAC;EAEX,CAAC,EAAE,CACDc,mBAAmB,EACnBP,QAAQ,EACRmB,6BAA6B,EAC7BtB,gBAAgB,EAChBC,aAAa,EACboB,0BAA0B,EAC1BF,wBAAwB,EACxBrB,gBAAgB,EAChBF,KAAK,EACLgB,eAAe,EACfC,oBAAoB,EACpBI,0BAA0B,EAC1BpB,kBAAkB,CACnB,CAAC;EAIF,MAAMuD,UAAU,GAAGzE,WAAW,CAC5B,CAAC;IAAE0E;EAAqC,CAAC,KAAgB;IACvD,IAAIA,IAAI,KAAK3D,WAAW,EAAE;MACxB,oBACEH,KAAA,CAACR,IAAI;QACH4C,KAAK,EAAE,CACLM,MAAM,CAACqB,qBAAqB,EAC5B;UACEP,MAAM,EAAErC,mBAAmB,GAAGI,qBAAqB,CAACiC;QACtD,CAAC,CACD;QAAAlB,QAAA,gBAEFxC,IAAA,CAACL,QAAQ,CAACD,IAAI;UACZ4C,KAAK,EAAE,CACLP,yBAAyB,EACzBa,MAAM,CAACsB,YAAY,EACnB;YACEC,MAAM,EACJ7C,YAAY,CAACoC,MAAM,GACnBrC,mBAAmB,GAAG,CAAC,GACvBI,qBAAqB,CAACiC;UAC1B,CAAC,CACD;UAAAlB,QAAA,EAEDU;QAAmB,CACP,CAAC,EACfrC,eAAe,iBACdb,IAAA,CAACL,QAAQ,CAACD,IAAI;UACZ4C,KAAK,EAAE,CACLM,MAAM,CAACwB,wBAAwB,EAC/BzC,4BAA4B,CAC5B;UACF2B,QAAQ,EAAGC,KAAwB,IAAK;YACtC7B,wBAAwB,CAAC6B,KAAK,CAACC,WAAW,CAACC,MAAM,CAAC;UACpD,CAAE;UAAAjB,QAAA,eAEFxC,IAAA,CAACa,eAAe,IAAE;QAAC,CACN,CAChB;MAAA,CACG,CAAC;IAEX;IACA,OAAOI,aAAa,CAAC8C,UAAU,IAC7B,OAAO9C,aAAa,CAAC8C,UAAU,KAAK,UAAU,GAC5C9C,aAAa,CAAC8C,UAAU,CAAC;MAAEC;IAAK,CAA0B,CAAC,GAC3D,IAAI;EACV,CAAC,EACD,CACE/C,aAAa,EACbI,mBAAmB,EACnBI,qBAAqB,CAACiC,MAAM,EAC5B/B,4BAA4B,EAC5BI,yBAAyB,EACzBT,YAAY,CAACoC,MAAM,EACnBR,mBAAmB,EACnBrC,eAAe,EACfa,wBAAwB,CAE5B,CAAC;EAED,MAAM2C,IAAI,GAAG9E,OAAO,CAAC,MAAM;IACzB,MAAM+E,QAAQ,GAAGC,KAAK,CAACC,OAAO,CAACvD,aAAa,CAACoD,IAAI,CAAC,GAC9CpD,aAAa,CAACoD,IAAI,GAClB,EAAE;IACN,OAAO,CAAChE,WAAW,EAAE,GAAGiE,QAAQ,CAAC;EACnC,CAAC,EAAE,CAACrD,aAAa,CAACoD,IAAI,CAAC,CAAC;EAExB,oBACEnE,KAAA,CAAAE,SAAA;IAAAoC,QAAA,gBACExC,IAAA,CAACR,SAAS;MAACsE,eAAe,EAAC,aAAa;MAACW,WAAW;IAAA,CAAE,CAAC,eACvDzE,IAAA,CAACL,QAAQ,CAAC+E,QAAQ;MAAA,GACZzD,aAAa;MACjBC,GAAG,EAAEA,GAAI;MACTyD,mBAAmB,EAAE,CAAC,CAAC,CAAE;MACzBzB,mBAAmB,eACjBlD,IAAA,CAACL,QAAQ,CAACD,IAAI;QACZ4C,KAAK,EAAE,CACLM,MAAM,CAACgC,mBAAmB,EAC1B;UACElB,MAAM,EAAEpC,YAAY,CAACoC,MAAM,GAAGrC,mBAAmB,GAAG,CAAC;UACrDwD,SAAS,EAAE,CAAC;YAAEC,UAAU,EAAEzD;UAAoB,CAAC;QACjD,CAAC,CACD;QAAAmB,QAAA,EAEDU;MAAmB,CACP,CAChB;MACD6B,QAAQ,EAAE3D,aAAc;MACxBiD,IAAI,EAAEA,IAAK;MACXN,UAAU,EAAEA;IAAW,CACxB,CAAC;EAAA,CACF,CAAC;AAEP;AAEA,MAAMnB,MAAM,GAAGnD,UAAU,CAACuF,MAAM,CAAC;EAC/BnC,aAAa,EAAE;IACbiB,eAAe,EAAE;EACnB,CAAC;EACDX,aAAa,EAAE;IACb8B,QAAQ,EAAE;EACZ,CAAC;EACD7B,eAAe,EAAE;IACf8B,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRH,QAAQ,EAAE;EACZ,CAAC;EACDhB,qBAAqB,EAAE;IACrBoB,KAAK,EAAE;EACT,CAAC;EACDnB,YAAY,EAAE;IACZgB,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT,CAAC;EACDR,mBAAmB,EAAE;IACnBK,QAAQ,EAAE;EACZ,CAAC;EACDpB,qBAAqB,EAAE;IACrBqB,QAAQ,EAAE,UAAU;IACpBf,MAAM,EAAE,CAAC;IACTgB,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT,CAAC;EACDpC,WAAW,EAAE;IACXkC,QAAQ,EAAE;EACZ,CAAC;EACDd,wBAAwB,EAAE;IACxBc,QAAQ,EAAE,UAAU;IACpBf,MAAM,EAAE,CAAC;IACTgB,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT,CAAC;EACDxB,sBAAsB,EAAE;IACtBsB,QAAQ,EAAE,UAAU;IACpB7B,GAAG,EAAE,CAAC;IACN8B,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRjB,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AAEF,OAAO,MAAMmB,sBAAsB,gBAAGlG,UAAU,CAC9CkB,2BACF,CAIiB","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -1 +1 @@
1
- {"version":3,"file":"AnimatedHeaderFlatList.d.ts","sourceRoot":"","sources":["../../../../src/components/AnimatedHeaderFlatList.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EAKd,KAAK,aAAa,EAEnB,MAAM,OAAO,CAAC;AACf,OAAO,EACL,QAAQ,EAIR,KAAK,UAAU,EAGf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAMvE,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,gBAAgB,EAAE,aAAa,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,KAAK,2BAA2B,CAAC,CAAC,IAAI,IAAI,CACxC,uBAAuB,CAAC,CAAC,CAAC,EAC1B,MAAM,KAAK,CACZ,GACC,KAAK,CAAC;AA6RR,eAAO,MAAM,sBAAsB,EAE9B,CAAC,CAAC,EACL,KAAK,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACrC,KACE,YAAY,CAAC"}
1
+ {"version":3,"file":"AnimatedHeaderFlatList.d.ts","sourceRoot":"","sources":["../../../../src/components/AnimatedHeaderFlatList.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EAMd,KAAK,aAAa,EAEnB,MAAM,OAAO,CAAC;AACf,OAAO,EACL,QAAQ,EAIR,KAAK,UAAU,EAGf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAMvE,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,gBAAgB,EAAE,aAAa,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,KAAK,2BAA2B,CAAC,CAAC,IAAI,IAAI,CACxC,uBAAuB,CAAC,CAAC,CAAC,EAC1B,MAAM,KAAK,CACZ,GACC,KAAK,CAAC;AAuRR,eAAO,MAAM,sBAAsB,EAE9B,CAAC,CAAC,EACL,KAAK,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACrC,KACE,YAAY,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { type StyleProp, type TextStyle } from 'react-native';
2
- export declare const getFontSizeFromStyle: (textStyle: StyleProp<TextStyle>) => number | undefined;
2
+ export declare const getFontSizeFromStyle: (textStyle: StyleProp<TextStyle>) => any;
3
3
  //# sourceMappingURL=styleUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styleUtils.d.ts","sourceRoot":"","sources":["../../../../src/utils/styleUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D,eAAO,MAAM,oBAAoB,GAAI,WAAW,SAAS,CAAC,SAAS,CAAC,uBAgBnE,CAAC"}
1
+ {"version":3,"file":"styleUtils.d.ts","sourceRoot":"","sources":["../../../../src/utils/styleUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D,eAAO,MAAM,oBAAoB,GAAI,WAAW,SAAS,CAAC,SAAS,CAAC,QAgBnE,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "react-native-animated-header-flat-list",
3
- "version": "1.6.7",
3
+ "version": "1.6.10",
4
4
  "description": "A React Native FlatList component with an animated collapsible header, featuring parallax effects, smooth title transitions, sticky component support, and customizable styles. Built with TypeScript and separate background/content layers in header.",
5
- "source": "./src/index.tsx",
6
5
  "main": "./lib/module/index.js",
7
6
  "types": "./lib/typescript/src/index.d.ts",
8
7
  "exports": {
9
8
  ".": {
9
+ "source": "./src/index.tsx",
10
10
  "types": "./lib/typescript/src/index.d.ts",
11
11
  "default": "./lib/module/index.js"
12
12
  },
@@ -33,12 +33,12 @@
33
33
  ],
34
34
  "scripts": {
35
35
  "example": "yarn workspace react-native-animated-header-flat-list-example",
36
- "test": "jest",
37
- "typecheck": "tsc",
38
- "lint": "eslint \"**/*.{js,ts,tsx}\"",
39
36
  "clean": "del-cli lib",
40
37
  "prepare": "bob build",
41
- "release": "release-it"
38
+ "typecheck": "tsc",
39
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
40
+ "test": "jest",
41
+ "release": "release-it --only-version"
42
42
  },
43
43
  "keywords": [
44
44
  "react-native",
@@ -62,32 +62,33 @@
62
62
  },
63
63
  "devDependencies": {
64
64
  "@commitlint/config-conventional": "^19.8.1",
65
- "@eslint/compat": "^1.3.1",
65
+ "@eslint/compat": "^1.3.2",
66
66
  "@eslint/eslintrc": "^3.3.1",
67
- "@eslint/js": "^9.32.0",
68
- "@evilmartians/lefthook": "^1.5.0",
69
- "@react-native/eslint-config": "^0.79.2",
70
- "@react-navigation/elements": "^2.4.3",
71
- "@react-navigation/native": "^7.1.10",
72
- "@react-navigation/native-stack": "^7.3.14",
73
- "@release-it/conventional-changelog": "^9.0.2",
74
- "@types/jest": "^30.0.0",
75
- "@types/react": "^19.1.9",
67
+ "@eslint/js": "^9.35.0",
68
+ "@react-native/babel-preset": "0.83.0",
69
+ "@react-native/eslint-config": "0.83.0",
70
+ "@react-navigation/elements": "^2.9.10",
71
+ "@react-navigation/native": "^7.1.33",
72
+ "@react-navigation/native-stack": "^7.14.5",
73
+ "@release-it/conventional-changelog": "^10.0.1",
74
+ "@types/jest": "^29.5.14",
75
+ "@types/react": "^19.1.12",
76
76
  "commitlint": "^19.8.1",
77
- "del-cli": "^5.1.0",
78
- "eslint": "^9.28.0",
77
+ "del-cli": "^6.0.0",
78
+ "eslint": "^9.35.0",
79
79
  "eslint-config-prettier": "^10.1.8",
80
- "eslint-plugin-ft-flow": "^3.0.11",
81
80
  "eslint-plugin-prettier": "^5.5.4",
82
- "jest": "^30.0.5",
83
- "prettier": "^3.6.2",
84
- "react": "18.3.1",
85
- "react-native": "0.76.9",
86
- "react-native-builder-bob": "0.37.0",
87
- "react-native-reanimated": "^3.18.0",
88
- "react-native-safe-area-context": "^5.6.2",
89
- "release-it": "^17.10.0",
90
- "typescript": "^5.9.3"
81
+ "jest": "^29.7.0",
82
+ "lefthook": "^2.0.3",
83
+ "prettier": "^2.8.8",
84
+ "react": "19.2.0",
85
+ "react-native": "0.83.2",
86
+ "react-native-builder-bob": "^0.40.13",
87
+ "react-native-reanimated": "^4.2.2",
88
+ "react-native-safe-area-context": "^5.7.0",
89
+ "release-it": "^19.0.4",
90
+ "turbo": "^2.5.6",
91
+ "typescript": "^5.9.2"
91
92
  },
92
93
  "peerDependencies": {
93
94
  "@react-navigation/elements": ">=2.0.0",
@@ -101,7 +102,32 @@
101
102
  "workspaces": [
102
103
  "example"
103
104
  ],
104
- "packageManager": "yarn@3.6.1",
105
+ "packageManager": "yarn@4.11.0",
106
+ "react-native-builder-bob": {
107
+ "source": "src",
108
+ "output": "lib",
109
+ "targets": [
110
+ [
111
+ "module",
112
+ {
113
+ "esm": true
114
+ }
115
+ ],
116
+ [
117
+ "typescript",
118
+ {
119
+ "project": "tsconfig.build.json"
120
+ }
121
+ ]
122
+ ]
123
+ },
124
+ "prettier": {
125
+ "quoteProps": "consistent",
126
+ "singleQuote": true,
127
+ "tabWidth": 2,
128
+ "trailingComma": "es5",
129
+ "useTabs": false
130
+ },
105
131
  "jest": {
106
132
  "preset": "react-native",
107
133
  "modulePathIgnorePatterns": [
@@ -129,39 +155,19 @@
129
155
  "@release-it/conventional-changelog": {
130
156
  "preset": {
131
157
  "name": "angular"
132
- },
133
- "infile": "CHANGELOG.md"
158
+ }
134
159
  }
135
160
  }
136
161
  },
137
- "prettier": {
138
- "quoteProps": "consistent",
139
- "singleQuote": true,
140
- "tabWidth": 2,
141
- "trailingComma": "es5",
142
- "useTabs": false
143
- },
144
- "react-native-builder-bob": {
145
- "source": "src",
146
- "output": "lib",
147
- "targets": [
148
- [
149
- "module",
150
- {
151
- "esm": true
152
- }
153
- ],
154
- [
155
- "typescript",
156
- {
157
- "project": "tsconfig.build.json"
158
- }
159
- ]
160
- ]
161
- },
162
162
  "create-react-native-library": {
163
- "languages": "js",
164
163
  "type": "library",
165
- "version": "0.49.8"
164
+ "languages": "js",
165
+ "tools": [
166
+ "eslint",
167
+ "jest",
168
+ "lefthook",
169
+ "release-it"
170
+ ],
171
+ "version": "0.57.2"
166
172
  }
167
173
  }
@@ -5,8 +5,9 @@ import {
5
5
  useLayoutEffect,
6
6
  useCallback,
7
7
  useMemo,
8
- type ComponentType,
9
8
  type ForwardedRef,
9
+ type ComponentType,
10
+ type ReactNode,
10
11
  } from 'react';
11
12
  import {
12
13
  FlatList,
@@ -86,14 +87,14 @@ function AnimatedHeaderFlatListInner<T>(
86
87
  });
87
88
 
88
89
  const navigationTitle = useCallback(
89
- () =>
90
- title.length > 0 ? (
91
- <Animated.View style={navigationTitleAnimatedStyle}>
92
- <Animated.Text style={navigationTitleStyle} numberOfLines={1}>
93
- {title}
94
- </Animated.Text>
95
- </Animated.View>
96
- ) : null,
90
+ () => (
91
+ <Animated.Text
92
+ style={[navigationTitleAnimatedStyle, navigationTitleStyle]}
93
+ numberOfLines={1}
94
+ >
95
+ {title}
96
+ </Animated.Text>
97
+ ),
97
98
  [navigationTitleAnimatedStyle, navigationTitleStyle, title]
98
99
  );
99
100
 
@@ -108,84 +109,78 @@ function AnimatedHeaderFlatListInner<T>(
108
109
  });
109
110
  }, [navigationTitle, navigation]);
110
111
 
111
- const createHeaderComponent = useCallback(
112
- (key: string) => {
113
- return (
114
- <View style={styles.headerWrapper} key={key}>
115
- <View
116
- style={[styles.headerContainer, { top: -navigationBarHeight }]}
117
- onLayout={(event: LayoutChangeEvent) => {
118
- setHeaderLayout({
119
- ...event.nativeEvent.layout,
120
- height: event.nativeEvent.layout.height + navigationBarHeight,
121
- });
122
- }}
112
+ const ListHeaderComponent = useMemo(() => {
113
+ return (
114
+ <View style={styles.headerWrapper}>
115
+ <View
116
+ style={[styles.headerContainer, { top: -navigationBarHeight }]}
117
+ onLayout={(event: LayoutChangeEvent) => {
118
+ setHeaderLayout({
119
+ ...event.nativeEvent.layout,
120
+ height: event.nativeEvent.layout.height + navigationBarHeight,
121
+ });
122
+ }}
123
+ >
124
+ <Animated.View
125
+ style={parallax ? headerBackgroundAnimatedStyle : undefined}
123
126
  >
127
+ <HeaderBackground />
128
+ </Animated.View>
129
+ {HeaderContent && (
124
130
  <Animated.View
125
- style={parallax ? headerBackgroundAnimatedStyle : undefined}
131
+ style={[
132
+ headerContentAnimatedStyle,
133
+ styles.headerContentContainer,
134
+ ]}
126
135
  >
127
- <HeaderBackground />
136
+ <HeaderContent />
128
137
  </Animated.View>
129
- {HeaderContent && (
130
- <Animated.View
131
- style={[
132
- headerContentAnimatedStyle,
133
- styles.headerContentContainer,
134
- ]}
135
- >
136
- <HeaderContent />
137
- </Animated.View>
138
- )}
139
- {navigationBarColor && (
140
- <Animated.View
141
- style={[
142
- navigationBarAnimatedStyle,
143
- styles.animatedNavigationBar,
144
- { backgroundColor: navigationBarColor },
145
- ]}
146
- />
147
- )}
148
- {title.length > 0 && (
149
- <Animated.View
150
- style={headerTitleAnimatedStyle}
151
- onLayout={(event: LayoutChangeEvent) => {
152
- setHeaderTitleLayout(event.nativeEvent.layout);
153
- }}
154
- >
155
- <Animated.Text
156
- key={`${key}-title`}
157
- numberOfLines={1}
158
- style={[styles.headerTitle, headerTitleStyle]}
159
- >
160
- {title}
161
- </Animated.Text>
162
- </Animated.View>
163
- )}
164
- </View>
138
+ )}
139
+ {navigationBarColor && (
140
+ <Animated.View
141
+ style={[
142
+ navigationBarAnimatedStyle,
143
+ styles.animatedNavigationBar,
144
+ { backgroundColor: navigationBarColor },
145
+ ]}
146
+ />
147
+ )}
148
+ <Animated.Text
149
+ onLayout={(event: LayoutChangeEvent) => {
150
+ setHeaderTitleLayout(event.nativeEvent.layout);
151
+ }}
152
+ numberOfLines={1}
153
+ style={[
154
+ headerTitleAnimatedStyle,
155
+ styles.headerTitle,
156
+ headerTitleStyle,
157
+ ]}
158
+ >
159
+ {title}
160
+ </Animated.Text>
165
161
  </View>
166
- );
167
- },
168
- [
169
- navigationBarHeight,
170
- parallax,
171
- headerBackgroundAnimatedStyle,
172
- HeaderBackground,
173
- HeaderContent,
174
- headerContentAnimatedStyle,
175
- headerTitleAnimatedStyle,
176
- headerTitleStyle,
177
- title,
178
- setHeaderLayout,
179
- setHeaderTitleLayout,
180
- navigationBarAnimatedStyle,
181
- navigationBarColor,
182
- ]
183
- );
162
+ </View>
163
+ );
164
+ }, [
165
+ navigationBarHeight,
166
+ parallax,
167
+ headerBackgroundAnimatedStyle,
168
+ HeaderBackground,
169
+ HeaderContent,
170
+ headerContentAnimatedStyle,
171
+ headerTitleAnimatedStyle,
172
+ headerTitleStyle,
173
+ title,
174
+ setHeaderLayout,
175
+ setHeaderTitleLayout,
176
+ navigationBarAnimatedStyle,
177
+ navigationBarColor,
178
+ ]);
184
179
 
185
180
  type CustomItem = typeof HEADER_ITEM | T;
186
181
 
187
182
  const renderItem = useCallback(
188
- ({ item }: ListRenderItemInfo<CustomItem>): ReactElement | null => {
183
+ ({ item }: ListRenderItemInfo<CustomItem>): ReactNode => {
189
184
  if (item === HEADER_ITEM) {
190
185
  return (
191
186
  <View
@@ -208,7 +203,7 @@ function AnimatedHeaderFlatListInner<T>(
208
203
  },
209
204
  ]}
210
205
  >
211
- {createHeaderComponent('sticky')}
206
+ {ListHeaderComponent}
212
207
  </Animated.View>
213
208
  {StickyComponent && (
214
209
  <Animated.View
@@ -238,7 +233,7 @@ function AnimatedHeaderFlatListInner<T>(
238
233
  stickyComponentAnimatedStyle,
239
234
  stickyHeaderAnimatedStyle,
240
235
  headerLayout.height,
241
- createHeaderComponent,
236
+ ListHeaderComponent,
242
237
  StickyComponent,
243
238
  setStickyComponentLayout,
244
239
  ]
@@ -268,7 +263,7 @@ function AnimatedHeaderFlatListInner<T>(
268
263
  },
269
264
  ]}
270
265
  >
271
- {createHeaderComponent('main')}
266
+ {ListHeaderComponent}
272
267
  </Animated.View>
273
268
  }
274
269
  onScroll={scrollHandler}