react-native-collapsible-tabs-reanimated 0.1.0-beta

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/LICENSE +21 -0
  2. package/README.md +232 -0
  3. package/lib/commonjs/Bar.js +247 -0
  4. package/lib/commonjs/Bar.js.map +1 -0
  5. package/lib/commonjs/Button.js +150 -0
  6. package/lib/commonjs/Button.js.map +1 -0
  7. package/lib/commonjs/Context.js +21 -0
  8. package/lib/commonjs/Context.js.map +1 -0
  9. package/lib/commonjs/FlashList.js +91 -0
  10. package/lib/commonjs/FlashList.js.map +1 -0
  11. package/lib/commonjs/Header.js +54 -0
  12. package/lib/commonjs/Header.js.map +1 -0
  13. package/lib/commonjs/Indicator.js +156 -0
  14. package/lib/commonjs/Indicator.js.map +1 -0
  15. package/lib/commonjs/Lazy.js +87 -0
  16. package/lib/commonjs/Lazy.js.map +1 -0
  17. package/lib/commonjs/LegendList.js +86 -0
  18. package/lib/commonjs/LegendList.js.map +1 -0
  19. package/lib/commonjs/List.js +83 -0
  20. package/lib/commonjs/List.js.map +1 -0
  21. package/lib/commonjs/Pager.js +93 -0
  22. package/lib/commonjs/Pager.js.map +1 -0
  23. package/lib/commonjs/Root.js +169 -0
  24. package/lib/commonjs/Root.js.map +1 -0
  25. package/lib/commonjs/ScrollView.js +85 -0
  26. package/lib/commonjs/ScrollView.js.map +1 -0
  27. package/lib/commonjs/StaticHeader.js +37 -0
  28. package/lib/commonjs/StaticHeader.js.map +1 -0
  29. package/lib/commonjs/StickyHeader.js +37 -0
  30. package/lib/commonjs/StickyHeader.js.map +1 -0
  31. package/lib/commonjs/Tab.js +86 -0
  32. package/lib/commonjs/Tab.js.map +1 -0
  33. package/lib/commonjs/flash-list.js +14 -0
  34. package/lib/commonjs/flash-list.js.map +1 -0
  35. package/lib/commonjs/index.js +128 -0
  36. package/lib/commonjs/index.js.map +1 -0
  37. package/lib/commonjs/legend-list.js +14 -0
  38. package/lib/commonjs/legend-list.js.map +1 -0
  39. package/lib/commonjs/package.json +1 -0
  40. package/lib/commonjs/useStableCallback.js +15 -0
  41. package/lib/commonjs/useStableCallback.js.map +1 -0
  42. package/lib/module/Bar.js +242 -0
  43. package/lib/module/Bar.js.map +1 -0
  44. package/lib/module/Button.js +145 -0
  45. package/lib/module/Button.js.map +1 -0
  46. package/lib/module/Context.js +16 -0
  47. package/lib/module/Context.js.map +1 -0
  48. package/lib/module/FlashList.js +86 -0
  49. package/lib/module/FlashList.js.map +1 -0
  50. package/lib/module/Header.js +49 -0
  51. package/lib/module/Header.js.map +1 -0
  52. package/lib/module/Indicator.js +151 -0
  53. package/lib/module/Indicator.js.map +1 -0
  54. package/lib/module/Lazy.js +82 -0
  55. package/lib/module/Lazy.js.map +1 -0
  56. package/lib/module/LegendList.js +81 -0
  57. package/lib/module/LegendList.js.map +1 -0
  58. package/lib/module/List.js +78 -0
  59. package/lib/module/List.js.map +1 -0
  60. package/lib/module/Pager.js +87 -0
  61. package/lib/module/Pager.js.map +1 -0
  62. package/lib/module/Root.js +165 -0
  63. package/lib/module/Root.js.map +1 -0
  64. package/lib/module/ScrollView.js +80 -0
  65. package/lib/module/ScrollView.js.map +1 -0
  66. package/lib/module/StaticHeader.js +32 -0
  67. package/lib/module/StaticHeader.js.map +1 -0
  68. package/lib/module/StickyHeader.js +32 -0
  69. package/lib/module/StickyHeader.js.map +1 -0
  70. package/lib/module/Tab.js +81 -0
  71. package/lib/module/Tab.js.map +1 -0
  72. package/lib/module/flash-list.js +4 -0
  73. package/lib/module/flash-list.js.map +1 -0
  74. package/lib/module/index.js +44 -0
  75. package/lib/module/index.js.map +1 -0
  76. package/lib/module/legend-list.js +4 -0
  77. package/lib/module/legend-list.js.map +1 -0
  78. package/lib/module/useStableCallback.js +11 -0
  79. package/lib/module/useStableCallback.js.map +1 -0
  80. package/lib/typescript/Bar.d.ts +22 -0
  81. package/lib/typescript/Bar.d.ts.map +1 -0
  82. package/lib/typescript/Button.d.ts +32 -0
  83. package/lib/typescript/Button.d.ts.map +1 -0
  84. package/lib/typescript/Context.d.ts +37 -0
  85. package/lib/typescript/Context.d.ts.map +1 -0
  86. package/lib/typescript/FlashList.d.ts +6 -0
  87. package/lib/typescript/FlashList.d.ts.map +1 -0
  88. package/lib/typescript/Header.d.ts +7 -0
  89. package/lib/typescript/Header.d.ts.map +1 -0
  90. package/lib/typescript/Indicator.d.ts +11 -0
  91. package/lib/typescript/Indicator.d.ts.map +1 -0
  92. package/lib/typescript/Lazy.d.ts +36 -0
  93. package/lib/typescript/Lazy.d.ts.map +1 -0
  94. package/lib/typescript/LegendList.d.ts +6 -0
  95. package/lib/typescript/LegendList.d.ts.map +1 -0
  96. package/lib/typescript/List.d.ts +6 -0
  97. package/lib/typescript/List.d.ts.map +1 -0
  98. package/lib/typescript/Pager.d.ts +15 -0
  99. package/lib/typescript/Pager.d.ts.map +1 -0
  100. package/lib/typescript/Root.d.ts +14 -0
  101. package/lib/typescript/Root.d.ts.map +1 -0
  102. package/lib/typescript/ScrollView.d.ts +6 -0
  103. package/lib/typescript/ScrollView.d.ts.map +1 -0
  104. package/lib/typescript/StaticHeader.d.ts +7 -0
  105. package/lib/typescript/StaticHeader.d.ts.map +1 -0
  106. package/lib/typescript/StickyHeader.d.ts +7 -0
  107. package/lib/typescript/StickyHeader.d.ts.map +1 -0
  108. package/lib/typescript/Tab.d.ts +31 -0
  109. package/lib/typescript/Tab.d.ts.map +1 -0
  110. package/lib/typescript/flash-list.d.ts +3 -0
  111. package/lib/typescript/flash-list.d.ts.map +1 -0
  112. package/lib/typescript/index.d.ts +69 -0
  113. package/lib/typescript/index.d.ts.map +1 -0
  114. package/lib/typescript/legend-list.d.ts +3 -0
  115. package/lib/typescript/legend-list.d.ts.map +1 -0
  116. package/lib/typescript/useStableCallback.d.ts +2 -0
  117. package/lib/typescript/useStableCallback.d.ts.map +1 -0
  118. package/package.json +112 -0
  119. package/src/Bar.tsx +359 -0
  120. package/src/Button.tsx +219 -0
  121. package/src/Context.tsx +44 -0
  122. package/src/FlashList.tsx +150 -0
  123. package/src/Header.tsx +45 -0
  124. package/src/Indicator.tsx +193 -0
  125. package/src/Lazy.tsx +110 -0
  126. package/src/LegendList.tsx +130 -0
  127. package/src/List.tsx +115 -0
  128. package/src/Pager.tsx +134 -0
  129. package/src/Root.tsx +194 -0
  130. package/src/ScrollView.tsx +116 -0
  131. package/src/StaticHeader.tsx +30 -0
  132. package/src/StickyHeader.tsx +30 -0
  133. package/src/Tab.tsx +89 -0
  134. package/src/flash-list.ts +2 -0
  135. package/src/index.ts +54 -0
  136. package/src/legend-list.ts +2 -0
  137. package/src/useStableCallback.ts +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useEffect","useMemo","LegendList","StyleSheet","View","GestureDetector","Animated","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useComposedEventHandler","useSharedValue","useCollapsibleTabsContext","useTabSelfContext","useStableCallback","jsx","_jsx","AnimatedLegendList","createAnimatedComponent","CollapsibleLegendList","onLayout","onContentSizeChange","props","listGestures","activeTabIndex","activeListOffset","registerListScroller","index","selfOffset","listRef","onScroll","event","value","contentOffset","y","composedScrollEvent","scroller","animated","current","scrollToOffset","offset","stableLayout","stableContentSizeChange","handleLayout","handleContentSizeChange","width","height","style","styles","view","collapsable","children","gesture","ref","scrollEventThrottle","showsVerticalScrollIndicator","directionalLockEnabled","keyboardShouldPersistTaps","create","position","displayName"],"sourceRoot":"..\\..\\src","sources":["LegendList.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback, useEffect, useMemo } from "react";
4
+ import { StyleSheet, View } from "react-native";
5
+ import { GestureDetector } from "react-native-gesture-handler";
6
+ import Animated, { scrollTo, useAnimatedReaction, useAnimatedRef, useAnimatedScrollHandler, useComposedEventHandler, useSharedValue } from "react-native-reanimated";
7
+ import { useCollapsibleTabsContext } from "./Context";
8
+ import { useTabSelfContext } from "./Tab";
9
+ import { useStableCallback } from "./useStableCallback";
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ const List = ({
12
+ onLayout,
13
+ onContentSizeChange,
14
+ ...props
15
+ }) => {
16
+ const {
17
+ listGestures,
18
+ activeTabIndex,
19
+ activeListOffset,
20
+ registerListScroller
21
+ } = useCollapsibleTabsContext();
22
+ const {
23
+ index
24
+ } = useTabSelfContext();
25
+ const selfOffset = useSharedValue(0);
26
+ const listRef = useAnimatedRef();
27
+ const onScroll = useAnimatedScrollHandler(event => {
28
+ selfOffset.value = event.contentOffset.y;
29
+ if (activeTabIndex.value === index) activeListOffset.value = event.contentOffset.y;
30
+ });
31
+ const composedScrollEvent = useComposedEventHandler(props.onScroll ? [onScroll, props.onScroll] : [onScroll]);
32
+ useAnimatedReaction(() => activeTabIndex.value, value => {
33
+ if (value === index) activeListOffset.value = selfOffset.value;
34
+ }, [index]);
35
+ const scroller = useMemo(() => (animated = true) => {
36
+ "worklet";
37
+
38
+ scrollTo(listRef, 0, 0, animated);
39
+ }, [listRef]);
40
+ useEffect(() => {
41
+ registerListScroller(index, scroller);
42
+ return () => registerListScroller(index, null);
43
+ }, [index, registerListScroller, scroller]);
44
+ const stableLayout = useStableCallback(onLayout);
45
+ const stableContentSizeChange = useStableCallback(onContentSizeChange);
46
+ const handleLayout = useCallback(event => {
47
+ stableLayout?.(event);
48
+ }, [stableLayout]);
49
+ const handleContentSizeChange = useCallback((width, height) => {
50
+ stableContentSizeChange?.(width, height);
51
+ }, [stableContentSizeChange]);
52
+ return /*#__PURE__*/_jsx(View, {
53
+ style: styles.view,
54
+ collapsable: false,
55
+ children: /*#__PURE__*/_jsx(GestureDetector, {
56
+ gesture: listGestures[index],
57
+ children: /*#__PURE__*/_jsx(Animated.FlatList, {
58
+ ref: listRef,
59
+ scrollEventThrottle: 16,
60
+ showsVerticalScrollIndicator: true,
61
+ directionalLockEnabled: true,
62
+ keyboardShouldPersistTaps: "handled",
63
+ ...props,
64
+ onScroll: composedScrollEvent,
65
+ onLayout: handleLayout,
66
+ onContentSizeChange: handleContentSizeChange
67
+ })
68
+ })
69
+ });
70
+ };
71
+ const styles = StyleSheet.create({
72
+ view: {
73
+ position: "relative"
74
+ }
75
+ });
76
+ List.displayName = "CollapsibleTabs.List";
77
+ export default /*#__PURE__*/memo(List);
78
+ //# sourceMappingURL=List.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useEffect","useMemo","StyleSheet","View","GestureDetector","Animated","scrollTo","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useComposedEventHandler","useSharedValue","useCollapsibleTabsContext","useTabSelfContext","useStableCallback","jsx","_jsx","List","onLayout","onContentSizeChange","props","listGestures","activeTabIndex","activeListOffset","registerListScroller","index","selfOffset","listRef","onScroll","event","value","contentOffset","y","composedScrollEvent","scroller","animated","stableLayout","stableContentSizeChange","handleLayout","handleContentSizeChange","width","height","style","styles","view","collapsable","children","gesture","FlatList","ref","scrollEventThrottle","showsVerticalScrollIndicator","directionalLockEnabled","keyboardShouldPersistTaps","create","position","displayName"],"sourceRoot":"..\\..\\src","sources":["List.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback, useMemo } from "react";
4
+ import { StyleSheet } from "react-native";
5
+ import { GestureDetector } from "react-native-gesture-handler";
6
+ import PagerView from "react-native-pager-view";
7
+ import Animated, { useAnimatedStyle, useEvent, useHandler } from "react-native-reanimated";
8
+ import { useCollapsibleTabsContext } from "./Context";
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ const AnimatedPagerView = Animated.createAnimatedComponent(PagerView);
11
+ function usePageScrollHandler(handlers, dependencies) {
12
+ const {
13
+ context,
14
+ doDependenciesDiffer
15
+ } = useHandler(handlers, dependencies);
16
+ return useEvent(event => {
17
+ "worklet";
18
+
19
+ const {
20
+ onPageScroll
21
+ } = handlers;
22
+ if (onPageScroll && event.eventName.endsWith("onPageScroll")) onPageScroll(event, context);
23
+ }, ["onPageScroll"], doDependenciesDiffer);
24
+ }
25
+ const Pager = ({
26
+ children,
27
+ style,
28
+ height,
29
+ getHeight,
30
+ ...pagerProps
31
+ }) => {
32
+ const {
33
+ headerOffset,
34
+ listPanGesture,
35
+ activeTabIndex,
36
+ activeListOffset,
37
+ pageDecimal,
38
+ pagerRef,
39
+ staticHeightValue,
40
+ stickyHeightValue
41
+ } = useCollapsibleTabsContext();
42
+ const listHeight = height ?? getHeight?.(staticHeightValue, stickyHeightValue) ?? null;
43
+ const pageScrollHandlers = useMemo(() => ({
44
+ onPageScroll: event => {
45
+ "worklet";
46
+
47
+ pageDecimal.value = event.position + event.offset;
48
+ }
49
+ }), [pageDecimal]);
50
+ const onPageScroll = usePageScrollHandler(pageScrollHandlers);
51
+ const onPageSelected = useCallback(event => {
52
+ activeTabIndex.value = event.nativeEvent.position;
53
+ activeListOffset.value = 0;
54
+ }, [activeListOffset, activeTabIndex]);
55
+ const animatedStyle = useAnimatedStyle(() => ({
56
+ ...(listHeight != null ? {
57
+ height: listHeight
58
+ } : null),
59
+ transform: [{
60
+ translateY: headerOffset.value
61
+ }]
62
+ }), [listHeight]);
63
+ return /*#__PURE__*/_jsx(GestureDetector, {
64
+ gesture: listPanGesture,
65
+ children: /*#__PURE__*/_jsx(Animated.View, {
66
+ style: [listHeight == null && styles.flex1, animatedStyle],
67
+ children: /*#__PURE__*/_jsx(AnimatedPagerView, {
68
+ ref: pagerRef,
69
+ orientation: "horizontal",
70
+ overScrollMode: "never",
71
+ style: [styles.flex1, style],
72
+ onPageScroll: onPageScroll,
73
+ onPageSelected: onPageSelected,
74
+ ...pagerProps,
75
+ children: children
76
+ })
77
+ })
78
+ });
79
+ };
80
+ Pager.displayName = "CollapsibleTabs.Pager";
81
+ const styles = StyleSheet.create({
82
+ flex1: {
83
+ flex: 1
84
+ }
85
+ });
86
+ export default /*#__PURE__*/memo(Pager);
87
+ //# sourceMappingURL=Pager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useMemo","StyleSheet","GestureDetector","PagerView","Animated","useAnimatedStyle","useEvent","useHandler","useCollapsibleTabsContext","jsx","_jsx","AnimatedPagerView","createAnimatedComponent","usePageScrollHandler","handlers","dependencies","context","doDependenciesDiffer","event","onPageScroll","eventName","endsWith","Pager","children","style","height","getHeight","pagerProps","headerOffset","listPanGesture","activeTabIndex","activeListOffset","pageDecimal","pagerRef","staticHeightValue","stickyHeightValue","listHeight","pageScrollHandlers","value","position","offset","onPageSelected","nativeEvent","animatedStyle","transform","translateY","gesture","View","styles","flex1","ref","orientation","overScrollMode","displayName","create","flex"],"sourceRoot":"..\\..\\src","sources":["Pager.tsx"],"mappings":";;AAAA,SAAoBA,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAE7D,SAAoBC,UAAU,QAAmB,cAAc;AAE/D,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,SAAS,MAIT,yBAAyB;AAChC,OAAOC,QAAQ,IACbC,gBAAgB,EAChBC,QAAQ,EACRC,UAAU,QACL,yBAAyB;AAEhC,SAASC,yBAAyB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtD,MAAMC,iBAAiB,GAAGP,QAAQ,CAACQ,uBAAuB,CAACT,SAAS,CAAC;AAWrE,SAASU,oBAAoBA,CAC3BC,QAA4B,EAC5BC,YAAwB,EACxB;EACA,MAAM;IAAEC,OAAO;IAAEC;EAAqB,CAAC,GAAGV,UAAU,CAACO,QAAQ,EAAEC,YAAY,CAAC;EAC5E,OAAOT,QAAQ,CACZY,KAAK,IAAK;IACT,SAAS;;IACT,MAAM;MAAEC;IAAa,CAAC,GAAGL,QAAQ;IACjC,IAAIK,YAAY,IAAID,KAAK,CAACE,SAAS,CAACC,QAAQ,CAAC,cAAc,CAAC,EAC1DF,YAAY,CAACD,KAAK,EAAEF,OAAO,CAAC;EAChC,CAAC,EACD,CAAC,cAAc,CAAC,EAChBC,oBACF,CAAC;AACH;AAYA,MAAMK,KAAK,GAAGA,CAAC;EACbC,QAAQ;EACRC,KAAK;EACLC,MAAM;EACNC,SAAS;EACT,GAAGC;AACO,CAAC,KAAK;EAChB,MAAM;IACJC,YAAY;IACZC,cAAc;IACdC,cAAc;IACdC,gBAAgB;IAChBC,WAAW;IACXC,QAAQ;IACRC,iBAAiB;IACjBC;EACF,CAAC,GAAG3B,yBAAyB,CAAC,CAAC;EAE/B,MAAM4B,UAAU,GACdX,MAAM,IAAIC,SAAS,GAAGQ,iBAAiB,EAAEC,iBAAiB,CAAC,IAAI,IAAI;EAErE,MAAME,kBAAkB,GAAGrC,OAAO,CAChC,OAAO;IACLmB,YAAY,EAAGD,KAAK,IAAK;MACvB,SAAS;;MACTc,WAAW,CAACM,KAAK,GAAGpB,KAAK,CAACqB,QAAQ,GAAGrB,KAAK,CAACsB,MAAM;IACnD;EACF,CAAC,CAAC,EACF,CAACR,WAAW,CACd,CAAC;EACD,MAAMb,YAAY,GAAGN,oBAAoB,CAACwB,kBAAkB,CAAC;EAE7D,MAAMI,cAAc,GAAG1C,WAAW,CAC/BmB,KAAmC,IAAK;IACvCY,cAAc,CAACQ,KAAK,GAAGpB,KAAK,CAACwB,WAAW,CAACH,QAAQ;IACjDR,gBAAgB,CAACO,KAAK,GAAG,CAAC;EAC5B,CAAC,EACD,CAACP,gBAAgB,EAAED,cAAc,CACnC,CAAC;EAED,MAAMa,aAAa,GAAGtC,gBAAgB,CACpC,OAAO;IACL,IAAI+B,UAAU,IAAI,IAAI,GAAG;MAAEX,MAAM,EAAEW;IAAW,CAAC,GAAG,IAAI,CAAC;IACvDQ,SAAS,EAAE,CAAC;MAAEC,UAAU,EAAEjB,YAAY,CAACU;IAAM,CAAC;EAChD,CAAC,CAAC,EACF,CAACF,UAAU,CACb,CAAC;EAED,oBACE1B,IAAA,CAACR,eAAe;IAAC4C,OAAO,EAAEjB,cAAe;IAAAN,QAAA,eACvCb,IAAA,CAACN,QAAQ,CAAC2C,IAAI;MACZvB,KAAK,EAAE,CAACY,UAAU,IAAI,IAAI,IAAIY,MAAM,CAACC,KAAK,EAAEN,aAAa,CAAE;MAAApB,QAAA,eAE3Db,IAAA,CAACC,iBAAiB;QAChBuC,GAAG,EAAEjB,QAAS;QACdkB,WAAW,EAAC,YAAY;QACxBC,cAAc,EAAC,OAAO;QACtB5B,KAAK,EAAE,CAACwB,MAAM,CAACC,KAAK,EAAEzB,KAAK,CAAE;QAC7BL,YAAY,EACVA,YACD;QACDsB,cAAc,EAAEA,cAAe;QAAA,GAC3Bd,UAAU;QAAAJ,QAAA,EAEbA;MAAQ,CACQ;IAAC,CACP;EAAC,CACD,CAAC;AAEtB,CAAC;AAEDD,KAAK,CAAC+B,WAAW,GAAG,uBAAuB;AAE3C,MAAML,MAAM,GAAG/C,UAAU,CAACqD,MAAM,CAAC;EAC/BL,KAAK,EAAE;IAAEM,IAAI,EAAE;EAAE;AACnB,CAAC,CAAC;AAEF,4BAAezD,IAAI,CAACwB,KAAK,CAAC","ignoreList":[]}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, memo, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';
4
+ import { Platform } from 'react-native';
5
+ import { Gesture } from 'react-native-gesture-handler';
6
+ import { clamp, useAnimatedReaction, useDerivedValue, useSharedValue, withDecay, withSpring } from 'react-native-reanimated';
7
+ import { scheduleOnRN } from 'react-native-worklets';
8
+ import { CollapsibleTabsContextProvider } from './Context';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ const DECELERATION = Platform.OS === 'android' ? 0.985 : 0.998;
11
+ const HEIGHT_EPSILON = 0.5;
12
+ const RootInner = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(({
13
+ initialStaticHeight,
14
+ initialStickyHeight,
15
+ pageLength,
16
+ offsetAdjustment,
17
+ children
18
+ }, ref) => {
19
+ const headerOffset = useSharedValue(0);
20
+ const staticHeight = useSharedValue(initialStaticHeight);
21
+ const stickyHeight = useSharedValue(initialStickyHeight);
22
+ const offsetAdjustmentShared = useDerivedValue(() => offsetAdjustment, [offsetAdjustment]);
23
+ const activeTabIndex = useSharedValue(0);
24
+ const [activeTabIndexValue, setActiveTabIndexValue] = useState(0);
25
+ useAnimatedReaction(() => activeTabIndex.value, (next, prev) => {
26
+ if (next !== prev) scheduleOnRN(setActiveTabIndexValue, next);
27
+ }, []);
28
+ const pageDecimal = useSharedValue(0);
29
+ const pagerRef = useRef(null);
30
+ const [itemLayout, setItemLayout] = useState([]);
31
+ const listScrollersRef = useRef(new Map());
32
+ const registerButton = useCallback(config => {
33
+ setItemLayout(prev => {
34
+ const next = prev.slice();
35
+ next[config.index] = config;
36
+ return next;
37
+ });
38
+ }, []);
39
+ const registerListScroller = useCallback((index, scroller) => {
40
+ if (scroller) listScrollersRef.current.set(index, scroller);else listScrollersRef.current.delete(index);
41
+ }, []);
42
+ useImperativeHandle(ref, () => ({
43
+ scrollToViewTop: (animated = true) => {
44
+ const scroller = listScrollersRef.current.get(activeTabIndex.value);
45
+ scroller?.(animated);
46
+ headerOffset.value = withSpring(0, {
47
+ duration: 250,
48
+ dampingRatio: 1,
49
+ mass: 4
50
+ });
51
+ }
52
+ }), [activeTabIndex, headerOffset]);
53
+ const [staticHeightValue, setStaticHeightValue] = useState(initialStaticHeight);
54
+ const [stickyHeightValue, setStickyHeightValue] = useState(initialStickyHeight);
55
+ const updateStaticHeight = useCallback(height => {
56
+ staticHeight.value = height;
57
+ setStaticHeightValue(prev => {
58
+ if (Math.abs(prev - height) < HEIGHT_EPSILON) return prev;
59
+ return height;
60
+ });
61
+ }, [staticHeight]);
62
+ const updateStickyHeight = useCallback(height => {
63
+ stickyHeight.value = height;
64
+ setStickyHeightValue(prev => {
65
+ if (Math.abs(prev - height) < HEIGHT_EPSILON) return prev;
66
+ return height;
67
+ });
68
+ }, [stickyHeight]);
69
+ const touchX = useSharedValue(0);
70
+ const touchY = useSharedValue(0);
71
+ const isVertical = useSharedValue(false);
72
+ const activeListOffset = useSharedValue(0);
73
+ const listGestures = useMemo(() => Array.from({
74
+ length: pageLength
75
+ }, () => Gesture.Native().cancelsTouchesInView(true)), [pageLength]);
76
+ const listPanGesture = useMemo(() => {
77
+ return Gesture.Pan().manualActivation(true).maxPointers(1).minPointers(1).onTouchesDown(evt => {
78
+ const touch = evt.allTouches[0];
79
+ touchX.value = touch.x;
80
+ touchY.value = touch.y;
81
+ isVertical.value = false;
82
+ }).onTouchesMove((evt, state) => {
83
+ const touch = evt.allTouches[0];
84
+ const toTop = touch.y > touchY.value;
85
+ const isHorizontal = Math.abs(touch.x - touchX.value) > 5;
86
+ const vertical = Math.abs(touch.y - touchY.value) > 5;
87
+ if (vertical) isVertical.value = true;
88
+ if (isHorizontal && !isVertical.value) return state.fail();
89
+ if (!vertical) return;
90
+ const minOffset = -(staticHeight.value - offsetAdjustmentShared.value);
91
+ if (toTop && activeListOffset.value === 0) state.activate();else if (!toTop && headerOffset.value > minOffset) state.activate();
92
+ }).onChange(evt => {
93
+ isVertical.value = true;
94
+ const minOffset = -(staticHeight.value - offsetAdjustmentShared.value);
95
+ headerOffset.value = clamp(headerOffset.value + evt.changeY, minOffset, 0);
96
+ }).onEnd(evt => {
97
+ const toTop = evt.translationY > 0;
98
+ const isHeaderPartialShown = headerOffset.value !== 0;
99
+ const minOffset = -(staticHeight.value - offsetAdjustmentShared.value);
100
+ const isFast = Math.abs(evt.velocityY) > 800;
101
+ if (isFast) {
102
+ if (toTop && isHeaderPartialShown) {
103
+ headerOffset.value = withSpring(0, {
104
+ duration: 250,
105
+ dampingRatio: 1,
106
+ mass: 4,
107
+ overshootClamping: false,
108
+ velocity: evt.velocityY
109
+ });
110
+ } else if (!toTop && isHeaderPartialShown) {
111
+ headerOffset.value = withSpring(minOffset, {
112
+ duration: 250,
113
+ dampingRatio: 1,
114
+ mass: 4,
115
+ overshootClamping: false,
116
+ velocity: evt.velocityY
117
+ });
118
+ }
119
+ } else {
120
+ headerOffset.value = withDecay({
121
+ velocity: evt.velocityY,
122
+ rubberBandEffect: false,
123
+ clamp: [minOffset, 0],
124
+ deceleration: DECELERATION
125
+ });
126
+ }
127
+ }).simultaneousWithExternalGesture(...listGestures);
128
+ }, [activeListOffset, headerOffset, isVertical, listGestures, offsetAdjustmentShared, staticHeight, touchX, touchY]);
129
+ const ctxValue = useMemo(() => ({
130
+ headerOffset,
131
+ staticHeight,
132
+ stickyHeight,
133
+ offsetAdjustment: offsetAdjustmentShared,
134
+ activeTabIndex,
135
+ activeTabIndexValue,
136
+ pageDecimal,
137
+ listPanGesture,
138
+ listGestures,
139
+ pagerRef,
140
+ itemLayout,
141
+ registerButton,
142
+ registerListScroller,
143
+ staticHeightValue,
144
+ stickyHeightValue,
145
+ activeListOffset,
146
+ updateStaticHeight,
147
+ updateStickyHeight
148
+ }), [activeListOffset, activeTabIndex, activeTabIndexValue, headerOffset, itemLayout, listGestures, listPanGesture, offsetAdjustmentShared, pageDecimal, registerButton, registerListScroller, staticHeight, staticHeightValue, stickyHeight, stickyHeightValue, updateStaticHeight, updateStickyHeight]);
149
+ return /*#__PURE__*/_jsx(CollapsibleTabsContextProvider, {
150
+ ...ctxValue,
151
+ children: children
152
+ });
153
+ }));
154
+ RootInner.displayName = 'CollapsibleTabs.RootInner';
155
+ const Root = /*#__PURE__*/forwardRef((props, ref) => /*#__PURE__*/_jsx(RootInner, {
156
+ ref: ref,
157
+ initialStaticHeight: props.initialStaticHeight ?? 0,
158
+ initialStickyHeight: props.initialStickyHeight ?? 0,
159
+ pageLength: props.pageLength,
160
+ offsetAdjustment: props.offsetAdjustment ?? 0,
161
+ children: props.children
162
+ }));
163
+ Root.displayName = 'CollapsibleTabs.Root';
164
+ export default /*#__PURE__*/memo(Root);
165
+ //# sourceMappingURL=Root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","memo","useCallback","useImperativeHandle","useMemo","useRef","useState","Platform","Gesture","clamp","useAnimatedReaction","useDerivedValue","useSharedValue","withDecay","withSpring","scheduleOnRN","CollapsibleTabsContextProvider","jsx","_jsx","DECELERATION","OS","HEIGHT_EPSILON","RootInner","initialStaticHeight","initialStickyHeight","pageLength","offsetAdjustment","children","ref","headerOffset","staticHeight","stickyHeight","offsetAdjustmentShared","activeTabIndex","activeTabIndexValue","setActiveTabIndexValue","value","next","prev","pageDecimal","pagerRef","itemLayout","setItemLayout","listScrollersRef","Map","registerButton","config","slice","index","registerListScroller","scroller","current","set","delete","scrollToViewTop","animated","get","duration","dampingRatio","mass","staticHeightValue","setStaticHeightValue","stickyHeightValue","setStickyHeightValue","updateStaticHeight","height","Math","abs","updateStickyHeight","touchX","touchY","isVertical","activeListOffset","listGestures","Array","from","length","Native","cancelsTouchesInView","listPanGesture","Pan","manualActivation","maxPointers","minPointers","onTouchesDown","evt","touch","allTouches","x","y","onTouchesMove","state","toTop","isHorizontal","vertical","fail","minOffset","activate","onChange","changeY","onEnd","translationY","isHeaderPartialShown","isFast","velocityY","overshootClamping","velocity","rubberBandEffect","deceleration","simultaneousWithExternalGesture","ctxValue","displayName","Root","props"],"sourceRoot":"..\\..\\src","sources":["Root.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback, useEffect, useMemo } from "react";
4
+ import { StyleSheet, View } from "react-native";
5
+ import { GestureDetector } from "react-native-gesture-handler";
6
+ import Animated, { scrollTo, useAnimatedReaction, useAnimatedRef, useAnimatedScrollHandler, useComposedEventHandler, useSharedValue } from "react-native-reanimated";
7
+ import { useCollapsibleTabsContext } from "./Context";
8
+ import { useTabSelfContext } from "./Tab";
9
+ import { useStableCallback } from "./useStableCallback";
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ const ScrollView = ({
12
+ onLayout,
13
+ onContentSizeChange,
14
+ ...props
15
+ }) => {
16
+ const {
17
+ listGestures,
18
+ activeTabIndex,
19
+ activeListOffset,
20
+ registerListScroller
21
+ } = useCollapsibleTabsContext();
22
+ const {
23
+ index
24
+ } = useTabSelfContext();
25
+ const selfOffset = useSharedValue(0);
26
+ const scrollRef = useAnimatedRef();
27
+ const onScroll = useAnimatedScrollHandler(event => {
28
+ selfOffset.value = event.contentOffset.y;
29
+ if (activeTabIndex.value === index) activeListOffset.value = event.contentOffset.y;
30
+ });
31
+ const composedScrollEvent = useComposedEventHandler(props.onScroll ? [onScroll, props.onScroll] : [onScroll]);
32
+ useAnimatedReaction(() => activeTabIndex.value, value => {
33
+ if (value === index) activeListOffset.value = selfOffset.value;
34
+ }, [index]);
35
+ const scroller = useMemo(() => (animated = true) => {
36
+ "worklet";
37
+
38
+ scrollTo(scrollRef, 0, 0, animated);
39
+ }, [scrollRef]);
40
+ useEffect(() => {
41
+ registerListScroller(index, scroller);
42
+ return () => registerListScroller(index, null);
43
+ }, [index, registerListScroller, scroller]);
44
+ const stableLayout = useStableCallback(onLayout);
45
+ const stableContentSizeChange = useStableCallback(onContentSizeChange);
46
+ const handleLayout = useCallback(event => {
47
+ stableLayout?.(event);
48
+ }, [stableLayout]);
49
+ const handleContentSizeChange = useCallback((width, height) => {
50
+ stableContentSizeChange?.(width, height);
51
+ }, [stableContentSizeChange]);
52
+ return /*#__PURE__*/_jsx(View, {
53
+ style: styles.view,
54
+ collapsable: false,
55
+ children: /*#__PURE__*/_jsx(GestureDetector, {
56
+ gesture: listGestures[index],
57
+ children: /*#__PURE__*/_jsx(Animated.ScrollView, {
58
+ ref: scrollRef,
59
+ scrollEventThrottle: 16,
60
+ showsVerticalScrollIndicator: true,
61
+ directionalLockEnabled: true,
62
+ keyboardShouldPersistTaps: "handled",
63
+ ...props,
64
+ // onScroll={onScroll as RNScrollViewProps["onScroll"]}
65
+ onScroll: composedScrollEvent,
66
+ onLayout: handleLayout,
67
+ onContentSizeChange: handleContentSizeChange
68
+ })
69
+ })
70
+ });
71
+ };
72
+ const styles = StyleSheet.create({
73
+ view: {
74
+ position: "relative",
75
+ flex: 1
76
+ }
77
+ });
78
+ ScrollView.displayName = "CollapsibleTabs.ScrollView";
79
+ export default /*#__PURE__*/memo(ScrollView);
80
+ //# sourceMappingURL=ScrollView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useEffect","useMemo","StyleSheet","View","GestureDetector","Animated","scrollTo","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useComposedEventHandler","useSharedValue","useCollapsibleTabsContext","useTabSelfContext","useStableCallback","jsx","_jsx","ScrollView","onLayout","onContentSizeChange","props","listGestures","activeTabIndex","activeListOffset","registerListScroller","index","selfOffset","scrollRef","onScroll","event","value","contentOffset","y","composedScrollEvent","scroller","animated","stableLayout","stableContentSizeChange","handleLayout","handleContentSizeChange","width","height","style","styles","view","collapsable","children","gesture","ref","scrollEventThrottle","showsVerticalScrollIndicator","directionalLockEnabled","keyboardShouldPersistTaps","create","position","flex","displayName"],"sourceRoot":"..\\..\\src","sources":["ScrollView.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import Animated from 'react-native-reanimated';
5
+ import { useCollapsibleTabsContext } from './Context';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const StaticHeader = ({
8
+ children,
9
+ onLayout,
10
+ ...props
11
+ }) => {
12
+ const {
13
+ updateStaticHeight,
14
+ staticHeightValue
15
+ } = useCollapsibleTabsContext();
16
+ const handleLayout = evt => {
17
+ const height = evt.nativeEvent.layout.height;
18
+ if (__DEV__ && (!staticHeightValue || Math.abs(staticHeightValue - height) > 10)) {
19
+ console.info(`Set initialStaticHeight=${height} to reduce first-render flicker.`);
20
+ }
21
+ updateStaticHeight(height);
22
+ onLayout?.(evt);
23
+ };
24
+ return /*#__PURE__*/_jsx(Animated.View, {
25
+ ...props,
26
+ onLayout: handleLayout,
27
+ children: children
28
+ });
29
+ };
30
+ StaticHeader.displayName = 'CollapsibleTabs.StaticHeader';
31
+ export default /*#__PURE__*/memo(StaticHeader);
32
+ //# sourceMappingURL=StaticHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","Animated","useCollapsibleTabsContext","jsx","_jsx","StaticHeader","children","onLayout","props","updateStaticHeight","staticHeightValue","handleLayout","evt","height","nativeEvent","layout","__DEV__","Math","abs","console","info","View","displayName"],"sourceRoot":"..\\..\\src","sources":["StaticHeader.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAI5B,OAAOC,QAAQ,MAAM,yBAAyB;AAE9C,SAASC,yBAAyB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtD,MAAMC,YAAY,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,QAAQ;EAAE,GAAGC;AAAiB,CAAC,KAAK;EACpE,MAAM;IAAEC,kBAAkB;IAAEC;EAAkB,CAAC,GAAGR,yBAAyB,CAAC,CAAC;EAE7E,MAAMS,YAAY,GAAIC,GAAsB,IAAK;IAC/C,MAAMC,MAAM,GAAGD,GAAG,CAACE,WAAW,CAACC,MAAM,CAACF,MAAM;IAC5C,IAAIG,OAAO,KAAK,CAACN,iBAAiB,IAAIO,IAAI,CAACC,GAAG,CAACR,iBAAiB,GAAGG,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE;MAChFM,OAAO,CAACC,IAAI,CAAC,2BAA2BP,MAAM,kCAAkC,CAAC;IACnF;IACAJ,kBAAkB,CAACI,MAAM,CAAC;IAC1BN,QAAQ,GAAGK,GAAG,CAAC;EACjB,CAAC;EAED,oBACER,IAAA,CAACH,QAAQ,CAACoB,IAAI;IAAA,GAAKb,KAAK;IAAED,QAAQ,EAAEI,YAAa;IAAAL,QAAA,EAC9CA;EAAQ,CACI,CAAC;AAEpB,CAAC;AAEDD,YAAY,CAACiB,WAAW,GAAG,8BAA8B;AAEzD,4BAAetB,IAAI,CAACK,YAAY,CAAC","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import Animated from 'react-native-reanimated';
5
+ import { useCollapsibleTabsContext } from './Context';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const StickyHeader = ({
8
+ children,
9
+ onLayout,
10
+ ...props
11
+ }) => {
12
+ const {
13
+ updateStickyHeight,
14
+ stickyHeightValue
15
+ } = useCollapsibleTabsContext();
16
+ const handleLayout = evt => {
17
+ const height = evt.nativeEvent.layout.height;
18
+ if (__DEV__ && (!stickyHeightValue || Math.abs(stickyHeightValue - height) > 10)) {
19
+ console.info(`Set initialStickyHeight=${height} to reduce first-render flicker.`);
20
+ }
21
+ updateStickyHeight(height);
22
+ onLayout?.(evt);
23
+ };
24
+ return /*#__PURE__*/_jsx(Animated.View, {
25
+ ...props,
26
+ onLayout: handleLayout,
27
+ children: children
28
+ });
29
+ };
30
+ StickyHeader.displayName = 'CollapsibleTabs.StickyHeader';
31
+ export default /*#__PURE__*/memo(StickyHeader);
32
+ //# sourceMappingURL=StickyHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","Animated","useCollapsibleTabsContext","jsx","_jsx","StickyHeader","children","onLayout","props","updateStickyHeight","stickyHeightValue","handleLayout","evt","height","nativeEvent","layout","__DEV__","Math","abs","console","info","View","displayName"],"sourceRoot":"..\\..\\src","sources":["StickyHeader.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAI5B,OAAOC,QAAQ,MAAM,yBAAyB;AAE9C,SAASC,yBAAyB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtD,MAAMC,YAAY,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,QAAQ;EAAE,GAAGC;AAAiB,CAAC,KAAK;EACpE,MAAM;IAAEC,kBAAkB;IAAEC;EAAkB,CAAC,GAAGR,yBAAyB,CAAC,CAAC;EAE7E,MAAMS,YAAY,GAAIC,GAAsB,IAAK;IAC/C,MAAMC,MAAM,GAAGD,GAAG,CAACE,WAAW,CAACC,MAAM,CAACF,MAAM;IAC5C,IAAIG,OAAO,KAAK,CAACN,iBAAiB,IAAIO,IAAI,CAACC,GAAG,CAACR,iBAAiB,GAAGG,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE;MAChFM,OAAO,CAACC,IAAI,CAAC,2BAA2BP,MAAM,kCAAkC,CAAC;IACnF;IACAJ,kBAAkB,CAACI,MAAM,CAAC;IAC1BN,QAAQ,GAAGK,GAAG,CAAC;EACjB,CAAC;EAED,oBACER,IAAA,CAACH,QAAQ,CAACoB,IAAI;IAAA,GAAKb,KAAK;IAAED,QAAQ,EAAEI,YAAa;IAAAL,QAAA,EAC9CA;EAAQ,CACI,CAAC;AAEpB,CAAC;AAEDD,YAAY,CAACiB,WAAW,GAAG,8BAA8B;AAEzD,4BAAetB,IAAI,CAACK,YAAY,CAAC","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ import { createContext, memo, useContext, useState } from 'react';
4
+ import { useAnimatedReaction, useSharedValue } from 'react-native-reanimated';
5
+ import { scheduleOnRN } from 'react-native-worklets';
6
+ import { useCollapsibleTabsContext } from './Context';
7
+ import { Lazy } from './Lazy';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const Tab = ({
10
+ index,
11
+ loader,
12
+ loaderStyle,
13
+ lazyProps,
14
+ disableLazyEntering = true,
15
+ disablePreload = false,
16
+ lazy = true,
17
+ children,
18
+ isLoading = false,
19
+ isScreenFocused = true
20
+ }) => {
21
+ const {
22
+ activeTabIndexValue,
23
+ pageDecimal
24
+ } = useCollapsibleTabsContext();
25
+ const [shouldPreload, setShouldPreload] = useState(false);
26
+ const [canMount, setCanMount] = useState(lazy === false);
27
+ const preloadLatched = useSharedValue(disablePreload);
28
+ const mountLatched = useSharedValue(lazy === false);
29
+ useAnimatedReaction(() => pageDecimal.value, value => {
30
+ if (!preloadLatched.value && Math.round(value) === index) {
31
+ preloadLatched.value = true;
32
+ scheduleOnRN(setShouldPreload, true);
33
+ }
34
+ if (!mountLatched.value && Math.abs(value - index) <= 1.5 && isScreenFocused) {
35
+ mountLatched.value = true;
36
+ scheduleOnRN(setCanMount, true);
37
+ }
38
+ }, [index, isScreenFocused]);
39
+ const isFocused = index === activeTabIndexValue && isScreenFocused;
40
+ const isMounted = lazy ? (isFocused || shouldPreload) && !isLoading : true;
41
+ const renderChildren = () => {
42
+ if (lazy) {
43
+ if (!canMount) return null;
44
+ return /*#__PURE__*/_jsx(Lazy, {
45
+ ...lazyProps,
46
+ focused: isMounted && !isLoading,
47
+ disableEntering: disableLazyEntering,
48
+ placeholder: loader,
49
+ placeholderStyle: loaderStyle,
50
+ children: typeof children === 'function' ? children({
51
+ isFocused,
52
+ pageDecimal
53
+ }) : children
54
+ });
55
+ }
56
+ return typeof children === 'function' ? children({
57
+ isFocused,
58
+ pageDecimal
59
+ }) : children;
60
+ };
61
+ return /*#__PURE__*/_jsx(TabSelfContextProvider, {
62
+ index: index,
63
+ isFocused: isFocused,
64
+ isMounted: isMounted,
65
+ children: renderChildren()
66
+ });
67
+ };
68
+ const TabSelfContext = /*#__PURE__*/createContext({});
69
+ const TabSelfContextProvider = /*#__PURE__*/memo(({
70
+ children,
71
+ ...props
72
+ }) => {
73
+ return /*#__PURE__*/_jsx(TabSelfContext.Provider, {
74
+ value: props,
75
+ children: children
76
+ });
77
+ });
78
+ export const useTabSelfContext = () => useContext(TabSelfContext);
79
+ Tab.displayName = 'CollapsibleTabs.Tab';
80
+ export default /*#__PURE__*/memo(Tab);
81
+ //# sourceMappingURL=Tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","memo","useContext","useState","useAnimatedReaction","useSharedValue","scheduleOnRN","useCollapsibleTabsContext","Lazy","jsx","_jsx","Tab","index","loader","loaderStyle","lazyProps","disableLazyEntering","disablePreload","lazy","children","isLoading","isScreenFocused","activeTabIndexValue","pageDecimal","shouldPreload","setShouldPreload","canMount","setCanMount","preloadLatched","mountLatched","value","Math","round","abs","isFocused","isMounted","renderChildren","focused","disableEntering","placeholder","placeholderStyle","TabSelfContextProvider","TabSelfContext","props","Provider","useTabSelfContext","displayName"],"sourceRoot":"..\\..\\src","sources":["Tab.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { default as CollapsibleFlashList } from './FlashList';
4
+ //# sourceMappingURL=flash-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","CollapsibleFlashList"],"sourceRoot":"..\\..\\src","sources":["flash-list.ts"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,oBAAoB,QAAQ,aAAa","ignoreList":[]}