@s20.ai/safecam-360-rn
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
75 lines (70 loc) • 2.34 kB
JavaScript
/*
* 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 {Dimensions} from 'react-native';
import {connect, useDispatch} from 'react-redux';
import {CardImageFocusModal, IconButton} from '@s20.ai/safecam-components-rn';
import {setHotspotDetailMode} from '../../redux/actions/currentHotspotAction';
import {triggerHapticFeedback, useScreenDimensions} from '../../utils/device';
import styleConfig from '../styleConfig';
import { responsiveStyleConfig } from '../responsiveStyleConfig';
const HotspotDetailOverlay = ({
hotspotDetailMode,
currentHotspotState,
orientation,
setHotspotDetailMode,
customFontFamily
}) => {
const screenDimensions = useScreenDimensions()
const cardFocusModalStyles = responsiveStyleConfig.stylePicker("cardFocusModal", screenDimensions.width)
return (
<CardImageFocusModal
visible={hotspotDetailMode}
sx={{
...cardFocusModalStyles,
title:{fontFamily: customFontFamily && customFontFamily === "Poppins" ? "Poppins-Regular" : "Helvetica"},
description:{fontFamily: customFontFamily && customFontFamily === "Poppins" ? "Poppins-Regular" : "Helvetica"},
width: '100%',
height: '100%',
}}
notifyClose={() => {
setHotspotDetailMode(false);
triggerHapticFeedback();
}}
closeIconJSX={
<IconButton
onPress={() => {
setHotspotDetailMode(false);
triggerHapticFeedback();
}}
src="https://safecam-org-logos.s3.ap-south-1.amazonaws.com/close.svg"
svg
sx={{
iconSize: 15,
base: {
backgroundColor: '#fff',
width: 40,
height: 40
},
}}
/>
}
src={currentHotspotState.imageSrc}
title={currentHotspotState.description}
description={currentHotspotState.imageTitle}
/>
);
};
const mapStateToProps = ({hotspotDetailMode, currentHotspot, currentView}) => {
return {
hotspotDetailMode: hotspotDetailMode,
currentHotspotState: currentHotspot,
orientation: currentView.orientation,
};
};
export default connect(mapStateToProps, {setHotspotDetailMode})(
HotspotDetailOverlay,
);