@ant-design/react-native
Version:
基于蚂蚁金服移动设计规范的 React Native 组件库
1 lines • 7.13 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 _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _classnames=_interopRequireDefault(require("classnames"));var _useMergedState3=_interopRequireDefault(require("rc-util/es/hooks/useMergedState"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _devWarning=_interopRequireDefault(require("../_util/devWarning"));var _useAnimations=require("../_util/hooks/useAnimations");var _DisabledContext=_interopRequireDefault(require("../provider/DisabledContext"));var _style=require("../style");var _view=_interopRequireDefault(require("../view"));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 __rest=this&&this.__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 InternalCheckbox=function InternalCheckbox(props,ref){var contextDisabled=(0,_react.useContext)(_DisabledContext.default);var _props$prefixCls=props.prefixCls,prefixCls=_props$prefixCls===void 0?'checkbox':_props$prefixCls,style=props.style,styles=props.styles,children=props.children,defaultChecked=props.defaultChecked,_props$disabled=props.disabled,disabled=_props$disabled===void 0?contextDisabled:_props$disabled,onChange=props.onChange,indeterminate=props.indeterminate,restProps=__rest(props,["prefixCls","style","styles","children","defaultChecked","disabled","onChange","indeterminate"]);if(__DEV__){(0,_devWarning.default)('checked'in restProps||!('value'in restProps),'Checkbox','`value` is not a valid prop, do you mean `checked`?');}var _useMergedState=(0,_useMergedState3.default)(false,{value:restProps.checked,defaultValue:defaultChecked}),_useMergedState2=(0,_slicedToArray2.default)(_useMergedState,2),innerChecked=_useMergedState2[0],setInnerChecked=_useMergedState2[1];var _useAnimatedTiming=(0,_useAnimations.useAnimatedTiming)(),_useAnimatedTiming2=(0,_slicedToArray2.default)(_useAnimatedTiming,2),animatedValue=_useAnimatedTiming2[0],animate=_useAnimatedTiming2[1];var transitionOpacity={opacity:animatedValue.interpolate({inputRange:[0,1],outputRange:[0,1]})};var transitionTransform=(0,_react.useMemo)(function(){return{transform:[{rotate:animatedValue.interpolate({inputRange:[0,1],outputRange:['0deg','45deg']})},{scale:animatedValue.interpolate({inputRange:[0,1],outputRange:indeterminate?[1,0]:[0,1]})}]};},[animatedValue,indeterminate]);(0,_react.useEffect)(function(){animate({toValue:innerChecked?1:0,duration:300,easing:_reactNative.Easing.bezier(0.68,-0.55,0.27,1.55),useNativeDriver:true});},[animate,innerChecked]);var triggerChange=(0,_react.useCallback)(function(newChecked){if(!disabled){setInnerChecked(newChecked);onChange===null||onChange===void 0?void 0:onChange({target:{checked:newChecked}});return newChecked;}return innerChecked;},[disabled,innerChecked,onChange,setInnerChecked]);var actions=(0,_react.useMemo)(function(){return{onPress:function onPress(){return triggerChange(!innerChecked);},checked:innerChecked};},[innerChecked,triggerChange]);(0,_react.useImperativeHandle)(ref,function(){return actions;});return _react.default.createElement(_style.WithTheme,{themeStyles:_style2.default,styles:styles},function(_styles){var _classNames,_classNames2,_classNames3;var antd_checkbox=(0,_classnames.default)("".concat(prefixCls),(_classNames={},(0,_defineProperty2.default)(_classNames,"".concat(prefixCls,"_checked"),innerChecked),(0,_defineProperty2.default)(_classNames,"".concat(prefixCls,"_disabled"),disabled),_classNames)).split(' ').map(function(a){return _styles[a];});var antd_checkbox_inner=(0,_classnames.default)("".concat(prefixCls,"_inner"),(_classNames2={},(0,_defineProperty2.default)(_classNames2,"".concat(prefixCls,"_inner_indeterminate"),indeterminate),(0,_defineProperty2.default)(_classNames2,"".concat(prefixCls,"_inner_disabled"),disabled),_classNames2)).split(' ').map(function(a){return _styles[a];});var antd_checkbox_inner_before=(0,_classnames.default)(undefined,(_classNames3={},(0,_defineProperty2.default)(_classNames3,"".concat(prefixCls,"_inner_before"),!indeterminate),(0,_defineProperty2.default)(_classNames3,"".concat(prefixCls,"_inner_before_indeterminate"),indeterminate),(0,_defineProperty2.default)(_classNames3,"".concat(prefixCls,"_inner_before_disabled"),disabled),_classNames3)).split(' ').map(function(a){return _styles[a];});var antd_checlbox_label=(0,_classnames.default)("".concat(prefixCls,"_label"),(0,_defineProperty2.default)({},"".concat(prefixCls,"_label_disabled"),disabled)).split(' ').map(function(a){return _styles[a];});return _react.default.createElement(_reactNative.Pressable,(0,_extends2.default)({onPress:actions.onPress,accessibilityRole:"checkbox",accessibilityState:{checked:indeterminate?'mixed':innerChecked,disabled:disabled}},restProps,{disabled:disabled,style:[_styles["".concat(prefixCls,"_wrapper")],style]}),_react.default.createElement(_reactNative.View,{style:_styles.checkbox_wave},_react.default.createElement(_reactNative.View,{style:antd_checkbox},_react.default.createElement(_reactNative.Animated.View,{style:[antd_checkbox_inner,transitionOpacity]}),_react.default.createElement(_reactNative.Animated.View,{style:[antd_checkbox_inner_before,transitionTransform]}))),_react.default.createElement(_view.default,{style:antd_checlbox_label},children));});};var Checkbox=_react.default.forwardRef(InternalCheckbox);Checkbox.displayName='AntmCheckbox';var _default=_react.default.memo(Checkbox);exports.default=_default;