@razorpay/blade
Version:
The Design System that powers Razorpay
25 lines (22 loc) • 2.8 kB
JavaScript
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
import * as React from 'react';
import styled from 'styled-components/native';
import { View } from 'react-native';
import 'react-native-svg';
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
import Path from '../Icons/_Svg/Path/Path.native.js';
import Svg from '../Icons/_Svg/Svg/Svg.native.js';
import '@gorhom/portal';
import 'react-native-gesture-handler';
import useTheme from '../BladeProvider/useTheme.js';
import { logger } from '../../utils/logger/logger.js';
import { makeSize } from '../../utils/makeSize/makeSize.js';
import '../BottomSheet/BottomSheetStack.js';
import '../../tokens/global/typography.js';
import '../../tokens/global/motion.js';
import { size } from '../../tokens/global/size.js';
import { getFloatingPlacementParts } from '../../utils/getFloatingPlacementParts.js';
var StyledSvg=styled(Svg)(function(_ref){var styles=_ref.styles;return styles;});var PopupArrow=React.forwardRef(function(_ref2,ref){var context=_ref2.context,width=_ref2.width,height=_ref2.height,fillColor=_ref2.fillColor,strokeColor=_ref2.strokeColor;var _useTheme=useTheme(),theme=_useTheme.theme;var placement=context.placement,floating=context.elements.floating,arrow=context.middlewareData.arrow;var strokeWidth=theme.border.width.thin*2;if(__DEV__){if(!ref){logger({type:'warn',moduleName:'PopupArrow',message:'Floating UI: The `ref` prop is required for the `FloatingArrow` component.'});}}if(!floating){return jsx(Fragment,{});}var _getFloatingPlacement=getFloatingPlacementParts(placement),_getFloatingPlacement2=_slicedToArray(_getFloatingPlacement,1),side=_getFloatingPlacement2[0];var svgX=width/2;var svgY=0;var dValue='M0,0'+` H${width}`+` L${width-svgX},${height-svgY}`+` Q${width/2},${height} ${svgX},${height-svgY}`+' Z';var staticSide={top:'bottom',right:'left',bottom:'top',left:'right'}[side];var rotation={top:0,bottom:180,left:-90,right:90}[side];var newStyles={};if(arrow){var x=arrow.x,y=arrow.y;newStyles=_defineProperty(_defineProperty({width:makeSize(size[20]),height:makeSize(size[20]),position:'absolute',left:x!=null?`${x}px`:undefined,top:y!=null?`${y}px`:undefined,right:undefined,bottom:undefined},staticSide,`${-width}px`),"transform",`rotate(${rotation}deg)`);}return jsx(View,{pointerEvents:"none",collapsable:false,style:{position:'absolute',left:0,right:0,top:0,bottom:0},children:jsxs(StyledSvg,{ref:ref,width:`${width}px`,height:`${width}px`,viewBox:`0 0 ${width} ${width}`,styles:newStyles,children:[jsx(Path,{fill:"none",stroke:strokeColor,strokeWidth:`${strokeWidth}px`,d:dValue}),jsx(Path,{fill:fillColor,stroke:"none",d:dValue})]})});});
export { PopupArrow };
//# sourceMappingURL=PopupArrow.native.js.map