@r0b0t3d/react-native-collapsible 1.3.3 → 1.3.5-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/lib/commonjs/components/CollapsibleContainer.js +1 -3
  2. package/lib/commonjs/components/CollapsibleContainer.js.map +1 -1
  3. package/lib/commonjs/components/CollapsibleView.js +15 -5
  4. package/lib/commonjs/components/CollapsibleView.js.map +1 -1
  5. package/lib/commonjs/components/header/CollapsibleHeaderConsumer.js +1 -1
  6. package/lib/commonjs/components/header/CollapsibleHeaderConsumer.js.map +1 -1
  7. package/lib/commonjs/components/header/CollapsibleHeaderContainer.js +5 -13
  8. package/lib/commonjs/components/header/CollapsibleHeaderContainer.js.map +1 -1
  9. package/lib/commonjs/components/header/StickyView.js +2 -1
  10. package/lib/commonjs/components/header/StickyView.js.map +1 -1
  11. package/lib/commonjs/components/scrollable/CollapsibleFlatList.js +36 -28
  12. package/lib/commonjs/components/scrollable/CollapsibleFlatList.js.map +1 -1
  13. package/lib/commonjs/components/scrollable/CollapsibleScrollView.js +7 -14
  14. package/lib/commonjs/components/scrollable/CollapsibleScrollView.js.map +1 -1
  15. package/lib/commonjs/components/scrollable/useAnimatedScroll.js.map +1 -1
  16. package/lib/commonjs/index.js +0 -9
  17. package/lib/commonjs/index.js.map +1 -1
  18. package/lib/commonjs/withCollapsibleContext.js +1 -3
  19. package/lib/commonjs/withCollapsibleContext.js.map +1 -1
  20. package/lib/module/components/CollapsibleContainer.js +1 -2
  21. package/lib/module/components/CollapsibleContainer.js.map +1 -1
  22. package/lib/module/components/CollapsibleView.js +16 -6
  23. package/lib/module/components/CollapsibleView.js.map +1 -1
  24. package/lib/module/components/header/CollapsibleHeaderConsumer.js +1 -1
  25. package/lib/module/components/header/CollapsibleHeaderConsumer.js.map +1 -1
  26. package/lib/module/components/header/CollapsibleHeaderContainer.js +6 -13
  27. package/lib/module/components/header/CollapsibleHeaderContainer.js.map +1 -1
  28. package/lib/module/components/header/StickyView.js +3 -2
  29. package/lib/module/components/header/StickyView.js.map +1 -1
  30. package/lib/module/components/scrollable/CollapsibleFlatList.js +36 -26
  31. package/lib/module/components/scrollable/CollapsibleFlatList.js.map +1 -1
  32. package/lib/module/components/scrollable/CollapsibleScrollView.js +6 -12
  33. package/lib/module/components/scrollable/CollapsibleScrollView.js.map +1 -1
  34. package/lib/module/components/scrollable/useAnimatedScroll.js.map +1 -1
  35. package/lib/module/index.js +0 -1
  36. package/lib/module/index.js.map +1 -1
  37. package/lib/module/withCollapsibleContext.js +1 -2
  38. package/lib/module/withCollapsibleContext.js.map +1 -1
  39. package/lib/typescript/components/CollapsibleView.d.ts +2 -1
  40. package/lib/typescript/components/header/CollapsibleHeaderContainer.d.ts +2 -2
  41. package/lib/typescript/components/scrollable/useAnimatedScroll.d.ts +1 -1
  42. package/lib/typescript/index.d.ts +0 -1
  43. package/package.json +1 -1
  44. package/src/components/CollapsibleContainer.tsx +0 -2
  45. package/src/components/CollapsibleView.tsx +19 -3
  46. package/src/components/header/CollapsibleHeaderConsumer.tsx +2 -2
  47. package/src/components/header/CollapsibleHeaderContainer.tsx +8 -15
  48. package/src/components/header/StickyView.tsx +2 -1
  49. package/src/components/scrollable/CollapsibleFlatList.tsx +59 -40
  50. package/src/components/scrollable/CollapsibleScrollView.tsx +4 -8
  51. package/src/components/scrollable/useAnimatedScroll.ts +1 -1
  52. package/src/index.tsx +0 -1
  53. package/src/withCollapsibleContext.tsx +2 -5
  54. package/lib/commonjs/components/header/AnimatedTopView.js +0 -29
  55. package/lib/commonjs/components/header/AnimatedTopView.js.map +0 -1
  56. package/lib/commonjs/components/pullToRefresh/PullToRefreshContainer.js +0 -75
  57. package/lib/commonjs/components/pullToRefresh/PullToRefreshContainer.js.map +0 -1
  58. package/lib/commonjs/components/pullToRefresh/PullToRefreshProvider.js +0 -35
  59. package/lib/commonjs/components/pullToRefresh/PullToRefreshProvider.js.map +0 -1
  60. package/lib/commonjs/components/pullToRefresh/RefreshControl.js +0 -91
  61. package/lib/commonjs/components/pullToRefresh/RefreshControl.js.map +0 -1
  62. package/lib/commonjs/components/pullToRefresh/usePullToRefreshContext.js +0 -24
  63. package/lib/commonjs/components/pullToRefresh/usePullToRefreshContext.js.map +0 -1
  64. package/lib/commonjs/components/pullToRefresh/utils.js +0 -59
  65. package/lib/commonjs/components/pullToRefresh/utils.js.map +0 -1
  66. package/lib/module/components/header/AnimatedTopView.js +0 -14
  67. package/lib/module/components/header/AnimatedTopView.js.map +0 -1
  68. package/lib/module/components/pullToRefresh/PullToRefreshContainer.js +0 -56
  69. package/lib/module/components/pullToRefresh/PullToRefreshContainer.js.map +0 -1
  70. package/lib/module/components/pullToRefresh/PullToRefreshProvider.js +0 -21
  71. package/lib/module/components/pullToRefresh/PullToRefreshProvider.js.map +0 -1
  72. package/lib/module/components/pullToRefresh/RefreshControl.js +0 -73
  73. package/lib/module/components/pullToRefresh/RefreshControl.js.map +0 -1
  74. package/lib/module/components/pullToRefresh/usePullToRefreshContext.js +0 -13
  75. package/lib/module/components/pullToRefresh/usePullToRefreshContext.js.map +0 -1
  76. package/lib/module/components/pullToRefresh/utils.js +0 -42
  77. package/lib/module/components/pullToRefresh/utils.js.map +0 -1
  78. package/lib/typescript/components/header/AnimatedTopView.d.ts +0 -6
  79. package/lib/typescript/components/pullToRefresh/PullToRefreshContainer.d.ts +0 -8
  80. package/lib/typescript/components/pullToRefresh/PullToRefreshProvider.d.ts +0 -6
  81. package/lib/typescript/components/pullToRefresh/RefreshControl.d.ts +0 -9
  82. package/lib/typescript/components/pullToRefresh/usePullToRefreshContext.d.ts +0 -4
  83. package/lib/typescript/components/pullToRefresh/utils.d.ts +0 -20
  84. package/src/components/header/AnimatedTopView.tsx +0 -18
  85. package/src/components/pullToRefresh/PullToRefreshContainer.tsx +0 -66
  86. package/src/components/pullToRefresh/PullToRefreshProvider.tsx +0 -27
  87. package/src/components/pullToRefresh/RefreshControl.tsx +0 -100
  88. package/src/components/pullToRefresh/usePullToRefreshContext.ts +0 -13
  89. package/src/components/pullToRefresh/utils.ts +0 -49
@@ -1,4 +0,0 @@
1
- /// <reference types="react" />
2
- import type { PullToRefreshContextType } from '../../types';
3
- export declare const PullToRefreshContext: import("react").Context<PullToRefreshContextType>;
4
- export default function usePullToRefreshContext(): PullToRefreshContextType;
@@ -1,20 +0,0 @@
1
- export declare const springConfig: (velocity: number) => {
2
- stiffness: number;
3
- damping: number;
4
- mass: number;
5
- overshootClamping: boolean;
6
- restDisplacementThreshold: number;
7
- restSpeedThreshold: number;
8
- velocity: number;
9
- };
10
- export declare function clamp(value: number, lowerbound: number, upperbound: number): number;
11
- /**
12
- * calculates rubber value
13
- *
14
- * @param x distance from the edge
15
- * @param dim dimension, either width or height
16
- * @param coeff constant value, UIScrollView uses 0.55
17
- * @returns rubber = (1.0 – (1.0 / ((x * coeff / dim) + 1.0))) * dim
18
- */
19
- export declare const rubberBandClamp: (x: number, dim: number, coeff: number) => number;
20
- export declare const rubberClamp: (y: number, topBound: number, bottomBound: number, coeff?: number) => number;
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import Animated, { useAnimatedStyle } from 'react-native-reanimated';
3
-
4
- type Props = {
5
- height: Animated.SharedValue<number>;
6
- };
7
-
8
- export default function AnimatedTopView({ height }: Props) {
9
- const contentStyle = useAnimatedStyle(
10
- () => ({
11
- paddingTop: height.value,
12
- backgroundColor: 'white',
13
- }),
14
- []
15
- );
16
-
17
- return <Animated.View style={contentStyle} />;
18
- }
@@ -1,66 +0,0 @@
1
- import {
2
- NativeViewGestureHandler,
3
- PanGestureHandler,
4
- } from 'react-native-gesture-handler';
5
- import React, { useRef } from 'react';
6
- import Animated, {
7
- useAnimatedGestureHandler,
8
- withTiming,
9
- } from 'react-native-reanimated';
10
- import usePullToRefreshContext from './usePullToRefreshContext';
11
- import { StyleSheet } from 'react-native';
12
- import { rubberClamp } from './utils';
13
-
14
- type Props = {
15
- children: React.ReactNode;
16
- scrollY: Animated.SharedValue<number>;
17
- };
18
-
19
- export default function PullToRefreshContainer({ children, scrollY }: Props) {
20
- const scrollRef = useRef();
21
- const panRef = useRef();
22
- const { refreshValue, internalRefreshing, internalHeight } =
23
- usePullToRefreshContext();
24
-
25
- const gestureHandler = useAnimatedGestureHandler({
26
- onStart: (_, ctx: any) => {
27
- ctx.startY =
28
- (internalRefreshing.value ? refreshValue.value : 0) - scrollY.value;
29
- },
30
- onActive: (event, ctx: any) => {
31
- if (scrollY.value <= 1) {
32
- const tranY = event.translationY + ctx.startY;
33
- const clampedValue = rubberClamp(tranY, 0, internalHeight.value);
34
- refreshValue.value = clampedValue;
35
- if (clampedValue > internalHeight.value) {
36
- internalRefreshing.value = true;
37
- }
38
- } else if (!internalRefreshing.value) {
39
- refreshValue.value = 0;
40
- }
41
- },
42
- onEnd: () => {
43
- if (refreshValue.value > 0) {
44
- const value = internalRefreshing.value ? internalHeight.value : 0;
45
- refreshValue.value = withTiming(value);
46
- }
47
- },
48
- });
49
-
50
- return (
51
- <PanGestureHandler
52
- ref={panRef}
53
- simultaneousHandlers={scrollRef}
54
- onGestureEvent={gestureHandler}
55
- shouldCancelWhenOutside={false}
56
- enableTrackpadTwoFingerGesture
57
- maxPointers={1}
58
- >
59
- <Animated.View style={StyleSheet.absoluteFill}>
60
- <NativeViewGestureHandler ref={scrollRef} simultaneousHandlers={panRef}>
61
- {children}
62
- </NativeViewGestureHandler>
63
- </Animated.View>
64
- </PanGestureHandler>
65
- );
66
- }
@@ -1,27 +0,0 @@
1
- import React, { useMemo } from 'react';
2
- import { useSharedValue } from 'react-native-reanimated';
3
- import { PullToRefreshContext } from './usePullToRefreshContext';
4
-
5
- type Props = {
6
- children: React.ReactNode;
7
- };
8
-
9
- export default function PullToRefreshProvider({ children }: Props) {
10
- const refreshValue = useSharedValue(0);
11
- const internalRefreshing = useSharedValue(false);
12
- const internalHeight = useSharedValue(0);
13
-
14
- const context = useMemo(() => {
15
- return {
16
- refreshValue: refreshValue,
17
- internalRefreshing,
18
- internalHeight,
19
- };
20
- }, [refreshValue, internalRefreshing, internalHeight]);
21
-
22
- return (
23
- <PullToRefreshContext.Provider value={context}>
24
- {children}
25
- </PullToRefreshContext.Provider>
26
- );
27
- }
@@ -1,100 +0,0 @@
1
- /* eslint-disable react-hooks/exhaustive-deps */
2
- import React, { useCallback, useEffect, useRef } from 'react';
3
- import { StyleSheet } from 'react-native';
4
- import Animated, {
5
- runOnJS,
6
- useAnimatedProps,
7
- useAnimatedReaction,
8
- useAnimatedStyle,
9
- withTiming,
10
- } from 'react-native-reanimated';
11
- import usePullToRefreshContext from './usePullToRefreshContext';
12
-
13
- type Props = {
14
- height?: number;
15
- refreshing: boolean;
16
- onRefresh: () => void;
17
- renderAnimation: (animatedProps: any) => React.ReactNode;
18
- };
19
-
20
- export default function RefreshControl({
21
- height = 100,
22
- refreshing,
23
- onRefresh,
24
- renderAnimation,
25
- }: Props) {
26
- const { refreshValue, internalRefreshing, internalHeight } =
27
- usePullToRefreshContext();
28
- const manualTriggered = useRef(false);
29
-
30
- useEffect(() => {
31
- internalHeight.value = height;
32
- }, [height]);
33
-
34
- useEffect(() => {
35
- if (!internalRefreshing.value && refreshing) {
36
- manualTriggered.current = true;
37
- }
38
- internalRefreshing.value = refreshing;
39
- }, [refreshing]);
40
-
41
- useAnimatedReaction(
42
- () => {
43
- return internalRefreshing.value;
44
- },
45
- (result, prev) => {
46
- if (result !== prev) {
47
- if (result && refreshValue.value === 0) {
48
- refreshValue.value = height;
49
- }
50
- }
51
- }
52
- );
53
-
54
- const animatedStyle = useAnimatedStyle(() => {
55
- return {
56
- height: refreshValue.value,
57
- };
58
- }, []);
59
-
60
- const handleRefresh = useCallback(() => {
61
- if (manualTriggered.current) {
62
- manualTriggered.current = false;
63
- return;
64
- }
65
- onRefresh();
66
- }, [onRefresh]);
67
-
68
- useAnimatedReaction(
69
- () => internalRefreshing.value,
70
- (result, prev) => {
71
- if (result !== prev) {
72
- if (result) {
73
- runOnJS(handleRefresh)();
74
- } else {
75
- refreshValue.value = withTiming(0);
76
- }
77
- }
78
- }
79
- );
80
-
81
- const animatedProps = useAnimatedProps(() => {
82
- return {
83
- progress: internalRefreshing.value
84
- ? undefined
85
- : Math.min(refreshValue.value / height, 1),
86
- };
87
- }, [height]);
88
-
89
- return (
90
- <Animated.View style={[styles.container, animatedStyle]}>
91
- {renderAnimation(animatedProps)}
92
- </Animated.View>
93
- );
94
- }
95
-
96
- const styles = StyleSheet.create({
97
- container: {
98
- overflow: 'hidden',
99
- },
100
- });
@@ -1,13 +0,0 @@
1
- import { createContext, useContext } from 'react';
2
- import type { PullToRefreshContextType } from '../../types';
3
-
4
- // @ts-ignore
5
- export const PullToRefreshContext = createContext<PullToRefreshContextType>({});
6
-
7
- export default function usePullToRefreshContext() {
8
- const ctx = useContext(PullToRefreshContext);
9
- if (!ctx) {
10
- throw new Error('Component should be wrapped with withCollapsibleContext');
11
- }
12
- return ctx;
13
- }
@@ -1,49 +0,0 @@
1
- export const springConfig = (velocity: number) => {
2
- 'worklet';
3
-
4
- return {
5
- stiffness: 1000,
6
- damping: 500,
7
- mass: 3,
8
- overshootClamping: true,
9
- restDisplacementThreshold: 0.01,
10
- restSpeedThreshold: 0.01,
11
- velocity,
12
- };
13
- };
14
-
15
- export function clamp(value: number, lowerbound: number, upperbound: number) {
16
- 'worklet';
17
-
18
- return Math.min(Math.max(value, lowerbound), upperbound);
19
- }
20
-
21
- /**
22
- * calculates rubber value
23
- *
24
- * @param x distance from the edge
25
- * @param dim dimension, either width or height
26
- * @param coeff constant value, UIScrollView uses 0.55
27
- * @returns rubber = (1.0 – (1.0 / ((x * coeff / dim) + 1.0))) * dim
28
- */
29
- export const rubberBandClamp = (x: number, dim: number, coeff: number) => {
30
- 'worklet';
31
-
32
- return (1.0 - 1.0 / ((x * coeff) / dim + 1.0)) * dim;
33
- };
34
-
35
- export const rubberClamp = (
36
- y: number,
37
- topBound: number,
38
- bottomBound: number,
39
- coeff = 0.55
40
- ) => {
41
- 'worklet';
42
-
43
- const clampedY = clamp(y, topBound, bottomBound);
44
- const diff = Math.abs(y - clampedY);
45
- const sign = clampedY > y ? -1 : 1;
46
- const dimension = bottomBound - topBound;
47
-
48
- return clampedY + sign * rubberBandClamp(diff, dimension, coeff);
49
- };