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

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 (42) hide show
  1. package/lib/commonjs/components/CollapsibleContainer.js +8 -9
  2. package/lib/commonjs/components/CollapsibleContainer.js.map +1 -1
  3. package/lib/commonjs/components/header/AnimatedTopView.js +1 -1
  4. package/lib/commonjs/components/header/AnimatedTopView.js.map +1 -1
  5. package/lib/commonjs/components/scrollable/CollapsibleFlashList.js +13 -4
  6. package/lib/commonjs/components/scrollable/CollapsibleFlashList.js.map +1 -1
  7. package/lib/commonjs/components/scrollable/CollapsibleLegendList.js +118 -0
  8. package/lib/commonjs/components/scrollable/CollapsibleLegendList.js.map +1 -0
  9. package/lib/commonjs/index.js +8 -0
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/withCollapsibleContext.js +5 -5
  12. package/lib/commonjs/withCollapsibleContext.js.map +1 -1
  13. package/lib/module/components/CollapsibleContainer.js +9 -10
  14. package/lib/module/components/CollapsibleContainer.js.map +1 -1
  15. package/lib/module/components/header/AnimatedTopView.js +1 -1
  16. package/lib/module/components/header/AnimatedTopView.js.map +1 -1
  17. package/lib/module/components/scrollable/CollapsibleFlashList.js +11 -2
  18. package/lib/module/components/scrollable/CollapsibleFlashList.js.map +1 -1
  19. package/lib/module/components/scrollable/CollapsibleLegendList.js +110 -0
  20. package/lib/module/components/scrollable/CollapsibleLegendList.js.map +1 -0
  21. package/lib/module/index.js +1 -0
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/withCollapsibleContext.js +5 -5
  24. package/lib/module/withCollapsibleContext.js.map +1 -1
  25. package/lib/typescript/components/CollapsibleContainer.d.ts.map +1 -1
  26. package/lib/typescript/components/scrollable/CollapsibleFlashList.d.ts +3 -3
  27. package/lib/typescript/components/scrollable/CollapsibleFlashList.d.ts.map +1 -1
  28. package/lib/typescript/components/scrollable/CollapsibleLegendList.d.ts +7 -0
  29. package/lib/typescript/components/scrollable/CollapsibleLegendList.d.ts.map +1 -0
  30. package/lib/typescript/index.d.ts +1 -0
  31. package/lib/typescript/index.d.ts.map +1 -1
  32. package/lib/typescript/types.d.ts +1 -1
  33. package/lib/typescript/types.d.ts.map +1 -1
  34. package/lib/typescript/withCollapsibleContext.d.ts.map +1 -1
  35. package/package.json +3 -4
  36. package/src/components/CollapsibleContainer.tsx +7 -13
  37. package/src/components/header/AnimatedTopView.tsx +1 -1
  38. package/src/components/scrollable/CollapsibleFlashList.tsx +14 -5
  39. package/src/components/scrollable/CollapsibleLegendList.tsx +121 -0
  40. package/src/index.tsx +1 -0
  41. package/src/types.ts +1 -1
  42. package/src/withCollapsibleContext.tsx +4 -6
@@ -0,0 +1,110 @@
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 { runOnJS, useAnimatedReaction } from 'react-native-reanimated';
6
+ import useAnimatedScroll from './useAnimatedScroll';
7
+ import useInternalCollapsibleContext from '../../hooks/useInternalCollapsibleContext';
8
+ import AnimatedTopView from '../header/AnimatedTopView';
9
+ import useCollapsibleContext from '../../hooks/useCollapsibleContext';
10
+ let AnimatedLegendList = null;
11
+ try {
12
+ AnimatedLegendList = require('@legendapp/list/reanimated').AnimatedLegendList;
13
+ } catch (e) {
14
+ console.warn(e);
15
+ }
16
+ if (!AnimatedLegendList) {
17
+ throw new Error('@legendapp/list is not installed');
18
+ }
19
+ export default function CollapsibleLegendList(_ref) {
20
+ let {
21
+ headerSnappable = true,
22
+ ...props
23
+ } = _ref;
24
+ const {
25
+ headerHeight
26
+ } = useCollapsibleContext();
27
+ const {
28
+ scrollViewRef,
29
+ fixedHeaderHeight
30
+ } = useInternalCollapsibleContext();
31
+ const mounted = useRef(true);
32
+ const [internalProgressViewOffset, setInternalProgressViewOffset] = useState(0);
33
+ useEffect(() => {
34
+ return () => {
35
+ mounted.current = false;
36
+ };
37
+ }, []);
38
+ const scrollTo = useCallback(function (yValue) {
39
+ var _scrollViewRef$curren;
40
+ let animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
41
+ (_scrollViewRef$curren = scrollViewRef.current) === null || _scrollViewRef$curren === void 0 ? void 0 : _scrollViewRef$curren.scrollToOffset({
42
+ offset: yValue,
43
+ animated
44
+ });
45
+ }, []);
46
+ const scrollToIndex = useCallback(params => {
47
+ var _scrollViewRef$curren2;
48
+ (_scrollViewRef$curren2 = scrollViewRef.current) === null || _scrollViewRef$curren2 === void 0 ? void 0 : _scrollViewRef$curren2.scrollToIndex(params);
49
+ }, []);
50
+ const scrollToLocation = useCallback(() => {
51
+ console.warn('CollapsibleLegendList does not support scrollToLocation');
52
+ }, []);
53
+ const {
54
+ scrollHandler
55
+ } = useAnimatedScroll({
56
+ headerSnappable,
57
+ scrollTo,
58
+ scrollToIndex,
59
+ scrollToLocation
60
+ });
61
+ const handleInternalProgressViewOffset = useCallback(value => {
62
+ if (mounted.current) {
63
+ setInternalProgressViewOffset(value);
64
+ }
65
+ }, []);
66
+ useAnimatedReaction(() => {
67
+ return fixedHeaderHeight.value;
68
+ }, (result, previous) => {
69
+ if (result !== previous) {
70
+ runOnJS(handleInternalProgressViewOffset)(result);
71
+ }
72
+ });
73
+ const handleScrollToIndexFailed = useCallback(() => {}, []);
74
+ function renderListHeader() {
75
+ return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(AnimatedTopView, {
76
+ height: headerHeight
77
+ }), props.ListHeaderComponent);
78
+ }
79
+ return /*#__PURE__*/React.createElement(View, {
80
+ style: [styles.container, props.style]
81
+ }, /*#__PURE__*/React.createElement(AnimatedLegendList, _extends({
82
+ ref: scrollViewRef,
83
+ keyboardDismissMode: "on-drag",
84
+ keyboardShouldPersistTaps: "handled",
85
+ scrollEventThrottle: 1,
86
+ onScrollToIndexFailed: handleScrollToIndexFailed
87
+ }, props, {
88
+ onScroll: scrollHandler,
89
+ ListHeaderComponent: renderListHeader()
90
+ //@ts-ignore
91
+ ,
92
+ simultaneousHandlers: [],
93
+ progressViewOffset: internalProgressViewOffset
94
+ })));
95
+ }
96
+ const styles = StyleSheet.create({
97
+ container: {
98
+ ...StyleSheet.absoluteFillObject
99
+ },
100
+ contentContainer: {
101
+ flexGrow: 1
102
+ },
103
+ topView: {
104
+ position: 'absolute',
105
+ top: 0,
106
+ left: 0,
107
+ right: 0
108
+ }
109
+ });
110
+ //# sourceMappingURL=CollapsibleLegendList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useEffect","useRef","useState","View","StyleSheet","runOnJS","useAnimatedReaction","useAnimatedScroll","useInternalCollapsibleContext","AnimatedTopView","useCollapsibleContext","AnimatedLegendList","require","e","console","warn","Error","CollapsibleLegendList","_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","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/CollapsibleLegendList.tsx"],"mappings":"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"}
@@ -3,6 +3,7 @@ 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
5
  export { default as CollapsibleFlashList } from './components/scrollable/CollapsibleFlashList';
6
+ export { default as CollapsibleLegendList } from './components/scrollable/CollapsibleLegendList';
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';
@@ -1 +1 @@
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"}
1
+ {"version":3,"names":["default","withCollapsibleContext","useCollapsibleContext","CollapsibleContainer","CollapsibleFlatList","CollapsibleFlashList","CollapsibleLegendList","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,qBAAqB,QAAQ,+CAA+C;AAChG,SAASP,OAAO,IAAIQ,sBAAsB,QAAQ,gDAAgD;AAClG,SAASR,OAAO,IAAIS,0BAA0B,QAAQ,gDAAgD;AACtG,SAAST,OAAO,IAAIU,UAAU,QAAQ,gCAAgC;AACtE,SAASV,OAAO,IAAIW,eAAe,QAAQ,8BAA8B;AACzE,cAAc,8BAA8B"}
@@ -49,10 +49,10 @@ export default function withCollapsibleContext(Component) {
49
49
  }
50
50
  headerViewPositions.value = values;
51
51
  }, []);
52
- const handleContainerHeight = useCallback(height => {
53
- containerHeight.value = height;
54
- }, []);
55
52
  const handleScrollToView = useCallback((ref, animated) => {
53
+ if (!ref.current) {
54
+ return;
55
+ }
56
56
  ref.current.measureLayout(containerRef.current, (_left, top, _width, _height) => {
57
57
  var _collapsibleHandlers$;
58
58
  const headerContainers = Object.keys(headerContainerLayouts.current).filter(k => {
@@ -100,15 +100,15 @@ export default function withCollapsibleContext(Component) {
100
100
  }, [scrollY, headerHeight, headerCollapsed, handleScrollToView]);
101
101
  const internalContext = useMemo(() => ({
102
102
  containerRef,
103
+ containerHeight,
103
104
  scrollViewRef,
104
105
  handleHeaderContainerLayout,
105
106
  setCollapsibleHandlers,
106
- handleContainerHeight,
107
107
  headerHeight,
108
108
  fixedHeaderHeight,
109
109
  contentMinHeight,
110
110
  headerViewPositions
111
- }), [setCollapsibleHandlers, handleHeaderContainerLayout, handleContainerHeight, headerHeight, fixedHeaderHeight, contentMinHeight, headerViewPositions]);
111
+ }), [setCollapsibleHandlers, handleHeaderContainerLayout, headerHeight, fixedHeaderHeight, contentMinHeight, headerViewPositions]);
112
112
  return /*#__PURE__*/React.createElement(CollapsibleContext.Provider, {
113
113
  value: context
114
114
  }, /*#__PURE__*/React.createElement(InternalCollapsibleContext.Provider, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useMemo","useRef","CollapsibleContext","InternalCollapsibleContext","useDerivedValue","useSharedValue","withCollapsibleContext","Component","props","collapsibleHandlers","headerHeight","scrollY","fixedHeaderHeight","containerHeight","scrollViewRef","containerRef","headerContainerLayouts","headerViewPositions","setCollapsibleHandlers","handlers","current","headerCollapsed","maxY","value","contentMinHeight","handleHeaderContainerLayout","key","layout","stickyHeight","undefined","headerContainers","Object","keys","filter","k","sortedHeaders","sort","a","b","_headerContainerLayou","_headerContainerLayou2","y","values","aStickyHeight","index","length","_headerContainerLayou3","headerKey","sHeight","top","handleContainerHeight","height","handleScrollToView","ref","animated","measureLayout","_left","_width","_height","_collapsibleHandlers$","stickyHeightAbove","reduce","acc","scrollTo","context","collapse","_collapsibleHandlers$2","expand","_collapsibleHandlers$3","offset","animate","_collapsibleHandlers$4","scrollToIndex","params","_collapsibleHandlers$5","scrollToLocation","_collapsibleHandlers$6","scrollToView","internalContext","createElement","Provider"],"sourceRoot":"../../src","sources":["withCollapsibleContext.tsx"],"mappings":"AAAA;AACA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAY,OAAO;AAE/D,SAASC,kBAAkB,QAAQ,+BAA+B;AAClE,SAASC,0BAA0B,QAAQ,uCAAuC;AAClF,SAASC,eAAe,EAAEC,cAAc,QAAQ,yBAAyB;AAGzE,eAAe,SAASC,sBAAsBA,CAAIC,SAAgB,EAAE;EAClE,OAAQC,KAAQ,IAAK;IACnB,MAAMC,mBAAmB,GAAGR,MAAM,CAAqB,CAAC;IACxD,MAAMS,YAAY,GAAGL,cAAc,CAAC,CAAC,CAAC;IACtC,MAAMM,OAAO,GAAGN,cAAc,CAAC,CAAC,CAAC;IACjC,MAAMO,iBAAiB,GAAGP,cAAc,CAAC,CAAC,CAAC;IAC3C,MAAMQ,eAAe,GAAGR,cAAc,CAAC,CAAC,CAAC;IACzC,MAAMS,aAAa,GAAGb,MAAM,CAAO,IAAI,CAAC;IACxC,MAAMc,YAAY,GAAGd,MAAM,CAAO,IAAI,CAAC;IACvC,MAAMe,sBAAsB,GAAGf,MAAM,CAEnC,CAAC,CAAC,CAAC;IACL,MAAMgB,mBAAmB,GAAGZ,cAAc,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAMa,sBAAsB,GAAGnB,WAAW,CAAEoB,QAAQ,IAAK;MACvDV,mBAAmB,CAACW,OAAO,GAAGD,QAAQ;IACxC,CAAC,EAAE,EAAE,CAAC;IAEN,MAAME,eAAe,GAAGjB,eAAe,CAAC,MAAM;MAC5C,MAAMkB,IAAI,GAAGV,iBAAiB,CAACW,KAAK;MACpC,OAAOZ,OAAO,CAACY,KAAK,IAAID,IAAI;IAC9B,CAAC,EAAE,EAAE,CAAC;IAEN,MAAME,gBAAgB,GAAGpB,eAAe,CAAC,MAAM;MAC7C,OAAOS,eAAe,CAACU,KAAK,GAAGX,iBAAiB,CAACW,KAAK;IACxD,CAAC,EAAE,EAAE,CAAC;IAEN,MAAME,2BAA2B,GAAG1B,WAAW,CAC7C,CAAC2B,GAAW,EAAEC,MAAwB,EAAEC,YAAqB,KAAK;MAChEZ,sBAAsB,CAACI,OAAO,CAACM,GAAG,CAAC,GAAGC,MAAM,GACxC;QACE,GAAGA,MAAM;QACTC;MACF,CAAC,GACDC,SAAS;MACb,MAAMC,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAClChB,sBAAsB,CAACI,OACzB,CAAC,CAACa,MAAM,CAAEC,CAAS,IAAK,CAAC,CAAClB,sBAAsB,CAACI,OAAO,CAACc,CAAC,CAAC,CAAC;MAC5D;MACA,MAAMC,aAAa,GAAGL,gBAAgB,CAACM,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;QAAA,IAAAC,qBAAA,EAAAC,sBAAA;QACpD,OACE,CAAC,EAAAD,qBAAA,GAAAvB,sBAAsB,CAACI,OAAO,CAACiB,CAAC,CAAC,cAAAE,qBAAA,uBAAjCA,qBAAA,CAAmCE,CAAC,KAAI,CAAC,KACzC,EAAAD,sBAAA,GAAAxB,sBAAsB,CAACI,OAAO,CAACkB,CAAC,CAAC,cAAAE,sBAAA,uBAAjCA,sBAAA,CAAmCC,CAAC,KAAI,CAAC,CAAC;MAE/C,CAAC,CAAC;MACF,MAAMC,MAAW,GAAG,CAAC,CAAC;MACtB,IAAIC,aAAa,GAAG,CAAC;MACrB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGT,aAAa,CAACU,MAAM,EAAED,KAAK,EAAE,EAAE;QAAA,IAAAE,sBAAA;QACzD,MAAMC,SAAS,GAAGZ,aAAa,CAACS,KAAK,CAAC;QACtC,MAAMI,OAAO,GACX,EAAAF,sBAAA,GAAA9B,sBAAsB,CAACI,OAAO,CAAC2B,SAAS,CAAC,cAAAD,sBAAA,uBAAzCA,sBAAA,CAA2ClB,YAAY,KAAI,CAAC;QAC9Dc,MAAM,CAACK,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAEN,aAAa;UAClBf,YAAY,EAAEoB;QAChB,CAAC;QACDL,aAAa,IAAIK,OAAO;MAC1B;MACA/B,mBAAmB,CAACM,KAAK,GAAGmB,MAAM;IACpC,CAAC,EACD,EACF,CAAC;IAED,MAAMQ,qBAAqB,GAAGnD,WAAW,CAAEoD,MAAc,IAAK;MAC5DtC,eAAe,CAACU,KAAK,GAAG4B,MAAM;IAChC,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMC,kBAAkB,GAAGrD,WAAW,CACpC,CAACsD,GAAyB,EAAEC,QAAkB,KAAK;MACjDD,GAAG,CAACjC,OAAO,CAACmC,aAAa,CACvBxC,YAAY,CAACK,OAAO,EACpB,CAACoC,KAAa,EAAEP,GAAW,EAAEQ,MAAc,EAAEC,OAAe,KAAK;QAAA,IAAAC,qBAAA;QAC/D,MAAM7B,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAClChB,sBAAsB,CAACI,OACzB,CAAC,CAACa,MAAM,CAAEC,CAAS,IAAK;UACtB,MAAMP,MAAM,GAAGX,sBAAsB,CAACI,OAAO,CAACc,CAAC,CAAC;UAChD,IAAIP,MAAM,EAAE;YACV,OAAOA,MAAM,CAACc,CAAC,GAAGd,MAAM,CAACwB,MAAM,GAAGF,GAAG;UACvC;UACA,OAAO,KAAK;QACd,CAAC,CAAC;QACF,MAAMW,iBAAiB,GAAG9B,gBAAgB,CAAC+B,MAAM,CAAC,CAACC,GAAG,EAAEpC,GAAG,KAAK;UAC9D,MAAMC,MAAM,GAAGX,sBAAsB,CAACI,OAAO,CAACM,GAAG,CAAC;UAClDoC,GAAG,IAAI,CAAAnC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEC,YAAY,KAAI,CAAC;UAChC,OAAOkC,GAAG;QACZ,CAAC,EAAE,CAAC,CAAC;QACL,CAAAH,qBAAA,GAAAlD,mBAAmB,CAACW,OAAO,cAAAuC,qBAAA,uBAA3BA,qBAAA,CAA6BI,QAAQ,CACnCd,GAAG,GAAGW,iBAAiB,EACvBN,QACF,CAAC;MACH,CAAC,EACD,MAAM,CAAC,CACT,CAAC;IACH,CAAC,EACD,EACF,CAAC;IAED,MAAMU,OAAO,GAAGhE,OAAO,CAAC,MAAM;MAC5B,OAAO;QACLiE,QAAQ,EAAGX,QAAkB;UAAA,IAAAY,sBAAA;UAAA,QAAAA,sBAAA,GAC3BzD,mBAAmB,CAACW,OAAO,cAAA8C,sBAAA,uBAA3BA,sBAAA,CAA6BD,QAAQ,CAACX,QAAQ,CAAC;QAAA;QACjDa,MAAM,EAAEA,CAAA;UAAA,IAAAC,sBAAA;UAAA,QAAAA,sBAAA,GAAM3D,mBAAmB,CAACW,OAAO,cAAAgD,sBAAA,uBAA3BA,sBAAA,CAA6BD,MAAM,CAAC,CAAC;QAAA;QACnDJ,QAAQ,EAAEA,CAACM,MAAc,EAAEC,OAAiB;UAAA,IAAAC,sBAAA;UAAA,QAAAA,sBAAA,GAC1C9D,mBAAmB,CAACW,OAAO,cAAAmD,sBAAA,uBAA3BA,sBAAA,CAA6BR,QAAQ,CAACM,MAAM,EAAEC,OAAO,CAAC;QAAA;QACxDE,aAAa,EAAGC,MAAW;UAAA,IAAAC,sBAAA;UAAA,QAAAA,sBAAA,GACzBjE,mBAAmB,CAACW,OAAO,cAAAsD,sBAAA,uBAA3BA,sBAAA,CAA6BF,aAAa,CAACC,MAAM,CAAC;QAAA;QACpDE,gBAAgB,EAAGF,MAAW;UAAA,IAAAG,sBAAA;UAAA,QAAAA,sBAAA,GAC5BnE,mBAAmB,CAACW,OAAO,cAAAwD,sBAAA,uBAA3BA,sBAAA,CAA6BD,gBAAgB,CAACF,MAAM,CAAC;QAAA;QACvD/D,YAAY;QACZC,OAAO;QACPU,eAAe;QACfwD,YAAY,EAAEzB;MAChB,CAAC;IACH,CAAC,EAAE,CAACzC,OAAO,EAAED,YAAY,EAAEW,eAAe,EAAE+B,kBAAkB,CAAC,CAAC;IAEhE,MAAM0B,eAAe,GAAG9E,OAAO,CAC7B,OAAO;MACLe,YAAY;MACZD,aAAa;MACbW,2BAA2B;MAC3BP,sBAAsB;MACtBgC,qBAAqB;MACrBxC,YAAY;MACZE,iBAAiB;MACjBY,gBAAgB;MAChBP;IACF,CAAC,CAAC,EACF,CACEC,sBAAsB,EACtBO,2BAA2B,EAC3ByB,qBAAqB,EACrBxC,YAAY,EACZE,iBAAiB,EACjBY,gBAAgB,EAChBP,mBAAmB,CAEvB,CAAC;IAED,oBACEnB,KAAA,CAAAiF,aAAA,CAAC7E,kBAAkB,CAAC8E,QAAQ;MAACzD,KAAK,EAAEyC;IAAQ,gBAC1ClE,KAAA,CAAAiF,aAAA,CAAC5E,0BAA0B,CAAC6E,QAAQ;MAACzD,KAAK,EAAEuD;IAAgB,gBAE1DhF,KAAA,CAAAiF,aAAA,CAACxE,SAAS,EAAKC,KAAQ,CACY,CACV,CAAC;EAElC,CAAC;AACH"}
1
+ {"version":3,"names":["React","useCallback","useMemo","useRef","CollapsibleContext","InternalCollapsibleContext","useDerivedValue","useSharedValue","withCollapsibleContext","Component","props","collapsibleHandlers","headerHeight","scrollY","fixedHeaderHeight","containerHeight","scrollViewRef","containerRef","headerContainerLayouts","headerViewPositions","setCollapsibleHandlers","handlers","current","headerCollapsed","maxY","value","contentMinHeight","handleHeaderContainerLayout","key","layout","stickyHeight","undefined","headerContainers","Object","keys","filter","k","sortedHeaders","sort","a","b","_headerContainerLayou","_headerContainerLayou2","y","values","aStickyHeight","index","length","_headerContainerLayou3","headerKey","sHeight","top","handleScrollToView","ref","animated","measureLayout","_left","_width","_height","_collapsibleHandlers$","height","stickyHeightAbove","reduce","acc","scrollTo","context","collapse","_collapsibleHandlers$2","expand","_collapsibleHandlers$3","offset","animate","_collapsibleHandlers$4","scrollToIndex","params","_collapsibleHandlers$5","scrollToLocation","_collapsibleHandlers$6","scrollToView","internalContext","createElement","Provider"],"sourceRoot":"../../src","sources":["withCollapsibleContext.tsx"],"mappings":"AAAA;AACA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAY,OAAO;AAE/D,SAASC,kBAAkB,QAAQ,+BAA+B;AAClE,SAASC,0BAA0B,QAAQ,uCAAuC;AAClF,SAASC,eAAe,EAAEC,cAAc,QAAQ,yBAAyB;AAGzE,eAAe,SAASC,sBAAsBA,CAAIC,SAAgB,EAAE;EAClE,OAAQC,KAAQ,IAAK;IACnB,MAAMC,mBAAmB,GAAGR,MAAM,CAAqB,CAAC;IACxD,MAAMS,YAAY,GAAGL,cAAc,CAAC,CAAC,CAAC;IACtC,MAAMM,OAAO,GAAGN,cAAc,CAAC,CAAC,CAAC;IACjC,MAAMO,iBAAiB,GAAGP,cAAc,CAAC,CAAC,CAAC;IAC3C,MAAMQ,eAAe,GAAGR,cAAc,CAAC,CAAC,CAAC;IACzC,MAAMS,aAAa,GAAGb,MAAM,CAAO,IAAI,CAAC;IACxC,MAAMc,YAAY,GAAGd,MAAM,CAAO,IAAI,CAAC;IACvC,MAAMe,sBAAsB,GAAGf,MAAM,CAEnC,CAAC,CAAC,CAAC;IACL,MAAMgB,mBAAmB,GAAGZ,cAAc,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAMa,sBAAsB,GAAGnB,WAAW,CAAEoB,QAAQ,IAAK;MACvDV,mBAAmB,CAACW,OAAO,GAAGD,QAAQ;IACxC,CAAC,EAAE,EAAE,CAAC;IAEN,MAAME,eAAe,GAAGjB,eAAe,CAAC,MAAM;MAC5C,MAAMkB,IAAI,GAAGV,iBAAiB,CAACW,KAAK;MACpC,OAAOZ,OAAO,CAACY,KAAK,IAAID,IAAI;IAC9B,CAAC,EAAE,EAAE,CAAC;IAEN,MAAME,gBAAgB,GAAGpB,eAAe,CAAC,MAAM;MAC7C,OAAOS,eAAe,CAACU,KAAK,GAAGX,iBAAiB,CAACW,KAAK;IACxD,CAAC,EAAE,EAAE,CAAC;IAEN,MAAME,2BAA2B,GAAG1B,WAAW,CAC7C,CAAC2B,GAAW,EAAEC,MAAwB,EAAEC,YAAqB,KAAK;MAChEZ,sBAAsB,CAACI,OAAO,CAACM,GAAG,CAAC,GAAGC,MAAM,GACxC;QACE,GAAGA,MAAM;QACTC;MACF,CAAC,GACDC,SAAS;MACb,MAAMC,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAClChB,sBAAsB,CAACI,OACzB,CAAC,CAACa,MAAM,CAAEC,CAAS,IAAK,CAAC,CAAClB,sBAAsB,CAACI,OAAO,CAACc,CAAC,CAAC,CAAC;MAC5D;MACA,MAAMC,aAAa,GAAGL,gBAAgB,CAACM,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;QAAA,IAAAC,qBAAA,EAAAC,sBAAA;QACpD,OACE,CAAC,EAAAD,qBAAA,GAAAvB,sBAAsB,CAACI,OAAO,CAACiB,CAAC,CAAC,cAAAE,qBAAA,uBAAjCA,qBAAA,CAAmCE,CAAC,KAAI,CAAC,KACzC,EAAAD,sBAAA,GAAAxB,sBAAsB,CAACI,OAAO,CAACkB,CAAC,CAAC,cAAAE,sBAAA,uBAAjCA,sBAAA,CAAmCC,CAAC,KAAI,CAAC,CAAC;MAE/C,CAAC,CAAC;MACF,MAAMC,MAAW,GAAG,CAAC,CAAC;MACtB,IAAIC,aAAa,GAAG,CAAC;MACrB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGT,aAAa,CAACU,MAAM,EAAED,KAAK,EAAE,EAAE;QAAA,IAAAE,sBAAA;QACzD,MAAMC,SAAS,GAAGZ,aAAa,CAACS,KAAK,CAAC;QACtC,MAAMI,OAAO,GACX,EAAAF,sBAAA,GAAA9B,sBAAsB,CAACI,OAAO,CAAC2B,SAAS,CAAC,cAAAD,sBAAA,uBAAzCA,sBAAA,CAA2ClB,YAAY,KAAI,CAAC;QAC9Dc,MAAM,CAACK,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAEN,aAAa;UAClBf,YAAY,EAAEoB;QAChB,CAAC;QACDL,aAAa,IAAIK,OAAO;MAC1B;MACA/B,mBAAmB,CAACM,KAAK,GAAGmB,MAAM;IACpC,CAAC,EACD,EACF,CAAC;IAED,MAAMQ,kBAAkB,GAAGnD,WAAW,CACpC,CAACoD,GAAyB,EAAEC,QAAkB,KAAK;MACjD,IAAI,CAACD,GAAG,CAAC/B,OAAO,EAAE;QAChB;MACF;MACA+B,GAAG,CAAC/B,OAAO,CAACiC,aAAa,CACvBtC,YAAY,CAACK,OAAO,EACpB,CAACkC,KAAa,EAAEL,GAAW,EAAEM,MAAc,EAAEC,OAAe,KAAK;QAAA,IAAAC,qBAAA;QAC/D,MAAM3B,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAClChB,sBAAsB,CAACI,OACzB,CAAC,CAACa,MAAM,CAAEC,CAAS,IAAK;UACtB,MAAMP,MAAM,GAAGX,sBAAsB,CAACI,OAAO,CAACc,CAAC,CAAC;UAChD,IAAIP,MAAM,EAAE;YACV,OAAOA,MAAM,CAACc,CAAC,GAAGd,MAAM,CAAC+B,MAAM,GAAGT,GAAG;UACvC;UACA,OAAO,KAAK;QACd,CAAC,CAAC;QACF,MAAMU,iBAAiB,GAAG7B,gBAAgB,CAAC8B,MAAM,CAAC,CAACC,GAAG,EAAEnC,GAAG,KAAK;UAC9D,MAAMC,MAAM,GAAGX,sBAAsB,CAACI,OAAO,CAACM,GAAG,CAAC;UAClDmC,GAAG,IAAI,CAAAlC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEC,YAAY,KAAI,CAAC;UAChC,OAAOiC,GAAG;QACZ,CAAC,EAAE,CAAC,CAAC;QACL,CAAAJ,qBAAA,GAAAhD,mBAAmB,CAACW,OAAO,cAAAqC,qBAAA,uBAA3BA,qBAAA,CAA6BK,QAAQ,CACnCb,GAAG,GAAGU,iBAAiB,EACvBP,QACF,CAAC;MACH,CAAC,EACD,MAAM,CAAC,CACT,CAAC;IACH,CAAC,EACD,EACF,CAAC;IAED,MAAMW,OAAO,GAAG/D,OAAO,CAAC,MAAM;MAC5B,OAAO;QACLgE,QAAQ,EAAGZ,QAAkB;UAAA,IAAAa,sBAAA;UAAA,QAAAA,sBAAA,GAC3BxD,mBAAmB,CAACW,OAAO,cAAA6C,sBAAA,uBAA3BA,sBAAA,CAA6BD,QAAQ,CAACZ,QAAQ,CAAC;QAAA;QACjDc,MAAM,EAAEA,CAAA;UAAA,IAAAC,sBAAA;UAAA,QAAAA,sBAAA,GAAM1D,mBAAmB,CAACW,OAAO,cAAA+C,sBAAA,uBAA3BA,sBAAA,CAA6BD,MAAM,CAAC,CAAC;QAAA;QACnDJ,QAAQ,EAAEA,CAACM,MAAc,EAAEC,OAAiB;UAAA,IAAAC,sBAAA;UAAA,QAAAA,sBAAA,GAC1C7D,mBAAmB,CAACW,OAAO,cAAAkD,sBAAA,uBAA3BA,sBAAA,CAA6BR,QAAQ,CAACM,MAAM,EAAEC,OAAO,CAAC;QAAA;QACxDE,aAAa,EAAGC,MAAW;UAAA,IAAAC,sBAAA;UAAA,QAAAA,sBAAA,GACzBhE,mBAAmB,CAACW,OAAO,cAAAqD,sBAAA,uBAA3BA,sBAAA,CAA6BF,aAAa,CAACC,MAAM,CAAC;QAAA;QACpDE,gBAAgB,EAAGF,MAAW;UAAA,IAAAG,sBAAA;UAAA,QAAAA,sBAAA,GAC5BlE,mBAAmB,CAACW,OAAO,cAAAuD,sBAAA,uBAA3BA,sBAAA,CAA6BD,gBAAgB,CAACF,MAAM,CAAC;QAAA;QACvD9D,YAAY;QACZC,OAAO;QACPU,eAAe;QACfuD,YAAY,EAAE1B;MAChB,CAAC;IACH,CAAC,EAAE,CAACvC,OAAO,EAAED,YAAY,EAAEW,eAAe,EAAE6B,kBAAkB,CAAC,CAAC;IAEhE,MAAM2B,eAAe,GAAG7E,OAAO,CAC7B,OAAO;MACLe,YAAY;MACZF,eAAe;MACfC,aAAa;MACbW,2BAA2B;MAC3BP,sBAAsB;MACtBR,YAAY;MACZE,iBAAiB;MACjBY,gBAAgB;MAChBP;IACF,CAAC,CAAC,EACF,CACEC,sBAAsB,EACtBO,2BAA2B,EAC3Bf,YAAY,EACZE,iBAAiB,EACjBY,gBAAgB,EAChBP,mBAAmB,CAEvB,CAAC;IAED,oBACEnB,KAAA,CAAAgF,aAAA,CAAC5E,kBAAkB,CAAC6E,QAAQ;MAACxD,KAAK,EAAEwC;IAAQ,gBAC1CjE,KAAA,CAAAgF,aAAA,CAAC3E,0BAA0B,CAAC4E,QAAQ;MAACxD,KAAK,EAAEsD;IAAgB,gBAE1D/E,KAAA,CAAAgF,aAAA,CAACvE,SAAS,EAAKC,KAAQ,CACY,CACV,CAAC;EAElC,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleContainer.d.ts","sourceRoot":"","sources":["../../../src/components/CollapsibleContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAEL,yBAAyB,EAIzB,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB,KAAK,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,QAAQ,EACR,yBAAyB,EACzB,aAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,qBAuDP"}
1
+ {"version":3,"file":"CollapsibleContainer.d.ts","sourceRoot":"","sources":["../../../src/components/CollapsibleContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAC/C,OAAO,EAEL,yBAAyB,EAGzB,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB,KAAK,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,QAAQ,EACR,yBAAyB,EACzB,aAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,qBAkDP"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { FlashListProps } from '@shopify/flash-list';
2
+ import { FlatListProps } from 'react-native';
3
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;
4
+ type Props<Data> = FlatListProps<Data> & CollapsibleProps;
5
+ export default function CollapsibleFlashList<Data>({ headerSnappable, ...props }: Props<Data>): React.JSX.Element;
6
6
  export {};
7
7
  //# sourceMappingURL=CollapsibleFlashList.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"CollapsibleFlashList.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/CollapsibleFlashList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAAoB,aAAa,EAAE,MAAM,cAAc,CAAC;AAO/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAgBpD,KAAK,KAAK,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,IAAI,EAAE,EACjD,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,IAAI,CAAC,qBAiFb"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { FlatListProps } from 'react-native';
3
+ import type { CollapsibleProps } from '../../types';
4
+ type Props<Data> = FlatListProps<Data> & CollapsibleProps;
5
+ export default function CollapsibleLegendList<Data>({ headerSnappable, ...props }: Props<Data>): React.JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=CollapsibleLegendList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleLegendList.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/CollapsibleLegendList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAAoB,aAAa,EAAE,MAAM,cAAc,CAAC;AAI/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAcpD,KAAK,KAAK,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,IAAI,EAAE,EAClD,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,IAAI,CAAC,qBAgFb"}
@@ -3,6 +3,7 @@ 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
5
  export { default as CollapsibleFlashList } from './components/scrollable/CollapsibleFlashList';
6
+ export { default as CollapsibleLegendList } from './components/scrollable/CollapsibleLegendList';
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';
@@ -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,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"}
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,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"}
@@ -44,6 +44,7 @@ export type LayoutParams = {
44
44
  export type CollapsibleContextInternalType = {
45
45
  scrollViewRef: React.RefObject<any>;
46
46
  containerRef: React.RefObject<any>;
47
+ containerHeight: Animated.SharedValue<number>;
47
48
  contentMinHeight: Animated.SharedValue<number>;
48
49
  headerViewPositions: Animated.SharedValue<Record<string, {
49
50
  top: number;
@@ -51,7 +52,6 @@ export type CollapsibleContextInternalType = {
51
52
  }>>;
52
53
  fixedHeaderHeight: Animated.SharedValue<number>;
53
54
  headerHeight: Animated.SharedValue<number>;
54
- handleContainerHeight: (height: number) => void;
55
55
  handleHeaderContainerLayout: (key: string, layout?: LayoutRectangle, stickyHeight?: number) => void;
56
56
  setCollapsibleHandlers: (handlers: CollapsibleHandles) => void;
57
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;OAIG;IACH,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACrD,gBAAgB,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/C;;;;;OAKG;IACH,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnC,gBAAgB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/C,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CACvC,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CACtD,CAAC;IACF,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,2BAA2B,EAAE,CAC3B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,eAAe,EACxB,YAAY,CAAC,EAAE,MAAM,KAClB,IAAI,CAAC;IACV,sBAAsB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClD,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;OAIG;IACH,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACrD,gBAAgB,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/C;;;;;OAKG;IACH,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnC,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,gBAAgB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/C,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CACvC,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CACtD,CAAC;IACF,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,2BAA2B,EAAE,CAC3B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,eAAe,EACxB,YAAY,CAAC,EAAE,MAAM,KAClB,IAAI,CAAC;IACV,sBAAsB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClD,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"withCollapsibleContext.d.ts","sourceRoot":"","sources":["../../src/withCollapsibleContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAgC,EAAE,EAAE,MAAM,OAAO,CAAC;AAOhE,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WACjD,CAAC,uBAiJjB"}
1
+ {"version":3,"file":"withCollapsibleContext.d.ts","sourceRoot":"","sources":["../../src/withCollapsibleContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAgC,EAAE,EAAE,MAAM,OAAO,CAAC;AAOhE,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WACjD,CAAC,uBA+IjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@r0b0t3d/react-native-collapsible",
3
- "version": "1.5.0-alpha.1",
3
+ "version": "1.5.0-alpha.3",
4
4
  "description": "Fully customizable collapsible views",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -53,9 +53,10 @@
53
53
  "devDependencies": {
54
54
  "@commitlint/config-conventional": "^17.0.2",
55
55
  "@evilmartians/lefthook": "^1.2.2",
56
+ "@legendapp/list": "^1.0.7",
56
57
  "@react-native-community/eslint-config": "^3.0.2",
57
58
  "@release-it/conventional-changelog": "^5.0.0",
58
- "@shopify/flash-list": "^1.6.1",
59
+ "@shopify/flash-list": "^1.8.0",
59
60
  "@types/jest": "^28.1.2",
60
61
  "@types/react": "~17.0.21",
61
62
  "@types/react-native": "0.70.0",
@@ -78,7 +79,6 @@
78
79
  "@types/react": "17.0.21"
79
80
  },
80
81
  "peerDependencies": {
81
- "@shopify/flash-list": "*",
82
82
  "react": "*",
83
83
  "react-native": "*",
84
84
  "react-native-gesture-handler": "*",
@@ -87,7 +87,6 @@
87
87
  "engines": {
88
88
  "node": ">= 16.0.0"
89
89
  },
90
- "packageManager": "^yarn@1.22.15",
91
90
  "jest": {
92
91
  "preset": "react-native",
93
92
  "modulePathIgnorePatterns": [
@@ -1,9 +1,8 @@
1
1
  /* eslint-disable react-hooks/exhaustive-deps */
2
- import React, { useCallback, useRef } from 'react';
2
+ import React, { useLayoutEffect } from 'react';
3
3
  import {
4
4
  KeyboardAvoidingView,
5
5
  KeyboardAvoidingViewProps,
6
- LayoutChangeEvent,
7
6
  StyleSheet,
8
7
  View,
9
8
  ViewProps,
@@ -25,12 +24,9 @@ export default function CollapsibleContainer({
25
24
  textInputRefs = [],
26
25
  ...props
27
26
  }: Props) {
28
- const { handleContainerHeight, containerRef } =
29
- useInternalCollapsibleContext();
27
+ const { containerHeight, containerRef } = useInternalCollapsibleContext();
30
28
  const { scrollY, scrollTo } = useCollapsibleContext();
31
29
 
32
- const containerHeight = useRef(0);
33
-
34
30
  useKeyboardShowEvent(() => {
35
31
  textInputRefs.some((ref) => {
36
32
  const isFocusedFunc = ref.current.isFocused;
@@ -43,10 +39,10 @@ export default function CollapsibleContainer({
43
39
  // @ts-ignore
44
40
  containerRef.current,
45
41
  (_left: number, top: number, _width: number, height: number) => {
46
- if (top + height - scrollY.value > containerHeight.current) {
42
+ if (top + height - scrollY.value > containerHeight.value) {
47
43
  const extraOffset =
48
44
  keyboardAvoidingViewProps?.keyboardVerticalOffset ?? 20;
49
- scrollTo(top + height + extraOffset - containerHeight.current);
45
+ scrollTo(top + height + extraOffset - containerHeight.value);
50
46
  }
51
47
  },
52
48
  () => {}
@@ -56,10 +52,9 @@ export default function CollapsibleContainer({
56
52
  });
57
53
  });
58
54
 
59
- const handleContainerLayout = useCallback((layout: LayoutChangeEvent) => {
60
- const height = layout.nativeEvent.layout.height;
61
- containerHeight.current = height;
62
- handleContainerHeight(height);
55
+ useLayoutEffect(() => {
56
+ const { height } = containerRef.current.unstable_getBoundingClientRect();
57
+ containerHeight.value = height;
63
58
  }, []);
64
59
 
65
60
  return (
@@ -72,7 +67,6 @@ export default function CollapsibleContainer({
72
67
  {...props}
73
68
  ref={containerRef}
74
69
  style={[styles.container, props.style]}
75
- onLayout={handleContainerLayout}
76
70
  collapsable={false}
77
71
  >
78
72
  <CollapsibleHeaderConsumer>{children}</CollapsibleHeaderConsumer>
@@ -8,7 +8,7 @@ type Props = {
8
8
  export default function AnimatedTopView({ height }: Props) {
9
9
  const contentStyle = useAnimatedStyle(
10
10
  () => ({
11
- paddingTop: height.value,
11
+ height: height.value,
12
12
  }),
13
13
  []
14
14
  );
@@ -1,23 +1,31 @@
1
1
  /* eslint-disable react-hooks/exhaustive-deps */
2
2
  import React, { useCallback, useEffect, useRef, useState } from 'react';
3
- import { View, StyleSheet } from 'react-native';
3
+ import { View, StyleSheet, FlatListProps } from 'react-native';
4
4
  import Animated, {
5
5
  runOnJS,
6
6
  useAnimatedReaction,
7
7
  } from 'react-native-reanimated';
8
- import { FlashList, FlashListProps } from '@shopify/flash-list';
9
8
  import useAnimatedScroll from './useAnimatedScroll';
10
9
  import useInternalCollapsibleContext from '../../hooks/useInternalCollapsibleContext';
11
10
  import type { CollapsibleProps } from '../../types';
12
11
  import AnimatedTopView from '../header/AnimatedTopView';
13
12
  import useCollapsibleContext from '../../hooks/useCollapsibleContext';
14
13
 
14
+ let FlashList = null;
15
+ try {
16
+ FlashList = require('@shopify/flash-list').FlashList;
17
+ } catch (e) {
18
+ console.warn(e);
19
+ }
20
+ if (!FlashList) {
21
+ throw new Error('@shopify/flash-list is not installed');
22
+ }
23
+
15
24
  const AnimatedFlashList = Animated.createAnimatedComponent(FlashList);
16
25
 
17
- type Props<Data> = Omit<FlashListProps<Data>, 'scrollEnabled'> &
18
- CollapsibleProps;
26
+ type Props<Data> = FlatListProps<Data> & CollapsibleProps;
19
27
 
20
- export default function CollapsibleFlatList<Data>({
28
+ export default function CollapsibleFlashList<Data>({
21
29
  headerSnappable = true,
22
30
  ...props
23
31
  }: Props<Data>) {
@@ -92,6 +100,7 @@ export default function CollapsibleFlatList<Data>({
92
100
  scrollEventThrottle={1}
93
101
  onScrollToIndexFailed={handleScrollToIndexFailed}
94
102
  {...props}
103
+ // @ts-ignore
95
104
  onScroll={scrollHandler}
96
105
  ListHeaderComponent={renderListHeader()}
97
106
  //@ts-ignore
@@ -0,0 +1,121 @@
1
+ /* eslint-disable react-hooks/exhaustive-deps */
2
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
3
+ import { View, StyleSheet, FlatListProps } from 'react-native';
4
+ import { runOnJS, useAnimatedReaction } from 'react-native-reanimated';
5
+ import useAnimatedScroll from './useAnimatedScroll';
6
+ import useInternalCollapsibleContext from '../../hooks/useInternalCollapsibleContext';
7
+ import type { CollapsibleProps } from '../../types';
8
+ import AnimatedTopView from '../header/AnimatedTopView';
9
+ import useCollapsibleContext from '../../hooks/useCollapsibleContext';
10
+
11
+ let AnimatedLegendList: any = null;
12
+ try {
13
+ AnimatedLegendList = require('@legendapp/list/reanimated').AnimatedLegendList;
14
+ } catch (e) {
15
+ console.warn(e);
16
+ }
17
+ if (!AnimatedLegendList) {
18
+ throw new Error('@legendapp/list is not installed');
19
+ }
20
+
21
+ type Props<Data> = FlatListProps<Data> & CollapsibleProps;
22
+
23
+ export default function CollapsibleLegendList<Data>({
24
+ headerSnappable = true,
25
+ ...props
26
+ }: Props<Data>) {
27
+ const { headerHeight } = useCollapsibleContext();
28
+ const { scrollViewRef, fixedHeaderHeight } = useInternalCollapsibleContext();
29
+ const mounted = useRef(true);
30
+ const [internalProgressViewOffset, setInternalProgressViewOffset] =
31
+ useState(0);
32
+
33
+ useEffect(() => {
34
+ return () => {
35
+ mounted.current = false;
36
+ };
37
+ }, []);
38
+
39
+ const scrollTo = useCallback((yValue: number, animated = true) => {
40
+ scrollViewRef.current?.scrollToOffset({
41
+ offset: yValue,
42
+ animated,
43
+ });
44
+ }, []);
45
+
46
+ const scrollToIndex = useCallback((params) => {
47
+ scrollViewRef.current?.scrollToIndex(params);
48
+ }, []);
49
+
50
+ const scrollToLocation = useCallback(() => {
51
+ console.warn('CollapsibleLegendList does not support scrollToLocation');
52
+ }, []);
53
+
54
+ const { scrollHandler } = useAnimatedScroll({
55
+ headerSnappable,
56
+ scrollTo,
57
+ scrollToIndex,
58
+ scrollToLocation,
59
+ });
60
+
61
+ const handleInternalProgressViewOffset = useCallback((value: number) => {
62
+ if (mounted.current) {
63
+ setInternalProgressViewOffset(value);
64
+ }
65
+ }, []);
66
+
67
+ useAnimatedReaction(
68
+ () => {
69
+ return fixedHeaderHeight.value;
70
+ },
71
+ (result, previous) => {
72
+ if (result !== previous) {
73
+ runOnJS(handleInternalProgressViewOffset)(result);
74
+ }
75
+ }
76
+ );
77
+
78
+ const handleScrollToIndexFailed = useCallback(() => {}, []);
79
+
80
+ function renderListHeader() {
81
+ return (
82
+ <View>
83
+ <AnimatedTopView height={headerHeight} />
84
+ {props.ListHeaderComponent}
85
+ </View>
86
+ );
87
+ }
88
+
89
+ return (
90
+ <View style={[styles.container, props.style]}>
91
+ <AnimatedLegendList
92
+ ref={scrollViewRef}
93
+ keyboardDismissMode="on-drag"
94
+ keyboardShouldPersistTaps="handled"
95
+ scrollEventThrottle={1}
96
+ onScrollToIndexFailed={handleScrollToIndexFailed}
97
+ {...props}
98
+ onScroll={scrollHandler}
99
+ ListHeaderComponent={renderListHeader()}
100
+ //@ts-ignore
101
+ simultaneousHandlers={[]}
102
+ progressViewOffset={internalProgressViewOffset}
103
+ />
104
+ </View>
105
+ );
106
+ }
107
+
108
+ const styles = StyleSheet.create({
109
+ container: {
110
+ ...StyleSheet.absoluteFillObject,
111
+ },
112
+ contentContainer: {
113
+ flexGrow: 1,
114
+ },
115
+ topView: {
116
+ position: 'absolute',
117
+ top: 0,
118
+ left: 0,
119
+ right: 0,
120
+ },
121
+ });
package/src/index.tsx CHANGED
@@ -4,6 +4,7 @@ export { default as useCollapsibleContext } from './hooks/useCollapsibleContext'
4
4
  export { default as CollapsibleContainer } from './components/CollapsibleContainer';
5
5
  export { default as CollapsibleFlatList } from './components/scrollable/CollapsibleFlatList';
6
6
  export { default as CollapsibleFlashList } from './components/scrollable/CollapsibleFlashList';
7
+ export { default as CollapsibleLegendList } from './components/scrollable/CollapsibleLegendList';
7
8
  export { default as CollapsibleScrollView } from './components/scrollable/CollapsibleScrollView';
8
9
  export { default as CollapsibleSectionList } from './components/scrollable/CollapsibleSectionList';
9
10
  export { default as CollapsibleHeaderContainer } from './components/header/CollapsibleHeaderContainer';
package/src/types.ts CHANGED
@@ -49,13 +49,13 @@ export type LayoutParams = {
49
49
  export type CollapsibleContextInternalType = {
50
50
  scrollViewRef: React.RefObject<any>;
51
51
  containerRef: React.RefObject<any>;
52
+ containerHeight: Animated.SharedValue<number>;
52
53
  contentMinHeight: Animated.SharedValue<number>;
53
54
  headerViewPositions: Animated.SharedValue<
54
55
  Record<string, { top: number; stickyHeight: number }>
55
56
  >;
56
57
  fixedHeaderHeight: Animated.SharedValue<number>;
57
58
  headerHeight: Animated.SharedValue<number>;
58
- handleContainerHeight: (height: number) => void;
59
59
  handleHeaderContainerLayout: (
60
60
  key: string,
61
61
  layout?: LayoutRectangle,
@@ -68,12 +68,11 @@ export default function withCollapsibleContext<T>(Component: FC<T>) {
68
68
  []
69
69
  );
70
70
 
71
- const handleContainerHeight = useCallback((height: number) => {
72
- containerHeight.value = height;
73
- }, []);
74
-
75
71
  const handleScrollToView = useCallback(
76
72
  (ref: React.RefObject<any>, animated?: boolean) => {
73
+ if (!ref.current) {
74
+ return;
75
+ }
77
76
  ref.current.measureLayout(
78
77
  containerRef.current,
79
78
  (_left: number, top: number, _width: number, _height: number) => {
@@ -123,10 +122,10 @@ export default function withCollapsibleContext<T>(Component: FC<T>) {
123
122
  const internalContext = useMemo(
124
123
  () => ({
125
124
  containerRef,
125
+ containerHeight,
126
126
  scrollViewRef,
127
127
  handleHeaderContainerLayout,
128
128
  setCollapsibleHandlers,
129
- handleContainerHeight,
130
129
  headerHeight,
131
130
  fixedHeaderHeight,
132
131
  contentMinHeight,
@@ -135,7 +134,6 @@ export default function withCollapsibleContext<T>(Component: FC<T>) {
135
134
  [
136
135
  setCollapsibleHandlers,
137
136
  handleHeaderContainerLayout,
138
- handleContainerHeight,
139
137
  headerHeight,
140
138
  fixedHeaderHeight,
141
139
  contentMinHeight,