mopinion-react-native-sdk
Version:
Collect in-app feedback with Mopinion for React Native. Built fully in React Native for optimal integration with your React Native app.
1 lines • 2.82 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=LinkBlock;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireDefault(require("react"));var _reactNative=require("react-native");var _styles=require("../styles");var _FormContext=require("./FormContext");var _Buttons=require("./Buttons");var _jsxRuntime=require("react/jsx-runtime");var _excluded=["children","button"];function Link(_ref){var children=_ref.children,button=_ref.button,props=(0,_objectWithoutProperties2.default)(_ref,_excluded);var theme=(0,_styles.useTheme)();if(button){return(0,_jsxRuntime.jsx)(_Buttons.LinkButton,Object.assign({},props,{text:children}));}return(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,Object.assign({},props,{children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.text,{color:theme.selectedControlColor,fontSize:theme.typography.base.fontSize}],children:children})}));}function LinkBlock(props){var _useFormContext=(0,_FormContext.useFormContext)(),nextPage=_useFormContext.nextPage,prevPage=_useFormContext.prevPage,closeForm=_useFormContext.closeForm;var theme=(0,_styles.useTheme)();var properties=props.block.properties;var linkStr=properties.hyperlinktext&&properties.hyperlinktext.match(/\/\*(.*)\*\//gi)&&properties.hyperlinktext.match(/\/\*(.*)\*\//gi)[0].replace('/*','').replace('*/','');var linkUrl=properties.hyperlinkhref&&(properties.hyperlinkhref.match(/((http(s?)))/gi)||properties.hyperlinkhref.charAt(0)==='/')?properties.hyperlinkhref:`https://${properties.hyperlinkhref}`;var onPress=properties.linktype!=='function'?function(){return _reactNative.Linking.openURL(linkUrl);}:function(){switch(properties.linktype_function){case'next_page':return nextPage(true);case'prev_page':return prevPage(true);case'close':case'close_modal':return closeForm();default:return null;}};var _properties$descripti=properties.description.split(linkStr),_properties$descripti2=(0,_slicedToArray2.default)(_properties$descripti,2),first=_properties$descripti2[0],rest=_properties$descripti2[1];var textStyle=Object.assign({},theme.typography.base);return(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.container,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:textStyle,children:first}),(0,_jsxRuntime.jsx)(Link,{onPress:onPress,button:properties.show_as_buttons,children:linkStr}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:textStyle,children:rest})]})});}var styles=_reactNative.StyleSheet.create({container:{flexDirection:'row',flexWrap:'wrap',alignItems:'center'}});