react-native-header-motion 1.0.0-alpha.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +65 -528
  2. package/lib/module/components/Bridge.js +16 -0
  3. package/lib/module/components/Bridge.js.map +1 -0
  4. package/lib/module/components/FlatList.js +5 -54
  5. package/lib/module/components/FlatList.js.map +1 -1
  6. package/lib/module/components/Header.js +71 -13
  7. package/lib/module/components/Header.js.map +1 -1
  8. package/lib/module/components/HeaderDynamic.js +34 -0
  9. package/lib/module/components/HeaderDynamic.js.map +1 -0
  10. package/lib/module/components/HeaderMotion.js +14 -20
  11. package/lib/module/components/HeaderMotion.js.map +1 -1
  12. package/lib/module/components/HeaderPanBoundary.js +54 -0
  13. package/lib/module/components/HeaderPanBoundary.js.map +1 -0
  14. package/lib/module/components/NavigationBridge.js +20 -0
  15. package/lib/module/components/NavigationBridge.js.map +1 -0
  16. package/lib/module/components/ScrollManager.js +19 -7
  17. package/lib/module/components/ScrollManager.js.map +1 -1
  18. package/lib/module/components/ScrollView.js +6 -39
  19. package/lib/module/components/ScrollView.js.map +1 -1
  20. package/lib/module/components/createHeaderMotionScrollable.js +136 -0
  21. package/lib/module/components/createHeaderMotionScrollable.js.map +1 -0
  22. package/lib/module/components/index.js +3 -1
  23. package/lib/module/components/index.js.map +1 -1
  24. package/lib/module/context.js +8 -1
  25. package/lib/module/context.js.map +1 -1
  26. package/lib/module/hooks/index.js +1 -0
  27. package/lib/module/hooks/index.js.map +1 -1
  28. package/lib/module/hooks/useActiveScrollId.js +7 -6
  29. package/lib/module/hooks/useActiveScrollId.js.map +1 -1
  30. package/lib/module/hooks/useConsumerScrollHandlers.js +86 -0
  31. package/lib/module/hooks/useConsumerScrollHandlers.js.map +1 -0
  32. package/lib/module/hooks/useHeaderMotionBridge.js +14 -0
  33. package/lib/module/hooks/useHeaderMotionBridge.js.map +1 -0
  34. package/lib/module/hooks/useMotionProgress.js +12 -42
  35. package/lib/module/hooks/useMotionProgress.js.map +1 -1
  36. package/lib/module/hooks/useMotionProgress.test.js +56 -0
  37. package/lib/module/hooks/useMotionProgress.test.js.map +1 -0
  38. package/lib/module/hooks/useScrollManager.js +168 -87
  39. package/lib/module/hooks/useScrollManager.js.map +1 -1
  40. package/lib/module/index.js +21 -18
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/module/utils/defaults.js +2 -1
  43. package/lib/module/utils/defaults.js.map +1 -1
  44. package/lib/module/utils/header.js +24 -0
  45. package/lib/module/utils/header.js.map +1 -0
  46. package/lib/module/utils/headerOffsetStyle.js +31 -0
  47. package/lib/module/utils/headerOffsetStyle.js.map +1 -0
  48. package/lib/module/utils/index.js +2 -0
  49. package/lib/module/utils/index.js.map +1 -1
  50. package/lib/typescript/docs/docusaurus.config.d.ts +4 -0
  51. package/lib/typescript/docs/docusaurus.config.d.ts.map +1 -0
  52. package/lib/typescript/docs/sidebars.d.ts +4 -0
  53. package/lib/typescript/docs/sidebars.d.ts.map +1 -0
  54. package/lib/typescript/docs/src/pages/index.d.ts +2 -0
  55. package/lib/typescript/docs/src/pages/index.d.ts.map +1 -0
  56. package/lib/typescript/src/components/Bridge.d.ts +19 -0
  57. package/lib/typescript/src/components/Bridge.d.ts.map +1 -0
  58. package/lib/typescript/src/components/FlatList.d.ts +7 -15
  59. package/lib/typescript/src/components/FlatList.d.ts.map +1 -1
  60. package/lib/typescript/src/components/Header.d.ts +73 -12
  61. package/lib/typescript/src/components/Header.d.ts.map +1 -1
  62. package/lib/typescript/src/components/HeaderDynamic.d.ts +11 -0
  63. package/lib/typescript/src/components/HeaderDynamic.d.ts.map +1 -0
  64. package/lib/typescript/src/components/HeaderMotion.d.ts +38 -23
  65. package/lib/typescript/src/components/HeaderMotion.d.ts.map +1 -1
  66. package/lib/typescript/src/components/HeaderPanBoundary.d.ts +11 -0
  67. package/lib/typescript/src/components/HeaderPanBoundary.d.ts.map +1 -0
  68. package/lib/typescript/src/components/NavigationBridge.d.ts +19 -0
  69. package/lib/typescript/src/components/NavigationBridge.d.ts.map +1 -0
  70. package/lib/typescript/src/components/ScrollManager.d.ts +13 -9
  71. package/lib/typescript/src/components/ScrollManager.d.ts.map +1 -1
  72. package/lib/typescript/src/components/ScrollView.d.ts +7 -14
  73. package/lib/typescript/src/components/ScrollView.d.ts.map +1 -1
  74. package/lib/typescript/src/components/createHeaderMotionScrollable.d.ts +86 -0
  75. package/lib/typescript/src/components/createHeaderMotionScrollable.d.ts.map +1 -0
  76. package/lib/typescript/src/components/index.d.ts +3 -1
  77. package/lib/typescript/src/components/index.d.ts.map +1 -1
  78. package/lib/typescript/src/context.d.ts +3 -17
  79. package/lib/typescript/src/context.d.ts.map +1 -1
  80. package/lib/typescript/src/hooks/index.d.ts +1 -0
  81. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  82. package/lib/typescript/src/hooks/useActiveScrollId.d.ts +7 -6
  83. package/lib/typescript/src/hooks/useActiveScrollId.d.ts.map +1 -1
  84. package/lib/typescript/src/hooks/useConsumerScrollHandlers.d.ts +64 -0
  85. package/lib/typescript/src/hooks/useConsumerScrollHandlers.d.ts.map +1 -0
  86. package/lib/typescript/src/hooks/useHeaderMotionBridge.d.ts +10 -0
  87. package/lib/typescript/src/hooks/useHeaderMotionBridge.d.ts.map +1 -0
  88. package/lib/typescript/src/hooks/useMotionProgress.d.ts +8 -25
  89. package/lib/typescript/src/hooks/useMotionProgress.d.ts.map +1 -1
  90. package/lib/typescript/src/hooks/useMotionProgress.test.d.ts +2 -0
  91. package/lib/typescript/src/hooks/useMotionProgress.test.d.ts.map +1 -0
  92. package/lib/typescript/src/hooks/useScrollManager.d.ts +61 -29
  93. package/lib/typescript/src/hooks/useScrollManager.d.ts.map +1 -1
  94. package/lib/typescript/src/index.d.ts +56 -26
  95. package/lib/typescript/src/index.d.ts.map +1 -1
  96. package/lib/typescript/src/types.d.ts +54 -17
  97. package/lib/typescript/src/types.d.ts.map +1 -1
  98. package/lib/typescript/src/utils/defaults.d.ts +3 -2
  99. package/lib/typescript/src/utils/defaults.d.ts.map +1 -1
  100. package/lib/typescript/src/utils/header.d.ts +10 -0
  101. package/lib/typescript/src/utils/header.d.ts.map +1 -0
  102. package/lib/typescript/src/utils/headerOffsetStyle.d.ts +19 -0
  103. package/lib/typescript/src/utils/headerOffsetStyle.d.ts.map +1 -0
  104. package/lib/typescript/src/utils/index.d.ts +2 -0
  105. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  106. package/lib/typescript/src/utils/refreshControl.d.ts +12 -12
  107. package/package.json +12 -5
  108. package/src/components/Bridge.tsx +29 -0
  109. package/src/components/FlatList.tsx +18 -76
  110. package/src/components/Header.tsx +159 -23
  111. package/src/components/HeaderDynamic.tsx +45 -0
  112. package/src/components/HeaderMotion.tsx +47 -50
  113. package/src/components/HeaderPanBoundary.tsx +92 -0
  114. package/src/components/NavigationBridge.tsx +30 -0
  115. package/src/components/ScrollManager.tsx +23 -11
  116. package/src/components/ScrollView.tsx +16 -60
  117. package/src/components/createHeaderMotionScrollable.tsx +438 -0
  118. package/src/components/index.ts +3 -1
  119. package/src/context.ts +11 -24
  120. package/src/hooks/index.ts +1 -0
  121. package/src/hooks/useActiveScrollId.ts +7 -6
  122. package/src/hooks/useConsumerScrollHandlers.ts +148 -0
  123. package/src/hooks/useHeaderMotionBridge.ts +15 -0
  124. package/src/hooks/useMotionProgress.test.ts +67 -0
  125. package/src/hooks/useMotionProgress.ts +12 -45
  126. package/src/hooks/useScrollManager.ts +251 -114
  127. package/src/index.ts +82 -36
  128. package/src/types.ts +81 -29
  129. package/src/utils/defaults.ts +7 -1
  130. package/src/utils/header.tsx +52 -0
  131. package/src/utils/headerOffsetStyle.ts +40 -0
  132. package/src/utils/index.ts +2 -0
  133. package/lib/module/components/HeaderBase.js +0 -107
  134. package/lib/module/components/HeaderBase.js.map +0 -1
  135. package/lib/typescript/src/components/HeaderBase.d.ts +0 -41
  136. package/lib/typescript/src/components/HeaderBase.d.ts.map +0 -1
  137. package/src/components/HeaderBase.tsx +0 -140
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { forwardRef } from 'react';
4
3
  import Animated from 'react-native-reanimated';
5
- import { HeaderMotionScrollManager } from "./ScrollManager.js";
6
- import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { createHeaderMotionScrollable } from "./createHeaderMotionScrollable.js";
7
5
  /**
8
6
  * Animated FlatList component that integrates with HeaderMotion.
9
7
  * Automatically handles scroll tracking and header animation synchronization.
@@ -21,56 +19,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
21
19
  * </HeaderMotion>
22
20
  * ```
23
21
  */
24
- export function HeaderMotionFlatList({
25
- scrollId,
26
- animatedRef,
27
- contentContainerStyle,
28
- ...props
29
- }) {
30
- return /*#__PURE__*/_jsx(HeaderMotionScrollManager, {
31
- scrollId: scrollId,
32
- animatedRef: animatedRef,
33
- refreshControl: props.refreshControl,
34
- refreshing: props.refreshing,
35
- onRefresh: props.onRefresh,
36
- progressViewOffset: props.progressViewOffset,
37
- children: ({
38
- onScroll,
39
- refreshControl: managedRefreshControl,
40
- ref,
41
- ...scrollViewProps
42
- }, {
43
- originalHeaderHeight,
44
- minHeightContentContainerStyle
45
- }) => /*#__PURE__*/_jsx(Animated.FlatList, {
46
- ...scrollViewProps,
47
- ...props,
48
- ref: ref,
49
- onScroll: onScroll,
50
- ...(managedRefreshControl && {
51
- refreshControl: managedRefreshControl
52
- }),
53
- renderScrollComponent: scrollComponentProps => /*#__PURE__*/_jsx(AnimatedScrollContainer, {
54
- ...scrollComponentProps,
55
- contentContainerStyle: [minHeightContentContainerStyle, {
56
- paddingTop: originalHeaderHeight
57
- }, contentContainerStyle]
58
- })
59
- })
60
- });
61
- }
62
- const AnimatedScrollContainer = /*#__PURE__*/forwardRef(({
63
- children,
64
- contentContainerStyle,
65
- ...rest
66
- }, ref) => {
67
- return /*#__PURE__*/_jsx(Animated.ScrollView, {
68
- ...rest,
69
- ref: ref,
70
- children: /*#__PURE__*/_jsx(Animated.View, {
71
- style: contentContainerStyle,
72
- children: children
73
- })
74
- });
22
+ export const FlatList = createHeaderMotionScrollable(Animated.FlatList, {
23
+ displayName: 'HeaderMotion.FlatList',
24
+ contentContainerMode: 'renderScrollComponent',
25
+ isComponentAnimated: true
75
26
  });
76
27
  //# sourceMappingURL=FlatList.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","Animated","HeaderMotionScrollManager","jsx","_jsx","HeaderMotionFlatList","scrollId","animatedRef","contentContainerStyle","props","refreshControl","refreshing","onRefresh","progressViewOffset","children","onScroll","managedRefreshControl","ref","scrollViewProps","originalHeaderHeight","minHeightContentContainerStyle","FlatList","renderScrollComponent","scrollComponentProps","AnimatedScrollContainer","paddingTop","rest","ScrollView","View","style"],"sourceRoot":"../../../src","sources":["components/FlatList.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAgD,OAAO;AAC1E,OAAOC,QAAQ,MAA4B,yBAAyB;AACpE,SAASC,yBAAyB,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAmB5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAU;EAC5CC,QAAQ;EACRC,WAAW;EACXC,qBAAqB;EACrB,GAAGC;AACyB,CAAC,EAAE;EAC/B,oBACEL,IAAA,CAACF,yBAAyB;IACxBI,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAiD;IAC9DG,cAAc,EAAED,KAAK,CAACC,cAAe;IACrCC,UAAU,EAAEF,KAAK,CAACE,UAAW;IAC7BC,SAAS,EAAEH,KAAK,CAACG,SAAU;IAC3BC,kBAAkB,EAAEJ,KAAK,CAACI,kBAAmB;IAAAC,QAAA,EAE5CA,CACC;MACEC,QAAQ;MACRL,cAAc,EAAEM,qBAAqB;MACrCC,GAAG;MACH,GAAGC;IACL,CAAC,EACD;MAAEC,oBAAoB;MAAEC;IAA+B,CAAC,kBAExDhB,IAAA,CAACH,QAAQ,CAACoB,QAAQ;MAAA,GACZH,eAAe;MAAA,GACfT,KAAK;MACTQ,GAAG,EAAEA,GAAI;MACTF,QAAQ,EAAEA,QAAS;MAAA,IACdC,qBAAqB,IAAI;QAC5BN,cAAc,EAAEM;MAClB,CAAC;MACDM,qBAAqB,EAAGC,oBAAoB,iBAC1CnB,IAAA,CAACoB,uBAAuB;QAAA,GAClBD,oBAAoB;QACxBf,qBAAqB,EAAE,CACrBY,8BAA8B,EAC9B;UAAEK,UAAU,EAAEN;QAAqB,CAAC,EACpCX,qBAAqB;MACrB,CACH;IACD,CACH;EACF,CACwB,CAAC;AAEhC;AAEA,MAAMgB,uBAAuB,gBAAGxB,UAAU,CAGxC,CAAC;EAAEc,QAAQ;EAAEN,qBAAqB;EAAE,GAAGkB;AAAK,CAAC,EAAET,GAAG,KAAK;EACvD,oBACEb,IAAA,CAACH,QAAQ,CAAC0B,UAAU;IAAA,GAAKD,IAAI;IAAET,GAAG,EAAEA,GAAI;IAAAH,QAAA,eACtCV,IAAA,CAACH,QAAQ,CAAC2B,IAAI;MAACC,KAAK,EAAErB,qBAAsB;MAAAM,QAAA,EAAEA;IAAQ,CAAgB;EAAC,CACpD,CAAC;AAE1B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Animated","createHeaderMotionScrollable","FlatList","displayName","contentContainerMode","isComponentAnimated"],"sourceRoot":"../../../src","sources":["components/FlatList.tsx"],"mappings":";;AACA,OAAOA,QAAQ,MAER,yBAAyB;AAChC,SACEC,4BAA4B,QAEvB,mCAAgC;AASvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAGD,4BAA4B,CAACD,QAAQ,CAACE,QAAQ,EAAE;EACtEC,WAAW,EAAE,uBAAuB;EACpCC,oBAAoB,EAAE,uBAAuB;EAC7CC,mBAAmB,EAAE;AACvB,CAAC,CAAsB","ignoreList":[]}
@@ -1,19 +1,77 @@
1
1
  "use strict";
2
2
 
3
- import { useMotionProgress } from "../hooks/useMotionProgress.js";
3
+ import { StyleSheet } from 'react-native';
4
+ import Animated from 'react-native-reanimated';
5
+ import { useHeaderMotionContextOrThrow } from "../context.js";
6
+ import { cloneWithOnLayout, composeOnLayoutHandlers, resolveSlottableChild } from "../utils/index.js";
7
+ import { HeaderDynamic } from "./HeaderDynamic.js";
8
+ import { HeaderPanBoundary } from "./HeaderPanBoundary.js";
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ const headerOverlayStyle = StyleSheet.create({
11
+ overlay: {
12
+ position: 'absolute',
13
+ top: 0,
14
+ left: 0,
15
+ right: 0
16
+ }
17
+ }).overlay;
18
+ function HeaderRoot(props) {
19
+ const ctxValue = useHeaderMotionContextOrThrow('HeaderMotion.Header must be used within <HeaderMotion /> or <HeaderMotion.NavigationBridge />. If you are rendering inside a navigation header, bridge the context with <HeaderMotion.Bridge /> and <HeaderMotion.NavigationBridge />.');
20
+ if (props.asChild) {
21
+ const child = resolveSlottableChild('HeaderMotion.Header', props.children);
22
+ return /*#__PURE__*/_jsx(HeaderPanBoundary, {
23
+ pannable: props.pannable,
24
+ panDecayConfig: props.panDecayConfig,
25
+ headerPanMomentumOffset: ctxValue.headerPanMomentumOffset,
26
+ scrollToRef: ctxValue.scrollToRef,
27
+ withGestureHandlerRootView: props.withGestureHandlerRootView,
28
+ children: cloneWithOnLayout(child, ctxValue.measureTotalHeight, 'HeaderMotion.Header')
29
+ });
30
+ }
31
+ const {
32
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
33
+ asChild: _asChild,
34
+ overlay = true,
35
+ pannable,
36
+ panDecayConfig,
37
+ onLayout,
38
+ style,
39
+ withGestureHandlerRootView,
40
+ ...rest
41
+ } = props;
42
+ const resolvedOnLayout = onLayout;
43
+ return /*#__PURE__*/_jsx(HeaderPanBoundary, {
44
+ pannable: pannable,
45
+ panDecayConfig: panDecayConfig,
46
+ headerPanMomentumOffset: ctxValue.headerPanMomentumOffset,
47
+ scrollToRef: ctxValue.scrollToRef,
48
+ withGestureHandlerRootView: withGestureHandlerRootView,
49
+ children: /*#__PURE__*/_jsx(Animated.View, {
50
+ ...rest,
51
+ onLayout: composeOnLayoutHandlers(resolvedOnLayout, ctxValue.measureTotalHeight),
52
+ style: [overlay ? headerOverlayStyle : undefined, style]
53
+ })
54
+ });
55
+ }
56
+
4
57
  /**
5
- * Header component for providing motion progress properties to animated headers.
6
- * Must be used within a HeaderMotion component.
58
+ * Header container that measures the total header height for scroll offsetting.
7
59
  *
8
- * Use to pass props to the header components in React Navigation / Expo Router, which cannot access HeaderMotion's context and `useMotionProgress` otherwise.`
60
+ * It renders an `Animated.View` by default, wires the outer header measurement
61
+ * automatically, and can optionally make the header surface pannable.
62
+ *
63
+ * Pair it with `Header.Dynamic` to mark the part of the header that should
64
+ * drive the collapse threshold.
9
65
  */
10
- export function HeaderMotionHeader({
11
- children
12
- }) {
13
- if (typeof children !== 'function') {
14
- throw new Error('HeaderMotion.Header only accepts render function as the only child.');
15
- }
16
- const motionProgressProps = useMotionProgress();
17
- return children(motionProgressProps);
18
- }
66
+ export const Header = Object.assign(HeaderRoot, {
67
+ /**
68
+ * Marks the part of the header whose measured layout should define the
69
+ * collapsible distance.
70
+ *
71
+ * In most designs, this is the section that visually disappears while the
72
+ * header collapses. Its measured value feeds `measureDynamic`, which can in
73
+ * turn drive `progressThreshold`.
74
+ */
75
+ Dynamic: HeaderDynamic
76
+ });
19
77
  //# sourceMappingURL=Header.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useMotionProgress","HeaderMotionHeader","children","Error","motionProgressProps"],"sourceRoot":"../../../src","sources":["components/Header.tsx"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,+BAA4B;AAc9D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAC;EAAEC;AAAkC,CAAC,EAAE;EACxE,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;IAClC,MAAM,IAAIC,KAAK,CACb,qEACF,CAAC;EACH;EAEA,MAAMC,mBAAmB,GAAGJ,iBAAiB,CAAC,CAAC;EAC/C,OAAOE,QAAQ,CAACE,mBAAmB,CAAC;AACtC","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","Animated","useHeaderMotionContextOrThrow","cloneWithOnLayout","composeOnLayoutHandlers","resolveSlottableChild","HeaderDynamic","HeaderPanBoundary","jsx","_jsx","headerOverlayStyle","create","overlay","position","top","left","right","HeaderRoot","props","ctxValue","asChild","child","children","pannable","panDecayConfig","headerPanMomentumOffset","scrollToRef","withGestureHandlerRootView","measureTotalHeight","_asChild","onLayout","style","rest","resolvedOnLayout","View","undefined","Header","Object","assign","Dynamic"],"sourceRoot":"../../../src","sources":["components/Header.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAwB,cAAc;AACzD,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,6BAA6B,QAAQ,eAAY;AAM1D,SACEC,iBAAiB,EACjBC,uBAAuB,EACvBC,qBAAqB,QAChB,mBAAU;AACjB,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,iBAAiB,QAAQ,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiExD,MAAMC,kBAAkB,GAAGV,UAAU,CAACW,MAAM,CAAC;EAC3CC,OAAO,EAAE;IACPC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT;AACF,CAAC,CAAC,CAACJ,OAAO;AAEV,SAASK,UAAUA,CAACC,KAAkB,EAAE;EACtC,MAAMC,QAAQ,GAAGjB,6BAA6B,CAC5C,wOACF,CAAC;EAED,IAAIgB,KAAK,CAACE,OAAO,EAAE;IACjB,MAAMC,KAAK,GAAGhB,qBAAqB,CAAC,qBAAqB,EAAEa,KAAK,CAACI,QAAQ,CAAC;IAE1E,oBACEb,IAAA,CAACF,iBAAiB;MAChBgB,QAAQ,EAAEL,KAAK,CAACK,QAAS;MACzBC,cAAc,EAAEN,KAAK,CAACM,cAAe;MACrCC,uBAAuB,EAAEN,QAAQ,CAACM,uBAAwB;MAC1DC,WAAW,EAAEP,QAAQ,CAACO,WAAY;MAClCC,0BAA0B,EAAET,KAAK,CAACS,0BAA2B;MAAAL,QAAA,EAE5DnB,iBAAiB,CAChBkB,KAAK,EACLF,QAAQ,CAACS,kBAAkB,EAC3B,qBACF;IAAC,CACgB,CAAC;EAExB;EAEA,MAAM;IACJ;IACAR,OAAO,EAAES,QAAQ;IACjBjB,OAAO,GAAG,IAAI;IACdW,QAAQ;IACRC,cAAc;IACdM,QAAQ;IACRC,KAAK;IACLJ,0BAA0B;IAC1B,GAAGK;EACL,CAAC,GAAGd,KAAK;EACT,MAAMe,gBAAgB,GAAGH,QAA6C;EAEtE,oBACErB,IAAA,CAACF,iBAAiB;IAChBgB,QAAQ,EAAEA,QAAS;IACnBC,cAAc,EAAEA,cAAe;IAC/BC,uBAAuB,EAAEN,QAAQ,CAACM,uBAAwB;IAC1DC,WAAW,EAAEP,QAAQ,CAACO,WAAY;IAClCC,0BAA0B,EAAEA,0BAA2B;IAAAL,QAAA,eAEvDb,IAAA,CAACR,QAAQ,CAACiC,IAAI;MAAA,GACRF,IAAI;MACRF,QAAQ,EAAE1B,uBAAuB,CAC/B6B,gBAAgB,EAChBd,QAAQ,CAACS,kBACX,CAAE;MACFG,KAAK,EAAE,CAACnB,OAAO,GAAGF,kBAAkB,GAAGyB,SAAS,EAAEJ,KAAK;IAAE,CAC1D;EAAC,CACe,CAAC;AAExB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,MAAM,GAAGC,MAAM,CAACC,MAAM,CAACrB,UAAU,EAAE;EAC9C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEsB,OAAO,EAAEjC;AACX,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ import Animated from 'react-native-reanimated';
4
+ import { useHeaderMotionContextOrThrow } from "../context.js";
5
+ import { cloneWithOnLayout, composeOnLayoutHandlers, resolveSlottableChild } from "../utils/index.js";
6
+
7
+ /**
8
+ * Marks the part of the header whose layout should define the collapsible
9
+ * distance.
10
+ *
11
+ * In most designs, this is the section that visually disappears while the
12
+ * header collapses. Its measured value feeds `measureDynamic`, which in turn
13
+ * can drive `progressThreshold`.
14
+ */
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ export function HeaderDynamic(props) {
17
+ const ctxValue = useHeaderMotionContextOrThrow('HeaderMotion.Header.Dynamic must be used within <HeaderMotion /> or <HeaderMotion.NavigationBridge />. If you are rendering inside a navigation header, bridge the context with <HeaderMotion.Bridge /> and <HeaderMotion.NavigationBridge />.');
18
+ if (props.asChild) {
19
+ return cloneWithOnLayout(resolveSlottableChild('HeaderMotion.Header.Dynamic', props.children), ctxValue.measureDynamic, 'HeaderMotion.Header.Dynamic');
20
+ }
21
+
22
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ const {
24
+ asChild: _asChild,
25
+ onLayout,
26
+ ...rest
27
+ } = props;
28
+ const resolvedOnLayout = onLayout;
29
+ return /*#__PURE__*/_jsx(Animated.View, {
30
+ ...rest,
31
+ onLayout: composeOnLayoutHandlers(resolvedOnLayout, ctxValue.measureDynamic)
32
+ });
33
+ }
34
+ //# sourceMappingURL=HeaderDynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Animated","useHeaderMotionContextOrThrow","cloneWithOnLayout","composeOnLayoutHandlers","resolveSlottableChild","jsx","_jsx","HeaderDynamic","props","ctxValue","asChild","children","measureDynamic","_asChild","onLayout","rest","resolvedOnLayout","View"],"sourceRoot":"../../../src","sources":["components/HeaderDynamic.tsx"],"mappings":";;AACA,OAAOA,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,6BAA6B,QAAQ,eAAY;AAE1D,SACEC,iBAAiB,EACjBC,uBAAuB,EACvBC,qBAAqB,QAChB,mBAAU;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,SAAAC,GAAA,IAAAC,IAAA;AAQA,OAAO,SAASC,aAAaA,CAACC,KAAyB,EAAE;EACvD,MAAMC,QAAQ,GAAGR,6BAA6B,CAC5C,gPACF,CAAC;EAED,IAAIO,KAAK,CAACE,OAAO,EAAE;IACjB,OAAOR,iBAAiB,CACtBE,qBAAqB,CAAC,6BAA6B,EAAEI,KAAK,CAACG,QAAQ,CAAC,EACpEF,QAAQ,CAACG,cAAc,EACvB,6BACF,CAAC;EACH;;EAEA;EACA,MAAM;IAAEF,OAAO,EAAEG,QAAQ;IAAEC,QAAQ;IAAE,GAAGC;EAAK,CAAC,GAAGP,KAAK;EACtD,MAAMQ,gBAAgB,GAAGF,QAA6C;EAEtE,oBACER,IAAA,CAACN,QAAQ,CAACiB,IAAI;IAAA,GACRF,IAAI;IACRD,QAAQ,EAAEX,uBAAuB,CAC/Ba,gBAAgB,EAChBP,QAAQ,CAACG,cACX;EAAE,CACH,CAAC;AAEN","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { useCallback, useRef, useEffect, useMemo } from 'react';
3
+ import { useCallback, useRef, useEffect, useMemo, useState } from 'react';
4
4
  import { Extrapolation, interpolate, useAnimatedReaction, useDerivedValue, useSharedValue } from 'react-native-reanimated';
5
5
  import { HeaderMotionContext } from "../context.js";
6
6
  import { DEFAULT_MEASURE_DYNAMIC, DEFAULT_PROGRESS_THRESHOLD, DEFAULT_SCROLL_ID, getInitialScrollValue } from "../utils/index.js";
@@ -24,8 +24,11 @@ const resolveScrollIdForProgress = (scrollValues, activeScrollIdValue) => {
24
24
  return onlyNonDefaultId ?? DEFAULT_SCROLL_ID;
25
25
  };
26
26
  /**
27
- * Context provider component for HeaderMotion.
28
- * Manages header animation state and provides it to child components via context.
27
+ * Root provider for a header-motion setup.
28
+ *
29
+ * It tracks the measured header layout, the active scroll position, and the
30
+ * derived `progress` shared value consumed by your animated header UI.
31
+ *
29
32
  * @template T - The type of scroll ID string
30
33
  */
31
34
  function HeaderMotionContextProvider({
@@ -34,11 +37,10 @@ function HeaderMotionContextProvider({
34
37
  measureDynamicMode = 'mount',
35
38
  activeScrollId,
36
39
  progressExtrapolation = Extrapolation.CLAMP,
37
- enableHeaderPan = false,
38
40
  children
39
41
  }) {
40
42
  const dynamicMeasurement = useSharedValue(undefined);
41
- const originalHeaderHeight = useSharedValue(0);
43
+ const [originalHeaderHeight, setOriginalHeaderHeight] = useState(0);
42
44
  const progressThresholdValue = useSharedValue(typeof progressThreshold === 'number' ? progressThreshold : Infinity);
43
45
  const headerPanMomentumOffset = useSharedValue(null);
44
46
  const setOrUpdateDynamicMeasurement = useCallback(e => {
@@ -51,7 +53,8 @@ function HeaderMotionContextProvider({
51
53
  return;
52
54
  }
53
55
  dynamicMeasurement.set(measured);
54
- progressThresholdValue.set(typeof progressThreshold === 'number' ? progressThreshold : progressThreshold(measured));
56
+ const nextThreshold = typeof progressThreshold === 'number' ? progressThreshold : progressThreshold(measured);
57
+ progressThresholdValue.set(nextThreshold);
55
58
  }, [measureDynamicMode, measureDynamic, dynamicMeasurement, progressThreshold, progressThresholdValue]);
56
59
  useEffect(() => {
57
60
  if (typeof progressThreshold === 'number') {
@@ -59,15 +62,13 @@ function HeaderMotionContextProvider({
59
62
  return;
60
63
  }
61
64
  const measured = dynamicMeasurement.get();
62
- progressThresholdValue.set(measured === undefined ? Infinity : progressThreshold(measured));
65
+ const nextThreshold = measured === undefined ? Infinity : progressThreshold(measured);
66
+ progressThresholdValue.set(nextThreshold);
63
67
  }, [progressThreshold, dynamicMeasurement, progressThresholdValue]);
64
68
  const measureTotalHeight = useCallback(e => {
65
69
  const measuredValue = e.nativeEvent.layout.height;
66
- if (originalHeaderHeight.get() === measuredValue) {
67
- return;
68
- }
69
- originalHeaderHeight.set(measuredValue);
70
- }, [originalHeaderHeight]);
70
+ setOriginalHeaderHeight(measuredValue);
71
+ }, [setOriginalHeaderHeight]);
71
72
  const scrollValues = useSharedValue({
72
73
  [DEFAULT_SCROLL_ID]: getInitialScrollValue()
73
74
  });
@@ -99,24 +100,17 @@ function HeaderMotionContextProvider({
99
100
  // were not propagating reliably, while it works for refs. Revisit later.
100
101
  // We need to be updating the scrollTo on active scroll ID changes and doing it via state would cause re-renders.
101
102
  // It's a bit of an anti-pattern to use refs for this as well, but I am yet to figure out a better way to pass those if SV won't work.
102
- const animatedHeaderBaseProps = useMemo(() => ({
103
- enableHeaderPan,
104
- scrollToRef,
105
- headerPanMomentumOffset
106
- }), [enableHeaderPan, headerPanMomentumOffset]);
107
103
  const ctxValue = useMemo(() => ({
108
104
  progress,
109
105
  originalHeaderHeight,
110
106
  measureDynamic: setOrUpdateDynamicMeasurement,
111
107
  measureTotalHeight,
112
- enableHeaderPan,
113
108
  headerPanMomentumOffset,
114
- animatedHeaderBaseProps,
115
109
  progressThreshold: progressThresholdValue,
116
110
  scrollValues,
117
111
  scrollToRef,
118
112
  activeScrollId: activeScrollId
119
- }), [originalHeaderHeight, progress, measureTotalHeight, enableHeaderPan, headerPanMomentumOffset, animatedHeaderBaseProps, setOrUpdateDynamicMeasurement, scrollValues, activeScrollId, progressThresholdValue]);
113
+ }), [originalHeaderHeight, progress, measureTotalHeight, headerPanMomentumOffset, setOrUpdateDynamicMeasurement, scrollValues, activeScrollId, progressThresholdValue]);
120
114
  return /*#__PURE__*/_jsx(HeaderMotionContext.Provider, {
121
115
  value: ctxValue,
122
116
  children: children
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useRef","useEffect","useMemo","Extrapolation","interpolate","useAnimatedReaction","useDerivedValue","useSharedValue","HeaderMotionContext","DEFAULT_MEASURE_DYNAMIC","DEFAULT_PROGRESS_THRESHOLD","DEFAULT_SCROLL_ID","getInitialScrollValue","jsx","_jsx","resolveScrollIdForProgress","scrollValues","activeScrollIdValue","onlyNonDefaultId","key","HeaderMotionContextProvider","progressThreshold","measureDynamic","measureDynamicMode","activeScrollId","progressExtrapolation","CLAMP","enableHeaderPan","children","dynamicMeasurement","undefined","originalHeaderHeight","progressThresholdValue","Infinity","headerPanMomentumOffset","setOrUpdateDynamicMeasurement","e","prevMeasurement","get","measured","set","measureTotalHeight","measuredValue","nativeEvent","layout","height","id","modify","value","progress","values","scrollValue","threshold","min","current","scrollToRef","animatedHeaderBaseProps","ctxValue","Provider"],"sourceRoot":"../../../src","sources":["components/HeaderMotion.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useRef","useEffect","useMemo","useState","Extrapolation","interpolate","useAnimatedReaction","useDerivedValue","useSharedValue","HeaderMotionContext","DEFAULT_MEASURE_DYNAMIC","DEFAULT_PROGRESS_THRESHOLD","DEFAULT_SCROLL_ID","getInitialScrollValue","jsx","_jsx","resolveScrollIdForProgress","scrollValues","activeScrollIdValue","onlyNonDefaultId","key","HeaderMotionContextProvider","progressThreshold","measureDynamic","measureDynamicMode","activeScrollId","progressExtrapolation","CLAMP","children","dynamicMeasurement","undefined","originalHeaderHeight","setOriginalHeaderHeight","progressThresholdValue","Infinity","headerPanMomentumOffset","setOrUpdateDynamicMeasurement","e","prevMeasurement","get","measured","set","nextThreshold","measureTotalHeight","measuredValue","nativeEvent","layout","height","id","modify","value","progress","values","scrollValue","threshold","min","current","scrollToRef","ctxValue","Provider"],"sourceRoot":"../../../src","sources":["components/HeaderMotion.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import { Platform } from 'react-native';
5
+ import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
6
+ import { useAnimatedReaction, withDecay } from 'react-native-reanimated';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const PLATFORM_PANNING_ENABLED = Platform.select({
9
+ default: true,
10
+ android: false
11
+ });
12
+ export function HeaderPanBoundary({
13
+ children,
14
+ pannable = false,
15
+ panDecayConfig,
16
+ scrollToRef,
17
+ headerPanMomentumOffset,
18
+ withGestureHandlerRootView = false
19
+ }) {
20
+ useAnimatedReaction(() => headerPanMomentumOffset.get(), (offset, prevOffset) => {
21
+ if (offset !== null) {
22
+ const dy = offset - (prevOffset ?? 0);
23
+ scrollToRef.current?.(dy);
24
+ }
25
+ });
26
+ const isPanEnabled = PLATFORM_PANNING_ENABLED && pannable;
27
+ const pan = useMemo(() => Gesture.Pan().enabled(isPanEnabled).onChange(e => {
28
+ const dy = e.changeY;
29
+ scrollToRef.current?.(dy);
30
+ }).onEnd(e => {
31
+ const resolvedConfig = resolvePanDecayConfig(panDecayConfig, e);
32
+ headerPanMomentumOffset.set(withDecay(resolvedConfig, () => headerPanMomentumOffset.set(null)));
33
+ }).shouldCancelWhenOutside(false), [headerPanMomentumOffset, isPanEnabled, panDecayConfig, scrollToRef]);
34
+ const content = /*#__PURE__*/_jsx(GestureDetector, {
35
+ gesture: pan,
36
+ children: children
37
+ });
38
+ if (!withGestureHandlerRootView) {
39
+ return content;
40
+ }
41
+ return /*#__PURE__*/_jsx(GestureHandlerRootView, {
42
+ children: content
43
+ });
44
+ }
45
+ function resolvePanDecayConfig(panDecayConfig, event) {
46
+ 'worklet';
47
+
48
+ const resolvedConfig = typeof panDecayConfig === 'function' ? panDecayConfig(event) : panDecayConfig;
49
+ return {
50
+ ...resolvedConfig,
51
+ velocity: resolvedConfig?.velocity ?? event.velocityY
52
+ };
53
+ }
54
+ //# sourceMappingURL=HeaderPanBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","Platform","Gesture","GestureDetector","GestureHandlerRootView","useAnimatedReaction","withDecay","jsx","_jsx","PLATFORM_PANNING_ENABLED","select","default","android","HeaderPanBoundary","children","pannable","panDecayConfig","scrollToRef","headerPanMomentumOffset","withGestureHandlerRootView","get","offset","prevOffset","dy","current","isPanEnabled","pan","Pan","enabled","onChange","e","changeY","onEnd","resolvedConfig","resolvePanDecayConfig","set","shouldCancelWhenOutside","content","gesture","event","velocity","velocityY"],"sourceRoot":"../../../src","sources":["components/HeaderPanBoundary.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAA2B,OAAO;AAClD,SAASC,QAAQ,QAAQ,cAAc;AACvC,SACEC,OAAO,EACPC,eAAe,EACfC,sBAAsB,QACjB,8BAA8B;AACrC,SAASC,mBAAmB,EAAEC,SAAS,QAAQ,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOzE,MAAMC,wBAAwB,GAAGR,QAAQ,CAACS,MAAM,CAAC;EAC/CC,OAAO,EAAE,IAAI;EACbC,OAAO,EAAE;AACX,CAAC,CAAC;AAYF,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,cAAc;EACdC,WAAW;EACXC,uBAAuB;EACvBC,0BAA0B,GAAG;AACP,CAAC,EAAE;EACzBd,mBAAmB,CACjB,MAAMa,uBAAuB,CAACE,GAAG,CAAC,CAAC,EACnC,CAACC,MAAM,EAAEC,UAAU,KAAK;IACtB,IAAID,MAAM,KAAK,IAAI,EAAE;MACnB,MAAME,EAAE,GAAGF,MAAM,IAAIC,UAAU,IAAI,CAAC,CAAC;MACrCL,WAAW,CAACO,OAAO,GAAGD,EAAE,CAAC;IAC3B;EACF,CACF,CAAC;EAED,MAAME,YAAY,GAAGhB,wBAAwB,IAAIM,QAAQ;EAEzD,MAAMW,GAAG,GAAG1B,OAAO,CACjB,MACEE,OAAO,CAACyB,GAAG,CAAC,CAAC,CACVC,OAAO,CAACH,YAAY,CAAC,CACrBI,QAAQ,CAAEC,CAAC,IAAK;IACf,MAAMP,EAAE,GAAGO,CAAC,CAACC,OAAO;IACpBd,WAAW,CAACO,OAAO,GAAGD,EAAE,CAAC;EAC3B,CAAC,CAAC,CACDS,KAAK,CAAEF,CAAC,IAAK;IACZ,MAAMG,cAAc,GAAGC,qBAAqB,CAAClB,cAAc,EAAEc,CAAC,CAAC;IAC/DZ,uBAAuB,CAACiB,GAAG,CACzB7B,SAAS,CAAC2B,cAAc,EAAE,MAAMf,uBAAuB,CAACiB,GAAG,CAAC,IAAI,CAAC,CACnE,CAAC;EACH,CAAC,CAAC,CACDC,uBAAuB,CAAC,KAAK,CAAC,EACnC,CAAClB,uBAAuB,EAAEO,YAAY,EAAET,cAAc,EAAEC,WAAW,CACrE,CAAC;EAED,MAAMoB,OAAO,gBAAG7B,IAAA,CAACL,eAAe;IAACmC,OAAO,EAAEZ,GAAI;IAAAZ,QAAA,EAAEA;EAAQ,CAAkB,CAAC;EAE3E,IAAI,CAACK,0BAA0B,EAAE;IAC/B,OAAOkB,OAAO;EAChB;EAEA,oBAAO7B,IAAA,CAACJ,sBAAsB;IAAAU,QAAA,EAAEuB;EAAO,CAAyB,CAAC;AACnE;AAEA,SAASH,qBAAqBA,CAC5BlB,cAAgD,EAChDuB,KAA0B,EAC1B;EACA,SAAS;;EAET,MAAMN,cAAc,GAClB,OAAOjB,cAAc,KAAK,UAAU,GAChCA,cAAc,CAACuB,KAAK,CAAC,GACrBvB,cAAc;EAEpB,OAAO;IACL,GAAGiB,cAAc;IACjBO,QAAQ,EAAEP,cAAc,EAAEO,QAAQ,IAAID,KAAK,CAACE;EAC9C,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import { HeaderMotionContext } from "../context.js";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ /**
6
+ * Re-provides HeaderMotion context in a different part of the React tree.
7
+ *
8
+ * This is primarily useful for navigation libraries that render headers outside
9
+ * the screen subtree where `HeaderMotion` itself lives.
10
+ */
11
+ export function NavigationBridge({
12
+ value,
13
+ children
14
+ }) {
15
+ return /*#__PURE__*/_jsx(HeaderMotionContext.Provider, {
16
+ value: value,
17
+ children: children
18
+ });
19
+ }
20
+ //# sourceMappingURL=NavigationBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["HeaderMotionContext","jsx","_jsx","NavigationBridge","value","children","Provider"],"sourceRoot":"../../../src","sources":["components/NavigationBridge.tsx"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAajD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,KAAK;EACLC;AACiC,CAAC,EAAE;EACpC,oBACEH,IAAA,CAACF,mBAAmB,CAACM,QAAQ;IAACF,KAAK,EAAEA,KAAM;IAAAC,QAAA,EACxCA;EAAQ,CACmB,CAAC;AAEnC","ignoreList":[]}
@@ -2,11 +2,13 @@
2
2
 
3
3
  import { useScrollManager } from "../hooks/index.js";
4
4
  /**
5
- * ScrollManager component that provides scroll tracking functionality for custom scroll implementations. Uses {@link useScrollManager} under the hood.
6
- * Must be used within a HeaderMotion component.
5
+ * Render-prop wrapper around `useScrollManager()`.
7
6
  *
8
- * This is useful when you need to use a scroll component that isn't directly supported
9
- * (like a custom scroll view or third-party list components).
7
+ * **Most code should prefer `createHeaderMotionScrollable()` instead.**
8
+ *
9
+ * Use `ScrollManager` only when the factory approach is not enough and you
10
+ * still need HeaderMotion to manage a custom scrollable through render-prop
11
+ * composition.
10
12
  *
11
13
  * @example
12
14
  * ```tsx
@@ -23,14 +25,19 @@ import { useScrollManager } from "../hooks/index.js";
23
25
  * </HeaderMotion>
24
26
  * ```
25
27
  */
26
- export function HeaderMotionScrollManager({
28
+ export function ScrollManager({
27
29
  children,
28
30
  scrollId,
29
31
  animatedRef,
30
32
  refreshControl,
31
33
  refreshing,
32
34
  onRefresh,
33
- progressViewOffset
35
+ progressViewOffset,
36
+ onScroll,
37
+ onScrollBeginDrag,
38
+ onScrollEndDrag,
39
+ onMomentumScrollBegin,
40
+ onMomentumScrollEnd
34
41
  }) {
35
42
  if (typeof children !== 'function') {
36
43
  throw new Error('HeaderMotion.ScrollManager only accepts render function as the only child.');
@@ -43,7 +50,12 @@ export function HeaderMotionScrollManager({
43
50
  refreshControl,
44
51
  refreshing,
45
52
  onRefresh,
46
- progressViewOffset
53
+ progressViewOffset,
54
+ onScroll,
55
+ onScrollBeginDrag,
56
+ onScrollEndDrag,
57
+ onMomentumScrollBegin,
58
+ onMomentumScrollEnd
47
59
  });
48
60
  return children(scrollableProps, headerMotionContext);
49
61
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useScrollManager","HeaderMotionScrollManager","children","scrollId","animatedRef","refreshControl","refreshing","onRefresh","progressViewOffset","Error","scrollableProps","headerMotionContext"],"sourceRoot":"../../../src","sources":["components/ScrollManager.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,QAAsC,mBAAU;AAyBzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CAEvC;EACAC,QAAQ;EACRC,QAAQ;EACRC,WAAW;EACXC,cAAc;EACdC,UAAU;EACVC,SAAS;EACTC;AACoC,CAAC,EAAE;EACvC,IAAI,OAAON,QAAQ,KAAK,UAAU,EAAE;IAClC,MAAM,IAAIO,KAAK,CACb,4EACF,CAAC;EACH;EAEA,MAAM;IAAEC,eAAe;IAAEC;EAAoB,CAAC,GAAGX,gBAAgB,CAC/DG,QAAQ,EACR;IACEC,WAAW;IACXC,cAAc;IACdC,UAAU;IACVC,SAAS;IACTC;EACF,CACF,CAAC;EAED,OAAON,QAAQ,CAACQ,eAAe,EAAEC,mBAAmB,CAAC;AACvD","ignoreList":[]}
1
+ {"version":3,"names":["useScrollManager","ScrollManager","children","scrollId","animatedRef","refreshControl","refreshing","onRefresh","progressViewOffset","onScroll","onScrollBeginDrag","onScrollEndDrag","onMomentumScrollBegin","onMomentumScrollEnd","Error","scrollableProps","headerMotionContext"],"sourceRoot":"../../../src","sources":["components/ScrollManager.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,QAAsC,mBAAU;AA2BzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAuC;EAClEC,QAAQ;EACRC,QAAQ;EACRC,WAAW;EACXC,cAAc;EACdC,UAAU;EACVC,SAAS;EACTC,kBAAkB;EAClBC,QAAQ;EACRC,iBAAiB;EACjBC,eAAe;EACfC,qBAAqB;EACrBC;AACoC,CAAC,EAAE;EACvC,IAAI,OAAOX,QAAQ,KAAK,UAAU,EAAE;IAClC,MAAM,IAAIY,KAAK,CACb,4EACF,CAAC;EACH;EAEA,MAAM;IAAEC,eAAe;IAAEC;EAAoB,CAAC,GAAGhB,gBAAgB,CAC/DG,QAAQ,EACR;IACEC,WAAW;IACXC,cAAc;IACdC,UAAU;IACVC,SAAS;IACTC,kBAAkB;IAClBC,QAAQ;IACRC,iBAAiB;IACjBC,eAAe;IACfC,qBAAqB;IACrBC;EACF,CACF,CAAC;EAED,OAAOX,QAAQ,CAACa,eAAe,EAAEC,mBAAmB,CAAC;AACvD","ignoreList":[]}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import Animated from 'react-native-reanimated';
4
- import { HeaderMotionScrollManager } from "./ScrollManager.js";
5
- import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { createHeaderMotionScrollable } from "./createHeaderMotionScrollable.js";
6
5
  /**
7
6
  * Animated ScrollView component that integrates with HeaderMotion.
8
7
  * Automatically handles scroll tracking and header animation synchronization.
@@ -17,41 +16,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
17
16
  * </HeaderMotion>
18
17
  * ```
19
18
  */
20
- export function HeaderMotionScrollView({
21
- scrollId,
22
- animatedRef,
23
- children,
24
- contentContainerStyle,
25
- refreshControl,
26
- ...props
27
- }) {
28
- return /*#__PURE__*/_jsx(HeaderMotionScrollManager, {
29
- scrollId: scrollId,
30
- animatedRef: animatedRef,
31
- refreshControl: refreshControl,
32
- children: ({
33
- onScroll,
34
- ref,
35
- refreshControl: managedRefreshControl,
36
- ...scrollViewProps
37
- }, {
38
- originalHeaderHeight,
39
- minHeightContentContainerStyle
40
- }) => /*#__PURE__*/_jsx(Animated.ScrollView, {
41
- ...scrollViewProps,
42
- ...props,
43
- ref: ref,
44
- onScroll: onScroll,
45
- ...(managedRefreshControl && {
46
- refreshControl: managedRefreshControl
47
- }),
48
- children: /*#__PURE__*/_jsx(Animated.View, {
49
- style: [minHeightContentContainerStyle, {
50
- paddingTop: originalHeaderHeight
51
- }, contentContainerStyle],
52
- children: children
53
- })
54
- })
55
- });
56
- }
19
+ export const ScrollView = createHeaderMotionScrollable(Animated.ScrollView, {
20
+ displayName: 'HeaderMotion.ScrollView',
21
+ contentContainerMode: 'children',
22
+ isComponentAnimated: true
23
+ });
57
24
  //# sourceMappingURL=ScrollView.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Animated","HeaderMotionScrollManager","jsx","_jsx","HeaderMotionScrollView","scrollId","animatedRef","children","contentContainerStyle","refreshControl","props","onScroll","ref","managedRefreshControl","scrollViewProps","originalHeaderHeight","minHeightContentContainerStyle","ScrollView","View","style","paddingTop"],"sourceRoot":"../../../src","sources":["components/ScrollView.tsx"],"mappings":";;AAAA,OAAOA,QAAQ,MAGR,yBAAyB;AAChC,SAASC,yBAAyB,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAe5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAAC;EACrCC,QAAQ;EACRC,WAAW;EACXC,QAAQ;EACRC,qBAAqB;EACrBC,cAAc;EACd,GAAGC;AACwB,CAAC,EAAE;EAC9B,oBACEP,IAAA,CAACF,yBAAyB;IACxBI,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAgD;IAC7DG,cAAc,EAAEA,cAAe;IAAAF,QAAA,EAE9BA,CACC;MACEI,QAAQ;MACRC,GAAG;MACHH,cAAc,EAAEI,qBAAqB;MACrC,GAAGC;IACL,CAAC,EACD;MAAEC,oBAAoB;MAAEC;IAA+B,CAAC,kBAExDb,IAAA,CAACH,QAAQ,CAACiB,UAAU;MAAA,GACdH,eAAe;MAAA,GACfJ,KAAK;MACTE,GAAG,EAAEA,GAAI;MACTD,QAAQ,EAAEA,QAAS;MAAA,IACdE,qBAAqB,IAAI;QAC5BJ,cAAc,EAAEI;MAClB,CAAC;MAAAN,QAAA,eAEDJ,IAAA,CAACH,QAAQ,CAACkB,IAAI;QACZC,KAAK,EAAE,CACLH,8BAA8B,EAC9B;UAAEI,UAAU,EAAEL;QAAqB,CAAC,EACpCP,qBAAqB,CACrB;QAAAD,QAAA,EAEDA;MAAQ,CACI;IAAC,CACG;EACtB,CACwB,CAAC;AAEhC","ignoreList":[]}
1
+ {"version":3,"names":["Animated","createHeaderMotionScrollable","ScrollView","displayName","contentContainerMode","isComponentAnimated"],"sourceRoot":"../../../src","sources":["components/ScrollView.tsx"],"mappings":";;AACA,OAAOA,QAAQ,MAER,yBAAyB;AAChC,SACEC,4BAA4B,QAEvB,mCAAgC;AASvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAGD,4BAA4B,CAACD,QAAQ,CAACE,UAAU,EAAE;EAC1EC,WAAW,EAAE,yBAAyB;EACtCC,oBAAoB,EAAE,UAAU;EAChCC,mBAAmB,EAAE;AACvB,CAAC,CAAoC","ignoreList":[]}