@r0b0t3d/react-native-collapsible 1.4.3 → 1.5.0-alpha.1

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.
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = CollapsibleFlatList;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
10
+ var _flashList = require("@shopify/flash-list");
11
+ var _useAnimatedScroll = _interopRequireDefault(require("./useAnimatedScroll"));
12
+ var _useInternalCollapsibleContext = _interopRequireDefault(require("../../hooks/useInternalCollapsibleContext"));
13
+ var _AnimatedTopView = _interopRequireDefault(require("../header/AnimatedTopView"));
14
+ var _useCollapsibleContext = _interopRequireDefault(require("../../hooks/useCollapsibleContext"));
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } /* eslint-disable react-hooks/exhaustive-deps */
19
+ const AnimatedFlashList = _reactNativeReanimated.default.createAnimatedComponent(_flashList.FlashList);
20
+ function CollapsibleFlatList(_ref) {
21
+ let {
22
+ headerSnappable = true,
23
+ ...props
24
+ } = _ref;
25
+ const {
26
+ headerHeight
27
+ } = (0, _useCollapsibleContext.default)();
28
+ const {
29
+ scrollViewRef,
30
+ fixedHeaderHeight
31
+ } = (0, _useInternalCollapsibleContext.default)();
32
+ const mounted = (0, _react.useRef)(true);
33
+ const [internalProgressViewOffset, setInternalProgressViewOffset] = (0, _react.useState)(0);
34
+ (0, _react.useEffect)(() => {
35
+ return () => {
36
+ mounted.current = false;
37
+ };
38
+ }, []);
39
+ const scrollTo = (0, _react.useCallback)(function (yValue) {
40
+ var _scrollViewRef$curren;
41
+ let animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
42
+ (_scrollViewRef$curren = scrollViewRef.current) === null || _scrollViewRef$curren === void 0 ? void 0 : _scrollViewRef$curren.scrollToOffset({
43
+ offset: yValue,
44
+ animated
45
+ });
46
+ }, []);
47
+ const scrollToIndex = (0, _react.useCallback)(params => {
48
+ var _scrollViewRef$curren2;
49
+ (_scrollViewRef$curren2 = scrollViewRef.current) === null || _scrollViewRef$curren2 === void 0 ? void 0 : _scrollViewRef$curren2.scrollToIndex(params);
50
+ }, []);
51
+ const scrollToLocation = (0, _react.useCallback)(() => {
52
+ console.warn('CollapsibleFlatList does not support scrollToLocation');
53
+ }, []);
54
+ const {
55
+ scrollHandler
56
+ } = (0, _useAnimatedScroll.default)({
57
+ headerSnappable,
58
+ scrollTo,
59
+ scrollToIndex,
60
+ scrollToLocation
61
+ });
62
+ const handleInternalProgressViewOffset = (0, _react.useCallback)(value => {
63
+ if (mounted.current) {
64
+ setInternalProgressViewOffset(value);
65
+ }
66
+ }, []);
67
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => {
68
+ return fixedHeaderHeight.value;
69
+ }, (result, previous) => {
70
+ if (result !== previous) {
71
+ (0, _reactNativeReanimated.runOnJS)(handleInternalProgressViewOffset)(result);
72
+ }
73
+ });
74
+ const handleScrollToIndexFailed = (0, _react.useCallback)(() => {}, []);
75
+ function renderListHeader() {
76
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, null, /*#__PURE__*/_react.default.createElement(_AnimatedTopView.default, {
77
+ height: headerHeight
78
+ }), props.ListHeaderComponent);
79
+ }
80
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
81
+ style: [styles.container, props.style]
82
+ }, /*#__PURE__*/_react.default.createElement(AnimatedFlashList, _extends({
83
+ ref: scrollViewRef,
84
+ keyboardDismissMode: "on-drag",
85
+ keyboardShouldPersistTaps: "handled",
86
+ scrollEventThrottle: 1,
87
+ onScrollToIndexFailed: handleScrollToIndexFailed
88
+ }, props, {
89
+ onScroll: scrollHandler,
90
+ ListHeaderComponent: renderListHeader()
91
+ //@ts-ignore
92
+ ,
93
+ simultaneousHandlers: [],
94
+ progressViewOffset: internalProgressViewOffset
95
+ })));
96
+ }
97
+ const styles = _reactNative.StyleSheet.create({
98
+ container: {
99
+ ..._reactNative.StyleSheet.absoluteFillObject
100
+ },
101
+ contentContainer: {
102
+ flexGrow: 1
103
+ },
104
+ topView: {
105
+ position: 'absolute',
106
+ top: 0,
107
+ left: 0,
108
+ right: 0
109
+ }
110
+ });
111
+ //# sourceMappingURL=CollapsibleFlashList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_flashList","_useAnimatedScroll","_interopRequireDefault","_useInternalCollapsibleContext","_AnimatedTopView","_useCollapsibleContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","AnimatedFlashList","Animated","createAnimatedComponent","FlashList","CollapsibleFlatList","_ref","headerSnappable","props","headerHeight","useCollapsibleContext","scrollViewRef","fixedHeaderHeight","useInternalCollapsibleContext","mounted","useRef","internalProgressViewOffset","setInternalProgressViewOffset","useState","useEffect","current","scrollTo","useCallback","yValue","_scrollViewRef$curren","animated","undefined","scrollToOffset","offset","scrollToIndex","params","_scrollViewRef$curren2","scrollToLocation","console","warn","scrollHandler","useAnimatedScroll","handleInternalProgressViewOffset","value","useAnimatedReaction","result","previous","runOnJS","handleScrollToIndexFailed","renderListHeader","createElement","View","height","ListHeaderComponent","style","styles","container","ref","keyboardDismissMode","keyboardShouldPersistTaps","scrollEventThrottle","onScrollToIndexFailed","onScroll","simultaneousHandlers","progressViewOffset","StyleSheet","create","absoluteFillObject","contentContainer","flexGrow","topView","position","top","left","right"],"sourceRoot":"../../../../src","sources":["components/scrollable/CollapsibleFlashList.tsx"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAH,uBAAA,CAAAC,OAAA;AAIA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,8BAAA,GAAAD,sBAAA,CAAAL,OAAA;AAEA,IAAAO,gBAAA,GAAAF,sBAAA,CAAAL,OAAA;AACA,IAAAQ,sBAAA,GAAAH,sBAAA,CAAAL,OAAA;AAAsE,SAAAK,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAd,wBAAAU,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAAA,SAAAW,SAAA,IAAAA,QAAA,GAAAT,MAAA,CAAAU,MAAA,GAAAV,MAAA,CAAAU,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAV,GAAA,IAAAa,MAAA,QAAAhB,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAU,MAAA,EAAAb,GAAA,KAAAS,MAAA,CAAAT,GAAA,IAAAa,MAAA,CAAAb,GAAA,gBAAAS,MAAA,YAAAH,QAAA,CAAAQ,KAAA,OAAAH,SAAA,KAZtE;AAcA,MAAMI,iBAAiB,GAAGC,8BAAQ,CAACC,uBAAuB,CAACC,oBAAS,CAAC;AAKtD,SAASC,mBAAmBA,CAAAC,IAAA,EAG3B;EAAA,IAHkC;IAChDC,eAAe,GAAG,IAAI;IACtB,GAAGC;EACQ,CAAC,GAAAF,IAAA;EACZ,MAAM;IAAEG;EAAa,CAAC,GAAG,IAAAC,8BAAqB,EAAC,CAAC;EAChD,MAAM;IAAEC,aAAa;IAAEC;EAAkB,CAAC,GAAG,IAAAC,sCAA6B,EAAC,CAAC;EAC5E,MAAMC,OAAO,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EAC5B,MAAM,CAACC,0BAA0B,EAAEC,6BAA6B,CAAC,GAC/D,IAAAC,eAAQ,EAAC,CAAC,CAAC;EAEb,IAAAC,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACXL,OAAO,CAACM,OAAO,GAAG,KAAK;IACzB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,QAAQ,GAAG,IAAAC,kBAAW,EAAC,UAACC,MAAc,EAAsB;IAAA,IAAAC,qBAAA;IAAA,IAApBC,QAAQ,GAAA5B,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA6B,SAAA,GAAA7B,SAAA,MAAG,IAAI;IAC3D,CAAA2B,qBAAA,GAAAb,aAAa,CAACS,OAAO,cAAAI,qBAAA,uBAArBA,qBAAA,CAAuBG,cAAc,CAAC;MACpCC,MAAM,EAAEL,MAAM;MACdE;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,aAAa,GAAG,IAAAP,kBAAW,EAAEQ,MAAM,IAAK;IAAA,IAAAC,sBAAA;IAC5C,CAAAA,sBAAA,GAAApB,aAAa,CAACS,OAAO,cAAAW,sBAAA,uBAArBA,sBAAA,CAAuBF,aAAa,CAACC,MAAM,CAAC;EAC9C,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,gBAAgB,GAAG,IAAAV,kBAAW,EAAC,MAAM;IACzCW,OAAO,CAACC,IAAI,CAAC,uDAAuD,CAAC;EACvE,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,0BAAiB,EAAC;IAC1C7B,eAAe;IACfc,QAAQ;IACRQ,aAAa;IACbG;EACF,CAAC,CAAC;EAEF,MAAMK,gCAAgC,GAAG,IAAAf,kBAAW,EAAEgB,KAAa,IAAK;IACtE,IAAIxB,OAAO,CAACM,OAAO,EAAE;MACnBH,6BAA6B,CAACqB,KAAK,CAAC;IACtC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAC,0CAAmB,EACjB,MAAM;IACJ,OAAO3B,iBAAiB,CAAC0B,KAAK;EAChC,CAAC,EACD,CAACE,MAAM,EAAEC,QAAQ,KAAK;IACpB,IAAID,MAAM,KAAKC,QAAQ,EAAE;MACvB,IAAAC,8BAAO,EAACL,gCAAgC,CAAC,CAACG,MAAM,CAAC;IACnD;EACF,CACF,CAAC;EAED,MAAMG,yBAAyB,GAAG,IAAArB,kBAAW,EAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;EAE3D,SAASsB,gBAAgBA,CAAA,EAAG;IAC1B,oBACErF,MAAA,CAAAa,OAAA,CAAAyE,aAAA,CAACnF,YAAA,CAAAoF,IAAI,qBACHvF,MAAA,CAAAa,OAAA,CAAAyE,aAAA,CAAC7E,gBAAA,CAAAI,OAAe;MAAC2E,MAAM,EAAEtC;IAAa,CAAE,CAAC,EACxCD,KAAK,CAACwC,mBACH,CAAC;EAEX;EAEA,oBACEzF,MAAA,CAAAa,OAAA,CAAAyE,aAAA,CAACnF,YAAA,CAAAoF,IAAI;IAACG,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE3C,KAAK,CAACyC,KAAK;EAAE,gBAC3C1F,MAAA,CAAAa,OAAA,CAAAyE,aAAA,CAAC5C,iBAAiB,EAAAT,QAAA;IAChB4D,GAAG,EAAEzC,aAAc;IACnB0C,mBAAmB,EAAC,SAAS;IAC7BC,yBAAyB,EAAC,SAAS;IACnCC,mBAAmB,EAAE,CAAE;IACvBC,qBAAqB,EAAEb;EAA0B,GAC7CnC,KAAK;IACTiD,QAAQ,EAAEtB,aAAc;IACxBa,mBAAmB,EAAEJ,gBAAgB,CAAC;IACtC;IAAA;IACAc,oBAAoB,EAAE,EAAG;IACzBC,kBAAkB,EAAE3C;EAA2B,EAChD,CACG,CAAC;AAEX;AAEA,MAAMkC,MAAM,GAAGU,uBAAU,CAACC,MAAM,CAAC;EAC/BV,SAAS,EAAE;IACT,GAAGS,uBAAU,CAACE;EAChB,CAAC;EACDC,gBAAgB,EAAE;IAChBC,QAAQ,EAAE;EACZ,CAAC;EACDC,OAAO,EAAE;IACPC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT;AACF,CAAC,CAAC"}
@@ -8,6 +8,7 @@ var _exportNames = {
8
8
  useCollapsibleContext: true,
9
9
  CollapsibleContainer: true,
10
10
  CollapsibleFlatList: true,
11
+ CollapsibleFlashList: true,
11
12
  CollapsibleScrollView: true,
12
13
  CollapsibleSectionList: true,
13
14
  CollapsibleHeaderContainer: true,
@@ -20,6 +21,12 @@ Object.defineProperty(exports, "CollapsibleContainer", {
20
21
  return _CollapsibleContainer.default;
21
22
  }
22
23
  });
24
+ Object.defineProperty(exports, "CollapsibleFlashList", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _CollapsibleFlashList.default;
28
+ }
29
+ });
23
30
  Object.defineProperty(exports, "CollapsibleFlatList", {
24
31
  enumerable: true,
25
32
  get: function () {
@@ -72,6 +79,7 @@ var _withCollapsibleContext = _interopRequireDefault(require("./withCollapsibleC
72
79
  var _useCollapsibleContext = _interopRequireDefault(require("./hooks/useCollapsibleContext"));
73
80
  var _CollapsibleContainer = _interopRequireDefault(require("./components/CollapsibleContainer"));
74
81
  var _CollapsibleFlatList = _interopRequireDefault(require("./components/scrollable/CollapsibleFlatList"));
82
+ var _CollapsibleFlashList = _interopRequireDefault(require("./components/scrollable/CollapsibleFlashList"));
75
83
  var _CollapsibleScrollView = _interopRequireDefault(require("./components/scrollable/CollapsibleScrollView"));
76
84
  var _CollapsibleSectionList = _interopRequireDefault(require("./components/scrollable/CollapsibleSectionList"));
77
85
  var _CollapsibleHeaderContainer = _interopRequireDefault(require("./components/header/CollapsibleHeaderContainer"));
@@ -1 +1 @@
1
- {"version":3,"names":["_withCollapsibleContext","_interopRequireDefault","require","_useCollapsibleContext","_CollapsibleContainer","_CollapsibleFlatList","_CollapsibleScrollView","_CollapsibleSectionList","_CollapsibleHeaderContainer","_StickyView","_CollapsibleView","_interopRequireWildcard","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,qBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,oBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,sBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,uBAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,2BAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,gBAAA,GAAAC,uBAAA,CAAAT,OAAA;AACAU,MAAA,CAAAC,IAAA,CAAAH,gBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,gBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,gBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AAA6C,SAAAS,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAd,wBAAAkB,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAT,GAAA,CAAAM,GAAA,SAAAK,MAAA,WAAAC,qBAAA,GAAAvB,MAAA,CAAAS,cAAA,IAAAT,MAAA,CAAAwB,wBAAA,WAAArB,GAAA,IAAAc,GAAA,QAAAd,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAW,GAAA,EAAAd,GAAA,SAAAsB,IAAA,GAAAF,qBAAA,GAAAvB,MAAA,CAAAwB,wBAAA,CAAAP,GAAA,EAAAd,GAAA,cAAAsB,IAAA,KAAAA,IAAA,CAAAd,GAAA,IAAAc,IAAA,CAAAC,GAAA,KAAA1B,MAAA,CAAAS,cAAA,CAAAa,MAAA,EAAAnB,GAAA,EAAAsB,IAAA,YAAAH,MAAA,CAAAnB,GAAA,IAAAc,GAAA,CAAAd,GAAA,SAAAmB,MAAA,CAAAH,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAM,GAAA,CAAAT,GAAA,EAAAK,MAAA,YAAAA,MAAA;AAAA,SAAAjC,uBAAA4B,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA"}
1
+ {"version":3,"names":["_withCollapsibleContext","_interopRequireDefault","require","_useCollapsibleContext","_CollapsibleContainer","_CollapsibleFlatList","_CollapsibleFlashList","_CollapsibleScrollView","_CollapsibleSectionList","_CollapsibleHeaderContainer","_StickyView","_CollapsibleView","_interopRequireWildcard","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,qBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,oBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,qBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,sBAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,uBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,2BAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,WAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,gBAAA,GAAAC,uBAAA,CAAAV,OAAA;AACAW,MAAA,CAAAC,IAAA,CAAAH,gBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,gBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,gBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AAA6C,SAAAS,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAd,wBAAAkB,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAT,GAAA,CAAAM,GAAA,SAAAK,MAAA,WAAAC,qBAAA,GAAAvB,MAAA,CAAAS,cAAA,IAAAT,MAAA,CAAAwB,wBAAA,WAAArB,GAAA,IAAAc,GAAA,QAAAd,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAW,GAAA,EAAAd,GAAA,SAAAsB,IAAA,GAAAF,qBAAA,GAAAvB,MAAA,CAAAwB,wBAAA,CAAAP,GAAA,EAAAd,GAAA,cAAAsB,IAAA,KAAAA,IAAA,CAAAd,GAAA,IAAAc,IAAA,CAAAC,GAAA,KAAA1B,MAAA,CAAAS,cAAA,CAAAa,MAAA,EAAAnB,GAAA,EAAAsB,IAAA,YAAAH,MAAA,CAAAnB,GAAA,IAAAc,GAAA,CAAAd,GAAA,SAAAmB,MAAA,CAAAH,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAM,GAAA,CAAAT,GAAA,EAAAK,MAAA,YAAAA,MAAA;AAAA,SAAAlC,uBAAA6B,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA"}
@@ -0,0 +1,103 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ /* eslint-disable react-hooks/exhaustive-deps */
3
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import Animated, { runOnJS, useAnimatedReaction } from 'react-native-reanimated';
6
+ import { FlashList } from '@shopify/flash-list';
7
+ import useAnimatedScroll from './useAnimatedScroll';
8
+ import useInternalCollapsibleContext from '../../hooks/useInternalCollapsibleContext';
9
+ import AnimatedTopView from '../header/AnimatedTopView';
10
+ import useCollapsibleContext from '../../hooks/useCollapsibleContext';
11
+ const AnimatedFlashList = Animated.createAnimatedComponent(FlashList);
12
+ export default function CollapsibleFlatList(_ref) {
13
+ let {
14
+ headerSnappable = true,
15
+ ...props
16
+ } = _ref;
17
+ const {
18
+ headerHeight
19
+ } = useCollapsibleContext();
20
+ const {
21
+ scrollViewRef,
22
+ fixedHeaderHeight
23
+ } = useInternalCollapsibleContext();
24
+ const mounted = useRef(true);
25
+ const [internalProgressViewOffset, setInternalProgressViewOffset] = useState(0);
26
+ useEffect(() => {
27
+ return () => {
28
+ mounted.current = false;
29
+ };
30
+ }, []);
31
+ const scrollTo = useCallback(function (yValue) {
32
+ var _scrollViewRef$curren;
33
+ let animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
34
+ (_scrollViewRef$curren = scrollViewRef.current) === null || _scrollViewRef$curren === void 0 ? void 0 : _scrollViewRef$curren.scrollToOffset({
35
+ offset: yValue,
36
+ animated
37
+ });
38
+ }, []);
39
+ const scrollToIndex = useCallback(params => {
40
+ var _scrollViewRef$curren2;
41
+ (_scrollViewRef$curren2 = scrollViewRef.current) === null || _scrollViewRef$curren2 === void 0 ? void 0 : _scrollViewRef$curren2.scrollToIndex(params);
42
+ }, []);
43
+ const scrollToLocation = useCallback(() => {
44
+ console.warn('CollapsibleFlatList does not support scrollToLocation');
45
+ }, []);
46
+ const {
47
+ scrollHandler
48
+ } = useAnimatedScroll({
49
+ headerSnappable,
50
+ scrollTo,
51
+ scrollToIndex,
52
+ scrollToLocation
53
+ });
54
+ const handleInternalProgressViewOffset = useCallback(value => {
55
+ if (mounted.current) {
56
+ setInternalProgressViewOffset(value);
57
+ }
58
+ }, []);
59
+ useAnimatedReaction(() => {
60
+ return fixedHeaderHeight.value;
61
+ }, (result, previous) => {
62
+ if (result !== previous) {
63
+ runOnJS(handleInternalProgressViewOffset)(result);
64
+ }
65
+ });
66
+ const handleScrollToIndexFailed = useCallback(() => {}, []);
67
+ function renderListHeader() {
68
+ return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(AnimatedTopView, {
69
+ height: headerHeight
70
+ }), props.ListHeaderComponent);
71
+ }
72
+ return /*#__PURE__*/React.createElement(View, {
73
+ style: [styles.container, props.style]
74
+ }, /*#__PURE__*/React.createElement(AnimatedFlashList, _extends({
75
+ ref: scrollViewRef,
76
+ keyboardDismissMode: "on-drag",
77
+ keyboardShouldPersistTaps: "handled",
78
+ scrollEventThrottle: 1,
79
+ onScrollToIndexFailed: handleScrollToIndexFailed
80
+ }, props, {
81
+ onScroll: scrollHandler,
82
+ ListHeaderComponent: renderListHeader()
83
+ //@ts-ignore
84
+ ,
85
+ simultaneousHandlers: [],
86
+ progressViewOffset: internalProgressViewOffset
87
+ })));
88
+ }
89
+ const styles = StyleSheet.create({
90
+ container: {
91
+ ...StyleSheet.absoluteFillObject
92
+ },
93
+ contentContainer: {
94
+ flexGrow: 1
95
+ },
96
+ topView: {
97
+ position: 'absolute',
98
+ top: 0,
99
+ left: 0,
100
+ right: 0
101
+ }
102
+ });
103
+ //# sourceMappingURL=CollapsibleFlashList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useEffect","useRef","useState","View","StyleSheet","Animated","runOnJS","useAnimatedReaction","FlashList","useAnimatedScroll","useInternalCollapsibleContext","AnimatedTopView","useCollapsibleContext","AnimatedFlashList","createAnimatedComponent","CollapsibleFlatList","_ref","headerSnappable","props","headerHeight","scrollViewRef","fixedHeaderHeight","mounted","internalProgressViewOffset","setInternalProgressViewOffset","current","scrollTo","yValue","_scrollViewRef$curren","animated","arguments","length","undefined","scrollToOffset","offset","scrollToIndex","params","_scrollViewRef$curren2","scrollToLocation","console","warn","scrollHandler","handleInternalProgressViewOffset","value","result","previous","handleScrollToIndexFailed","renderListHeader","createElement","height","ListHeaderComponent","style","styles","container","_extends","ref","keyboardDismissMode","keyboardShouldPersistTaps","scrollEventThrottle","onScrollToIndexFailed","onScroll","simultaneousHandlers","progressViewOffset","create","absoluteFillObject","contentContainer","flexGrow","topView","position","top","left","right"],"sourceRoot":"../../../../src","sources":["components/scrollable/CollapsibleFlashList.tsx"],"mappings":"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"}
@@ -2,6 +2,7 @@ export { default as withCollapsibleContext } from './withCollapsibleContext';
2
2
  export { default as useCollapsibleContext } from './hooks/useCollapsibleContext';
3
3
  export { default as CollapsibleContainer } from './components/CollapsibleContainer';
4
4
  export { default as CollapsibleFlatList } from './components/scrollable/CollapsibleFlatList';
5
+ export { default as CollapsibleFlashList } from './components/scrollable/CollapsibleFlashList';
5
6
  export { default as CollapsibleScrollView } from './components/scrollable/CollapsibleScrollView';
6
7
  export { default as CollapsibleSectionList } from './components/scrollable/CollapsibleSectionList';
7
8
  export { default as CollapsibleHeaderContainer } from './components/header/CollapsibleHeaderContainer';
@@ -1 +1 @@
1
- {"version":3,"names":["default","withCollapsibleContext","useCollapsibleContext","CollapsibleContainer","CollapsibleFlatList","CollapsibleScrollView","CollapsibleSectionList","CollapsibleHeaderContainer","StickyView","CollapsibleView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,OAAO,IAAIC,sBAAsB,QAAQ,0BAA0B;AAC5E,SAASD,OAAO,IAAIE,qBAAqB,QAAQ,+BAA+B;AAEhF,SAASF,OAAO,IAAIG,oBAAoB,QAAQ,mCAAmC;AACnF,SAASH,OAAO,IAAII,mBAAmB,QAAQ,6CAA6C;AAC5F,SAASJ,OAAO,IAAIK,qBAAqB,QAAQ,+CAA+C;AAChG,SAASL,OAAO,IAAIM,sBAAsB,QAAQ,gDAAgD;AAClG,SAASN,OAAO,IAAIO,0BAA0B,QAAQ,gDAAgD;AACtG,SAASP,OAAO,IAAIQ,UAAU,QAAQ,gCAAgC;AACtE,SAASR,OAAO,IAAIS,eAAe,QAAQ,8BAA8B;AACzE,cAAc,8BAA8B"}
1
+ {"version":3,"names":["default","withCollapsibleContext","useCollapsibleContext","CollapsibleContainer","CollapsibleFlatList","CollapsibleFlashList","CollapsibleScrollView","CollapsibleSectionList","CollapsibleHeaderContainer","StickyView","CollapsibleView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,OAAO,IAAIC,sBAAsB,QAAQ,0BAA0B;AAC5E,SAASD,OAAO,IAAIE,qBAAqB,QAAQ,+BAA+B;AAEhF,SAASF,OAAO,IAAIG,oBAAoB,QAAQ,mCAAmC;AACnF,SAASH,OAAO,IAAII,mBAAmB,QAAQ,6CAA6C;AAC5F,SAASJ,OAAO,IAAIK,oBAAoB,QAAQ,8CAA8C;AAC9F,SAASL,OAAO,IAAIM,qBAAqB,QAAQ,+CAA+C;AAChG,SAASN,OAAO,IAAIO,sBAAsB,QAAQ,gDAAgD;AAClG,SAASP,OAAO,IAAIQ,0BAA0B,QAAQ,gDAAgD;AACtG,SAASR,OAAO,IAAIS,UAAU,QAAQ,gCAAgC;AACtE,SAAST,OAAO,IAAIU,eAAe,QAAQ,8BAA8B;AACzE,cAAc,8BAA8B"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { FlashListProps } from '@shopify/flash-list';
3
+ import type { CollapsibleProps } from '../../types';
4
+ type Props<Data> = Omit<FlashListProps<Data>, 'scrollEnabled'> & CollapsibleProps;
5
+ export default function CollapsibleFlatList<Data>({ headerSnappable, ...props }: Props<Data>): React.JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=CollapsibleFlashList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleFlashList.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/CollapsibleFlashList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAMxE,OAAO,EAAa,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMpD,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,GAC5D,gBAAgB,CAAC;AAEnB,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,IAAI,EAAE,EAChD,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,IAAI,CAAC,qBAgFb"}
@@ -2,6 +2,7 @@ export { default as withCollapsibleContext } from './withCollapsibleContext';
2
2
  export { default as useCollapsibleContext } from './hooks/useCollapsibleContext';
3
3
  export { default as CollapsibleContainer } from './components/CollapsibleContainer';
4
4
  export { default as CollapsibleFlatList } from './components/scrollable/CollapsibleFlatList';
5
+ export { default as CollapsibleFlashList } from './components/scrollable/CollapsibleFlashList';
5
6
  export { default as CollapsibleScrollView } from './components/scrollable/CollapsibleScrollView';
6
7
  export { default as CollapsibleSectionList } from './components/scrollable/CollapsibleSectionList';
7
8
  export { default as CollapsibleHeaderContainer } from './components/header/CollapsibleHeaderContainer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEjF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACnG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEjF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAC/F,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACnG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,cAAc,8BAA8B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@r0b0t3d/react-native-collapsible",
3
- "version": "1.4.3",
3
+ "version": "1.5.0-alpha.1",
4
4
  "description": "Fully customizable collapsible views",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -55,6 +55,7 @@
55
55
  "@evilmartians/lefthook": "^1.2.2",
56
56
  "@react-native-community/eslint-config": "^3.0.2",
57
57
  "@release-it/conventional-changelog": "^5.0.0",
58
+ "@shopify/flash-list": "^1.6.1",
58
59
  "@types/jest": "^28.1.2",
59
60
  "@types/react": "~17.0.21",
60
61
  "@types/react-native": "0.70.0",
@@ -77,6 +78,7 @@
77
78
  "@types/react": "17.0.21"
78
79
  },
79
80
  "peerDependencies": {
81
+ "@shopify/flash-list": "*",
80
82
  "react": "*",
81
83
  "react-native": "*",
82
84
  "react-native-gesture-handler": "*",
@@ -0,0 +1,118 @@
1
+ /* eslint-disable react-hooks/exhaustive-deps */
2
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
3
+ import { View, StyleSheet } from 'react-native';
4
+ import Animated, {
5
+ runOnJS,
6
+ useAnimatedReaction,
7
+ } from 'react-native-reanimated';
8
+ import { FlashList, FlashListProps } from '@shopify/flash-list';
9
+ import useAnimatedScroll from './useAnimatedScroll';
10
+ import useInternalCollapsibleContext from '../../hooks/useInternalCollapsibleContext';
11
+ import type { CollapsibleProps } from '../../types';
12
+ import AnimatedTopView from '../header/AnimatedTopView';
13
+ import useCollapsibleContext from '../../hooks/useCollapsibleContext';
14
+
15
+ const AnimatedFlashList = Animated.createAnimatedComponent(FlashList);
16
+
17
+ type Props<Data> = Omit<FlashListProps<Data>, 'scrollEnabled'> &
18
+ CollapsibleProps;
19
+
20
+ export default function CollapsibleFlatList<Data>({
21
+ headerSnappable = true,
22
+ ...props
23
+ }: Props<Data>) {
24
+ const { headerHeight } = useCollapsibleContext();
25
+ const { scrollViewRef, fixedHeaderHeight } = useInternalCollapsibleContext();
26
+ const mounted = useRef(true);
27
+ const [internalProgressViewOffset, setInternalProgressViewOffset] =
28
+ useState(0);
29
+
30
+ useEffect(() => {
31
+ return () => {
32
+ mounted.current = false;
33
+ };
34
+ }, []);
35
+
36
+ const scrollTo = useCallback((yValue: number, animated = true) => {
37
+ scrollViewRef.current?.scrollToOffset({
38
+ offset: yValue,
39
+ animated,
40
+ });
41
+ }, []);
42
+
43
+ const scrollToIndex = useCallback((params) => {
44
+ scrollViewRef.current?.scrollToIndex(params);
45
+ }, []);
46
+
47
+ const scrollToLocation = useCallback(() => {
48
+ console.warn('CollapsibleFlatList does not support scrollToLocation');
49
+ }, []);
50
+
51
+ const { scrollHandler } = useAnimatedScroll({
52
+ headerSnappable,
53
+ scrollTo,
54
+ scrollToIndex,
55
+ scrollToLocation,
56
+ });
57
+
58
+ const handleInternalProgressViewOffset = useCallback((value: number) => {
59
+ if (mounted.current) {
60
+ setInternalProgressViewOffset(value);
61
+ }
62
+ }, []);
63
+
64
+ useAnimatedReaction(
65
+ () => {
66
+ return fixedHeaderHeight.value;
67
+ },
68
+ (result, previous) => {
69
+ if (result !== previous) {
70
+ runOnJS(handleInternalProgressViewOffset)(result);
71
+ }
72
+ }
73
+ );
74
+
75
+ const handleScrollToIndexFailed = useCallback(() => {}, []);
76
+
77
+ function renderListHeader() {
78
+ return (
79
+ <View>
80
+ <AnimatedTopView height={headerHeight} />
81
+ {props.ListHeaderComponent}
82
+ </View>
83
+ );
84
+ }
85
+
86
+ return (
87
+ <View style={[styles.container, props.style]}>
88
+ <AnimatedFlashList
89
+ ref={scrollViewRef}
90
+ keyboardDismissMode="on-drag"
91
+ keyboardShouldPersistTaps="handled"
92
+ scrollEventThrottle={1}
93
+ onScrollToIndexFailed={handleScrollToIndexFailed}
94
+ {...props}
95
+ onScroll={scrollHandler}
96
+ ListHeaderComponent={renderListHeader()}
97
+ //@ts-ignore
98
+ simultaneousHandlers={[]}
99
+ progressViewOffset={internalProgressViewOffset}
100
+ />
101
+ </View>
102
+ );
103
+ }
104
+
105
+ const styles = StyleSheet.create({
106
+ container: {
107
+ ...StyleSheet.absoluteFillObject,
108
+ },
109
+ contentContainer: {
110
+ flexGrow: 1,
111
+ },
112
+ topView: {
113
+ position: 'absolute',
114
+ top: 0,
115
+ left: 0,
116
+ right: 0,
117
+ },
118
+ });
package/src/index.tsx CHANGED
@@ -3,6 +3,7 @@ export { default as useCollapsibleContext } from './hooks/useCollapsibleContext'
3
3
 
4
4
  export { default as CollapsibleContainer } from './components/CollapsibleContainer';
5
5
  export { default as CollapsibleFlatList } from './components/scrollable/CollapsibleFlatList';
6
+ export { default as CollapsibleFlashList } from './components/scrollable/CollapsibleFlashList';
6
7
  export { default as CollapsibleScrollView } from './components/scrollable/CollapsibleScrollView';
7
8
  export { default as CollapsibleSectionList } from './components/scrollable/CollapsibleSectionList';
8
9
  export { default as CollapsibleHeaderContainer } from './components/header/CollapsibleHeaderContainer';