UNPKG

@s20.ai/safecam-360-rn-lite

Version:

A React Native component to view the interior panorama and exterior 360 degree views of a product featuring suppport for hotspots. Compatible with Android and iOS

55 lines (50 loc) 1.85 kB
/* * Copyright © 2022 S20.AI India Pvt. Ltd. * Contact - origin@s20.ai * License - Licensed as per https://docs.s20.ai/license.html */ import React from 'react'; import {SafeAreaView} from 'react-native'; import {IconButton} from '@s20.ai/safecam-components-rn'; import {connect, useDispatch} from 'react-redux'; import HotspotDetailOverlay from './HotspotDetailOverlay'; import {triggerHapticFeedback, useScreenDimensions} from '../../utils/device'; import HotspotCarousel from './HotspotCarousel'; import {setCurrentHotspot} from '../../redux/actions/currentHotspotAction'; import styleConfig from '../styleConfig'; import {responsiveAppStyleConfig} from '../responsiveAppStyleConfig'; const HotspotOverlay = ({interiorData, exteriorData, customFontFamily}) => { const dispatch = useDispatch(); const screenDimensions = useScreenDimensions(); let hotspotOverlayContainerStyle = responsiveAppStyleConfig.stylePicker( 'hotspotOverlayContainer', screenDimensions.width, ); return ( <SafeAreaView style={[hotspotOverlayContainerStyle]}> <HotspotDetailOverlay customFontFamily={customFontFamily} /> <IconButton src={'https://safecam-org-logos.s3.ap-south-1.amazonaws.com/close.svg'} sx={styleConfig.closeBtn} onPress={() => { dispatch(setCurrentHotspot(null)); triggerHapticFeedback(); }} svg={true} /> <HotspotCarousel exteriorData={exteriorData} interiorData={interiorData} customFontFamily={customFontFamily} /> </SafeAreaView> ); }; const mapStateToProps = ({currentView, currentHotspot}) => { return { currentViewState: currentView.present, orientation: currentView.orientation, currentHotspotState: currentHotspot, }; }; export default connect(mapStateToProps)(HotspotOverlay);