@ant-design/react-native
Version:
基于蚂蚁金服移动设计规范的 React Native 组件库
1 lines • 3.74 kB
JavaScript
"use client";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _typeof=require("@babel/runtime/helpers/typeof");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=_interopRequireWildcard(require("react"));var _reactNativeGestureHandler=require("react-native-gesture-handler");var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _thumbIcon=require("./thumb-icon");var _thumbPopover=require("./thumb-popover");function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var Thumb=function Thumb(props){var offset=props.offset,getValueByPosition=props.getValueByPosition,disabled=props.disabled,isSliding=props.isSliding,icon=props.icon,onDrag=props.onDrag,onSlidingStart=props.onSlidingStart,onSlidingComplete=props.onSlidingComplete,popover=props.popover,residentPopover=props.residentPopover,style=props.style,styles=props.styles;var _useState=(0,_react.useState)(),_useState2=(0,_slicedToArray2.default)(_useState,2),thumbLayout=_useState2[0],setThumbLayout=_useState2[1];var handleLayout=function handleLayout(e){setThumbLayout(e.nativeEvent.layout);};var translateX=(0,_reactNativeReanimated.useDerivedValue)(function(){return offset.value-((thumbLayout===null||thumbLayout===void 0?void 0:thumbLayout.width)||0)/2;},[offset,thumbLayout]);var animatedStyles=(0,_reactNativeReanimated.useAnimatedStyle)(function(){return{transform:[{translateX:translateX.value}]};},[translateX]);var gesture=(0,_react.useMemo)(function(){return _reactNativeGestureHandler.Gesture.Pan().enabled(!disabled).onStart(function(){return(0,_reactNativeReanimated.runOnJS)(onSlidingStart)();}).onChange(function(e){(0,_reactNativeReanimated.runOnJS)(onDrag)(e.absoluteX-((thumbLayout===null||thumbLayout===void 0?void 0:thumbLayout.width)||0));}).onEnd(function(){return(0,_reactNativeReanimated.runOnJS)(onSlidingComplete)();});},[disabled,onDrag,onSlidingComplete,onSlidingStart,thumbLayout===null||thumbLayout===void 0?void 0:thumbLayout.width]);var thumbElement=icon?icon:_react.default.createElement(_thumbIcon.ThumbIcon,null);return _react.default.createElement(_reactNativeGestureHandler.GestureDetector,{gesture:gesture},_react.default.createElement(_reactNativeReanimated.default.View,{onStartShouldSetResponder:function onStartShouldSetResponder(){return true;},style:[styles.thumb,animatedStyles,style],onLayout:handleLayout},_react.default.createElement(_thumbPopover.ThumbPopover,{offset:offset,getValueByPosition:getValueByPosition,isSliding:isSliding,popover:popover,residentPopover:residentPopover},thumbElement)));};var _default=(0,_react.memo)(Thumb);exports.default=_default;