UNPKG

@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

70 lines (63 loc) 2.93 kB
/* * Copyright © 2022 S20.AI India Pvt. Ltd. * Contact - origin@s20.ai * License - Licensed as per https://docs.s20.ai/license.html */ export const preProcess = (exteriorData = {}, interiorData= {}) => { if(exteriorData && Object.keys(exteriorData).length > 0){ if(exteriorData.hasOwnProperty("hotspotPostionData") && exteriorData.hasOwnProperty("hotspots")){ let filteredHotspotMetadata = [ ...new Map( exteriorData.hotspotPostionData .filter((d) => { if (d.display.length === 0) return true; else return d.display[2]; }) .map((item) => [ item["hotspotRefId"], { ...item, triggerFrame: item.display.length ? item.frameId : item.triggerFrame, }, ]) ).values(), ] exteriorData.filteredHotspotMetadata = filteredHotspotMetadata; exteriorData.filteredHotspotMetadata.forEach((hp, index)=>{ hp.imageSrc = exteriorData.hotspotImages.find(d=>d.hotspotRefId === hp.hotspotRefId).imageSrc hp.address = index; hp.hotspotType = hp.type; hp.type = "exterior"; }) exteriorData.hotspots.forEach((hp, index)=>{ hp.imageSrc = exteriorData.hotspotImages.find(d=>d.hotspotRefId === hp.hotspotRefId).imageSrc }) } } if(interiorData && Object.keys(interiorData).length > 0){ interiorData.filteredHotspotMetadata = []; if(interiorData.hasOwnProperty("hotspots") && interiorData.hasOwnProperty("hotspotPostionData")){ interiorData.hotspots.forEach((hp, index)=>{ let formattedHp = {...hp} formattedHp.imageSrc = interiorData.hotspotImages.find(d=>d.hotspotRefId === hp.hotspotRefId).imageSrc formattedHp.address = index; formattedHp.hotspotType = hp.type; formattedHp.type = "interior"; interiorData.filteredHotspotMetadata.push(formattedHp) }) } } let combinedHotspotMetadata = [] if(exteriorData && exteriorData.hasOwnProperty("filteredHotspotMetadata") && interiorData && interiorData.hasOwnProperty("filteredHotspotMetadata")){ combinedHotspotMetadata = interiorData.filteredHotspotMetadata.concat(exteriorData.filteredHotspotMetadata); } else if(exteriorData && exteriorData.hasOwnProperty("filteredHotspotMetadata") && interiorData && !interiorData.hasOwnProperty("filteredHotspotMetadata")){ combinedHotspotMetadata = exteriorData.filteredHotspotMetadata; } else if(exteriorData && !exteriorData.hasOwnProperty("filteredHotspotMetadata") && interiorData && interiorData.hasOwnProperty("filteredHotspotMetadata")){ combinedHotspotMetadata = interiorData.filteredHotspotMetadata; } return [exteriorData?exteriorData:{}, interiorData?interiorData:{}, combinedHotspotMetadata?combinedHotspotMetadata:[]]; }