UNPKG

@ant-design/react-native

Version:

基于蚂蚁金服移动设计规范的 React Native 组件库

1 lines 5.81 kB
"use strict";"use client";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _typeof=require("@babel/runtime/helpers/typeof");Object.defineProperty(exports,"__esModule",{value:true});exports.RenderActions=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _reactNativeGestureHandler=require("react-native-gesture-handler");var _AccessibilityContext=_interopRequireDefault(require("../provider/AccessibilityContext"));var _style=require("../style");var _style2=_interopRequireDefault(require("./style"));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 __awaiter=void 0&&(void 0).__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve){resolve(value);});}return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value));}catch(e){reject(e);}}function rejected(value){try{step(generator["throw"](value));}catch(e){reject(e);}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected);}step((generator=generator.apply(thisArg,_arguments||[])).next());});};var __rest=void 0&&(void 0).__rest||function(s,e){var t={};for(var p in s){if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];}if(s!=null&&typeof Object.getOwnPropertySymbols==="function")for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++){if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]];}return t;};var RenderActions=(0,_react.memo)(function(props){var buttons=props.buttons,restProps=__rest(props,["buttons"]);var _useState=(0,_react.useState)(0),_useState2=(0,_slicedToArray2.default)(_useState,2),buttonWidth=_useState2[0],setButtonWidth=_useState2[1];var onLayout=function onLayout(e){setButtonWidth(e.nativeEvent.layout.width);};var isRTL=(0,_react.useContext)(_AccessibilityContext.default);if(!Array.isArray(buttons)||buttons.length===0){return null;}return _react.default.createElement(_reactNative.View,{onLayout:onLayout,style:{flexDirection:isRTL?'row-reverse':'row'}},buttons.map(function(button,i){return _react.default.createElement(SwipeActionButton,(0,_extends2.default)({key:i,button:button,buttonWidth:buttonWidth},restProps));}));});exports.RenderActions=RenderActions;var SwipeActionButton=(0,_react.memo)(function(props){var _useState3=(0,_react.useState)(false),_useState4=(0,_slicedToArray2.default)(_useState3,2),loading=_useState4[0],setLoading=_useState4[1];var button=props.button,buttonWidth=props.buttonWidth,closeOnAction=props.closeOnAction,isLeft=props.isLeft,progressAnimatedValue=props.progressAnimatedValue,setClose=props.setClose,styles=props.styles;var pressHandler=(0,_react.useCallback)(function(){return __awaiter(void 0,void 0,void 0,_regenerator.default.mark(function _callee(){return _regenerator.default.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!(button.disabled||loading)){_context.next=2;break;}return _context.abrupt("return");case 2:_context.prev=2;setLoading(true);if(!button.onPress){_context.next=7;break;}_context.next=7;return button.onPress();case 7:_context.prev=7;if(closeOnAction){setClose();}setLoading(false);return _context.finish(7);case 11:case"end":return _context.stop();}}},_callee,null,[[2,,7,11]]);}));},[button,closeOnAction,loading,setClose]);var _useState5=(0,_react.useState)({x:0,width:0}),_useState6=(0,_slicedToArray2.default)(_useState5,2),layout=_useState6[0],setLayout=_useState6[1];var onLayout=function onLayout(e){var _e$nativeEvent$layout=e.nativeEvent.layout,x=_e$nativeEvent$layout.x,width=_e$nativeEvent$layout.width;setLayout({x:x,width:width});};var ss=(0,_style.useTheme)({styles:styles,themeStyles:_style2.default});var trans=progressAnimatedValue.interpolate({inputRange:[0,1],outputRange:[isLeft?-1*layout.width:buttonWidth-layout.x,0],extrapolate:'clamp'});return _react.default.createElement(_reactNative.Animated.View,{onLayout:onLayout,onTouchEnd:function onTouchEnd(e){return e.stopPropagation();},style:{transform:[{translateX:trans}]}},_react.default.createElement(_reactNativeGestureHandler.RectButton,(0,_extends2.default)({onPress:pressHandler,style:[ss.actionButton,button.backgroundColor?{backgroundColor:button.backgroundColor}:{}]},button.actionButtonProps),_react.default.isValidElement(button.text)?button.text:_react.default.createElement(_reactNative.Text,{style:[ss.actionText,button.style,button.color?{color:button.color}:{}]},button.text)));});