@xhsreds/reds-rn-next 0.11.1-beta202601131935 → 0.11.1-beta202601151410
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.
- package/coverage/.tmp/coverage-0.json +1 -1
- package/coverage/.tmp/coverage-1.json +1 -1
- package/coverage/.tmp/coverage-10.json +1 -1
- package/coverage/.tmp/coverage-11.json +1 -1
- package/coverage/.tmp/coverage-12.json +1 -1
- package/coverage/.tmp/coverage-13.json +1 -1
- package/coverage/.tmp/coverage-14.json +1 -1
- package/coverage/.tmp/coverage-15.json +1 -1
- package/coverage/.tmp/coverage-16.json +1 -1
- package/coverage/.tmp/coverage-18.json +1 -1
- package/coverage/.tmp/coverage-2.json +1 -1
- package/coverage/.tmp/coverage-21.json +1 -1
- package/coverage/.tmp/coverage-23.json +1 -1
- package/coverage/.tmp/coverage-24.json +1 -1
- package/coverage/.tmp/coverage-29.json +1 -1
- package/coverage/.tmp/coverage-3.json +1 -1
- package/coverage/.tmp/coverage-30.json +1 -1
- package/coverage/.tmp/coverage-31.json +1 -1
- package/coverage/.tmp/coverage-33.json +1 -1
- package/coverage/.tmp/coverage-34.json +1 -1
- package/coverage/.tmp/coverage-35.json +1 -1
- package/coverage/.tmp/coverage-37.json +1 -1
- package/coverage/.tmp/coverage-38.json +1 -1
- package/coverage/.tmp/coverage-39.json +1 -1
- package/coverage/.tmp/coverage-4.json +1 -1
- package/coverage/.tmp/coverage-40.json +1 -1
- package/coverage/.tmp/coverage-41.json +1 -1
- package/coverage/.tmp/coverage-42.json +1 -1
- package/coverage/.tmp/coverage-43.json +1 -1
- package/coverage/.tmp/coverage-5.json +1 -1
- package/coverage/.tmp/coverage-6.json +1 -1
- package/coverage/.tmp/coverage-7.json +1 -1
- package/coverage/.tmp/coverage-8.json +1 -1
- package/coverage/.tmp/coverage-9.json +1 -1
- package/lib/cjs/components/PullRefresh/PullRefresh.js +32 -7
- package/lib/cjs/components/PullRefresh/PullRefresh.js.map +1 -1
- package/lib/cjs/components/PullRefresh/RefreshControl.js +4 -6
- package/lib/cjs/components/PullRefresh/RefreshControl.js.map +1 -1
- package/lib/esm/components/PullRefresh/PullRefresh.js +32 -7
- package/lib/esm/components/PullRefresh/PullRefresh.js.map +1 -1
- package/lib/esm/components/PullRefresh/RefreshControl.js +4 -6
- package/lib/esm/components/PullRefresh/RefreshControl.js.map +1 -1
- package/lib/src/components/PullRefresh/RefreshControl.d.ts +2 -2
- package/lib/types/components/PullRefresh/RefreshControl.d.ts +2 -2
- package/package.json +2 -2
- package/src/components/PullRefresh/PullRefresh.tsx +26 -4
- package/src/components/PullRefresh/RefreshControl.tsx +3 -4
- package/src/i18n/@types/resources.d.ts +27 -27
- package/src/i18n/index.json +31 -31
|
@@ -206,11 +206,9 @@ function PullRefresh(props) {
|
|
|
206
206
|
}
|
|
207
207
|
setAnimation(animation2);
|
|
208
208
|
animation2.start(function (_ref) {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
setAnimation(void 0);
|
|
213
|
-
}
|
|
209
|
+
_ref.finished;
|
|
210
|
+
cb && cb();
|
|
211
|
+
setAnimation(void 0);
|
|
214
212
|
});
|
|
215
213
|
};
|
|
216
214
|
var renderRefreshControl = function renderRefreshControl(state) {
|
|
@@ -346,6 +344,33 @@ function PullRefresh(props) {
|
|
|
346
344
|
}, (_props$msHoldingTime2 = props === null || props === void 0 ? void 0 : props.msHoldingTime) !== null && _props$msHoldingTime2 !== void 0 ? _props$msHoldingTime2 : 1e3));
|
|
347
345
|
setIsRefreshing(false);
|
|
348
346
|
}
|
|
347
|
+
if (effectiveRefreshing === false && pullState === components_PullRefresh_interface_index.PullState.FINISH) {
|
|
348
|
+
var _props$msHoldingTime3;
|
|
349
|
+
console.log("\u6EDA\u52A8\u7ED3\u675F\u4E86\u4F46\u662F\u8FD8\u6709\u4E0B\u62C9\u8DDD\u79BB");
|
|
350
|
+
setIsPulling(false);
|
|
351
|
+
updatePullState(components_PullRefresh_interface_index.PullState.HOLDING);
|
|
352
|
+
setPullTimeout(
|
|
353
|
+
//@ts-ignore
|
|
354
|
+
setTimeout(function () {
|
|
355
|
+
var _props$onPullProgress5;
|
|
356
|
+
pan.flattenOffset();
|
|
357
|
+
setMoveHeight(0);
|
|
358
|
+
setMovePercent(0);
|
|
359
|
+
(_props$onPullProgress5 = props.onPullProgress) === null || _props$onPullProgress5 === void 0 || _props$onPullProgress5.call(props, {
|
|
360
|
+
distance: 0,
|
|
361
|
+
percent: 0
|
|
362
|
+
});
|
|
363
|
+
lastMoveHeightRef.current = 0;
|
|
364
|
+
animatedTo(0, function () {
|
|
365
|
+
setIsPulling(false);
|
|
366
|
+
updatePullState(components_PullRefresh_interface_index.PullState.INIT);
|
|
367
|
+
pan.setValue(0);
|
|
368
|
+
pan.flattenOffset();
|
|
369
|
+
});
|
|
370
|
+
updatePullState(components_PullRefresh_interface_index.PullState.FINISH);
|
|
371
|
+
}, (_props$msHoldingTime3 = props === null || props === void 0 ? void 0 : props.msHoldingTime) !== null && _props$msHoldingTime3 !== void 0 ? _props$msHoldingTime3 : 1e3));
|
|
372
|
+
setIsRefreshing(false);
|
|
373
|
+
}
|
|
349
374
|
}, [isRefreshing, props.msHoldingTime, props.isRefreshing, pullState, internalRefreshing]);
|
|
350
375
|
var onLayout = function onLayout(evt) {
|
|
351
376
|
var height = props.pullAnimHeight || evt.nativeEvent.layout.height;
|
|
@@ -367,14 +392,14 @@ function PullRefresh(props) {
|
|
|
367
392
|
try {
|
|
368
393
|
props.onRequest && props.onRequest();
|
|
369
394
|
} finally {
|
|
370
|
-
var _props$
|
|
395
|
+
var _props$msHoldingTime4;
|
|
371
396
|
if (!props.onRequest) {
|
|
372
397
|
setInternalRefreshing(true);
|
|
373
398
|
}
|
|
374
399
|
if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);
|
|
375
400
|
androidAutoEndRef.current = setTimeout(function () {
|
|
376
401
|
setInternalRefreshing(false);
|
|
377
|
-
}, (_props$
|
|
402
|
+
}, (_props$msHoldingTime4 = props === null || props === void 0 ? void 0 : props.msHoldingTime) !== null && _props$msHoldingTime4 !== void 0 ? _props$msHoldingTime4 : 1e3);
|
|
378
403
|
}
|
|
379
404
|
}
|
|
380
405
|
})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PullRefresh.js","sources":["../../../../src/components/PullRefresh/PullRefresh.tsx"],"sourcesContent":["import React, { useState, useRef, useMemo, useEffect } from \"react\";\nimport {\n View,\n StyleSheet,\n Animated,\n PanResponder,\n Easing,\n LayoutChangeEvent,\n Platform,\n RefreshControl as RNRefreshControl,\n} from \"react-native\";\nimport { RedsPullRefresh, PullRefreshDefaultProps, PullState } from \"./interface/index\";\nimport RefreshControl from \"./component\";\n// alias to avoid confusion when reading diff\nconst CustomRefreshControl = RefreshControl;\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nexport default function PullRefresh(props: RedsPullRefresh) {\n useMounted(\"PullRefresh\");\n // RefreshControl组件高度\n const [pullAnimHeight, setPullAnimHeight] = useState(0);\n\n // 触发刷新的最小下拉距离\n const [minPullDistance, setMinPullDistance] = useState(0);\n\n // 手势\n const [pan] = useState(new Animated.Value(0));\n\n // 滚动距离\n const [scrollY, setScrollY] = useState<number>(0);\n\n // 是否在下拉中\n const [isPulling, setIsPulling] = useState<boolean>(false);\n\n // 是否在刷新中\n const [isRefreshing, setIsRefreshing] = useState<boolean>(false);\n\n // 内部刷新状态(用于默认启用,特别是 Android 或未提供回调时)\n const [internalRefreshing, setInternalRefreshing] = useState<boolean>(false);\n // Android 自动结束计时器\n const androidAutoEndRef = useRef<any>();\n\n // 组合动画\n const [animation, setAnimation] = useState<Animated.CompositeAnimation>();\n\n // 拉取状态\n const [pullState, setPullState] = useState<PullState>(PullState.INIT);\n\n // 移动高度\n const [moveHeight, setMoveHeight] = useState<number>(0);\n\n // 移动百分比\n const [movePercent, setMovePercent] = useState<number>(0);\n\n // 下拉时间间隔\n const [pullTimeout, setPullTimeout] = useState();\n\n // 下拉图标\n const refreshControlRef = useRef();\n\n // view ref\n const viewRef = useRef<View>();\n\n // 动画ref\n const animatedViewRef = useRef<View>();\n\n // 下拉组件的初始top值\n const [top, setTop] = useState<number>(-1000);\n\n // 记录最后一次有效位移(与 pan 一致),刷新时保持稳定\n const lastMoveHeightRef = useRef<number>(0);\n\n // 标记是否已经执行过初始刷新\n const [hasInitRefreshed, setHasInitRefreshed] = useState<boolean>(false);\n\n // 执行初始刷新的方法\n const performInitRefresh = () => {\n if ((pullAnimHeight > 0 && !hasInitRefreshed && props.initRefresh) || props.refresh) {\n // 设置初始状态为拉取状态\n updatePullState(PullState.LOADING);\n\n // 执行下拉动画\n animatedTo(pullAnimHeight, () => {\n setHasInitRefreshed(true);\n setIsRefreshing(true);\n setIsPulling(true);\n // 触发刷新回调\n props.onRequest && props.onRequest();\n });\n }\n };\n\n // 监听 initRefresh 属性和相关依赖变化\n useEffect(() => {\n if ((props.initRefresh && pullAnimHeight > 0 && !hasInitRefreshed && !isRefreshing) || props.refresh) {\n performInitRefresh();\n }\n }, [props.initRefresh, pullAnimHeight, hasInitRefreshed, isRefreshing, props.refresh]);\n // 卸载清理:超时计时器\n useEffect(() => {\n return () => {\n // @ts-ignore\n if (pullTimeout) clearTimeout(pullTimeout);\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n };\n }, [pullTimeout]);\n\n // 释放手指\n const onRelease = () => {\n // 重置偏移位置\n pan.flattenOffset();\n // @ts-ignore\n const panValue = pan._value;\n const emitPullProgress = (distance: number) => {\n const percent = pullAnimHeight > 0 ? (distance / pullAnimHeight) * 100 : 0;\n props.onPullProgress?.({ distance, percent });\n };\n // 拉动距离大于设定下拉高度\n if (panValue >= pullAnimHeight) {\n emitPullProgress(pullAnimHeight);\n animatedTo(pullAnimHeight, () => {\n updatePullState(PullState.LOADING);\n // 如果有回调则调用,否则走默认内部流程(iOS 默认也支持)\n if (props.onRequest) {\n props.onRequest();\n } else {\n setInternalRefreshing(true);\n // 启动一个自动结束计时器,避免没有外部状态时卡住\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n androidAutoEndRef.current = setTimeout(() => {\n setInternalRefreshing(false);\n }, props?.msHoldingTime ?? 1000);\n }\n });\n // 有拉动距离但是不够设定的下拉高度\n } else if (panValue > 0) {\n updatePullState(PullState.FINISH);\n emitPullProgress(0);\n setMoveHeight(0);\n setMovePercent(0);\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n // 否则就是初始状态\n } else {\n updatePullState(PullState.INIT);\n setIsPulling(false);\n emitPullProgress(0);\n setMoveHeight(0);\n setMovePercent(0);\n lastMoveHeightRef.current = 0;\n pan.setValue(0);\n pan.flattenOffset();\n }\n };\n\n // 更新refreshControl状态\n const updatePullState = (state: PullState) => {\n if (pullState === state) {\n return;\n }\n setPullState(state);\n renderRefreshControl(state);\n };\n\n // 下拉动画\n const animatedTo = (toValue: number, cb?: () => void) => {\n let animation: any;\n if (toValue === 0) {\n // 使用弹簧动画实现回弹效果\n animation = Animated.spring(pan, {\n toValue: toValue,\n // 回弹参数配置\n friction: 8, // 控制回弹幅度(值越小幅度越大)\n tension: 60, // 控制回弹速度(值越大速度越快)\n velocity: 1, // 初始速度,增强回弹效果\n useNativeDriver: false,\n });\n } else {\n // 针对初始加载优化动画参数\n const duration =\n !hasInitRefreshed && props.initRefresh\n ? 1000 // 初始加载时使用固定时长\n : Math.abs(((pan as any)._value - toValue) * 1.4);\n animation = Animated.timing(pan, {\n toValue: toValue,\n easing: Easing.bezier(0.1, 0.57, 0.1, 1),\n duration: duration,\n useNativeDriver: false,\n });\n }\n setAnimation(animation);\n animation.start(({ finished }: { finished: boolean }) => {\n if (finished) {\n cb && cb();\n setAnimation(undefined);\n }\n });\n };\n\n // 传递给RefreshControl组件参数用来判断状态\n const renderRefreshControl = (state?: PullState) => {\n const refreshControlProps = {\n pullAnimHeight,\n minPullDistance,\n pullState: state || pullState,\n moveHeight,\n movePercent,\n };\n if (refreshControlRef.current) {\n // @ts-ignore\n refreshControlRef.current.setRefreshControlParams(refreshControlProps);\n }\n };\n\n // 是否能移动手指 - 初始加载时禁用手势\n const canMove = (evt: any, gestureState: any) => {\n // 如果正在初始刷新,禁用手势\n if (props.initRefresh && !hasInitRefreshed) {\n return false;\n }\n // Block during refresh states\n if (isRefreshing || pullState === PullState.LOADING || pullState === PullState.HOLDING) {\n return false;\n }\n // Block if already pulling\n if (isPulling) {\n return false;\n }\n // Explicitly reject upward swipes\n if (gestureState.vy < 0) {\n return false;\n }\n return scrollY <= 0 && gestureState.vy > 0 && gestureState.vy > Math.abs(gestureState.vx);\n };\n\n // 手势对象\n const panResponder = useMemo(() => {\n if (Platform.OS !== \"ios\" && props.nativeAndroidPullRefresh) {\n // Android 原生下拉时不启用自定义手势\n return PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onMoveShouldSetPanResponder: () => false,\n onPanResponderTerminationRequest: () => true,\n });\n }\n return PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: canMove,\n onMoveShouldSetPanResponderCapture: canMove,\n onPanResponderGrant: () => {\n animation && animation.stop();\n pan.flattenOffset();\n // @ts-ignore\n pan.setOffset(pan._value);\n updatePullState(PullState.PULLING);\n pullTimeout && clearTimeout(pullTimeout);\n },\n onPanResponderMove: (evt, gestureState) => {\n setIsPulling(true);\n // @ts-ignore\n const offset = pan._offset;\n let value = Math.max(offset + gestureState.dy, 0);\n const effectiveDistance = Math.max(offset + gestureState.dy / 2.2, 0);\n if (value > 0) {\n // 弹簧劲度系数\n pan.setValue(gestureState.dy / 2.2);\n } else {\n pan.setValue(-offset);\n }\n setMoveHeight(value);\n const percent = (value / pullAnimHeight) * 100;\n setMovePercent(percent);\n lastMoveHeightRef.current = effectiveDistance;\n props.onPullProgress?.({\n distance: effectiveDistance,\n percent: pullAnimHeight > 0 ? (effectiveDistance / pullAnimHeight) * 100 : 0,\n });\n renderRefreshControl();\n },\n onPanResponderRelease: onRelease,\n onPanResponderTerminationRequest() {\n if (isPulling || pullState === PullState.PULLING) {\n return false;\n }\n return true;\n },\n onPanResponderTerminate: onRelease,\n onShouldBlockNativeResponder() {\n return isPulling || pullState === PullState.PULLING;\n },\n });\n }, [\n isPulling,\n scrollY,\n props.initRefresh,\n hasInitRefreshed,\n pullAnimHeight,\n props.nativeAndroidPullRefresh,\n isRefreshing,\n pullState,\n ]);\n\n // 根据外层传递参数变化进行更新执行(自定义实现启用时)\n useEffect(() => {\n if (Platform.OS !== \"ios\" && props.nativeAndroidPullRefresh) return;\n if (pullState === PullState.PULLING && !props.initRefresh) {\n return;\n }\n // 加载中\n const effectiveRefreshing = !!props.isRefreshing || internalRefreshing;\n if (effectiveRefreshing === true && !isRefreshing) {\n props.onPullProgress?.({ distance: pullAnimHeight, percent: 100 });\n animatedTo(pullAnimHeight);\n setIsRefreshing(true);\n updatePullState(PullState.LOADING);\n }\n\n // 外层加载结束 需要重置位置\n if (effectiveRefreshing === false && isRefreshing) {\n setIsPulling(false);\n updatePullState(PullState.HOLDING);\n setPullTimeout(\n //@ts-ignore\n setTimeout(() => {\n pan.flattenOffset();\n setMoveHeight(0);\n setMovePercent(0);\n props.onPullProgress?.({ distance: 0, percent: 0 });\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n updatePullState(PullState.FINISH);\n }, props?.msHoldingTime ?? 1000),\n );\n\n setIsRefreshing(false);\n }\n }, [isRefreshing, props.msHoldingTime, props.isRefreshing, pullState, internalRefreshing]);\n\n // RefreshControl组件初始化计算\n const onLayout = (evt: LayoutChangeEvent) => {\n const height = props.pullAnimHeight || evt.nativeEvent.layout.height;\n setPullAnimHeight(height);\n setMinPullDistance(props.minPullDistance || height);\n setTop(-height);\n };\n\n // 重写ScrollView的onScroll事件(自定义:用于手势门控/头部位置; Android 原生:注入 RefreshControl)\n const scrollContent = useMemo(() => {\n return React.Children.map(props.children, (child: any) => {\n const originalOnScroll = child.props.onScroll;\n const hasNativeDriver =\n originalOnScroll &&\n (originalOnScroll[\"__isNative\"] === true || (originalOnScroll as any)?._animation?.useNativeDriver === true);\n\n const injectedProps =\n Platform.OS === \"android\" && props.nativeAndroidPullRefresh\n ? {\n refreshControl: (\n <RNRefreshControl\n {...(props.androidRefreshProps || {})}\n colors={((props.androidRefreshProps as any)?.colors ?? props.androidColors) as any}\n refreshing={!!props.isRefreshing || internalRefreshing}\n onRefresh={() => {\n if (!!props.isRefreshing || internalRefreshing) return;\n try {\n props.onRequest && props.onRequest();\n } finally {\n // 默认启用:无回调或未受控时自动结束\n if (!props.onRequest) {\n setInternalRefreshing(true);\n }\n // 无论是否有回调,都启动一个兜底自动结束(避免卡住)\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n androidAutoEndRef.current = setTimeout(() => {\n setInternalRefreshing(false);\n }, props?.msHoldingTime ?? 1000);\n }\n }}\n />\n ),\n onScroll: (evt: any) => {\n if (originalOnScroll && typeof originalOnScroll === \"function\") {\n originalOnScroll(evt);\n }\n },\n }\n : hasNativeDriver\n ? {\n // When the child uses native-driver Animated.event, keep it intact to avoid crashes\n onScroll: originalOnScroll,\n onMomentumScrollEnd: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n child.props.onMomentumScrollEnd && child.props.onMomentumScrollEnd(evt);\n },\n onScrollEndDrag: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n // Keep header position in loading state\n if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {\n const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);\n viewRef.current &&\n viewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n animatedViewRef.current &&\n animatedViewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n }\n child.props.onScrollEndDrag && child.props.onScrollEndDrag(evt);\n },\n }\n : {\n onScroll: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n // iOS下拉刷新Loading时,ScrollView向上滑动的时候,refreshControl部分同样上滑\n if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {\n const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);\n viewRef.current &&\n viewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n animatedViewRef.current &&\n animatedViewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n }\n if (originalOnScroll && typeof originalOnScroll === \"function\") {\n originalOnScroll(evt);\n }\n },\n };\n\n return React.cloneElement(child, {\n scrollEventThrottle: 1,\n ...injectedProps,\n });\n });\n }, [\n pullState,\n props.children,\n pullAnimHeight,\n internalRefreshing,\n props.isRefreshing,\n props.nativeAndroidPullRefresh,\n ]);\n\n // 增加Animated.View控制ScrollView展示位置(自定义)\n const content = useMemo(() => {\n if (Platform.OS === \"android\" && props.nativeAndroidPullRefresh) {\n // Android 直接返回内容(由 RN RefreshControl 控制)\n return <>{scrollContent}</>;\n }\n return (\n <Animated.View\n // @ts-ignore\n ref={viewRef}\n style={{\n transform: [{ translateY: pan }],\n flex: 1,\n }}\n >\n {scrollContent}\n </Animated.View>\n );\n }, [pan, scrollContent, props.nativeAndroidPullRefresh]);\n\n return (\n <View\n style={[styles.container, props.style]}\n {...(Platform.OS === \"ios\" || !props.nativeAndroidPullRefresh ? panResponder.panHandlers : {})}\n testID=\"refresh-container\"\n >\n {Platform.OS === \"ios\" || !props.nativeAndroidPullRefresh ? (\n <Animated.View\n // @ts-ignore\n ref={animatedViewRef}\n onLayout={onLayout}\n style={[\n styles.freshItem,\n {\n top: top,\n height: props.pullAnimHeight,\n transform: [{ translateY: pan }],\n },\n props.controlStyle,\n ]}\n >\n {/* @ts-ignore */}\n <CustomRefreshControl ref={refreshControlRef} {...props} movePercent={movePercent} />\n </Animated.View>\n ) : null}\n {content}\n </View>\n );\n}\nPullRefresh.defaultProps = PullRefreshDefaultProps;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n flex: 1,\n },\n freshItem: {\n position: \"absolute\",\n width: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1,\n },\n});\n"],"names":["CustomRefreshControl","RefreshControl","PullRefresh","props","useMounted","_useState","useState","_useState2","_slicedToArray","pullAnimHeight","setPullAnimHeight","_useState3","_useState4","minPullDistance","setMinPullDistance","_useState5","Animated","Value","_useState6","pan","_useState7","_useState8","scrollY","setScrollY","_useState9","_useState0","isPulling","setIsPulling","_useState1","_useState10","isRefreshing","setIsRefreshing","_useState11","_useState12","internalRefreshing","setInternalRefreshing","androidAutoEndRef","useRef","_useState13","_useState14","animation","setAnimation","_useState15","PullState","INIT","_useState16","pullState","setPullState","_useState17","_useState18","moveHeight","setMoveHeight","_useState19","_useState20","movePercent","setMovePercent","_useState21","_useState22","pullTimeout","setPullTimeout","refreshControlRef","viewRef","animatedViewRef","_useState23","_useState24","top","setTop","lastMoveHeightRef","_useState25","_useState26","hasInitRefreshed","setHasInitRefreshed","performInitRefresh","initRefresh","refresh","updatePullState","LOADING","animatedTo","onRequest","useEffect","current","clearTimeout","onRelease","flattenOffset","panValue","_value","emitPullProgress","distance","_props$onPullProgress","percent","onPullProgress","call","_props$msHoldingTime","setTimeout","msHoldingTime","FINISH","setValue","state","renderRefreshControl","toValue","cb","spring","friction","tension","velocity","useNativeDriver","duration","Math","abs","timing","easing","Easing","bezier","start","_ref","finished","refreshControlProps","setRefreshControlParams","canMove","evt","gestureState","HOLDING","vy","vx","panResponder","useMemo","Platform","OS","nativeAndroidPullRefresh","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderTerminationRequest","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponderCapture","onPanResponderGrant","stop","setOffset","PULLING","onPanResponderMove","_props$onPullProgress2","offset","_offset","value","max","dy","effectiveDistance","onPanResponderRelease","onPanResponderTerminate","onShouldBlockNativeResponder","effectiveRefreshing","_props$onPullProgress3","_props$msHoldingTime2","_props$onPullProgress4","onLayout","height","nativeEvent","layout","scrollContent","React","Children","map","children","child","_originalOnScroll$_an","_props$androidRefresh","_props$androidRefresh2","originalOnScroll","onScroll","hasNativeDriver","_animation","injectedProps","refreshControl","createElement","RNRefreshControl","_objectSpread","androidRefreshProps","colors","androidColors","refreshing","onRefresh","_props$msHoldingTime3","onMomentumScrollEnd","contentOffset","y","onScrollEndDrag","setNativeProps","style","transform","translateY","cloneElement","scrollEventThrottle","content","View","ref","flex","styles","container","panHandlers","testID","freshItem","controlStyle","defaultProps","PullRefreshDefaultProps","StyleSheet","overflow","position","width","justifyContent","alignItems","zIndex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PullRefresh.js","sources":["../../../../src/components/PullRefresh/PullRefresh.tsx"],"sourcesContent":["import React, { useState, useRef, useMemo, useEffect } from \"react\";\nimport {\n View,\n StyleSheet,\n Animated,\n PanResponder,\n Easing,\n LayoutChangeEvent,\n Platform,\n RefreshControl as RNRefreshControl,\n} from \"react-native\";\nimport { RedsPullRefresh, PullRefreshDefaultProps, PullState } from \"./interface/index\";\nimport RefreshControl from \"./component\";\n// alias to avoid confusion when reading diff\nconst CustomRefreshControl = RefreshControl;\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nexport default function PullRefresh(props: RedsPullRefresh) {\n useMounted(\"PullRefresh\");\n // RefreshControl组件高度\n const [pullAnimHeight, setPullAnimHeight] = useState(0);\n\n // 触发刷新的最小下拉距离\n const [minPullDistance, setMinPullDistance] = useState(0);\n\n // 手势\n const [pan] = useState(new Animated.Value(0));\n\n // 滚动距离\n const [scrollY, setScrollY] = useState<number>(0);\n\n // 是否在下拉中\n const [isPulling, setIsPulling] = useState<boolean>(false);\n\n // 是否在刷新中\n const [isRefreshing, setIsRefreshing] = useState<boolean>(false);\n\n // 内部刷新状态(用于默认启用,特别是 Android 或未提供回调时)\n const [internalRefreshing, setInternalRefreshing] = useState<boolean>(false);\n // Android 自动结束计时器\n const androidAutoEndRef = useRef<any>();\n\n // 组合动画\n const [animation, setAnimation] = useState<Animated.CompositeAnimation>();\n\n // 拉取状态\n const [pullState, setPullState] = useState<PullState>(PullState.INIT);\n\n // 移动高度\n const [moveHeight, setMoveHeight] = useState<number>(0);\n\n // 移动百分比\n const [movePercent, setMovePercent] = useState<number>(0);\n\n // 下拉时间间隔\n const [pullTimeout, setPullTimeout] = useState();\n\n // 下拉图标\n const refreshControlRef = useRef();\n\n // view ref\n const viewRef = useRef<View>();\n\n // 动画ref\n const animatedViewRef = useRef<View>();\n\n // 下拉组件的初始top值\n const [top, setTop] = useState<number>(-1000);\n\n // 记录最后一次有效位移(与 pan 一致),刷新时保持稳定\n const lastMoveHeightRef = useRef<number>(0);\n\n // 标记是否已经执行过初始刷新\n const [hasInitRefreshed, setHasInitRefreshed] = useState<boolean>(false);\n\n // 执行初始刷新的方法\n const performInitRefresh = () => {\n if ((pullAnimHeight > 0 && !hasInitRefreshed && props.initRefresh) || props.refresh) {\n // 设置初始状态为拉取状态\n updatePullState(PullState.LOADING);\n\n // 执行下拉动画\n animatedTo(pullAnimHeight, () => {\n setHasInitRefreshed(true);\n setIsRefreshing(true);\n setIsPulling(true);\n // 触发刷新回调\n props.onRequest && props.onRequest();\n });\n }\n };\n\n // 监听 initRefresh 属性和相关依赖变化\n useEffect(() => {\n if ((props.initRefresh && pullAnimHeight > 0 && !hasInitRefreshed && !isRefreshing) || props.refresh) {\n performInitRefresh();\n }\n }, [props.initRefresh, pullAnimHeight, hasInitRefreshed, isRefreshing, props.refresh]);\n // 卸载清理:超时计时器\n useEffect(() => {\n return () => {\n // @ts-ignore\n if (pullTimeout) clearTimeout(pullTimeout);\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n };\n }, [pullTimeout]);\n\n // 释放手指\n const onRelease = () => {\n // 重置偏移位置\n pan.flattenOffset();\n // @ts-ignore\n const panValue = pan._value;\n const emitPullProgress = (distance: number) => {\n const percent = pullAnimHeight > 0 ? (distance / pullAnimHeight) * 100 : 0;\n props.onPullProgress?.({ distance, percent });\n };\n // 拉动距离大于设定下拉高度\n if (panValue >= pullAnimHeight) {\n emitPullProgress(pullAnimHeight);\n animatedTo(pullAnimHeight, () => {\n updatePullState(PullState.LOADING);\n // 如果有回调则调用,否则走默认内部流程(iOS 默认也支持)\n if (props.onRequest) {\n props.onRequest();\n } else {\n setInternalRefreshing(true);\n // 启动一个自动结束计时器,避免没有外部状态时卡住\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n androidAutoEndRef.current = setTimeout(() => {\n setInternalRefreshing(false);\n }, props?.msHoldingTime ?? 1000);\n }\n });\n // 有拉动距离但是不够设定的下拉高度\n } else if (panValue > 0) {\n updatePullState(PullState.FINISH);\n emitPullProgress(0);\n setMoveHeight(0);\n setMovePercent(0);\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n // 否则就是初始状态\n } else {\n updatePullState(PullState.INIT);\n setIsPulling(false);\n emitPullProgress(0);\n setMoveHeight(0);\n setMovePercent(0);\n lastMoveHeightRef.current = 0;\n pan.setValue(0);\n pan.flattenOffset();\n }\n };\n\n // 更新refreshControl状态\n const updatePullState = (state: PullState) => {\n if (pullState === state) {\n return;\n }\n setPullState(state);\n renderRefreshControl(state);\n };\n\n // 下拉动画\n const animatedTo = (toValue: number, cb?: () => void) => {\n let animation: any;\n if (toValue === 0) {\n // 使用弹簧动画实现回弹效果\n animation = Animated.spring(pan, {\n toValue: toValue,\n // 回弹参数配置\n friction: 8, // 控制回弹幅度(值越小幅度越大)\n tension: 60, // 控制回弹速度(值越大速度越快)\n velocity: 1, // 初始速度,增强回弹效果\n useNativeDriver: false,\n });\n } else {\n // 针对初始加载优化动画参数\n const duration =\n !hasInitRefreshed && props.initRefresh\n ? 1000 // 初始加载时使用固定时长\n : Math.abs(((pan as any)._value - toValue) * 1.4);\n animation = Animated.timing(pan, {\n toValue: toValue,\n easing: Easing.bezier(0.1, 0.57, 0.1, 1),\n duration: duration,\n useNativeDriver: false,\n });\n }\n setAnimation(animation);\n animation.start(({ finished }: { finished: boolean }) => {\n cb && cb();\n setAnimation(undefined);\n });\n };\n\n // 传递给RefreshControl组件参数用来判断状态\n const renderRefreshControl = (state?: PullState) => {\n const refreshControlProps = {\n pullAnimHeight,\n minPullDistance,\n pullState: state || pullState,\n moveHeight,\n movePercent,\n };\n if (refreshControlRef.current) {\n // @ts-ignore\n refreshControlRef.current.setRefreshControlParams(refreshControlProps);\n }\n };\n\n // 是否能移动手指 - 初始加载时禁用手势\n const canMove = (evt: any, gestureState: any) => {\n // 如果正在初始刷新,禁用手势\n if (props.initRefresh && !hasInitRefreshed) {\n return false;\n }\n // Block during refresh states\n if (isRefreshing || pullState === PullState.LOADING || pullState === PullState.HOLDING) {\n return false;\n }\n // Block if already pulling\n if (isPulling) {\n return false;\n }\n // Explicitly reject upward swipes\n if (gestureState.vy < 0) {\n return false;\n }\n return scrollY <= 0 && gestureState.vy > 0 && gestureState.vy > Math.abs(gestureState.vx);\n };\n\n // 手势对象\n const panResponder = useMemo(() => {\n if (Platform.OS !== \"ios\" && props.nativeAndroidPullRefresh) {\n // Android 原生下拉时不启用自定义手势\n return PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onMoveShouldSetPanResponder: () => false,\n onPanResponderTerminationRequest: () => true,\n });\n }\n return PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: canMove,\n onMoveShouldSetPanResponderCapture: canMove,\n onPanResponderGrant: () => {\n animation && animation.stop();\n pan.flattenOffset();\n // @ts-ignore\n pan.setOffset(pan._value);\n updatePullState(PullState.PULLING);\n pullTimeout && clearTimeout(pullTimeout);\n },\n onPanResponderMove: (evt, gestureState) => {\n setIsPulling(true);\n // @ts-ignore\n const offset = pan._offset;\n let value = Math.max(offset + gestureState.dy, 0);\n const effectiveDistance = Math.max(offset + gestureState.dy / 2.2, 0);\n if (value > 0) {\n // 弹簧劲度系数\n pan.setValue(gestureState.dy / 2.2);\n } else {\n pan.setValue(-offset);\n }\n setMoveHeight(value);\n const percent = (value / pullAnimHeight) * 100;\n setMovePercent(percent);\n lastMoveHeightRef.current = effectiveDistance;\n props.onPullProgress?.({\n distance: effectiveDistance,\n percent: pullAnimHeight > 0 ? (effectiveDistance / pullAnimHeight) * 100 : 0,\n });\n renderRefreshControl();\n },\n onPanResponderRelease: onRelease,\n onPanResponderTerminationRequest() {\n if (isPulling || pullState === PullState.PULLING) {\n return false;\n }\n return true;\n },\n onPanResponderTerminate: onRelease,\n onShouldBlockNativeResponder() {\n return isPulling || pullState === PullState.PULLING;\n },\n });\n }, [\n isPulling,\n scrollY,\n props.initRefresh,\n hasInitRefreshed,\n pullAnimHeight,\n props.nativeAndroidPullRefresh,\n isRefreshing,\n pullState,\n ]);\n\n // 根据外层传递参数变化进行更新执行(自定义实现启用时)\n useEffect(() => {\n if (Platform.OS !== \"ios\" && props.nativeAndroidPullRefresh) return;\n if (pullState === PullState.PULLING && !props.initRefresh) {\n return;\n }\n // 加载中\n const effectiveRefreshing = !!props.isRefreshing || internalRefreshing;\n if (effectiveRefreshing === true && !isRefreshing) {\n props.onPullProgress?.({ distance: pullAnimHeight, percent: 100 });\n animatedTo(pullAnimHeight);\n setIsRefreshing(true);\n updatePullState(PullState.LOADING);\n }\n\n // 外层加载结束 需要重置位置\n if (effectiveRefreshing === false && isRefreshing) {\n setIsPulling(false);\n updatePullState(PullState.HOLDING);\n setPullTimeout(\n //@ts-ignore\n setTimeout(() => {\n pan.flattenOffset();\n setMoveHeight(0);\n setMovePercent(0);\n props.onPullProgress?.({ distance: 0, percent: 0 });\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n updatePullState(PullState.FINISH);\n }, props?.msHoldingTime ?? 1000),\n );\n setIsRefreshing(false);\n }\n // 滚动结束了但是还有下拉距离\n if (effectiveRefreshing === false && pullState === PullState.FINISH) {\n console.log(\"滚动结束了但是还有下拉距离\");\n setIsPulling(false);\n updatePullState(PullState.HOLDING);\n setPullTimeout(\n //@ts-ignore\n setTimeout(() => {\n pan.flattenOffset();\n setMoveHeight(0);\n setMovePercent(0);\n props.onPullProgress?.({ distance: 0, percent: 0 });\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n updatePullState(PullState.FINISH);\n }, props?.msHoldingTime ?? 1000),\n );\n\n setIsRefreshing(false);\n }\n }, [isRefreshing, props.msHoldingTime, props.isRefreshing, pullState, internalRefreshing]);\n\n // RefreshControl组件初始化计算\n const onLayout = (evt: LayoutChangeEvent) => {\n const height = props.pullAnimHeight || evt.nativeEvent.layout.height;\n setPullAnimHeight(height);\n setMinPullDistance(props.minPullDistance || height);\n setTop(-height);\n };\n\n // 重写ScrollView的onScroll事件(自定义:用于手势门控/头部位置; Android 原生:注入 RefreshControl)\n const scrollContent = useMemo(() => {\n return React.Children.map(props.children, (child: any) => {\n const originalOnScroll = child.props.onScroll;\n const hasNativeDriver =\n originalOnScroll &&\n (originalOnScroll[\"__isNative\"] === true || (originalOnScroll as any)?._animation?.useNativeDriver === true);\n\n const injectedProps =\n Platform.OS === \"android\" && props.nativeAndroidPullRefresh\n ? {\n refreshControl: (\n <RNRefreshControl\n {...(props.androidRefreshProps || {})}\n colors={((props.androidRefreshProps as any)?.colors ?? props.androidColors) as any}\n refreshing={!!props.isRefreshing || internalRefreshing}\n onRefresh={() => {\n if (!!props.isRefreshing || internalRefreshing) return;\n try {\n props.onRequest && props.onRequest();\n } finally {\n // 默认启用:无回调或未受控时自动结束\n if (!props.onRequest) {\n setInternalRefreshing(true);\n }\n // 无论是否有回调,都启动一个兜底自动结束(避免卡住)\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n androidAutoEndRef.current = setTimeout(() => {\n setInternalRefreshing(false);\n }, props?.msHoldingTime ?? 1000);\n }\n }}\n />\n ),\n onScroll: (evt: any) => {\n if (originalOnScroll && typeof originalOnScroll === \"function\") {\n originalOnScroll(evt);\n }\n },\n }\n : hasNativeDriver\n ? {\n // When the child uses native-driver Animated.event, keep it intact to avoid crashes\n onScroll: originalOnScroll,\n onMomentumScrollEnd: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n child.props.onMomentumScrollEnd && child.props.onMomentumScrollEnd(evt);\n },\n onScrollEndDrag: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n // Keep header position in loading state\n if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {\n const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);\n viewRef.current &&\n viewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n animatedViewRef.current &&\n animatedViewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n }\n child.props.onScrollEndDrag && child.props.onScrollEndDrag(evt);\n },\n }\n : {\n onScroll: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n // iOS下拉刷新Loading时,ScrollView向上滑动的时候,refreshControl部分同样上滑\n if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {\n const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);\n viewRef.current &&\n viewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n animatedViewRef.current &&\n animatedViewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n }\n if (originalOnScroll && typeof originalOnScroll === \"function\") {\n originalOnScroll(evt);\n }\n },\n };\n\n return React.cloneElement(child, {\n scrollEventThrottle: 1,\n ...injectedProps,\n });\n });\n }, [\n pullState,\n props.children,\n pullAnimHeight,\n internalRefreshing,\n props.isRefreshing,\n props.nativeAndroidPullRefresh,\n ]);\n\n // 增加Animated.View控制ScrollView展示位置(自定义)\n const content = useMemo(() => {\n if (Platform.OS === \"android\" && props.nativeAndroidPullRefresh) {\n // Android 直接返回内容(由 RN RefreshControl 控制)\n return <>{scrollContent}</>;\n }\n return (\n <Animated.View\n // @ts-ignore\n ref={viewRef}\n style={{\n transform: [{ translateY: pan }],\n flex: 1,\n }}\n >\n {scrollContent}\n </Animated.View>\n );\n }, [pan, scrollContent, props.nativeAndroidPullRefresh]);\n\n return (\n <View\n style={[styles.container, props.style]}\n {...(Platform.OS === \"ios\" || !props.nativeAndroidPullRefresh ? panResponder.panHandlers : {})}\n testID=\"refresh-container\"\n >\n {Platform.OS === \"ios\" || !props.nativeAndroidPullRefresh ? (\n <Animated.View\n // @ts-ignore\n ref={animatedViewRef}\n onLayout={onLayout}\n style={[\n styles.freshItem,\n {\n top: top,\n height: props.pullAnimHeight,\n transform: [{ translateY: pan }],\n },\n props.controlStyle,\n ]}\n >\n {/* @ts-ignore */}\n <CustomRefreshControl ref={refreshControlRef} {...props} movePercent={movePercent} />\n </Animated.View>\n ) : null}\n {content}\n </View>\n );\n}\nPullRefresh.defaultProps = PullRefreshDefaultProps;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n flex: 1,\n },\n freshItem: {\n position: \"absolute\",\n width: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1,\n },\n});\n"],"names":["CustomRefreshControl","RefreshControl","PullRefresh","props","useMounted","_useState","useState","_useState2","_slicedToArray","pullAnimHeight","setPullAnimHeight","_useState3","_useState4","minPullDistance","setMinPullDistance","_useState5","Animated","Value","_useState6","pan","_useState7","_useState8","scrollY","setScrollY","_useState9","_useState0","isPulling","setIsPulling","_useState1","_useState10","isRefreshing","setIsRefreshing","_useState11","_useState12","internalRefreshing","setInternalRefreshing","androidAutoEndRef","useRef","_useState13","_useState14","animation","setAnimation","_useState15","PullState","INIT","_useState16","pullState","setPullState","_useState17","_useState18","moveHeight","setMoveHeight","_useState19","_useState20","movePercent","setMovePercent","_useState21","_useState22","pullTimeout","setPullTimeout","refreshControlRef","viewRef","animatedViewRef","_useState23","_useState24","top","setTop","lastMoveHeightRef","_useState25","_useState26","hasInitRefreshed","setHasInitRefreshed","performInitRefresh","initRefresh","refresh","updatePullState","LOADING","animatedTo","onRequest","useEffect","current","clearTimeout","onRelease","flattenOffset","panValue","_value","emitPullProgress","distance","_props$onPullProgress","percent","onPullProgress","call","_props$msHoldingTime","setTimeout","msHoldingTime","FINISH","setValue","state","renderRefreshControl","toValue","cb","spring","friction","tension","velocity","useNativeDriver","duration","Math","abs","timing","easing","Easing","bezier","start","_ref","finished","refreshControlProps","setRefreshControlParams","canMove","evt","gestureState","HOLDING","vy","vx","panResponder","useMemo","Platform","OS","nativeAndroidPullRefresh","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderTerminationRequest","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponderCapture","onPanResponderGrant","stop","setOffset","PULLING","onPanResponderMove","_props$onPullProgress2","offset","_offset","value","max","dy","effectiveDistance","onPanResponderRelease","onPanResponderTerminate","onShouldBlockNativeResponder","effectiveRefreshing","_props$onPullProgress3","_props$msHoldingTime2","_props$onPullProgress4","_props$msHoldingTime3","console","log","_props$onPullProgress5","onLayout","height","nativeEvent","layout","scrollContent","React","Children","map","children","child","_originalOnScroll$_an","_props$androidRefresh","_props$androidRefresh2","originalOnScroll","onScroll","hasNativeDriver","_animation","injectedProps","refreshControl","createElement","RNRefreshControl","_objectSpread","androidRefreshProps","colors","androidColors","refreshing","onRefresh","_props$msHoldingTime4","onMomentumScrollEnd","contentOffset","y","onScrollEndDrag","setNativeProps","style","transform","translateY","cloneElement","scrollEventThrottle","content","View","ref","flex","styles","container","panHandlers","testID","freshItem","controlStyle","defaultProps","PullRefreshDefaultProps","StyleSheet","overflow","position","width","justifyContent","alignItems","zIndex"],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../../_chunks/CbISStRO.js');
|
|
5
6
|
var React = require('react');
|
|
6
7
|
var reactNative = require('react-native');
|
|
7
8
|
var components_ProgressIndicator_ProgressIndicator = require('../ProgressIndicator/ProgressIndicator.js');
|
|
8
|
-
require('../../_chunks/CbISStRO.js');
|
|
9
9
|
require('../../_chunks/CJ7e9O3k.js');
|
|
10
10
|
require('../ProgressIndicator/lottie/getLottieSource.js');
|
|
11
11
|
require('../ProgressIndicator/lottie/index.js');
|
|
@@ -35,7 +35,7 @@ var IOSRefreshControl = function IOSRefreshControl(_ref) {
|
|
|
35
35
|
var onRefresh = _ref.onRefresh,
|
|
36
36
|
refreshing = _ref.refreshing,
|
|
37
37
|
progressViewOffset = _ref.progressViewOffset,
|
|
38
|
-
|
|
38
|
+
style = _ref.style;
|
|
39
39
|
return /* @__PURE__ */React.createElement(reactNative.RefreshControl, {
|
|
40
40
|
refreshing: refreshing,
|
|
41
41
|
onRefresh: onRefresh,
|
|
@@ -43,10 +43,9 @@ var IOSRefreshControl = function IOSRefreshControl(_ref) {
|
|
|
43
43
|
style: {
|
|
44
44
|
backgroundColor: "transparent"
|
|
45
45
|
},
|
|
46
|
-
colors: colors,
|
|
47
46
|
tintColor: "transparent"
|
|
48
47
|
}, refreshing && /* @__PURE__ */React.createElement(reactNative.View, {
|
|
49
|
-
style: {
|
|
48
|
+
style: _rollupPluginBabelHelpers._objectSpread2({
|
|
50
49
|
position: "absolute",
|
|
51
50
|
top: 0,
|
|
52
51
|
left: 0,
|
|
@@ -54,9 +53,8 @@ var IOSRefreshControl = function IOSRefreshControl(_ref) {
|
|
|
54
53
|
zIndex: 1e3,
|
|
55
54
|
alignItems: "center",
|
|
56
55
|
width: "100%",
|
|
57
|
-
backgroundColor: "transparent",
|
|
58
56
|
justifyContent: "center"
|
|
59
|
-
}
|
|
57
|
+
}, style)
|
|
60
58
|
}, /* @__PURE__ */React.createElement(components_ProgressIndicator_ProgressIndicator.default, {
|
|
61
59
|
type: "refresh",
|
|
62
60
|
size: 36
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshControl.js","sources":["../../../../src/components/PullRefresh/RefreshControl.tsx"],"sourcesContent":["import React from \"react\";\nimport { View, RefreshControl as RNRefreshControl } from \"react-native\";\nimport { ProgressIndicator } from \"../ProgressIndicator\";\n\ninterface IOSRefreshControlProps {\n onRefresh: () => void;\n refreshing: boolean;\n progressViewOffset?: number;\n height?: number;\n
|
|
1
|
+
{"version":3,"file":"RefreshControl.js","sources":["../../../../src/components/PullRefresh/RefreshControl.tsx"],"sourcesContent":["import React from \"react\";\nimport { View, RefreshControl as RNRefreshControl } from \"react-native\";\nimport { ProgressIndicator } from \"../ProgressIndicator\";\n\ninterface IOSRefreshControlProps {\n onRefresh: () => void;\n refreshing: boolean;\n progressViewOffset?: number;\n height?: number;\n style?: any;\n}\nconst IOSRefreshControl = ({ onRefresh, refreshing, progressViewOffset, style }: IOSRefreshControlProps) => {\n return (\n <RNRefreshControl\n refreshing={refreshing}\n onRefresh={onRefresh}\n progressViewOffset={progressViewOffset}\n style={{ backgroundColor: \"transparent\" }}\n tintColor=\"transparent\" // 隐藏原生指示器\n >\n {refreshing && (\n <View\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n zIndex: 1000,\n alignItems: \"center\",\n width: \"100%\",\n justifyContent: \"center\",\n ...style,\n }}\n >\n <ProgressIndicator type={\"refresh\"} size={36} />\n </View>\n )}\n </RNRefreshControl>\n );\n};\n\nexport default IOSRefreshControl;\n"],"names":["IOSRefreshControl","onRefresh","refreshing","_ref","progressViewOffset","style","React","createElement","RNRefreshControl","backgroundColor","tintColor","View","_objectSpread","position","top","left","right","zIndex","alignItems","width","justifyContent","ProgressIndicator","type","size"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,IAAMA,oBAAoB,SAApBA,wBAAsG;AAAA,EAAA,IAA/EC,iBAAAA;IAAWC,UAAY,GAAAC,IAAA,CAAZD,UAAY;IAAAE,kBAAA,GAAAD,IAAA,CAAAC,kBAAA;IAAoBC,aAAAA;AAEpE,EAAA,sBAAAC,KAAA,CAAAC,aAAA,CAACC,0BAAA,EAAA;AACCN,IAAAA,UAAA,EAAAA,UAAA;AACAD,IAAAA,SAAA,EAAAA,SAAA;AACAG,IAAAA,kBAAA,EAAAA,kBAAA;AACAC,IAAAA,KAAA,EAAO;AAAEI,MAAAA,eAAA,EAAiB,aAAA;KAAc;AACxCC,IAAAA,SAAU,EAAA,aAAA;GAAA,EAETR,UACC,mBAAAI,KAAA,CAAAC,aAAA,CAACI,gBAAA,EAAA;AACCN,IAAAA,KAAO,EAAAO,wCAAA,CAAA;AACLC,MAAAA,QAAU,EAAA,UAAA;AACVC,MAAAA,GAAK,EAAA,CAAA;AACLC,MAAAA,IAAM,EAAA,CAAA;AACNC,MAAAA,KAAO,EAAA,CAAA;AACPC,MAAAA,MAAQ,EAAA,GAAA;AACRC,MAAAA,UAAY,EAAA,QAAA;AACZC,MAAAA,KAAO,EAAA,MAAA;AACPC,MAAAA,cAAgB,EAAA,QAAA;AAAA,KAAA,EACbf,KAAA,CAAA;AACL,GAAA,iBAECC,KAAA,CAAAC,aAAA,CAAAc,sDAAA,EAAA;AAAkBC,IAAAA,IAAM,EAAA,SAAA;AAAWC,IAAAA,MAAM,EAAA;GAAI,CAChD,CAEJ,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -202,11 +202,9 @@ function PullRefresh(props) {
|
|
|
202
202
|
}
|
|
203
203
|
setAnimation(animation2);
|
|
204
204
|
animation2.start(function (_ref) {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
setAnimation(void 0);
|
|
209
|
-
}
|
|
205
|
+
_ref.finished;
|
|
206
|
+
cb && cb();
|
|
207
|
+
setAnimation(void 0);
|
|
210
208
|
});
|
|
211
209
|
};
|
|
212
210
|
var renderRefreshControl = function renderRefreshControl(state) {
|
|
@@ -342,6 +340,33 @@ function PullRefresh(props) {
|
|
|
342
340
|
}, (_props$msHoldingTime2 = props === null || props === void 0 ? void 0 : props.msHoldingTime) !== null && _props$msHoldingTime2 !== void 0 ? _props$msHoldingTime2 : 1e3));
|
|
343
341
|
setIsRefreshing(false);
|
|
344
342
|
}
|
|
343
|
+
if (effectiveRefreshing === false && pullState === PullState.FINISH) {
|
|
344
|
+
var _props$msHoldingTime3;
|
|
345
|
+
console.log("\u6EDA\u52A8\u7ED3\u675F\u4E86\u4F46\u662F\u8FD8\u6709\u4E0B\u62C9\u8DDD\u79BB");
|
|
346
|
+
setIsPulling(false);
|
|
347
|
+
updatePullState(PullState.HOLDING);
|
|
348
|
+
setPullTimeout(
|
|
349
|
+
//@ts-ignore
|
|
350
|
+
setTimeout(function () {
|
|
351
|
+
var _props$onPullProgress5;
|
|
352
|
+
pan.flattenOffset();
|
|
353
|
+
setMoveHeight(0);
|
|
354
|
+
setMovePercent(0);
|
|
355
|
+
(_props$onPullProgress5 = props.onPullProgress) === null || _props$onPullProgress5 === void 0 || _props$onPullProgress5.call(props, {
|
|
356
|
+
distance: 0,
|
|
357
|
+
percent: 0
|
|
358
|
+
});
|
|
359
|
+
lastMoveHeightRef.current = 0;
|
|
360
|
+
animatedTo(0, function () {
|
|
361
|
+
setIsPulling(false);
|
|
362
|
+
updatePullState(PullState.INIT);
|
|
363
|
+
pan.setValue(0);
|
|
364
|
+
pan.flattenOffset();
|
|
365
|
+
});
|
|
366
|
+
updatePullState(PullState.FINISH);
|
|
367
|
+
}, (_props$msHoldingTime3 = props === null || props === void 0 ? void 0 : props.msHoldingTime) !== null && _props$msHoldingTime3 !== void 0 ? _props$msHoldingTime3 : 1e3));
|
|
368
|
+
setIsRefreshing(false);
|
|
369
|
+
}
|
|
345
370
|
}, [isRefreshing, props.msHoldingTime, props.isRefreshing, pullState, internalRefreshing]);
|
|
346
371
|
var onLayout = function onLayout(evt) {
|
|
347
372
|
var height = props.pullAnimHeight || evt.nativeEvent.layout.height;
|
|
@@ -363,14 +388,14 @@ function PullRefresh(props) {
|
|
|
363
388
|
try {
|
|
364
389
|
props.onRequest && props.onRequest();
|
|
365
390
|
} finally {
|
|
366
|
-
var _props$
|
|
391
|
+
var _props$msHoldingTime4;
|
|
367
392
|
if (!props.onRequest) {
|
|
368
393
|
setInternalRefreshing(true);
|
|
369
394
|
}
|
|
370
395
|
if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);
|
|
371
396
|
androidAutoEndRef.current = setTimeout(function () {
|
|
372
397
|
setInternalRefreshing(false);
|
|
373
|
-
}, (_props$
|
|
398
|
+
}, (_props$msHoldingTime4 = props === null || props === void 0 ? void 0 : props.msHoldingTime) !== null && _props$msHoldingTime4 !== void 0 ? _props$msHoldingTime4 : 1e3);
|
|
374
399
|
}
|
|
375
400
|
}
|
|
376
401
|
})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PullRefresh.js","sources":["../../../../src/components/PullRefresh/PullRefresh.tsx"],"sourcesContent":["import React, { useState, useRef, useMemo, useEffect } from \"react\";\nimport {\n View,\n StyleSheet,\n Animated,\n PanResponder,\n Easing,\n LayoutChangeEvent,\n Platform,\n RefreshControl as RNRefreshControl,\n} from \"react-native\";\nimport { RedsPullRefresh, PullRefreshDefaultProps, PullState } from \"./interface/index\";\nimport RefreshControl from \"./component\";\n// alias to avoid confusion when reading diff\nconst CustomRefreshControl = RefreshControl;\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nexport default function PullRefresh(props: RedsPullRefresh) {\n useMounted(\"PullRefresh\");\n // RefreshControl组件高度\n const [pullAnimHeight, setPullAnimHeight] = useState(0);\n\n // 触发刷新的最小下拉距离\n const [minPullDistance, setMinPullDistance] = useState(0);\n\n // 手势\n const [pan] = useState(new Animated.Value(0));\n\n // 滚动距离\n const [scrollY, setScrollY] = useState<number>(0);\n\n // 是否在下拉中\n const [isPulling, setIsPulling] = useState<boolean>(false);\n\n // 是否在刷新中\n const [isRefreshing, setIsRefreshing] = useState<boolean>(false);\n\n // 内部刷新状态(用于默认启用,特别是 Android 或未提供回调时)\n const [internalRefreshing, setInternalRefreshing] = useState<boolean>(false);\n // Android 自动结束计时器\n const androidAutoEndRef = useRef<any>();\n\n // 组合动画\n const [animation, setAnimation] = useState<Animated.CompositeAnimation>();\n\n // 拉取状态\n const [pullState, setPullState] = useState<PullState>(PullState.INIT);\n\n // 移动高度\n const [moveHeight, setMoveHeight] = useState<number>(0);\n\n // 移动百分比\n const [movePercent, setMovePercent] = useState<number>(0);\n\n // 下拉时间间隔\n const [pullTimeout, setPullTimeout] = useState();\n\n // 下拉图标\n const refreshControlRef = useRef();\n\n // view ref\n const viewRef = useRef<View>();\n\n // 动画ref\n const animatedViewRef = useRef<View>();\n\n // 下拉组件的初始top值\n const [top, setTop] = useState<number>(-1000);\n\n // 记录最后一次有效位移(与 pan 一致),刷新时保持稳定\n const lastMoveHeightRef = useRef<number>(0);\n\n // 标记是否已经执行过初始刷新\n const [hasInitRefreshed, setHasInitRefreshed] = useState<boolean>(false);\n\n // 执行初始刷新的方法\n const performInitRefresh = () => {\n if ((pullAnimHeight > 0 && !hasInitRefreshed && props.initRefresh) || props.refresh) {\n // 设置初始状态为拉取状态\n updatePullState(PullState.LOADING);\n\n // 执行下拉动画\n animatedTo(pullAnimHeight, () => {\n setHasInitRefreshed(true);\n setIsRefreshing(true);\n setIsPulling(true);\n // 触发刷新回调\n props.onRequest && props.onRequest();\n });\n }\n };\n\n // 监听 initRefresh 属性和相关依赖变化\n useEffect(() => {\n if ((props.initRefresh && pullAnimHeight > 0 && !hasInitRefreshed && !isRefreshing) || props.refresh) {\n performInitRefresh();\n }\n }, [props.initRefresh, pullAnimHeight, hasInitRefreshed, isRefreshing, props.refresh]);\n // 卸载清理:超时计时器\n useEffect(() => {\n return () => {\n // @ts-ignore\n if (pullTimeout) clearTimeout(pullTimeout);\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n };\n }, [pullTimeout]);\n\n // 释放手指\n const onRelease = () => {\n // 重置偏移位置\n pan.flattenOffset();\n // @ts-ignore\n const panValue = pan._value;\n const emitPullProgress = (distance: number) => {\n const percent = pullAnimHeight > 0 ? (distance / pullAnimHeight) * 100 : 0;\n props.onPullProgress?.({ distance, percent });\n };\n // 拉动距离大于设定下拉高度\n if (panValue >= pullAnimHeight) {\n emitPullProgress(pullAnimHeight);\n animatedTo(pullAnimHeight, () => {\n updatePullState(PullState.LOADING);\n // 如果有回调则调用,否则走默认内部流程(iOS 默认也支持)\n if (props.onRequest) {\n props.onRequest();\n } else {\n setInternalRefreshing(true);\n // 启动一个自动结束计时器,避免没有外部状态时卡住\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n androidAutoEndRef.current = setTimeout(() => {\n setInternalRefreshing(false);\n }, props?.msHoldingTime ?? 1000);\n }\n });\n // 有拉动距离但是不够设定的下拉高度\n } else if (panValue > 0) {\n updatePullState(PullState.FINISH);\n emitPullProgress(0);\n setMoveHeight(0);\n setMovePercent(0);\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n // 否则就是初始状态\n } else {\n updatePullState(PullState.INIT);\n setIsPulling(false);\n emitPullProgress(0);\n setMoveHeight(0);\n setMovePercent(0);\n lastMoveHeightRef.current = 0;\n pan.setValue(0);\n pan.flattenOffset();\n }\n };\n\n // 更新refreshControl状态\n const updatePullState = (state: PullState) => {\n if (pullState === state) {\n return;\n }\n setPullState(state);\n renderRefreshControl(state);\n };\n\n // 下拉动画\n const animatedTo = (toValue: number, cb?: () => void) => {\n let animation: any;\n if (toValue === 0) {\n // 使用弹簧动画实现回弹效果\n animation = Animated.spring(pan, {\n toValue: toValue,\n // 回弹参数配置\n friction: 8, // 控制回弹幅度(值越小幅度越大)\n tension: 60, // 控制回弹速度(值越大速度越快)\n velocity: 1, // 初始速度,增强回弹效果\n useNativeDriver: false,\n });\n } else {\n // 针对初始加载优化动画参数\n const duration =\n !hasInitRefreshed && props.initRefresh\n ? 1000 // 初始加载时使用固定时长\n : Math.abs(((pan as any)._value - toValue) * 1.4);\n animation = Animated.timing(pan, {\n toValue: toValue,\n easing: Easing.bezier(0.1, 0.57, 0.1, 1),\n duration: duration,\n useNativeDriver: false,\n });\n }\n setAnimation(animation);\n animation.start(({ finished }: { finished: boolean }) => {\n if (finished) {\n cb && cb();\n setAnimation(undefined);\n }\n });\n };\n\n // 传递给RefreshControl组件参数用来判断状态\n const renderRefreshControl = (state?: PullState) => {\n const refreshControlProps = {\n pullAnimHeight,\n minPullDistance,\n pullState: state || pullState,\n moveHeight,\n movePercent,\n };\n if (refreshControlRef.current) {\n // @ts-ignore\n refreshControlRef.current.setRefreshControlParams(refreshControlProps);\n }\n };\n\n // 是否能移动手指 - 初始加载时禁用手势\n const canMove = (evt: any, gestureState: any) => {\n // 如果正在初始刷新,禁用手势\n if (props.initRefresh && !hasInitRefreshed) {\n return false;\n }\n // Block during refresh states\n if (isRefreshing || pullState === PullState.LOADING || pullState === PullState.HOLDING) {\n return false;\n }\n // Block if already pulling\n if (isPulling) {\n return false;\n }\n // Explicitly reject upward swipes\n if (gestureState.vy < 0) {\n return false;\n }\n return scrollY <= 0 && gestureState.vy > 0 && gestureState.vy > Math.abs(gestureState.vx);\n };\n\n // 手势对象\n const panResponder = useMemo(() => {\n if (Platform.OS !== \"ios\" && props.nativeAndroidPullRefresh) {\n // Android 原生下拉时不启用自定义手势\n return PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onMoveShouldSetPanResponder: () => false,\n onPanResponderTerminationRequest: () => true,\n });\n }\n return PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: canMove,\n onMoveShouldSetPanResponderCapture: canMove,\n onPanResponderGrant: () => {\n animation && animation.stop();\n pan.flattenOffset();\n // @ts-ignore\n pan.setOffset(pan._value);\n updatePullState(PullState.PULLING);\n pullTimeout && clearTimeout(pullTimeout);\n },\n onPanResponderMove: (evt, gestureState) => {\n setIsPulling(true);\n // @ts-ignore\n const offset = pan._offset;\n let value = Math.max(offset + gestureState.dy, 0);\n const effectiveDistance = Math.max(offset + gestureState.dy / 2.2, 0);\n if (value > 0) {\n // 弹簧劲度系数\n pan.setValue(gestureState.dy / 2.2);\n } else {\n pan.setValue(-offset);\n }\n setMoveHeight(value);\n const percent = (value / pullAnimHeight) * 100;\n setMovePercent(percent);\n lastMoveHeightRef.current = effectiveDistance;\n props.onPullProgress?.({\n distance: effectiveDistance,\n percent: pullAnimHeight > 0 ? (effectiveDistance / pullAnimHeight) * 100 : 0,\n });\n renderRefreshControl();\n },\n onPanResponderRelease: onRelease,\n onPanResponderTerminationRequest() {\n if (isPulling || pullState === PullState.PULLING) {\n return false;\n }\n return true;\n },\n onPanResponderTerminate: onRelease,\n onShouldBlockNativeResponder() {\n return isPulling || pullState === PullState.PULLING;\n },\n });\n }, [\n isPulling,\n scrollY,\n props.initRefresh,\n hasInitRefreshed,\n pullAnimHeight,\n props.nativeAndroidPullRefresh,\n isRefreshing,\n pullState,\n ]);\n\n // 根据外层传递参数变化进行更新执行(自定义实现启用时)\n useEffect(() => {\n if (Platform.OS !== \"ios\" && props.nativeAndroidPullRefresh) return;\n if (pullState === PullState.PULLING && !props.initRefresh) {\n return;\n }\n // 加载中\n const effectiveRefreshing = !!props.isRefreshing || internalRefreshing;\n if (effectiveRefreshing === true && !isRefreshing) {\n props.onPullProgress?.({ distance: pullAnimHeight, percent: 100 });\n animatedTo(pullAnimHeight);\n setIsRefreshing(true);\n updatePullState(PullState.LOADING);\n }\n\n // 外层加载结束 需要重置位置\n if (effectiveRefreshing === false && isRefreshing) {\n setIsPulling(false);\n updatePullState(PullState.HOLDING);\n setPullTimeout(\n //@ts-ignore\n setTimeout(() => {\n pan.flattenOffset();\n setMoveHeight(0);\n setMovePercent(0);\n props.onPullProgress?.({ distance: 0, percent: 0 });\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n updatePullState(PullState.FINISH);\n }, props?.msHoldingTime ?? 1000),\n );\n\n setIsRefreshing(false);\n }\n }, [isRefreshing, props.msHoldingTime, props.isRefreshing, pullState, internalRefreshing]);\n\n // RefreshControl组件初始化计算\n const onLayout = (evt: LayoutChangeEvent) => {\n const height = props.pullAnimHeight || evt.nativeEvent.layout.height;\n setPullAnimHeight(height);\n setMinPullDistance(props.minPullDistance || height);\n setTop(-height);\n };\n\n // 重写ScrollView的onScroll事件(自定义:用于手势门控/头部位置; Android 原生:注入 RefreshControl)\n const scrollContent = useMemo(() => {\n return React.Children.map(props.children, (child: any) => {\n const originalOnScroll = child.props.onScroll;\n const hasNativeDriver =\n originalOnScroll &&\n (originalOnScroll[\"__isNative\"] === true || (originalOnScroll as any)?._animation?.useNativeDriver === true);\n\n const injectedProps =\n Platform.OS === \"android\" && props.nativeAndroidPullRefresh\n ? {\n refreshControl: (\n <RNRefreshControl\n {...(props.androidRefreshProps || {})}\n colors={((props.androidRefreshProps as any)?.colors ?? props.androidColors) as any}\n refreshing={!!props.isRefreshing || internalRefreshing}\n onRefresh={() => {\n if (!!props.isRefreshing || internalRefreshing) return;\n try {\n props.onRequest && props.onRequest();\n } finally {\n // 默认启用:无回调或未受控时自动结束\n if (!props.onRequest) {\n setInternalRefreshing(true);\n }\n // 无论是否有回调,都启动一个兜底自动结束(避免卡住)\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n androidAutoEndRef.current = setTimeout(() => {\n setInternalRefreshing(false);\n }, props?.msHoldingTime ?? 1000);\n }\n }}\n />\n ),\n onScroll: (evt: any) => {\n if (originalOnScroll && typeof originalOnScroll === \"function\") {\n originalOnScroll(evt);\n }\n },\n }\n : hasNativeDriver\n ? {\n // When the child uses native-driver Animated.event, keep it intact to avoid crashes\n onScroll: originalOnScroll,\n onMomentumScrollEnd: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n child.props.onMomentumScrollEnd && child.props.onMomentumScrollEnd(evt);\n },\n onScrollEndDrag: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n // Keep header position in loading state\n if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {\n const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);\n viewRef.current &&\n viewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n animatedViewRef.current &&\n animatedViewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n }\n child.props.onScrollEndDrag && child.props.onScrollEndDrag(evt);\n },\n }\n : {\n onScroll: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n // iOS下拉刷新Loading时,ScrollView向上滑动的时候,refreshControl部分同样上滑\n if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {\n const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);\n viewRef.current &&\n viewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n animatedViewRef.current &&\n animatedViewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n }\n if (originalOnScroll && typeof originalOnScroll === \"function\") {\n originalOnScroll(evt);\n }\n },\n };\n\n return React.cloneElement(child, {\n scrollEventThrottle: 1,\n ...injectedProps,\n });\n });\n }, [\n pullState,\n props.children,\n pullAnimHeight,\n internalRefreshing,\n props.isRefreshing,\n props.nativeAndroidPullRefresh,\n ]);\n\n // 增加Animated.View控制ScrollView展示位置(自定义)\n const content = useMemo(() => {\n if (Platform.OS === \"android\" && props.nativeAndroidPullRefresh) {\n // Android 直接返回内容(由 RN RefreshControl 控制)\n return <>{scrollContent}</>;\n }\n return (\n <Animated.View\n // @ts-ignore\n ref={viewRef}\n style={{\n transform: [{ translateY: pan }],\n flex: 1,\n }}\n >\n {scrollContent}\n </Animated.View>\n );\n }, [pan, scrollContent, props.nativeAndroidPullRefresh]);\n\n return (\n <View\n style={[styles.container, props.style]}\n {...(Platform.OS === \"ios\" || !props.nativeAndroidPullRefresh ? panResponder.panHandlers : {})}\n testID=\"refresh-container\"\n >\n {Platform.OS === \"ios\" || !props.nativeAndroidPullRefresh ? (\n <Animated.View\n // @ts-ignore\n ref={animatedViewRef}\n onLayout={onLayout}\n style={[\n styles.freshItem,\n {\n top: top,\n height: props.pullAnimHeight,\n transform: [{ translateY: pan }],\n },\n props.controlStyle,\n ]}\n >\n {/* @ts-ignore */}\n <CustomRefreshControl ref={refreshControlRef} {...props} movePercent={movePercent} />\n </Animated.View>\n ) : null}\n {content}\n </View>\n );\n}\nPullRefresh.defaultProps = PullRefreshDefaultProps;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n flex: 1,\n },\n freshItem: {\n position: \"absolute\",\n width: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1,\n },\n});\n"],"names":["CustomRefreshControl","RefreshControl","PullRefresh","props","useMounted","_useState","useState","_useState2","_slicedToArray","pullAnimHeight","setPullAnimHeight","_useState3","_useState4","minPullDistance","setMinPullDistance","_useState5","Animated","Value","_useState6","pan","_useState7","_useState8","scrollY","setScrollY","_useState9","_useState0","isPulling","setIsPulling","_useState1","_useState10","isRefreshing","setIsRefreshing","_useState11","_useState12","internalRefreshing","setInternalRefreshing","androidAutoEndRef","useRef","_useState13","_useState14","animation","setAnimation","_useState15","PullState","INIT","_useState16","pullState","setPullState","_useState17","_useState18","moveHeight","setMoveHeight","_useState19","_useState20","movePercent","setMovePercent","_useState21","_useState22","pullTimeout","setPullTimeout","refreshControlRef","viewRef","animatedViewRef","_useState23","_useState24","top","setTop","lastMoveHeightRef","_useState25","_useState26","hasInitRefreshed","setHasInitRefreshed","performInitRefresh","initRefresh","refresh","updatePullState","LOADING","animatedTo","onRequest","useEffect","current","clearTimeout","onRelease","flattenOffset","panValue","_value","emitPullProgress","distance","_props$onPullProgress","percent","onPullProgress","call","_props$msHoldingTime","setTimeout","msHoldingTime","FINISH","setValue","state","renderRefreshControl","toValue","cb","spring","friction","tension","velocity","useNativeDriver","duration","Math","abs","timing","easing","Easing","bezier","start","_ref","finished","refreshControlProps","setRefreshControlParams","canMove","evt","gestureState","HOLDING","vy","vx","panResponder","useMemo","Platform","OS","nativeAndroidPullRefresh","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderTerminationRequest","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponderCapture","onPanResponderGrant","stop","setOffset","PULLING","onPanResponderMove","_props$onPullProgress2","offset","_offset","value","max","dy","effectiveDistance","onPanResponderRelease","onPanResponderTerminate","onShouldBlockNativeResponder","effectiveRefreshing","_props$onPullProgress3","_props$msHoldingTime2","_props$onPullProgress4","onLayout","height","nativeEvent","layout","scrollContent","React","Children","map","children","child","_originalOnScroll$_an","_props$androidRefresh","_props$androidRefresh2","originalOnScroll","onScroll","hasNativeDriver","_animation","injectedProps","refreshControl","createElement","RNRefreshControl","_objectSpread","androidRefreshProps","colors","androidColors","refreshing","onRefresh","_props$msHoldingTime3","onMomentumScrollEnd","contentOffset","y","onScrollEndDrag","setNativeProps","style","transform","translateY","cloneElement","scrollEventThrottle","content","View","ref","flex","styles","container","panHandlers","testID","freshItem","controlStyle","defaultProps","PullRefreshDefaultProps","StyleSheet","overflow","position","width","justifyContent","alignItems","zIndex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PullRefresh.js","sources":["../../../../src/components/PullRefresh/PullRefresh.tsx"],"sourcesContent":["import React, { useState, useRef, useMemo, useEffect } from \"react\";\nimport {\n View,\n StyleSheet,\n Animated,\n PanResponder,\n Easing,\n LayoutChangeEvent,\n Platform,\n RefreshControl as RNRefreshControl,\n} from \"react-native\";\nimport { RedsPullRefresh, PullRefreshDefaultProps, PullState } from \"./interface/index\";\nimport RefreshControl from \"./component\";\n// alias to avoid confusion when reading diff\nconst CustomRefreshControl = RefreshControl;\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nexport default function PullRefresh(props: RedsPullRefresh) {\n useMounted(\"PullRefresh\");\n // RefreshControl组件高度\n const [pullAnimHeight, setPullAnimHeight] = useState(0);\n\n // 触发刷新的最小下拉距离\n const [minPullDistance, setMinPullDistance] = useState(0);\n\n // 手势\n const [pan] = useState(new Animated.Value(0));\n\n // 滚动距离\n const [scrollY, setScrollY] = useState<number>(0);\n\n // 是否在下拉中\n const [isPulling, setIsPulling] = useState<boolean>(false);\n\n // 是否在刷新中\n const [isRefreshing, setIsRefreshing] = useState<boolean>(false);\n\n // 内部刷新状态(用于默认启用,特别是 Android 或未提供回调时)\n const [internalRefreshing, setInternalRefreshing] = useState<boolean>(false);\n // Android 自动结束计时器\n const androidAutoEndRef = useRef<any>();\n\n // 组合动画\n const [animation, setAnimation] = useState<Animated.CompositeAnimation>();\n\n // 拉取状态\n const [pullState, setPullState] = useState<PullState>(PullState.INIT);\n\n // 移动高度\n const [moveHeight, setMoveHeight] = useState<number>(0);\n\n // 移动百分比\n const [movePercent, setMovePercent] = useState<number>(0);\n\n // 下拉时间间隔\n const [pullTimeout, setPullTimeout] = useState();\n\n // 下拉图标\n const refreshControlRef = useRef();\n\n // view ref\n const viewRef = useRef<View>();\n\n // 动画ref\n const animatedViewRef = useRef<View>();\n\n // 下拉组件的初始top值\n const [top, setTop] = useState<number>(-1000);\n\n // 记录最后一次有效位移(与 pan 一致),刷新时保持稳定\n const lastMoveHeightRef = useRef<number>(0);\n\n // 标记是否已经执行过初始刷新\n const [hasInitRefreshed, setHasInitRefreshed] = useState<boolean>(false);\n\n // 执行初始刷新的方法\n const performInitRefresh = () => {\n if ((pullAnimHeight > 0 && !hasInitRefreshed && props.initRefresh) || props.refresh) {\n // 设置初始状态为拉取状态\n updatePullState(PullState.LOADING);\n\n // 执行下拉动画\n animatedTo(pullAnimHeight, () => {\n setHasInitRefreshed(true);\n setIsRefreshing(true);\n setIsPulling(true);\n // 触发刷新回调\n props.onRequest && props.onRequest();\n });\n }\n };\n\n // 监听 initRefresh 属性和相关依赖变化\n useEffect(() => {\n if ((props.initRefresh && pullAnimHeight > 0 && !hasInitRefreshed && !isRefreshing) || props.refresh) {\n performInitRefresh();\n }\n }, [props.initRefresh, pullAnimHeight, hasInitRefreshed, isRefreshing, props.refresh]);\n // 卸载清理:超时计时器\n useEffect(() => {\n return () => {\n // @ts-ignore\n if (pullTimeout) clearTimeout(pullTimeout);\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n };\n }, [pullTimeout]);\n\n // 释放手指\n const onRelease = () => {\n // 重置偏移位置\n pan.flattenOffset();\n // @ts-ignore\n const panValue = pan._value;\n const emitPullProgress = (distance: number) => {\n const percent = pullAnimHeight > 0 ? (distance / pullAnimHeight) * 100 : 0;\n props.onPullProgress?.({ distance, percent });\n };\n // 拉动距离大于设定下拉高度\n if (panValue >= pullAnimHeight) {\n emitPullProgress(pullAnimHeight);\n animatedTo(pullAnimHeight, () => {\n updatePullState(PullState.LOADING);\n // 如果有回调则调用,否则走默认内部流程(iOS 默认也支持)\n if (props.onRequest) {\n props.onRequest();\n } else {\n setInternalRefreshing(true);\n // 启动一个自动结束计时器,避免没有外部状态时卡住\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n androidAutoEndRef.current = setTimeout(() => {\n setInternalRefreshing(false);\n }, props?.msHoldingTime ?? 1000);\n }\n });\n // 有拉动距离但是不够设定的下拉高度\n } else if (panValue > 0) {\n updatePullState(PullState.FINISH);\n emitPullProgress(0);\n setMoveHeight(0);\n setMovePercent(0);\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n // 否则就是初始状态\n } else {\n updatePullState(PullState.INIT);\n setIsPulling(false);\n emitPullProgress(0);\n setMoveHeight(0);\n setMovePercent(0);\n lastMoveHeightRef.current = 0;\n pan.setValue(0);\n pan.flattenOffset();\n }\n };\n\n // 更新refreshControl状态\n const updatePullState = (state: PullState) => {\n if (pullState === state) {\n return;\n }\n setPullState(state);\n renderRefreshControl(state);\n };\n\n // 下拉动画\n const animatedTo = (toValue: number, cb?: () => void) => {\n let animation: any;\n if (toValue === 0) {\n // 使用弹簧动画实现回弹效果\n animation = Animated.spring(pan, {\n toValue: toValue,\n // 回弹参数配置\n friction: 8, // 控制回弹幅度(值越小幅度越大)\n tension: 60, // 控制回弹速度(值越大速度越快)\n velocity: 1, // 初始速度,增强回弹效果\n useNativeDriver: false,\n });\n } else {\n // 针对初始加载优化动画参数\n const duration =\n !hasInitRefreshed && props.initRefresh\n ? 1000 // 初始加载时使用固定时长\n : Math.abs(((pan as any)._value - toValue) * 1.4);\n animation = Animated.timing(pan, {\n toValue: toValue,\n easing: Easing.bezier(0.1, 0.57, 0.1, 1),\n duration: duration,\n useNativeDriver: false,\n });\n }\n setAnimation(animation);\n animation.start(({ finished }: { finished: boolean }) => {\n cb && cb();\n setAnimation(undefined);\n });\n };\n\n // 传递给RefreshControl组件参数用来判断状态\n const renderRefreshControl = (state?: PullState) => {\n const refreshControlProps = {\n pullAnimHeight,\n minPullDistance,\n pullState: state || pullState,\n moveHeight,\n movePercent,\n };\n if (refreshControlRef.current) {\n // @ts-ignore\n refreshControlRef.current.setRefreshControlParams(refreshControlProps);\n }\n };\n\n // 是否能移动手指 - 初始加载时禁用手势\n const canMove = (evt: any, gestureState: any) => {\n // 如果正在初始刷新,禁用手势\n if (props.initRefresh && !hasInitRefreshed) {\n return false;\n }\n // Block during refresh states\n if (isRefreshing || pullState === PullState.LOADING || pullState === PullState.HOLDING) {\n return false;\n }\n // Block if already pulling\n if (isPulling) {\n return false;\n }\n // Explicitly reject upward swipes\n if (gestureState.vy < 0) {\n return false;\n }\n return scrollY <= 0 && gestureState.vy > 0 && gestureState.vy > Math.abs(gestureState.vx);\n };\n\n // 手势对象\n const panResponder = useMemo(() => {\n if (Platform.OS !== \"ios\" && props.nativeAndroidPullRefresh) {\n // Android 原生下拉时不启用自定义手势\n return PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onMoveShouldSetPanResponder: () => false,\n onPanResponderTerminationRequest: () => true,\n });\n }\n return PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: canMove,\n onMoveShouldSetPanResponderCapture: canMove,\n onPanResponderGrant: () => {\n animation && animation.stop();\n pan.flattenOffset();\n // @ts-ignore\n pan.setOffset(pan._value);\n updatePullState(PullState.PULLING);\n pullTimeout && clearTimeout(pullTimeout);\n },\n onPanResponderMove: (evt, gestureState) => {\n setIsPulling(true);\n // @ts-ignore\n const offset = pan._offset;\n let value = Math.max(offset + gestureState.dy, 0);\n const effectiveDistance = Math.max(offset + gestureState.dy / 2.2, 0);\n if (value > 0) {\n // 弹簧劲度系数\n pan.setValue(gestureState.dy / 2.2);\n } else {\n pan.setValue(-offset);\n }\n setMoveHeight(value);\n const percent = (value / pullAnimHeight) * 100;\n setMovePercent(percent);\n lastMoveHeightRef.current = effectiveDistance;\n props.onPullProgress?.({\n distance: effectiveDistance,\n percent: pullAnimHeight > 0 ? (effectiveDistance / pullAnimHeight) * 100 : 0,\n });\n renderRefreshControl();\n },\n onPanResponderRelease: onRelease,\n onPanResponderTerminationRequest() {\n if (isPulling || pullState === PullState.PULLING) {\n return false;\n }\n return true;\n },\n onPanResponderTerminate: onRelease,\n onShouldBlockNativeResponder() {\n return isPulling || pullState === PullState.PULLING;\n },\n });\n }, [\n isPulling,\n scrollY,\n props.initRefresh,\n hasInitRefreshed,\n pullAnimHeight,\n props.nativeAndroidPullRefresh,\n isRefreshing,\n pullState,\n ]);\n\n // 根据外层传递参数变化进行更新执行(自定义实现启用时)\n useEffect(() => {\n if (Platform.OS !== \"ios\" && props.nativeAndroidPullRefresh) return;\n if (pullState === PullState.PULLING && !props.initRefresh) {\n return;\n }\n // 加载中\n const effectiveRefreshing = !!props.isRefreshing || internalRefreshing;\n if (effectiveRefreshing === true && !isRefreshing) {\n props.onPullProgress?.({ distance: pullAnimHeight, percent: 100 });\n animatedTo(pullAnimHeight);\n setIsRefreshing(true);\n updatePullState(PullState.LOADING);\n }\n\n // 外层加载结束 需要重置位置\n if (effectiveRefreshing === false && isRefreshing) {\n setIsPulling(false);\n updatePullState(PullState.HOLDING);\n setPullTimeout(\n //@ts-ignore\n setTimeout(() => {\n pan.flattenOffset();\n setMoveHeight(0);\n setMovePercent(0);\n props.onPullProgress?.({ distance: 0, percent: 0 });\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n updatePullState(PullState.FINISH);\n }, props?.msHoldingTime ?? 1000),\n );\n setIsRefreshing(false);\n }\n // 滚动结束了但是还有下拉距离\n if (effectiveRefreshing === false && pullState === PullState.FINISH) {\n console.log(\"滚动结束了但是还有下拉距离\");\n setIsPulling(false);\n updatePullState(PullState.HOLDING);\n setPullTimeout(\n //@ts-ignore\n setTimeout(() => {\n pan.flattenOffset();\n setMoveHeight(0);\n setMovePercent(0);\n props.onPullProgress?.({ distance: 0, percent: 0 });\n lastMoveHeightRef.current = 0;\n animatedTo(0, () => {\n setIsPulling(false);\n updatePullState(PullState.INIT);\n pan.setValue(0);\n pan.flattenOffset();\n });\n updatePullState(PullState.FINISH);\n }, props?.msHoldingTime ?? 1000),\n );\n\n setIsRefreshing(false);\n }\n }, [isRefreshing, props.msHoldingTime, props.isRefreshing, pullState, internalRefreshing]);\n\n // RefreshControl组件初始化计算\n const onLayout = (evt: LayoutChangeEvent) => {\n const height = props.pullAnimHeight || evt.nativeEvent.layout.height;\n setPullAnimHeight(height);\n setMinPullDistance(props.minPullDistance || height);\n setTop(-height);\n };\n\n // 重写ScrollView的onScroll事件(自定义:用于手势门控/头部位置; Android 原生:注入 RefreshControl)\n const scrollContent = useMemo(() => {\n return React.Children.map(props.children, (child: any) => {\n const originalOnScroll = child.props.onScroll;\n const hasNativeDriver =\n originalOnScroll &&\n (originalOnScroll[\"__isNative\"] === true || (originalOnScroll as any)?._animation?.useNativeDriver === true);\n\n const injectedProps =\n Platform.OS === \"android\" && props.nativeAndroidPullRefresh\n ? {\n refreshControl: (\n <RNRefreshControl\n {...(props.androidRefreshProps || {})}\n colors={((props.androidRefreshProps as any)?.colors ?? props.androidColors) as any}\n refreshing={!!props.isRefreshing || internalRefreshing}\n onRefresh={() => {\n if (!!props.isRefreshing || internalRefreshing) return;\n try {\n props.onRequest && props.onRequest();\n } finally {\n // 默认启用:无回调或未受控时自动结束\n if (!props.onRequest) {\n setInternalRefreshing(true);\n }\n // 无论是否有回调,都启动一个兜底自动结束(避免卡住)\n if (androidAutoEndRef.current) clearTimeout(androidAutoEndRef.current);\n androidAutoEndRef.current = setTimeout(() => {\n setInternalRefreshing(false);\n }, props?.msHoldingTime ?? 1000);\n }\n }}\n />\n ),\n onScroll: (evt: any) => {\n if (originalOnScroll && typeof originalOnScroll === \"function\") {\n originalOnScroll(evt);\n }\n },\n }\n : hasNativeDriver\n ? {\n // When the child uses native-driver Animated.event, keep it intact to avoid crashes\n onScroll: originalOnScroll,\n onMomentumScrollEnd: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n child.props.onMomentumScrollEnd && child.props.onMomentumScrollEnd(evt);\n },\n onScrollEndDrag: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n // Keep header position in loading state\n if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {\n const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);\n viewRef.current &&\n viewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n animatedViewRef.current &&\n animatedViewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n }\n child.props.onScrollEndDrag && child.props.onScrollEndDrag(evt);\n },\n }\n : {\n onScroll: (evt: any) => {\n setScrollY(evt.nativeEvent.contentOffset.y);\n // iOS下拉刷新Loading时,ScrollView向上滑动的时候,refreshControl部分同样上滑\n if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {\n const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);\n viewRef.current &&\n viewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n animatedViewRef.current &&\n animatedViewRef.current.setNativeProps({\n style: {\n transform: [{ translateY: y }],\n },\n });\n }\n if (originalOnScroll && typeof originalOnScroll === \"function\") {\n originalOnScroll(evt);\n }\n },\n };\n\n return React.cloneElement(child, {\n scrollEventThrottle: 1,\n ...injectedProps,\n });\n });\n }, [\n pullState,\n props.children,\n pullAnimHeight,\n internalRefreshing,\n props.isRefreshing,\n props.nativeAndroidPullRefresh,\n ]);\n\n // 增加Animated.View控制ScrollView展示位置(自定义)\n const content = useMemo(() => {\n if (Platform.OS === \"android\" && props.nativeAndroidPullRefresh) {\n // Android 直接返回内容(由 RN RefreshControl 控制)\n return <>{scrollContent}</>;\n }\n return (\n <Animated.View\n // @ts-ignore\n ref={viewRef}\n style={{\n transform: [{ translateY: pan }],\n flex: 1,\n }}\n >\n {scrollContent}\n </Animated.View>\n );\n }, [pan, scrollContent, props.nativeAndroidPullRefresh]);\n\n return (\n <View\n style={[styles.container, props.style]}\n {...(Platform.OS === \"ios\" || !props.nativeAndroidPullRefresh ? panResponder.panHandlers : {})}\n testID=\"refresh-container\"\n >\n {Platform.OS === \"ios\" || !props.nativeAndroidPullRefresh ? (\n <Animated.View\n // @ts-ignore\n ref={animatedViewRef}\n onLayout={onLayout}\n style={[\n styles.freshItem,\n {\n top: top,\n height: props.pullAnimHeight,\n transform: [{ translateY: pan }],\n },\n props.controlStyle,\n ]}\n >\n {/* @ts-ignore */}\n <CustomRefreshControl ref={refreshControlRef} {...props} movePercent={movePercent} />\n </Animated.View>\n ) : null}\n {content}\n </View>\n );\n}\nPullRefresh.defaultProps = PullRefreshDefaultProps;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n flex: 1,\n },\n freshItem: {\n position: \"absolute\",\n width: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1,\n },\n});\n"],"names":["CustomRefreshControl","RefreshControl","PullRefresh","props","useMounted","_useState","useState","_useState2","_slicedToArray","pullAnimHeight","setPullAnimHeight","_useState3","_useState4","minPullDistance","setMinPullDistance","_useState5","Animated","Value","_useState6","pan","_useState7","_useState8","scrollY","setScrollY","_useState9","_useState0","isPulling","setIsPulling","_useState1","_useState10","isRefreshing","setIsRefreshing","_useState11","_useState12","internalRefreshing","setInternalRefreshing","androidAutoEndRef","useRef","_useState13","_useState14","animation","setAnimation","_useState15","PullState","INIT","_useState16","pullState","setPullState","_useState17","_useState18","moveHeight","setMoveHeight","_useState19","_useState20","movePercent","setMovePercent","_useState21","_useState22","pullTimeout","setPullTimeout","refreshControlRef","viewRef","animatedViewRef","_useState23","_useState24","top","setTop","lastMoveHeightRef","_useState25","_useState26","hasInitRefreshed","setHasInitRefreshed","performInitRefresh","initRefresh","refresh","updatePullState","LOADING","animatedTo","onRequest","useEffect","current","clearTimeout","onRelease","flattenOffset","panValue","_value","emitPullProgress","distance","_props$onPullProgress","percent","onPullProgress","call","_props$msHoldingTime","setTimeout","msHoldingTime","FINISH","setValue","state","renderRefreshControl","toValue","cb","spring","friction","tension","velocity","useNativeDriver","duration","Math","abs","timing","easing","Easing","bezier","start","_ref","finished","refreshControlProps","setRefreshControlParams","canMove","evt","gestureState","HOLDING","vy","vx","panResponder","useMemo","Platform","OS","nativeAndroidPullRefresh","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderTerminationRequest","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponderCapture","onPanResponderGrant","stop","setOffset","PULLING","onPanResponderMove","_props$onPullProgress2","offset","_offset","value","max","dy","effectiveDistance","onPanResponderRelease","onPanResponderTerminate","onShouldBlockNativeResponder","effectiveRefreshing","_props$onPullProgress3","_props$msHoldingTime2","_props$onPullProgress4","_props$msHoldingTime3","console","log","_props$onPullProgress5","onLayout","height","nativeEvent","layout","scrollContent","React","Children","map","children","child","_originalOnScroll$_an","_props$androidRefresh","_props$androidRefresh2","originalOnScroll","onScroll","hasNativeDriver","_animation","injectedProps","refreshControl","createElement","RNRefreshControl","_objectSpread","androidRefreshProps","colors","androidColors","refreshing","onRefresh","_props$msHoldingTime4","onMomentumScrollEnd","contentOffset","y","onScrollEndDrag","setNativeProps","style","transform","translateY","cloneElement","scrollEventThrottle","content","View","ref","flex","styles","container","panHandlers","testID","freshItem","controlStyle","defaultProps","PullRefreshDefaultProps","StyleSheet","overflow","position","width","justifyContent","alignItems","zIndex"],"mappings":"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"}
|