@local-logic/sdks-app 1.24.63 → 1.24.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{Attribution-BsltvGRU.js → Attribution-Duhh7k4x.js} +2 -2
- package/dist/assets/{Attribution-BsltvGRU.js.map → Attribution-Duhh7k4x.js.map} +1 -1
- package/dist/assets/{Attribution-legacy-BNtn1w7h.js → Attribution-legacy-BbMLLCok.js} +2 -2
- package/dist/assets/{Attribution-legacy-BNtn1w7h.js.map → Attribution-legacy-BbMLLCok.js.map} +1 -1
- package/dist/assets/{Cluster-DtK-bXwa-B5Pbc1Sc.js → Cluster-DtK-bXwa-DGFFowZA.js} +2 -2
- package/dist/assets/{Cluster-DtK-bXwa-B5Pbc1Sc.js.map → Cluster-DtK-bXwa-DGFFowZA.js.map} +1 -1
- package/dist/assets/{Cluster-DtK-bXwa-legacy-CR_ltwaU.js → Cluster-DtK-bXwa-legacy-CRwU3yNs.js} +2 -2
- package/dist/assets/{Cluster-DtK-bXwa-legacy-CR_ltwaU.js.map → Cluster-DtK-bXwa-legacy-CRwU3yNs.js.map} +1 -1
- package/dist/assets/{Google-BWu1zjvH-SmYYPNWr.js → Google-BWu1zjvH-DRlN3_8l.js} +2 -2
- package/dist/assets/{Google-BWu1zjvH-SmYYPNWr.js.map → Google-BWu1zjvH-DRlN3_8l.js.map} +1 -1
- package/dist/assets/{Google-BWu1zjvH-legacy-DnDbinCb.js → Google-BWu1zjvH-legacy-D6N6CwVh.js} +2 -2
- package/dist/assets/{Google-BWu1zjvH-legacy-DnDbinCb.js.map → Google-BWu1zjvH-legacy-D6N6CwVh.js.map} +1 -1
- package/dist/assets/{Google-CWJnNepc-legacy-jEyNW8D9.js → Google-CWJnNepc-legacy-Bg1ArvyY.js} +2 -2
- package/dist/assets/{Google-CWJnNepc-legacy-jEyNW8D9.js.map → Google-CWJnNepc-legacy-Bg1ArvyY.js.map} +1 -1
- package/dist/assets/{Google-CWJnNepc-DN8UcJ1R.js → Google-CWJnNepc-znEMOnat.js} +2 -2
- package/dist/assets/{Google-CWJnNepc-DN8UcJ1R.js.map → Google-CWJnNepc-znEMOnat.js.map} +1 -1
- package/dist/assets/{Google-CxfcrB_--B_8lT20L.js → Google-CxfcrB_--BmYO6R-e.js} +2 -2
- package/dist/assets/{Google-CxfcrB_--B_8lT20L.js.map → Google-CxfcrB_--BmYO6R-e.js.map} +1 -1
- package/dist/assets/{Google-CxfcrB_--legacy-BIKEf6Ko.js → Google-CxfcrB_--legacy-C2uFttA5.js} +2 -2
- package/dist/assets/{Google-CxfcrB_--legacy-BIKEf6Ko.js.map → Google-CxfcrB_--legacy-C2uFttA5.js.map} +1 -1
- package/dist/assets/{Google-DJVjCEDp-BuybjgkL.js → Google-DJVjCEDp-CQJvIWAS.js} +2 -2
- package/dist/assets/{Google-DJVjCEDp-BuybjgkL.js.map → Google-DJVjCEDp-CQJvIWAS.js.map} +1 -1
- package/dist/assets/{Google-DJVjCEDp-legacy-CmJ3BbnM.js → Google-DJVjCEDp-legacy-DfLEWG8r.js} +2 -2
- package/dist/assets/{Google-DJVjCEDp-legacy-CmJ3BbnM.js.map → Google-DJVjCEDp-legacy-DfLEWG8r.js.map} +1 -1
- package/dist/assets/{Google-dS9cvzKP-J2VUtgal.js → Google-dS9cvzKP-e9BOsmNl.js} +2 -2
- package/dist/assets/{Google-dS9cvzKP-J2VUtgal.js.map → Google-dS9cvzKP-e9BOsmNl.js.map} +1 -1
- package/dist/assets/{Google-dS9cvzKP-legacy-DjMgMIio.js → Google-dS9cvzKP-legacy-CLJ4FcN0.js} +2 -2
- package/dist/assets/{Google-dS9cvzKP-legacy-DjMgMIio.js.map → Google-dS9cvzKP-legacy-CLJ4FcN0.js.map} +1 -1
- package/dist/assets/{GridGraph-CqFuBYej.js → GridGraph-C6-EwOUl.js} +2 -2
- package/dist/assets/{GridGraph-CqFuBYej.js.map → GridGraph-C6-EwOUl.js.map} +1 -1
- package/dist/assets/{GridGraph-legacy-B-ydwbji.js → GridGraph-legacy-25zMZaP_.js} +2 -2
- package/dist/assets/{GridGraph-legacy-B-ydwbji.js.map → GridGraph-legacy-25zMZaP_.js.map} +1 -1
- package/dist/assets/{LeadCapture-yB2WdcOs.js → LeadCapture-6q_e_8dX.js} +2 -2
- package/dist/assets/{LeadCapture-yB2WdcOs.js.map → LeadCapture-6q_e_8dX.js.map} +1 -1
- package/dist/assets/{LeadCapture-legacy-jIlGk8rU.js → LeadCapture-legacy-BHqcP8Iw.js} +2 -2
- package/dist/assets/{LeadCapture-legacy-jIlGk8rU.js.map → LeadCapture-legacy-BHqcP8Iw.js.map} +1 -1
- package/dist/assets/{LocalContent-BA9XaRx7.js → LocalContent-9HZ41rdH.js} +2 -2
- package/dist/assets/{LocalContent-BA9XaRx7.js.map → LocalContent-9HZ41rdH.js.map} +1 -1
- package/dist/assets/LocalContent-legacy-1srGSRaL.js +2 -0
- package/dist/assets/{LocalContent-legacy-ibTI5FZ4.js.map → LocalContent-legacy-1srGSRaL.js.map} +1 -1
- package/dist/assets/{LocalDemographics-BIytidiv.js → LocalDemographics-DWT6vil2.js} +2 -2
- package/dist/assets/{LocalDemographics-BIytidiv.js.map → LocalDemographics-DWT6vil2.js.map} +1 -1
- package/dist/assets/{LocalDemographics-legacy-C7tIK3XH.js → LocalDemographics-legacy-C645xhSC.js} +2 -2
- package/dist/assets/{LocalDemographics-legacy-C7tIK3XH.js.map → LocalDemographics-legacy-C645xhSC.js.map} +1 -1
- package/dist/assets/{Mapbox-B9pa-75a-BOtxeWGb.js → Mapbox-B9pa-75a-ClPYY137.js} +2 -2
- package/dist/assets/{Mapbox-B9pa-75a-BOtxeWGb.js.map → Mapbox-B9pa-75a-ClPYY137.js.map} +1 -1
- package/dist/assets/{Mapbox-B9pa-75a-legacy-CHrYGkGc.js → Mapbox-B9pa-75a-legacy-Dk1YPwyb.js} +2 -2
- package/dist/assets/{Mapbox-B9pa-75a-legacy-CHrYGkGc.js.map → Mapbox-B9pa-75a-legacy-Dk1YPwyb.js.map} +1 -1
- package/dist/assets/{Mapbox-BpJHQDi--DNuvIXte.js → Mapbox-BpJHQDi--CLyxuwqr.js} +2 -2
- package/dist/assets/{Mapbox-BpJHQDi--DNuvIXte.js.map → Mapbox-BpJHQDi--CLyxuwqr.js.map} +1 -1
- package/dist/assets/{Mapbox-BpJHQDi--legacy-pw96w162.js → Mapbox-BpJHQDi--legacy-DwGz9cU-.js} +2 -2
- package/dist/assets/{Mapbox-BpJHQDi--legacy-pw96w162.js.map → Mapbox-BpJHQDi--legacy-DwGz9cU-.js.map} +1 -1
- package/dist/assets/{Mapbox-BtxA3en8-3Z72nNmw.js → Mapbox-BtxA3en8-C82di8Le.js} +2 -2
- package/dist/assets/{Mapbox-BtxA3en8-3Z72nNmw.js.map → Mapbox-BtxA3en8-C82di8Le.js.map} +1 -1
- package/dist/assets/{Mapbox-BtxA3en8-legacy-CSU7NLBt.js → Mapbox-BtxA3en8-legacy-DQTm7hJ_.js} +2 -2
- package/dist/assets/{Mapbox-BtxA3en8-legacy-CSU7NLBt.js.map → Mapbox-BtxA3en8-legacy-DQTm7hJ_.js.map} +1 -1
- package/dist/assets/{Mapbox-CDUr5XKG-5ASiBTlv.js → Mapbox-CDUr5XKG-QYnXDVVu.js} +2 -2
- package/dist/assets/{Mapbox-CDUr5XKG-5ASiBTlv.js.map → Mapbox-CDUr5XKG-QYnXDVVu.js.map} +1 -1
- package/dist/assets/{Mapbox-CDUr5XKG-legacy-3huz0GR_.js → Mapbox-CDUr5XKG-legacy-B6iPzpfO.js} +2 -2
- package/dist/assets/{Mapbox-CDUr5XKG-legacy-3huz0GR_.js.map → Mapbox-CDUr5XKG-legacy-B6iPzpfO.js.map} +1 -1
- package/dist/assets/{Mapbox-DwSofiet-ILkehD5G.js → Mapbox-DwSofiet-Mmgq5D6-.js} +2 -2
- package/dist/assets/{Mapbox-DwSofiet-ILkehD5G.js.map → Mapbox-DwSofiet-Mmgq5D6-.js.map} +1 -1
- package/dist/assets/{Mapbox-DwSofiet-legacy-D3BpQm2w.js → Mapbox-DwSofiet-legacy-BoDFeBXZ.js} +2 -2
- package/dist/assets/{Mapbox-DwSofiet-legacy-D3BpQm2w.js.map → Mapbox-DwSofiet-legacy-BoDFeBXZ.js.map} +1 -1
- package/dist/assets/{Maptiler-CYFdJNvN-g3KKpHdt.js → Maptiler-CYFdJNvN-DYIrBgH6.js} +2 -2
- package/dist/assets/{Maptiler-CYFdJNvN-g3KKpHdt.js.map → Maptiler-CYFdJNvN-DYIrBgH6.js.map} +1 -1
- package/dist/assets/{Maptiler-CYFdJNvN-legacy-NhbfdVrf.js → Maptiler-CYFdJNvN-legacy-yj9pOpKs.js} +2 -2
- package/dist/assets/{Maptiler-CYFdJNvN-legacy-NhbfdVrf.js.map → Maptiler-CYFdJNvN-legacy-yj9pOpKs.js.map} +1 -1
- package/dist/assets/{Maptiler-Ce0L0Kac-CzlrjKAh.js → Maptiler-Ce0L0Kac-BTFcxDAa.js} +2 -2
- package/dist/assets/{Maptiler-Ce0L0Kac-CzlrjKAh.js.map → Maptiler-Ce0L0Kac-BTFcxDAa.js.map} +1 -1
- package/dist/assets/{Maptiler-Ce0L0Kac-legacy-DTnLJDX_.js → Maptiler-Ce0L0Kac-legacy-BmTKKLgL.js} +2 -2
- package/dist/assets/{Maptiler-Ce0L0Kac-legacy-DTnLJDX_.js.map → Maptiler-Ce0L0Kac-legacy-BmTKKLgL.js.map} +1 -1
- package/dist/assets/{Maptiler-CkoZpE04-CL-oFuER.js → Maptiler-CkoZpE04-CKOkRzwH.js} +2 -2
- package/dist/assets/{Maptiler-CkoZpE04-CL-oFuER.js.map → Maptiler-CkoZpE04-CKOkRzwH.js.map} +1 -1
- package/dist/assets/{Maptiler-CkoZpE04-legacy-CLKqb0ok.js → Maptiler-CkoZpE04-legacy-BAfeb_fR.js} +2 -2
- package/dist/assets/{Maptiler-CkoZpE04-legacy-CLKqb0ok.js.map → Maptiler-CkoZpE04-legacy-BAfeb_fR.js.map} +1 -1
- package/dist/assets/{Maptiler-CyB_-uzB-legacy-C3M4Wl83.js → Maptiler-CyB_-uzB-legacy-4okZ1sfA.js} +2 -2
- package/dist/assets/{Maptiler-CyB_-uzB-legacy-C3M4Wl83.js.map → Maptiler-CyB_-uzB-legacy-4okZ1sfA.js.map} +1 -1
- package/dist/assets/{Maptiler-CyB_-uzB-BsYYQ7sz.js → Maptiler-CyB_-uzB-vC5akwa6.js} +2 -2
- package/dist/assets/{Maptiler-CyB_-uzB-BsYYQ7sz.js.map → Maptiler-CyB_-uzB-vC5akwa6.js.map} +1 -1
- package/dist/assets/{Maptiler-DsgKmpne-DxIuH2Tl.js → Maptiler-DsgKmpne-6BzLeKc0.js} +2 -2
- package/dist/assets/{Maptiler-DsgKmpne-DxIuH2Tl.js.map → Maptiler-DsgKmpne-6BzLeKc0.js.map} +1 -1
- package/dist/assets/{Maptiler-DsgKmpne-legacy-BpEYCv0q.js → Maptiler-DsgKmpne-legacy-TqJ_TVEa.js} +2 -2
- package/dist/assets/{Maptiler-DsgKmpne-legacy-BpEYCv0q.js.map → Maptiler-DsgKmpne-legacy-TqJ_TVEa.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Drkpm3bl-DI0HvpiK.js → MarkerIcon-Drkpm3bl-6CRlQtyO.js} +2 -2
- package/dist/assets/{MarkerIcon-Drkpm3bl-DI0HvpiK.js.map → MarkerIcon-Drkpm3bl-6CRlQtyO.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Drkpm3bl-legacy-CjOJi2BD.js → MarkerIcon-Drkpm3bl-legacy-BKTQZxwz.js} +2 -2
- package/dist/assets/{MarkerIcon-Drkpm3bl-legacy-CjOJi2BD.js.map → MarkerIcon-Drkpm3bl-legacy-BKTQZxwz.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-BdTDM3-D.js → NeighborhoodCard-C_-8FpDl.js} +2 -2
- package/dist/assets/{NeighborhoodCard-BdTDM3-D.js.map → NeighborhoodCard-C_-8FpDl.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-legacy-DvpbnJ6S.js → NeighborhoodCard-legacy-DW4x82H7.js} +2 -2
- package/dist/assets/{NeighborhoodCard-legacy-DvpbnJ6S.js.map → NeighborhoodCard-legacy-DW4x82H7.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-Ook5N1T2.js → NeighborhoodCharacteristics-BGdxNjXv.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-Ook5N1T2.js.map → NeighborhoodCharacteristics-BGdxNjXv.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-legacy-D3KCHmoq.js → NeighborhoodCharacteristics-legacy-DVi_mvql.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-legacy-D3KCHmoq.js.map → NeighborhoodCharacteristics-legacy-DVi_mvql.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-CTpC3jE7.js → NeighborhoodDemographics-Bl2aRgAD.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-CTpC3jE7.js.map → NeighborhoodDemographics-Bl2aRgAD.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-legacy-DgcM1GAK.js → NeighborhoodDemographics-legacy-C6PkQmoB.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-legacy-DgcM1GAK.js.map → NeighborhoodDemographics-legacy-C6PkQmoB.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-BKynIDFO.js → NeighborhoodFeatured-C0qVWedw.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-BKynIDFO.js.map → NeighborhoodFeatured-C0qVWedw.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-legacy-DlwdffhT.js → NeighborhoodFeatured-legacy-BcjeyOc7.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-legacy-DlwdffhT.js.map → NeighborhoodFeatured-legacy-BcjeyOc7.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-BcdgrQtP.js → NeighborhoodHero-BSMivGqs.js} +2 -2
- package/dist/assets/{NeighborhoodHero-BcdgrQtP.js.map → NeighborhoodHero-BSMivGqs.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-legacy-CfCrSS6Z.js → NeighborhoodHero-legacy-CVItTB2U.js} +2 -2
- package/dist/assets/{NeighborhoodHero-legacy-CfCrSS6Z.js.map → NeighborhoodHero-legacy-CVItTB2U.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-C3maAwKP.js → NeighborhoodHighlights-BhVYsA3-.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-C3maAwKP.js.map → NeighborhoodHighlights-BhVYsA3-.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-legacy-CALvujpk.js → NeighborhoodHighlights-legacy-Do2PVQvq.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-legacy-CALvujpk.js.map → NeighborhoodHighlights-legacy-Do2PVQvq.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-CT8veCNl.js → NeighborhoodMap-D6OihpAJ.js} +2 -2
- package/dist/assets/{NeighborhoodMap-CT8veCNl.js.map → NeighborhoodMap-D6OihpAJ.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-legacy-CSmAZuD2.js → NeighborhoodMap-legacy-Dzr11Edf.js} +2 -2
- package/dist/assets/{NeighborhoodMap-legacy-CSmAZuD2.js.map → NeighborhoodMap-legacy-Dzr11Edf.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-DLlvQnd2.js → NeighborhoodMarketTrends-BYLv7ssD.js} +3 -3
- package/dist/assets/{NeighborhoodMarketTrends-DLlvQnd2.js.map → NeighborhoodMarketTrends-BYLv7ssD.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-legacy-DA5VImYp.js → NeighborhoodMarketTrends-legacy-D4CqgzKy.js} +2 -2
- package/dist/assets/{NeighborhoodMarketTrends-legacy-DA5VImYp.js.map → NeighborhoodMarketTrends-legacy-D4CqgzKy.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-zUWSiNi8.js → NeighborhoodMatch-2dDNoHEC.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-zUWSiNi8.js.map → NeighborhoodMatch-2dDNoHEC.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-legacy-BkhxK-bz.js → NeighborhoodMatch-legacy-DSUP8S00.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-legacy-BkhxK-bz.js.map → NeighborhoodMatch-legacy-DSUP8S00.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-0Zr-7AQ9.js → NeighborhoodPropertyValueDrivers-BbkPB6Ts.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-0Zr-7AQ9.js.map → NeighborhoodPropertyValueDrivers-BbkPB6Ts.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-yQwTbIN8.js → NeighborhoodPropertyValueDrivers-legacy-D62occGi.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-yQwTbIN8.js.map → NeighborhoodPropertyValueDrivers-legacy-D62occGi.js.map} +1 -1
- package/dist/assets/{NeighborhoodSchools-legacy-CTG5Nbpw.js → NeighborhoodSchools-legacy-CRJgyQRJ.js} +2 -2
- package/dist/assets/{NeighborhoodSchools-legacy-CTG5Nbpw.js.map → NeighborhoodSchools-legacy-CRJgyQRJ.js.map} +1 -1
- package/dist/assets/{NeighborhoodSchools-DFUvz0LY.js → NeighborhoodSchools-zyjBTcAS.js} +2 -2
- package/dist/assets/{NeighborhoodSchools-DFUvz0LY.js.map → NeighborhoodSchools-zyjBTcAS.js.map} +1 -1
- package/dist/assets/{NeighborhoodShowcase-BxcWXdht.js → NeighborhoodShowcase-DkqbmfHO.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-BxcWXdht.js.map → NeighborhoodShowcase-DkqbmfHO.js.map} +1 -1
- package/dist/assets/{NeighborhoodShowcase-legacy-Ciwbw3YX.js → NeighborhoodShowcase-legacy-CztESO-F.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-legacy-Ciwbw3YX.js.map → NeighborhoodShowcase-legacy-CztESO-F.js.map} +1 -1
- package/dist/assets/{NoDataContent-K8RstIPw.js → NoDataContent-BOVv2wDG.js} +2 -2
- package/dist/assets/{NoDataContent-K8RstIPw.js.map → NoDataContent-BOVv2wDG.js.map} +1 -1
- package/dist/assets/{NoDataContent-legacy-CzU5MBcr.js → NoDataContent-legacy-C3AeyeSg.js} +2 -2
- package/dist/assets/{NoDataContent-legacy-CzU5MBcr.js.map → NoDataContent-legacy-C3AeyeSg.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-iptN_OTD.js → ResizeWrapper-Bhg67yfB.js} +2 -2
- package/dist/assets/{ResizeWrapper-iptN_OTD.js.map → ResizeWrapper-Bhg67yfB.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-legacy-OscRVVIk.js → ResizeWrapper-legacy-F6SJE_TA.js} +2 -2
- package/dist/assets/{ResizeWrapper-legacy-OscRVVIk.js.map → ResizeWrapper-legacy-F6SJE_TA.js.map} +1 -1
- package/dist/assets/{ScoreCardList-BGFtynWY.js → ScoreCardList-DReE0M82.js} +2 -2
- package/dist/assets/{ScoreCardList-BGFtynWY.js.map → ScoreCardList-DReE0M82.js.map} +1 -1
- package/dist/assets/{ScoreCardList-legacy-DkYwRt8q.js → ScoreCardList-legacy-B-Iw3TWS.js} +2 -2
- package/dist/assets/{ScoreCardList-legacy-DkYwRt8q.js.map → ScoreCardList-legacy-B-Iw3TWS.js.map} +1 -1
- package/dist/assets/{ScoreIcon-legacy-CKB6p9iW.js → ScoreIcon-legacy-Ds3IYvwY.js} +2 -2
- package/dist/assets/{ScoreIcon-legacy-CKB6p9iW.js.map → ScoreIcon-legacy-Ds3IYvwY.js.map} +1 -1
- package/dist/assets/{ScoreIcon-BGcwqtBH.js → ScoreIcon-qr7Dyd1_.js} +2 -2
- package/dist/assets/{ScoreIcon-BGcwqtBH.js.map → ScoreIcon-qr7Dyd1_.js.map} +1 -1
- package/dist/assets/{Testing-BQ7AFsvh-B0zjSsQX.js → Testing-BQ7AFsvh-DFMBrZvz.js} +2 -2
- package/dist/assets/{Testing-BQ7AFsvh-B0zjSsQX.js.map → Testing-BQ7AFsvh-DFMBrZvz.js.map} +1 -1
- package/dist/assets/{Testing-BQ7AFsvh-legacy-DWyP-TZm.js → Testing-BQ7AFsvh-legacy-u-xLnoNh.js} +2 -2
- package/dist/assets/{Testing-BQ7AFsvh-legacy-DWyP-TZm.js.map → Testing-BQ7AFsvh-legacy-u-xLnoNh.js.map} +1 -1
- package/dist/assets/{Testing-CZDor_UM-DKHyShOL.js → Testing-CZDor_UM-BXoIFD2V.js} +2 -2
- package/dist/assets/{Testing-CZDor_UM-DKHyShOL.js.map → Testing-CZDor_UM-BXoIFD2V.js.map} +1 -1
- package/dist/assets/{Testing-CZDor_UM-legacy-DYOc_7jJ.js → Testing-CZDor_UM-legacy-nUkPPr7r.js} +2 -2
- package/dist/assets/{Testing-CZDor_UM-legacy-DYOc_7jJ.js.map → Testing-CZDor_UM-legacy-nUkPPr7r.js.map} +1 -1
- package/dist/assets/{Testing-CxwUbSxG-Vw-NLu0P.js → Testing-CxwUbSxG-Bht4ySMN.js} +2 -2
- package/dist/assets/{Testing-CxwUbSxG-Vw-NLu0P.js.map → Testing-CxwUbSxG-Bht4ySMN.js.map} +1 -1
- package/dist/assets/{Testing-CxwUbSxG-legacy-Dpbq1Bh4.js → Testing-CxwUbSxG-legacy-CW2pKq5L.js} +2 -2
- package/dist/assets/{Testing-CxwUbSxG-legacy-Dpbq1Bh4.js.map → Testing-CxwUbSxG-legacy-CW2pKq5L.js.map} +1 -1
- package/dist/assets/{Testing-vfABKYEg-legacy-BpzPtqgn.js → Testing-vfABKYEg-legacy-CAaWJ3i7.js} +2 -2
- package/dist/assets/{Testing-vfABKYEg-legacy-BpzPtqgn.js.map → Testing-vfABKYEg-legacy-CAaWJ3i7.js.map} +1 -1
- package/dist/assets/{Testing-vfABKYEg-BEq8jFJw.js → Testing-vfABKYEg-nwKJxiQ-.js} +2 -2
- package/dist/assets/{Testing-vfABKYEg-BEq8jFJw.js.map → Testing-vfABKYEg-nwKJxiQ-.js.map} +1 -1
- package/dist/assets/{Testing-wan6urXy-PZYC8nyQ.js → Testing-wan6urXy-B0sm4u_j.js} +2 -2
- package/dist/assets/{Testing-wan6urXy-PZYC8nyQ.js.map → Testing-wan6urXy-B0sm4u_j.js.map} +1 -1
- package/dist/assets/{Testing-wan6urXy-legacy-CKFpdCQ6.js → Testing-wan6urXy-legacy-CQ0zqTGx.js} +2 -2
- package/dist/assets/{Testing-wan6urXy-legacy-CKFpdCQ6.js.map → Testing-wan6urXy-legacy-CQ0zqTGx.js.map} +1 -1
- package/dist/assets/{TitleHeader-BZ-WJqqQ.js → TitleHeader-DqQxUayY.js} +2 -2
- package/dist/assets/{TitleHeader-BZ-WJqqQ.js.map → TitleHeader-DqQxUayY.js.map} +1 -1
- package/dist/assets/{TitleHeader-legacy-VTfonLLs.js → TitleHeader-legacy-pLHeIO4_.js} +2 -2
- package/dist/assets/{TitleHeader-legacy-VTfonLLs.js.map → TitleHeader-legacy-pLHeIO4_.js.map} +1 -1
- package/dist/assets/{Trans-DJmgQYxZ.js → Trans-BLu0zcU1.js} +2 -2
- package/dist/assets/{Trans-DJmgQYxZ.js.map → Trans-BLu0zcU1.js.map} +1 -1
- package/dist/assets/{Trans-legacy-DfM0QowQ.js → Trans-legacy-CQPgpMfP.js} +2 -2
- package/dist/assets/{Trans-legacy-DfM0QowQ.js.map → Trans-legacy-CQPgpMfP.js.map} +1 -1
- package/dist/assets/{ValidateOptions-BOHq0NLG.js → ValidateOptions-BivAr3ZH.js} +2 -2
- package/dist/assets/{ValidateOptions-BOHq0NLG.js.map → ValidateOptions-BivAr3ZH.js.map} +1 -1
- package/dist/assets/{ValidateOptions-legacy-CRx_un0J.js → ValidateOptions-legacy-B4kQEpo7.js} +2 -2
- package/dist/assets/{ValidateOptions-legacy-CRx_un0J.js.map → ValidateOptions-legacy-B4kQEpo7.js.map} +1 -1
- package/dist/assets/{dist-DjT90Vie.js → dist-JadUzcvL.js} +2 -2
- package/dist/assets/{dist-DjT90Vie.js.map → dist-JadUzcvL.js.map} +1 -1
- package/dist/assets/{dist-legacy-C6cEG2G4.js → dist-legacy-6uOt0Yh8.js} +2 -2
- package/dist/assets/{dist-legacy-C6cEG2G4.js.map → dist-legacy-6uOt0Yh8.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-CLYWizpG.js → getMapProviderConfig-DNFSt_ai.js} +3 -3
- package/dist/assets/{getMapProviderConfig-CLYWizpG.js.map → getMapProviderConfig-DNFSt_ai.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-legacy-BqZuG0-K.js → getMapProviderConfig-legacy-DRwYzoDU.js} +2 -2
- package/dist/assets/{getMapProviderConfig-legacy-BqZuG0-K.js.map → getMapProviderConfig-legacy-DRwYzoDU.js.map} +1 -1
- package/dist/assets/{getPaddedBounds-FpsQymJC-CamcKdIj.js → getPaddedBounds-FpsQymJC--V91KbDr.js} +2 -2
- package/dist/assets/{getPaddedBounds-FpsQymJC-CamcKdIj.js.map → getPaddedBounds-FpsQymJC--V91KbDr.js.map} +1 -1
- package/dist/assets/{getPaddedBounds-FpsQymJC-legacy-TefV3FWy.js → getPaddedBounds-FpsQymJC-legacy-BAfRrfiC.js} +2 -2
- package/dist/assets/{getPaddedBounds-FpsQymJC-legacy-TefV3FWy.js.map → getPaddedBounds-FpsQymJC-legacy-BAfRrfiC.js.map} +1 -1
- package/dist/assets/{index-BLDMLEaX.js → index-DHfBmUAQ.js} +3 -3
- package/dist/assets/{index-BLDMLEaX.js.map → index-DHfBmUAQ.js.map} +1 -1
- package/dist/assets/{index-legacy-BzMlHwaA.js → index-legacy-CdRffLlb.js} +2 -2
- package/dist/assets/{index-legacy-BzMlHwaA.js.map → index-legacy-CdRffLlb.js.map} +1 -1
- package/dist/assets/{index.es-D680q4E2.js → index.es-B0TyuPgo.js} +2 -2
- package/dist/assets/{index.es-D680q4E2.js.map → index.es-B0TyuPgo.js.map} +1 -1
- package/dist/assets/{index.es-legacy-CLQaVm5G.js → index.es-legacy-DGBuVsHM.js} +2 -2
- package/dist/assets/{index.es-legacy-CLQaVm5G.js.map → index.es-legacy-DGBuVsHM.js.map} +1 -1
- package/dist/assets/{mapbox-BiIB2Zbq-DgXGTLoF.js → mapbox-BiIB2Zbq-gUZoKTZh.js} +2 -2
- package/dist/assets/{mapbox-BiIB2Zbq-DgXGTLoF.js.map → mapbox-BiIB2Zbq-gUZoKTZh.js.map} +1 -1
- package/dist/assets/{mapbox-BiIB2Zbq-legacy-CWG67TM7.js → mapbox-BiIB2Zbq-legacy-BzLqYdgk.js} +2 -2
- package/dist/assets/{mapbox-BiIB2Zbq-legacy-CWG67TM7.js.map → mapbox-BiIB2Zbq-legacy-BzLqYdgk.js.map} +1 -1
- package/dist/assets/{maplibre-Cx0I-z8h-CKf-PaNJ.js → maplibre-Cx0I-z8h-CpfLgNDU.js} +2 -2
- package/dist/assets/{maplibre-Cx0I-z8h-CKf-PaNJ.js.map → maplibre-Cx0I-z8h-CpfLgNDU.js.map} +1 -1
- package/dist/assets/{maplibre-Cx0I-z8h-legacy-BLv0jU9u.js → maplibre-Cx0I-z8h-legacy-DNmyXE2u.js} +2 -2
- package/dist/assets/{maplibre-Cx0I-z8h-legacy-BLv0jU9u.js.map → maplibre-Cx0I-z8h-legacy-DNmyXE2u.js.map} +1 -1
- package/dist/assets/neighborhood-fallback-Bx8UkjEB.js.map +1 -1
- package/dist/assets/{sdks-COqbeKyR.js → sdks-e3TteF4P.js} +2 -2
- package/dist/assets/{sdks-COqbeKyR.js.map → sdks-e3TteF4P.js.map} +1 -1
- package/dist/assets/{sdks-legacy-DQ7jLJZE.js → sdks-legacy-BcdXj8R9.js} +2 -2
- package/dist/assets/{sdks-legacy-DQ7jLJZE.js.map → sdks-legacy-BcdXj8R9.js.map} +1 -1
- package/dist/assets/{styles-DCI3UJny-DrJgfl7H.js → styles-DCI3UJny-OwNwQYJv.js} +2 -2
- package/dist/assets/{styles-DCI3UJny-DrJgfl7H.js.map → styles-DCI3UJny-OwNwQYJv.js.map} +1 -1
- package/dist/assets/{styles-DCI3UJny-legacy-Dw44-3MI.js → styles-DCI3UJny-legacy-BfzvePT0.js} +2 -2
- package/dist/assets/{styles-DCI3UJny-legacy-Dw44-3MI.js.map → styles-DCI3UJny-legacy-BfzvePT0.js.map} +1 -1
- package/dist/assets/{styles-DMA_7NV0-D3y1DeLZ.js → styles-DMA_7NV0-CJzE42wT.js} +2 -2
- package/dist/assets/{styles-DMA_7NV0-D3y1DeLZ.js.map → styles-DMA_7NV0-CJzE42wT.js.map} +1 -1
- package/dist/assets/{styles-DMA_7NV0-legacy-CYkSS_lc.js → styles-DMA_7NV0-legacy-DO9L0b_C.js} +2 -2
- package/dist/assets/{styles-DMA_7NV0-legacy-CYkSS_lc.js.map → styles-DMA_7NV0-legacy-DO9L0b_C.js.map} +1 -1
- package/dist/assets/{useDemographicsData-DbxsBDeY.js → useDemographicsData-C4iCuplI.js} +2 -2
- package/dist/assets/{useDemographicsData-DbxsBDeY.js.map → useDemographicsData-C4iCuplI.js.map} +1 -1
- package/dist/assets/{useDemographicsData-legacy-CG3XHkyh.js → useDemographicsData-legacy-OsSaC0p-.js} +2 -2
- package/dist/assets/{useDemographicsData-legacy-CG3XHkyh.js.map → useDemographicsData-legacy-OsSaC0p-.js.map} +1 -1
- package/dist/assets/{useGeographies-Ca5nEDBN.js → useGeographies-Dbxf3asb.js} +2 -2
- package/dist/assets/{useGeographies-Ca5nEDBN.js.map → useGeographies-Dbxf3asb.js.map} +1 -1
- package/dist/assets/{useGeographies-legacy-CcWz8DvM.js → useGeographies-legacy-BFHs291p.js} +2 -2
- package/dist/assets/{useGeographies-legacy-CcWz8DvM.js.map → useGeographies-legacy-BFHs291p.js.map} +1 -1
- package/dist/assets/{useIsMobile-Bxsws0pn.js → useIsMobile-DNaqDzbl.js} +2 -2
- package/dist/assets/{useIsMobile-Bxsws0pn.js.map → useIsMobile-DNaqDzbl.js.map} +1 -1
- package/dist/assets/{useIsMobile-legacy-zb8bPQUw.js → useIsMobile-legacy-B6-NPP6W.js} +2 -2
- package/dist/assets/{useIsMobile-legacy-zb8bPQUw.js.map → useIsMobile-legacy-B6-NPP6W.js.map} +1 -1
- package/dist/assets/{useLocation-Cw-YxWBt.js → useLocation-ZUEWhDQZ.js} +2 -2
- package/dist/assets/{useLocation-Cw-YxWBt.js.map → useLocation-ZUEWhDQZ.js.map} +1 -1
- package/dist/assets/{useLocation-legacy-DROxjKYy.js → useLocation-legacy-DwBFDrsA.js} +2 -2
- package/dist/assets/{useLocation-legacy-DROxjKYy.js.map → useLocation-legacy-DwBFDrsA.js.map} +1 -1
- package/dist/assets/{useProfiles-8Z_GZOzb.js → useProfiles-BIFSAlrA.js} +2 -2
- package/dist/assets/{useProfiles-8Z_GZOzb.js.map → useProfiles-BIFSAlrA.js.map} +1 -1
- package/dist/assets/{useProfiles-legacy-C4_roJUq.js → useProfiles-legacy-DAWflSgN.js} +2 -2
- package/dist/assets/{useProfiles-legacy-C4_roJUq.js.map → useProfiles-legacy-DAWflSgN.js.map} +1 -1
- package/dist/assets/{useSchools-legacy-T6pvbGsp.js → useSchools-legacy-CgZHAzMa.js} +2 -2
- package/dist/assets/{useSchools-legacy-T6pvbGsp.js.map → useSchools-legacy-CgZHAzMa.js.map} +1 -1
- package/dist/assets/{useSchools-DyrTKmXR.js → useSchools-qUQmMbTk.js} +2 -2
- package/dist/assets/{useSchools-DyrTKmXR.js.map → useSchools-qUQmMbTk.js.map} +1 -1
- package/dist/assets/{useScores--bTvRnnj.js → useScores-C2l0EkUs.js} +2 -2
- package/dist/assets/{useScores--bTvRnnj.js.map → useScores-C2l0EkUs.js.map} +1 -1
- package/dist/assets/{useScores-legacy-C2gadPY-.js → useScores-legacy-BtI93V2X.js} +2 -2
- package/dist/assets/{useScores-legacy-C2gadPY-.js.map → useScores-legacy-BtI93V2X.js.map} +1 -1
- package/dist/assets/{utils-CV8G-gCd-CCr0oecj.js → utils-CV8G-gCd-BA5hEMgo.js} +2 -2
- package/dist/assets/{utils-CV8G-gCd-CCr0oecj.js.map → utils-CV8G-gCd-BA5hEMgo.js.map} +1 -1
- package/dist/assets/{utils-CV8G-gCd-legacy-DwIJ3EdU.js → utils-CV8G-gCd-legacy-C6n6__tU.js} +2 -2
- package/dist/assets/{utils-CV8G-gCd-legacy-DwIJ3EdU.js.map → utils-CV8G-gCd-legacy-C6n6__tU.js.map} +1 -1
- package/dist/index.html +2 -2
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.d.ts.map +1 -1
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.js +3 -1
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.js.map +1 -1
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.test.js +24 -0
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/assets/LocalContent-legacy-ibTI5FZ4.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodFeatured-legacy-DlwdffhT.js","names":[],"sources":["../../src/sdks/NeighborhoodFeatured/hooks/useFavoriteNeighborhoods.ts","../../src/sdks/NeighborhoodFeatured/types.ts","../../src/sdks/NeighborhoodFeatured/context.tsx","../../src/sdks/NeighborhoodFeatured/components/Content/styles.ts","../../src/sdks/NeighborhoodFeatured/components/Content/index.tsx","../../src/sdks/NeighborhoodFeatured/schema.ts","../../src/sdks/NeighborhoodFeatured/index.tsx"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { NeighborhoodFeaturedProps } from \"../types\";\nimport errorTracker from \"~/utils/errorTracker\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { ApiNeighborhood } from \"~/types/neighborhoods\";\nimport { transformNeighborhood } from \"~/utils/transformNeighborhood\";\n\nconst ENVIRONMENTS = {\n dev: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n qa: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n prod: \"https://api.locallogic.co/neighborhood-management-v1\",\n};\n\nexport function useFavoriteNeighborhoods({\n externalId,\n}: {\n externalId?: string;\n}) {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const baseURL =\n ENVIRONMENTS[sdkState.globalOptions?.environment?.api || \"prod\"];\n\n const fetchMyNeighborhoods = () =>\n fetch(\n `${baseURL}/sdk/favorite-neighborhoods/${externalId}?include=configurations`,\n {\n headers: {\n Accept: \"application/json\",\n Authorization: sdkState.apiKey as string,\n \"x-ll-sdk-name\": \"neighborhood-featured\",\n },\n method: \"GET\",\n },\n )\n .then((response) => {\n if ([204, 404].includes(response.status)) {\n return null;\n }\n\n if (response.status >= 300) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n return response.json();\n })\n .then((response) => ({\n featured: transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n response.featured,\n response.configurations[response.featured?.geog_id],\n ),\n favorites: response.favorites?.map((neighborhood: ApiNeighborhood) =>\n transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n neighborhood,\n response.configurations[neighborhood?.geog_id],\n ),\n ),\n }))\n .catch((error) => {\n errorTracker.captureException(error);\n\n throw error;\n });\n\n return useQuery({\n queryKey: [\"myNeighborhoods\"],\n queryFn: fetchMyNeighborhoods,\n enabled: !!externalId && !!sdkState.apiKey,\n });\n}\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n exploreShowcaseURL?: string;\n urlSchemaSpacer?: string;\n singleNeighborhoodURLSchema?: string;\n};\n\nexport type NeighborhoodFeaturedProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-featured-Viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood-featured-Card-Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood-featured-Explore-Neighborhoods-Clicked\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood_featured_Card_Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood_featured_Explore_Neighborhoods_Clicked\",\n}\n","import React, { useContext } from \"react\";\nimport { useFavoriteNeighborhoods } from \"./hooks/useFavoriteNeighborhoods\";\nimport {\n type NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { FavoriteNeighborhoods } from \"~/types/neighborhoods\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n isFetched: boolean;\n neighborhoods?: FavoriteNeighborhoods;\n};\n\nconst NeighborhoodFeaturedContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodFeatured = () => useContext(NeighborhoodFeaturedContext);\n\nconst NeighborhoodFeaturedProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const tracking = useTracking();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { data, isFetched, isLoading } = useFavoriteNeighborhoods({\n externalId: sdkState.globalOptions?.externalId,\n });\n\n if (!sdkState.globalOptions?.externalId) {\n throw new Error(\"externalId is required to launch the SDK\");\n }\n\n return (\n <NeighborhoodFeaturedContext.Provider\n value={{\n isFetched,\n isLoading,\n neighborhoods: data,\n }}\n >\n {children}\n </NeighborhoodFeaturedContext.Provider>\n );\n};\n\nexport { useNeighborhoodFeatured, NeighborhoodFeaturedProvider };\n","export const favorites = ` \n place-items-center my-4\n flex justify-between gap-4\n\n flex-col md:flex-row\n`;\n\nexport const card = `\n flex-1 w-full\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const container = `w-full py-2`;\n\nexport const featured = `\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const button = `\n border border-gray-200 rounded-md\n text-ll-primary py-3 px-6\n text-center\n w-96 mx-auto max-w-full block\n\n hover:border-ll-primary\n hover:text-ll-primary\n\n duration-100 transition-colors\n`;\n\nexport const loadingContent = `w-full h-full flex justify-center align-cennter`;\nexport const blankState = `w-full h-full bg-ll-surface py-6 px-5 rounded-md text-ll-placeholder`;\n","import React from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { LoadingSpinner } from \"~/components/deprecated\";\nimport { useTracking } from \"~/tracking\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useNeighborhoodFeatured } from \"~/sdks/NeighborhoodFeatured/context\";\nimport { Neighborhood } from \"~/types/neighborhoods\";\nimport {\n AnalyticsEvents,\n NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n} from \"~/sdks/NeighborhoodFeatured/types\";\n\nimport { getNeighborhoodURLFromSchema } from \"~/utils/formatters/neighborhoodURLSchema\";\n\nimport { NeighborhoodCard } from \"~/components/NeighborhoodCard\";\n\nexport const Content = () => {\n const { t } = useTranslation(\"neighborhoodFeatured\");\n const tracking = useTracking();\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const exploreGatewayURL = sdkState.options?.exploreShowcaseURL || undefined;\n const urlSpacer = sdkState.options?.urlSchemaSpacer || \"-\";\n\n const { neighborhoods, isFetched, isLoading } = useNeighborhoodFeatured();\n const singleNeighborhoodURLSchema =\n sdkState.options?.singleNeighborhoodURLSchema || undefined;\n\n if (!neighborhoods?.featured && neighborhoods?.favorites?.length === 0) {\n return null;\n }\n\n const handleExploreGateway = () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: [\n {\n label: \"externalId\",\n data: sdkState.globalOptions?.externalId,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: {\n ll_externalID: sdkState.globalOptions?.externalId,\n },\n });\n };\n\n const handleNeighborhoodCardClick =\n (neighborhood: Neighborhood, label: string) => () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: [\n {\n label: \"geogID\",\n data: neighborhood.geogId,\n },\n {\n label: \"name\",\n data: neighborhood.name,\n },\n {\n label: \"label\",\n data: label,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: {\n ll_geogID: neighborhood.geogId,\n ll_name: neighborhood.name,\n ll_label: label,\n },\n });\n };\n\n return (\n <>\n {!isFetched ? (\n <div className={styles.loadingContent}>\n <LoadingSpinner image />\n </div>\n ) : (\n <>\n {neighborhoods ? (\n <div className={styles.container}>\n <div className={styles.featured} data-is-loading={isLoading}>\n {neighborhoods?.featured && (\n <div\n onClick={handleNeighborhoodCardClick(\n neighborhoods?.featured,\n \"featured\",\n )}\n >\n <NeighborhoodCard\n key={neighborhoods?.featured.geogId}\n isFeatured\n neighborhood={neighborhoods?.featured}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhoods?.featured,\n urlSpacer,\n )\n }\n />\n </div>\n )}\n </div>\n\n <div className={styles.favorites}>\n {neighborhoods?.favorites?.map((neighborhood, index) => (\n <div\n className={styles.card}\n key={neighborhood.geogId}\n data-is-loading={isLoading}\n onClick={handleNeighborhoodCardClick(\n neighborhood,\n `favorite_${index + 1}`,\n )}\n >\n <NeighborhoodCard\n neighborhood={neighborhood}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhood,\n urlSpacer,\n )\n }\n />\n </div>\n ))}\n </div>\n\n {exploreGatewayURL && (\n <a\n onClick={handleExploreGateway}\n className={styles.button}\n href={exploreGatewayURL}\n target=\"_parent\"\n rel=\"noreferrer\"\n >\n {t(`exploreMoreNeighborhoods`)}\n </a>\n )}\n </div>\n ) : (\n <div className={styles.blankState}>\n <Trans\n i18nKey=\"noData\"\n t={t}\n components={{\n LinkToHub: (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={import.meta.env.VITE_NEIGHBORHOOD_MANAGEMENT_URL}\n />\n ),\n bold: <strong />,\n }}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n // We don't need lat/lng/geographyId for the NeighborhoodFeatured SDK\n // But we need to keep it due to how the SDK library is currently implemented\n lat: number().optional(),\n lng: number().optional(),\n geographyId: string().optional(),\n exploreShowcaseURL: string().optional(),\n urlSchemaSpacer: string().length(1).optional(),\n singleNeighborhoodURLSchema: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport \"~/assets/styles/old-tailwind.css\";\nimport type { NeighborhoodFeaturedProps } from \"./types\";\nimport { NeighborhoodFeaturedProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodFeatured.key);\n\nconst NeighborhoodFeatured = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Featured\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_FEATURED}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodFeatured}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_FEATURED,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodFeaturedProvider>\n <Content />\n </NeighborhoodFeaturedProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodFeatured;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NeighborhoodFeatured-legacy-BcjeyOc7.js","names":[],"sources":["../../src/sdks/NeighborhoodFeatured/hooks/useFavoriteNeighborhoods.ts","../../src/sdks/NeighborhoodFeatured/types.ts","../../src/sdks/NeighborhoodFeatured/context.tsx","../../src/sdks/NeighborhoodFeatured/components/Content/styles.ts","../../src/sdks/NeighborhoodFeatured/components/Content/index.tsx","../../src/sdks/NeighborhoodFeatured/schema.ts","../../src/sdks/NeighborhoodFeatured/index.tsx"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { NeighborhoodFeaturedProps } from \"../types\";\nimport errorTracker from \"~/utils/errorTracker\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { ApiNeighborhood } from \"~/types/neighborhoods\";\nimport { transformNeighborhood } from \"~/utils/transformNeighborhood\";\n\nconst ENVIRONMENTS = {\n dev: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n qa: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n prod: \"https://api.locallogic.co/neighborhood-management-v1\",\n};\n\nexport function useFavoriteNeighborhoods({\n externalId,\n}: {\n externalId?: string;\n}) {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const baseURL =\n ENVIRONMENTS[sdkState.globalOptions?.environment?.api || \"prod\"];\n\n const fetchMyNeighborhoods = () =>\n fetch(\n `${baseURL}/sdk/favorite-neighborhoods/${externalId}?include=configurations`,\n {\n headers: {\n Accept: \"application/json\",\n Authorization: sdkState.apiKey as string,\n \"x-ll-sdk-name\": \"neighborhood-featured\",\n },\n method: \"GET\",\n },\n )\n .then((response) => {\n if ([204, 404].includes(response.status)) {\n return null;\n }\n\n if (response.status >= 300) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n return response.json();\n })\n .then((response) => ({\n featured: transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n response.featured,\n response.configurations[response.featured?.geog_id],\n ),\n favorites: response.favorites?.map((neighborhood: ApiNeighborhood) =>\n transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n neighborhood,\n response.configurations[neighborhood?.geog_id],\n ),\n ),\n }))\n .catch((error) => {\n errorTracker.captureException(error);\n\n throw error;\n });\n\n return useQuery({\n queryKey: [\"myNeighborhoods\"],\n queryFn: fetchMyNeighborhoods,\n enabled: !!externalId && !!sdkState.apiKey,\n });\n}\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n exploreShowcaseURL?: string;\n urlSchemaSpacer?: string;\n singleNeighborhoodURLSchema?: string;\n};\n\nexport type NeighborhoodFeaturedProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-featured-Viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood-featured-Card-Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood-featured-Explore-Neighborhoods-Clicked\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood_featured_Card_Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood_featured_Explore_Neighborhoods_Clicked\",\n}\n","import React, { useContext } from \"react\";\nimport { useFavoriteNeighborhoods } from \"./hooks/useFavoriteNeighborhoods\";\nimport {\n type NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { FavoriteNeighborhoods } from \"~/types/neighborhoods\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n isFetched: boolean;\n neighborhoods?: FavoriteNeighborhoods;\n};\n\nconst NeighborhoodFeaturedContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodFeatured = () => useContext(NeighborhoodFeaturedContext);\n\nconst NeighborhoodFeaturedProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const tracking = useTracking();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { data, isFetched, isLoading } = useFavoriteNeighborhoods({\n externalId: sdkState.globalOptions?.externalId,\n });\n\n if (!sdkState.globalOptions?.externalId) {\n throw new Error(\"externalId is required to launch the SDK\");\n }\n\n return (\n <NeighborhoodFeaturedContext.Provider\n value={{\n isFetched,\n isLoading,\n neighborhoods: data,\n }}\n >\n {children}\n </NeighborhoodFeaturedContext.Provider>\n );\n};\n\nexport { useNeighborhoodFeatured, NeighborhoodFeaturedProvider };\n","export const favorites = ` \n place-items-center my-4\n flex justify-between gap-4\n\n flex-col md:flex-row\n`;\n\nexport const card = `\n flex-1 w-full\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const container = `w-full py-2`;\n\nexport const featured = `\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const button = `\n border border-gray-200 rounded-md\n text-ll-primary py-3 px-6\n text-center\n w-96 mx-auto max-w-full block\n\n hover:border-ll-primary\n hover:text-ll-primary\n\n duration-100 transition-colors\n`;\n\nexport const loadingContent = `w-full h-full flex justify-center align-cennter`;\nexport const blankState = `w-full h-full bg-ll-surface py-6 px-5 rounded-md text-ll-placeholder`;\n","import React from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { LoadingSpinner } from \"~/components/deprecated\";\nimport { useTracking } from \"~/tracking\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useNeighborhoodFeatured } from \"~/sdks/NeighborhoodFeatured/context\";\nimport { Neighborhood } from \"~/types/neighborhoods\";\nimport {\n AnalyticsEvents,\n NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n} from \"~/sdks/NeighborhoodFeatured/types\";\n\nimport { getNeighborhoodURLFromSchema } from \"~/utils/formatters/neighborhoodURLSchema\";\n\nimport { NeighborhoodCard } from \"~/components/NeighborhoodCard\";\n\nexport const Content = () => {\n const { t } = useTranslation(\"neighborhoodFeatured\");\n const tracking = useTracking();\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const exploreGatewayURL = sdkState.options?.exploreShowcaseURL || undefined;\n const urlSpacer = sdkState.options?.urlSchemaSpacer || \"-\";\n\n const { neighborhoods, isFetched, isLoading } = useNeighborhoodFeatured();\n const singleNeighborhoodURLSchema =\n sdkState.options?.singleNeighborhoodURLSchema || undefined;\n\n if (!neighborhoods?.featured && neighborhoods?.favorites?.length === 0) {\n return null;\n }\n\n const handleExploreGateway = () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: [\n {\n label: \"externalId\",\n data: sdkState.globalOptions?.externalId,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: {\n ll_externalID: sdkState.globalOptions?.externalId,\n },\n });\n };\n\n const handleNeighborhoodCardClick =\n (neighborhood: Neighborhood, label: string) => () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: [\n {\n label: \"geogID\",\n data: neighborhood.geogId,\n },\n {\n label: \"name\",\n data: neighborhood.name,\n },\n {\n label: \"label\",\n data: label,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: {\n ll_geogID: neighborhood.geogId,\n ll_name: neighborhood.name,\n ll_label: label,\n },\n });\n };\n\n return (\n <>\n {!isFetched ? (\n <div className={styles.loadingContent}>\n <LoadingSpinner image />\n </div>\n ) : (\n <>\n {neighborhoods ? (\n <div className={styles.container}>\n <div className={styles.featured} data-is-loading={isLoading}>\n {neighborhoods?.featured && (\n <div\n onClick={handleNeighborhoodCardClick(\n neighborhoods?.featured,\n \"featured\",\n )}\n >\n <NeighborhoodCard\n key={neighborhoods?.featured.geogId}\n isFeatured\n neighborhood={neighborhoods?.featured}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhoods?.featured,\n urlSpacer,\n )\n }\n />\n </div>\n )}\n </div>\n\n <div className={styles.favorites}>\n {neighborhoods?.favorites?.map((neighborhood, index) => (\n <div\n className={styles.card}\n key={neighborhood.geogId}\n data-is-loading={isLoading}\n onClick={handleNeighborhoodCardClick(\n neighborhood,\n `favorite_${index + 1}`,\n )}\n >\n <NeighborhoodCard\n neighborhood={neighborhood}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhood,\n urlSpacer,\n )\n }\n />\n </div>\n ))}\n </div>\n\n {exploreGatewayURL && (\n <a\n onClick={handleExploreGateway}\n className={styles.button}\n href={exploreGatewayURL}\n target=\"_parent\"\n rel=\"noreferrer\"\n >\n {t(`exploreMoreNeighborhoods`)}\n </a>\n )}\n </div>\n ) : (\n <div className={styles.blankState}>\n <Trans\n i18nKey=\"noData\"\n t={t}\n components={{\n LinkToHub: (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={import.meta.env.VITE_NEIGHBORHOOD_MANAGEMENT_URL}\n />\n ),\n bold: <strong />,\n }}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n // We don't need lat/lng/geographyId for the NeighborhoodFeatured SDK\n // But we need to keep it due to how the SDK library is currently implemented\n lat: number().optional(),\n lng: number().optional(),\n geographyId: string().optional(),\n exploreShowcaseURL: string().optional(),\n urlSchemaSpacer: string().length(1).optional(),\n singleNeighborhoodURLSchema: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport \"~/assets/styles/old-tailwind.css\";\nimport type { NeighborhoodFeaturedProps } from \"./types\";\nimport { NeighborhoodFeaturedProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodFeatured.key);\n\nconst NeighborhoodFeatured = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Featured\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_FEATURED}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodFeatured}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_FEATURED,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodFeaturedProvider>\n <Content />\n </NeighborhoodFeaturedProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodFeatured;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-BEU_UCik.js";import{l as a}from"./google-maps-vendor-BeDgURNz.js";import{a as t,c as o,d as s,f as n,g as l,n as i,o as r,r as p,t as d,u as g}from"./sdks-
|
|
2
|
-
//# sourceMappingURL=NeighborhoodHero-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-BEU_UCik.js";import{l as a}from"./google-maps-vendor-BeDgURNz.js";import{a as t,c as o,d as s,f as n,g as l,n as i,o as r,r as p,t as d,u as g}from"./sdks-e3TteF4P.js";import{t as m}from"./MapPin.es-C-aQpHUO.js";import{Y as c,i as u,n as h}from"./index-DHfBmUAQ.js";import{t as x}from"./useGeographies-Dbxf3asb.js";/* empty css */import{t as b}from"./ResizeWrapper-Bhg67yfB.js";import{t as f}from"./ValidateOptions-BivAr3ZH.js";import{t as y}from"./useIsMobile-DNaqDzbl.js";import{t as j}from"./useProfiles-BIFSAlrA.js";var k=e(a(),1),v=function(e){return e.SDK_VIEWED="neighborhood-hero-Viewed",e}({}),I=function(e){return e.SDK_VIEWED="sdk_viewed",e}({}),E=c(),O=k.createContext({}),_=()=>(0,k.useContext)(O),w=({children:e})=>{const{sdkState:a}=h(),t=a.globalOptions?.locale||"en",o=r(),s=y();u(()=>{o.postEvent({eventType:v.SDK_VIEWED}),o.trackAnalyticsEvent({eventName:I.SDK_VIEWED})});const{isLoading:n,data:l}=x({geogID:a.options?.geographyId,location:{lat:a.options?.lat,lng:a.options?.lng},externalId:a?.globalOptions?.externalId}),{data:i,isFetching:p}=j({geogID:a.options?.geographyId,location:{lat:a.options?.lat,lng:a.options?.lng},externalId:a?.globalOptions?.externalId}),d=(0,k.useMemo)(()=>Object.values(l||{})[0],[n,l]),g=(0,k.useMemo)(()=>n||p,[n,p]),m=(0,k.useMemo)(()=>{const e=(a.options?.image||"").toLocaleLowerCase();return"hide"===e?null:"string"==typeof d?.image_url&&d?.image_url.length>0?d.image_url:"string"==typeof a.options?.image&&"nofallback"!==e&&"http"===e.substring(0,4)?a.options.image:"nofallback"===e?null:s?"/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg":"/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"},[d?.image_url,a?.options?.image,s]),c=(0,k.useMemo)(()=>({isLoading:g,locale:t,geography:d,isFallbackImage:null!==m&&["/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg","/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"].includes(m),neighborhoodImage:m,neighborhoodSummary:i?.profiles.summary}),[g,t,d,m,i?.profiles?.summary,a]);return(0,E.jsx)(O.Provider,{value:c,children:e})},D=()=>{const{isLoading:e,locale:a,geography:t,neighborhoodImage:o,isFallbackImage:s}=_(),n=(0,k.useMemo)(()=>o?{backgroundImage:`url("${o}")`}:{},[o]);return e?null:(0,E.jsx)("div",{"data-testid":"header-container",className:"\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n",style:n,"data-has-image":null!==o,"data-use-backdrop":!s&&null!==o,children:(0,E.jsxs)("div",{className:"\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n",children:[(0,E.jsx)(m,{className:"\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n"}),(0,E.jsx)("h1",{"data-testid":"micro-location",className:"\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n",children:t?.name?.[a]}),void 0!==t&&t?.level<30&&void 0!==t.city&&(0,E.jsx)("div",{"data-testid":"macro-location",className:"\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n",children:t?.city?.[a]})]})})},M=()=>{const{t:e}=l("neighborhoodHero"),{neighborhoodSummary:a,geography:t}=_();return a?(0,E.jsxs)("div",{className:"px-6 pt-6 pb-px lg:p-6 bg-gray-150/40","data-testid":"summary-container",children:[(0,E.jsx)("h2",{className:"\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n","data-testid":"summary-title",children:e("summaryTitle",{context:t&&t.level>=30?"area":void 0})}),(0,E.jsx)("p",{className:"\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n","data-testid":"summary-description",children:a})]}):null},N=()=>(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(D,{}),(0,E.jsx)(M,{})]}),H=g({lat:s().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:s().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:n().optional(),image:n().optional()}).noUnknown(!0);o(i.neighborhoodWrap.key);var S=()=>{const{sdkState:e}=h(),a=y(),o=e.globalOptions?.locale||"en",s=(0,k.useMemo)(()=>e.options?.geographyId?{geographyId:e.options?.geographyId}:{lat:e.options?.lat,lng:e.options?.lng},[e.options?.lat,e.options?.lng,e.options?.geographyId]);return(0,E.jsx)(b,{children:(0,E.jsx)(f,{sdk:"Neighborhood Hero",schema:H,options:e.options,children:(0,E.jsx)(p,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:d.NEIGHBORHOOD_HERO,children:(0,E.jsx)(t,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:i.neighborhoodWrap,meta:{clientId:e.clientId,productName:d.NEIGHBORHOOD_HERO,productVersion:"1.24.64"},attributes:{location:s,host:e.location,host_url:document.referrer,locale:o,isMobile:a},flags:{isDebugMode:!1},children:(0,E.jsx)(w,{children:(0,E.jsx)(N,{})})})})})})};export{S as default};
|
|
2
|
+
//# sourceMappingURL=NeighborhoodHero-BSMivGqs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodHero-BcdgrQtP.js","names":[],"sources":["../../src/sdks/NeighborhoodHero/assets/images/desktop_fallback.jpg","../../src/sdks/NeighborhoodHero/assets/images/mobile_fallback.jpg","../../src/sdks/NeighborhoodHero/types.ts","../../src/sdks/NeighborhoodHero/context.tsx","../../src/sdks/NeighborhoodHero/components/Header/styles.ts","../../src/sdks/NeighborhoodHero/components/Header/index.tsx","../../src/sdks/NeighborhoodHero/components/Summary/styles.ts","../../src/sdks/NeighborhoodHero/components/Summary/index.tsx","../../src/sdks/NeighborhoodHero/components/Content/index.tsx","../../src/sdks/NeighborhoodHero/schema.ts","../../src/sdks/NeighborhoodHero/index.tsx"],"sourcesContent":["export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","export default \"__VITE_ASSET__DUq8YoikZLXEejpNZ1KQvg__\"","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n image?: string;\n};\n\nexport type NeighborhoodHeroProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-hero-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import React, { useContext, useMemo } from \"react\";\nimport type { Geography } from \"@local-logic/client\";\nimport DesktopFallback from \"./assets/images/desktop_fallback.jpg\";\nimport MobileFallback from \"./assets/images/mobile_fallback.jpg\";\nimport {\n type NeighborhoodHeroProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\n\ninterface Location {\n label?: string;\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n isLoading: boolean;\n locale: \"en\" | \"fr\";\n geography?: Geography;\n neighborhoodImage: string | null;\n isFallbackImage: boolean;\n neighborhoodSummary?: string;\n};\n\nconst NeighborhoodHeroContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodHero = () => useContext(NeighborhoodHeroContext);\n\nconst NeighborhoodHeroProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const isMobile = useIsMobile();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n });\n\n const geography = useMemo(() => {\n const geographiesArray = Object.values(geographyData || {});\n\n return geographiesArray[0];\n }, [isGeographyLoading, geographyData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching,\n [isGeographyLoading, isProfilesFetching],\n );\n\n const neighborhoodImage = useMemo(() => {\n const lowercaseOptionsImageValue = (\n sdkState.options?.image || \"\"\n ).toLocaleLowerCase();\n\n // Always hide the image if the option is set to \"hide\"\n if (lowercaseOptionsImageValue === \"hide\") {\n return null;\n }\n\n // If the geography has an image, use it by default\n if (\n typeof geography?.image_url === \"string\" &&\n geography?.image_url.length > 0\n ) {\n return geography.image_url as string;\n }\n\n // If the image option is set to a string, use it as the image (unless the string is \"noFallback\" which is obviuosly not an image)\n if (\n typeof sdkState.options?.image === \"string\" &&\n lowercaseOptionsImageValue !== \"nofallback\" &&\n lowercaseOptionsImageValue.substring(0, 4) === \"http\"\n ) {\n return sdkState.options.image;\n }\n\n // No fallback image\n if (lowercaseOptionsImageValue === \"nofallback\") {\n return null;\n }\n\n // Fallback image based on the device\n return isMobile ? MobileFallback : DesktopFallback;\n }, [geography?.image_url, sdkState?.options?.image, isMobile]);\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n locale,\n geography,\n isFallbackImage:\n neighborhoodImage !== null &&\n [MobileFallback, DesktopFallback].includes(neighborhoodImage),\n neighborhoodImage,\n neighborhoodSummary: profilesData?.profiles.summary,\n }),\n [\n isLoading,\n locale,\n geography,\n neighborhoodImage,\n profilesData?.profiles?.summary,\n sdkState,\n ],\n );\n\n return (\n <NeighborhoodHeroContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHeroContext.Provider>\n );\n};\n\nexport { useNeighborhoodHero, NeighborhoodHeroProvider, type Location };\n","export const container = `\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n`;\n\nexport const gradientContainer = `\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n`;\n\nexport const icon = `\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n`;\n\nexport const microLocation = `\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n`;\n\nexport const macroLocation = `\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n`;\n","import React, { useMemo } from \"react\";\n\nimport { MapPinIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Header = () => {\n const { isLoading, locale, geography, neighborhoodImage, isFallbackImage } =\n useNeighborhoodHero();\n\n const style = useMemo(() => {\n if (!neighborhoodImage) {\n return {};\n }\n\n return {\n backgroundImage: `url(\"${neighborhoodImage}\")`,\n };\n }, [neighborhoodImage]);\n\n if (isLoading) {\n return null;\n }\n\n return (\n <div\n data-testid=\"header-container\"\n className={styles.container}\n style={style}\n data-has-image={neighborhoodImage !== null}\n data-use-backdrop={!isFallbackImage && neighborhoodImage !== null}\n >\n <div className={styles.gradientContainer}>\n <MapPinIcon className={styles.icon} />\n <h1 data-testid=\"micro-location\" className={styles.microLocation}>\n {geography?.name?.[locale]}\n </h1>\n {typeof geography !== \"undefined\" &&\n geography?.level < 30 &&\n typeof geography.city !== \"undefined\" && (\n <div data-testid=\"macro-location\" className={styles.macroLocation}>\n {geography?.city?.[locale]}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const container = `px-6 pt-6 pb-px lg:p-6 bg-gray-150/40`;\n\nexport const title = `\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n`;\n\nexport const text = `\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n`;\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Summary = () => {\n const { t } = useTranslation(\"neighborhoodHero\");\n const { neighborhoodSummary, geography } = useNeighborhoodHero();\n\n if (!neighborhoodSummary) {\n return null;\n }\n\n return (\n <div className={styles.container} data-testid=\"summary-container\">\n <h2 className={styles.title} data-testid=\"summary-title\">\n {t(\"summaryTitle\", {\n context: geography && geography.level >= 30 ? \"area\" : undefined,\n })}\n </h2>\n <p className={styles.text} data-testid=\"summary-description\">\n {neighborhoodSummary}\n </p>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Header } from \"../Header\";\nimport { Summary } from \"../Summary\";\n\nexport const Content = () => (\n <>\n <Header />\n <Summary />\n </>\n);\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n image: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport type { NeighborhoodHeroProps } from \"./types\";\nimport { NeighborhoodHeroProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHero = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Hero\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HERO}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HERO,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHeroProvider>\n <Content />\n </NeighborhoodHeroProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHero;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NeighborhoodHero-BSMivGqs.js","names":[],"sources":["../../src/sdks/NeighborhoodHero/assets/images/desktop_fallback.jpg","../../src/sdks/NeighborhoodHero/assets/images/mobile_fallback.jpg","../../src/sdks/NeighborhoodHero/types.ts","../../src/sdks/NeighborhoodHero/context.tsx","../../src/sdks/NeighborhoodHero/components/Header/styles.ts","../../src/sdks/NeighborhoodHero/components/Header/index.tsx","../../src/sdks/NeighborhoodHero/components/Summary/styles.ts","../../src/sdks/NeighborhoodHero/components/Summary/index.tsx","../../src/sdks/NeighborhoodHero/components/Content/index.tsx","../../src/sdks/NeighborhoodHero/schema.ts","../../src/sdks/NeighborhoodHero/index.tsx"],"sourcesContent":["export default \"__VITE_ASSET__DUq8YoikZLXEejpNZ1KQvg__\"","export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n image?: string;\n};\n\nexport type NeighborhoodHeroProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-hero-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import React, { useContext, useMemo } from \"react\";\nimport type { Geography } from \"@local-logic/client\";\nimport DesktopFallback from \"./assets/images/desktop_fallback.jpg\";\nimport MobileFallback from \"./assets/images/mobile_fallback.jpg\";\nimport {\n type NeighborhoodHeroProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\n\ninterface Location {\n label?: string;\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n isLoading: boolean;\n locale: \"en\" | \"fr\";\n geography?: Geography;\n neighborhoodImage: string | null;\n isFallbackImage: boolean;\n neighborhoodSummary?: string;\n};\n\nconst NeighborhoodHeroContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodHero = () => useContext(NeighborhoodHeroContext);\n\nconst NeighborhoodHeroProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const isMobile = useIsMobile();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n });\n\n const geography = useMemo(() => {\n const geographiesArray = Object.values(geographyData || {});\n\n return geographiesArray[0];\n }, [isGeographyLoading, geographyData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching,\n [isGeographyLoading, isProfilesFetching],\n );\n\n const neighborhoodImage = useMemo(() => {\n const lowercaseOptionsImageValue = (\n sdkState.options?.image || \"\"\n ).toLocaleLowerCase();\n\n // Always hide the image if the option is set to \"hide\"\n if (lowercaseOptionsImageValue === \"hide\") {\n return null;\n }\n\n // If the geography has an image, use it by default\n if (\n typeof geography?.image_url === \"string\" &&\n geography?.image_url.length > 0\n ) {\n return geography.image_url as string;\n }\n\n // If the image option is set to a string, use it as the image (unless the string is \"noFallback\" which is obviuosly not an image)\n if (\n typeof sdkState.options?.image === \"string\" &&\n lowercaseOptionsImageValue !== \"nofallback\" &&\n lowercaseOptionsImageValue.substring(0, 4) === \"http\"\n ) {\n return sdkState.options.image;\n }\n\n // No fallback image\n if (lowercaseOptionsImageValue === \"nofallback\") {\n return null;\n }\n\n // Fallback image based on the device\n return isMobile ? MobileFallback : DesktopFallback;\n }, [geography?.image_url, sdkState?.options?.image, isMobile]);\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n locale,\n geography,\n isFallbackImage:\n neighborhoodImage !== null &&\n [MobileFallback, DesktopFallback].includes(neighborhoodImage),\n neighborhoodImage,\n neighborhoodSummary: profilesData?.profiles.summary,\n }),\n [\n isLoading,\n locale,\n geography,\n neighborhoodImage,\n profilesData?.profiles?.summary,\n sdkState,\n ],\n );\n\n return (\n <NeighborhoodHeroContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHeroContext.Provider>\n );\n};\n\nexport { useNeighborhoodHero, NeighborhoodHeroProvider, type Location };\n","export const container = `\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n`;\n\nexport const gradientContainer = `\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n`;\n\nexport const icon = `\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n`;\n\nexport const microLocation = `\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n`;\n\nexport const macroLocation = `\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n`;\n","import React, { useMemo } from \"react\";\n\nimport { MapPinIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Header = () => {\n const { isLoading, locale, geography, neighborhoodImage, isFallbackImage } =\n useNeighborhoodHero();\n\n const style = useMemo(() => {\n if (!neighborhoodImage) {\n return {};\n }\n\n return {\n backgroundImage: `url(\"${neighborhoodImage}\")`,\n };\n }, [neighborhoodImage]);\n\n if (isLoading) {\n return null;\n }\n\n return (\n <div\n data-testid=\"header-container\"\n className={styles.container}\n style={style}\n data-has-image={neighborhoodImage !== null}\n data-use-backdrop={!isFallbackImage && neighborhoodImage !== null}\n >\n <div className={styles.gradientContainer}>\n <MapPinIcon className={styles.icon} />\n <h1 data-testid=\"micro-location\" className={styles.microLocation}>\n {geography?.name?.[locale]}\n </h1>\n {typeof geography !== \"undefined\" &&\n geography?.level < 30 &&\n typeof geography.city !== \"undefined\" && (\n <div data-testid=\"macro-location\" className={styles.macroLocation}>\n {geography?.city?.[locale]}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const container = `px-6 pt-6 pb-px lg:p-6 bg-gray-150/40`;\n\nexport const title = `\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n`;\n\nexport const text = `\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n`;\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Summary = () => {\n const { t } = useTranslation(\"neighborhoodHero\");\n const { neighborhoodSummary, geography } = useNeighborhoodHero();\n\n if (!neighborhoodSummary) {\n return null;\n }\n\n return (\n <div className={styles.container} data-testid=\"summary-container\">\n <h2 className={styles.title} data-testid=\"summary-title\">\n {t(\"summaryTitle\", {\n context: geography && geography.level >= 30 ? \"area\" : undefined,\n })}\n </h2>\n <p className={styles.text} data-testid=\"summary-description\">\n {neighborhoodSummary}\n </p>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Header } from \"../Header\";\nimport { Summary } from \"../Summary\";\n\nexport const Content = () => (\n <>\n <Header />\n <Summary />\n </>\n);\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n image: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport type { NeighborhoodHeroProps } from \"./types\";\nimport { NeighborhoodHeroProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHero = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Hero\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HERO}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HERO,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHeroProvider>\n <Content />\n </NeighborhoodHeroProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHero;\n"],"mappings":"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"}
|
package/dist/assets/{NeighborhoodHero-legacy-CfCrSS6Z.js → NeighborhoodHero-legacy-CVItTB2U.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./rolldown-runtime-legacy-dtqCu9Cl.js","./google-maps-vendor-legacy-D5NgIsmz.js","./sdks-legacy-
|
|
2
|
-
//# sourceMappingURL=NeighborhoodHero-legacy-
|
|
1
|
+
System.register(["./rolldown-runtime-legacy-dtqCu9Cl.js","./google-maps-vendor-legacy-D5NgIsmz.js","./sdks-legacy-BcdXj8R9.js","./MapPin.es-legacy-DS3EZ8ry.js","./index-legacy-CdRffLlb.js","./useGeographies-legacy-BFHs291p.js","./globals-legacy-CFLw8JiR.js","./ResizeWrapper-legacy-F6SJE_TA.js","./ValidateOptions-legacy-B4kQEpo7.js","./useIsMobile-legacy-B6-NPP6W.js","./useProfiles-legacy-DAWflSgN.js"],function(e,o){var l,n,a,t,i,s,d,r,u,g,c,p,v,m,h,x,b,y,f,j,k,I,E,O,_,w,D,M,N,S,H,K;return{setters:[function(e){l=e.a},function(e){n=e.l},function(e){a=e.a,t=e.c,i=e.d,s=e.f,d=e.g,r=e.n,u=e.o,g=e.r,c=e.t,p=e.u},function(e){v=e.t},function(e){m=e.Y,h=e.i,x=e.n},function(e){b=e.t},function(e){},function(e){y=e.t},function(e){f=e.t},function(e){j=e.t},function(e){k=e.t}],execute:function(){I=l(n(),1),E=function(e){return e.SDK_VIEWED="neighborhood-hero-Viewed",e}({}),O=function(e){return e.SDK_VIEWED="sdk_viewed",e}({}),_=m(),w=I.createContext({}),D=()=>(0,I.useContext)(w),M=({children:e})=>{var o,l,n,a,t,i,s,d,r,g,c;const{sdkState:p}=x(),v=(null===(o=p.globalOptions)||void 0===o?void 0:o.locale)||"en",m=u(),y=j();h(()=>{m.postEvent({eventType:E.SDK_VIEWED}),m.trackAnalyticsEvent({eventName:O.SDK_VIEWED})});const{isLoading:f,data:D}=b({geogID:null===(l=p.options)||void 0===l?void 0:l.geographyId,location:{lat:null===(n=p.options)||void 0===n?void 0:n.lat,lng:null===(a=p.options)||void 0===a?void 0:a.lng},externalId:null==p||null===(t=p.globalOptions)||void 0===t?void 0:t.externalId}),{data:M,isFetching:N}=k({geogID:null===(i=p.options)||void 0===i?void 0:i.geographyId,location:{lat:null===(s=p.options)||void 0===s?void 0:s.lat,lng:null===(d=p.options)||void 0===d?void 0:d.lng},externalId:null==p||null===(r=p.globalOptions)||void 0===r?void 0:r.externalId}),S=(0,I.useMemo)(()=>Object.values(D||{})[0],[f,D]),H=(0,I.useMemo)(()=>f||N,[f,N]),K=(0,I.useMemo)(()=>{var e,o;const l=((null===(e=p.options)||void 0===e?void 0:e.image)||"").toLocaleLowerCase();return"hide"===l?null:"string"==typeof(null==S?void 0:S.image_url)&&(null==S?void 0:S.image_url.length)>0?S.image_url:"string"==typeof(null===(o=p.options)||void 0===o?void 0:o.image)&&"nofallback"!==l&&"http"===l.substring(0,4)?p.options.image:"nofallback"===l?null:y?"/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg":"/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"},[null==S?void 0:S.image_url,null==p||null===(g=p.options)||void 0===g?void 0:g.image,y]),V=(0,I.useMemo)(()=>({isLoading:H,locale:v,geography:S,isFallbackImage:null!==K&&["/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg","/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"].includes(K),neighborhoodImage:K,neighborhoodSummary:null==M?void 0:M.profiles.summary}),[H,v,S,K,null==M||null===(c=M.profiles)||void 0===c?void 0:c.summary,p]);return(0,_.jsx)(w.Provider,{value:V,children:e})},N=()=>{var e,o;const{isLoading:l,locale:n,geography:a,neighborhoodImage:t,isFallbackImage:i}=D(),s=(0,I.useMemo)(()=>t?{backgroundImage:`url("${t}")`}:{},[t]);return l?null:(0,_.jsx)("div",{"data-testid":"header-container",className:"\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n",style:s,"data-has-image":null!==t,"data-use-backdrop":!i&&null!==t,children:(0,_.jsxs)("div",{className:"\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n",children:[(0,_.jsx)(v,{className:"\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n"}),(0,_.jsx)("h1",{"data-testid":"micro-location",className:"\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n",children:null==a||null===(e=a.name)||void 0===e?void 0:e[n]}),void 0!==a&&(null==a?void 0:a.level)<30&&void 0!==a.city&&(0,_.jsx)("div",{"data-testid":"macro-location",className:"\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n",children:null==a||null===(o=a.city)||void 0===o?void 0:o[n]})]})})},S=()=>{const{t:e}=d("neighborhoodHero"),{neighborhoodSummary:o,geography:l}=D();return o?(0,_.jsxs)("div",{className:"px-6 pt-6 pb-px lg:p-6 bg-gray-150/40","data-testid":"summary-container",children:[(0,_.jsx)("h2",{className:"\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n","data-testid":"summary-title",children:e("summaryTitle",{context:l&&l.level>=30?"area":void 0})}),(0,_.jsx)("p",{className:"\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n","data-testid":"summary-description",children:o})]}):null},H=()=>(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(N,{}),(0,_.jsx)(S,{})]}),K=p({lat:i().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:i().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:s().optional(),image:s().optional()}).noUnknown(!0),t(r.neighborhoodWrap.key),e("default",()=>{var e,o,l,n,t,i,s;const{sdkState:d}=x(),u=j(),p=(null===(e=d.globalOptions)||void 0===e?void 0:e.locale)||"en",v=(0,I.useMemo)(()=>{var e,o,l,n;return null!==(e=d.options)&&void 0!==e&&e.geographyId?{geographyId:null===(o=d.options)||void 0===o?void 0:o.geographyId}:{lat:null===(l=d.options)||void 0===l?void 0:l.lat,lng:null===(n=d.options)||void 0===n?void 0:n.lng}},[null===(o=d.options)||void 0===o?void 0:o.lat,null===(l=d.options)||void 0===l?void 0:l.lng,null===(n=d.options)||void 0===n?void 0:n.geographyId]);return(0,_.jsx)(y,{children:(0,_.jsx)(f,{sdk:"Neighborhood Hero",schema:K,options:d.options,children:(0,_.jsx)(g,{environment:null===(t=d.globalOptions)||void 0===t||null===(t=t.environment)||void 0===t?void 0:t.api,apiKey:d.apiKey,appearance:null===(i=d.globalOptions)||void 0===i?void 0:i.appearance,locale:null===(s=d.globalOptions)||void 0===s?void 0:s.locale,product:c.NEIGHBORHOOD_HERO,children:(0,_.jsx)(a,{trackingPipelineSettings:{apiKey:d.apiKey||""},analyticsSettings:r.neighborhoodWrap,meta:{clientId:d.clientId,productName:c.NEIGHBORHOOD_HERO,productVersion:"1.24.64"},attributes:{location:v,host:d.location,host_url:document.referrer,locale:p,isMobile:u},flags:{isDebugMode:!1},children:(0,_.jsx)(M,{children:(0,_.jsx)(H,{})})})})})})})}}});
|
|
2
|
+
//# sourceMappingURL=NeighborhoodHero-legacy-CVItTB2U.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodHero-legacy-CfCrSS6Z.js","names":[],"sources":["../../src/sdks/NeighborhoodHero/assets/images/desktop_fallback.jpg","../../src/sdks/NeighborhoodHero/assets/images/mobile_fallback.jpg","../../src/sdks/NeighborhoodHero/types.ts","../../src/sdks/NeighborhoodHero/context.tsx","../../src/sdks/NeighborhoodHero/components/Header/styles.ts","../../src/sdks/NeighborhoodHero/components/Header/index.tsx","../../src/sdks/NeighborhoodHero/components/Summary/styles.ts","../../src/sdks/NeighborhoodHero/components/Summary/index.tsx","../../src/sdks/NeighborhoodHero/components/Content/index.tsx","../../src/sdks/NeighborhoodHero/schema.ts","../../src/sdks/NeighborhoodHero/index.tsx"],"sourcesContent":["export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","export default \"__VITE_ASSET__P4DPfwIRieI8P6q8r4JZRw__\"","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n image?: string;\n};\n\nexport type NeighborhoodHeroProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-hero-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import React, { useContext, useMemo } from \"react\";\nimport type { Geography } from \"@local-logic/client\";\nimport DesktopFallback from \"./assets/images/desktop_fallback.jpg\";\nimport MobileFallback from \"./assets/images/mobile_fallback.jpg\";\nimport {\n type NeighborhoodHeroProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\n\ninterface Location {\n label?: string;\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n isLoading: boolean;\n locale: \"en\" | \"fr\";\n geography?: Geography;\n neighborhoodImage: string | null;\n isFallbackImage: boolean;\n neighborhoodSummary?: string;\n};\n\nconst NeighborhoodHeroContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodHero = () => useContext(NeighborhoodHeroContext);\n\nconst NeighborhoodHeroProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const isMobile = useIsMobile();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n });\n\n const geography = useMemo(() => {\n const geographiesArray = Object.values(geographyData || {});\n\n return geographiesArray[0];\n }, [isGeographyLoading, geographyData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching,\n [isGeographyLoading, isProfilesFetching],\n );\n\n const neighborhoodImage = useMemo(() => {\n const lowercaseOptionsImageValue = (\n sdkState.options?.image || \"\"\n ).toLocaleLowerCase();\n\n // Always hide the image if the option is set to \"hide\"\n if (lowercaseOptionsImageValue === \"hide\") {\n return null;\n }\n\n // If the geography has an image, use it by default\n if (\n typeof geography?.image_url === \"string\" &&\n geography?.image_url.length > 0\n ) {\n return geography.image_url as string;\n }\n\n // If the image option is set to a string, use it as the image (unless the string is \"noFallback\" which is obviuosly not an image)\n if (\n typeof sdkState.options?.image === \"string\" &&\n lowercaseOptionsImageValue !== \"nofallback\" &&\n lowercaseOptionsImageValue.substring(0, 4) === \"http\"\n ) {\n return sdkState.options.image;\n }\n\n // No fallback image\n if (lowercaseOptionsImageValue === \"nofallback\") {\n return null;\n }\n\n // Fallback image based on the device\n return isMobile ? MobileFallback : DesktopFallback;\n }, [geography?.image_url, sdkState?.options?.image, isMobile]);\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n locale,\n geography,\n isFallbackImage:\n neighborhoodImage !== null &&\n [MobileFallback, DesktopFallback].includes(neighborhoodImage),\n neighborhoodImage,\n neighborhoodSummary: profilesData?.profiles.summary,\n }),\n [\n isLoading,\n locale,\n geography,\n neighborhoodImage,\n profilesData?.profiles?.summary,\n sdkState,\n ],\n );\n\n return (\n <NeighborhoodHeroContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHeroContext.Provider>\n );\n};\n\nexport { useNeighborhoodHero, NeighborhoodHeroProvider, type Location };\n","export const container = `\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n`;\n\nexport const gradientContainer = `\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n`;\n\nexport const icon = `\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n`;\n\nexport const microLocation = `\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n`;\n\nexport const macroLocation = `\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n`;\n","import React, { useMemo } from \"react\";\n\nimport { MapPinIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Header = () => {\n const { isLoading, locale, geography, neighborhoodImage, isFallbackImage } =\n useNeighborhoodHero();\n\n const style = useMemo(() => {\n if (!neighborhoodImage) {\n return {};\n }\n\n return {\n backgroundImage: `url(\"${neighborhoodImage}\")`,\n };\n }, [neighborhoodImage]);\n\n if (isLoading) {\n return null;\n }\n\n return (\n <div\n data-testid=\"header-container\"\n className={styles.container}\n style={style}\n data-has-image={neighborhoodImage !== null}\n data-use-backdrop={!isFallbackImage && neighborhoodImage !== null}\n >\n <div className={styles.gradientContainer}>\n <MapPinIcon className={styles.icon} />\n <h1 data-testid=\"micro-location\" className={styles.microLocation}>\n {geography?.name?.[locale]}\n </h1>\n {typeof geography !== \"undefined\" &&\n geography?.level < 30 &&\n typeof geography.city !== \"undefined\" && (\n <div data-testid=\"macro-location\" className={styles.macroLocation}>\n {geography?.city?.[locale]}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const container = `px-6 pt-6 pb-px lg:p-6 bg-gray-150/40`;\n\nexport const title = `\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n`;\n\nexport const text = `\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n`;\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Summary = () => {\n const { t } = useTranslation(\"neighborhoodHero\");\n const { neighborhoodSummary, geography } = useNeighborhoodHero();\n\n if (!neighborhoodSummary) {\n return null;\n }\n\n return (\n <div className={styles.container} data-testid=\"summary-container\">\n <h2 className={styles.title} data-testid=\"summary-title\">\n {t(\"summaryTitle\", {\n context: geography && geography.level >= 30 ? \"area\" : undefined,\n })}\n </h2>\n <p className={styles.text} data-testid=\"summary-description\">\n {neighborhoodSummary}\n </p>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Header } from \"../Header\";\nimport { Summary } from \"../Summary\";\n\nexport const Content = () => (\n <>\n <Header />\n <Summary />\n </>\n);\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n image: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport type { NeighborhoodHeroProps } from \"./types\";\nimport { NeighborhoodHeroProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHero = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Hero\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HERO}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HERO,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHeroProvider>\n <Content />\n </NeighborhoodHeroProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHero;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NeighborhoodHero-legacy-CVItTB2U.js","names":[],"sources":["../../src/sdks/NeighborhoodHero/assets/images/desktop_fallback.jpg","../../src/sdks/NeighborhoodHero/assets/images/mobile_fallback.jpg","../../src/sdks/NeighborhoodHero/types.ts","../../src/sdks/NeighborhoodHero/context.tsx","../../src/sdks/NeighborhoodHero/components/Header/styles.ts","../../src/sdks/NeighborhoodHero/components/Header/index.tsx","../../src/sdks/NeighborhoodHero/components/Summary/styles.ts","../../src/sdks/NeighborhoodHero/components/Summary/index.tsx","../../src/sdks/NeighborhoodHero/components/Content/index.tsx","../../src/sdks/NeighborhoodHero/schema.ts","../../src/sdks/NeighborhoodHero/index.tsx"],"sourcesContent":["export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","export default \"__VITE_ASSET__DUq8YoikZLXEejpNZ1KQvg__\"","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n image?: string;\n};\n\nexport type NeighborhoodHeroProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-hero-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import React, { useContext, useMemo } from \"react\";\nimport type { Geography } from \"@local-logic/client\";\nimport DesktopFallback from \"./assets/images/desktop_fallback.jpg\";\nimport MobileFallback from \"./assets/images/mobile_fallback.jpg\";\nimport {\n type NeighborhoodHeroProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\n\ninterface Location {\n label?: string;\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n isLoading: boolean;\n locale: \"en\" | \"fr\";\n geography?: Geography;\n neighborhoodImage: string | null;\n isFallbackImage: boolean;\n neighborhoodSummary?: string;\n};\n\nconst NeighborhoodHeroContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodHero = () => useContext(NeighborhoodHeroContext);\n\nconst NeighborhoodHeroProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const isMobile = useIsMobile();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n });\n\n const geography = useMemo(() => {\n const geographiesArray = Object.values(geographyData || {});\n\n return geographiesArray[0];\n }, [isGeographyLoading, geographyData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching,\n [isGeographyLoading, isProfilesFetching],\n );\n\n const neighborhoodImage = useMemo(() => {\n const lowercaseOptionsImageValue = (\n sdkState.options?.image || \"\"\n ).toLocaleLowerCase();\n\n // Always hide the image if the option is set to \"hide\"\n if (lowercaseOptionsImageValue === \"hide\") {\n return null;\n }\n\n // If the geography has an image, use it by default\n if (\n typeof geography?.image_url === \"string\" &&\n geography?.image_url.length > 0\n ) {\n return geography.image_url as string;\n }\n\n // If the image option is set to a string, use it as the image (unless the string is \"noFallback\" which is obviuosly not an image)\n if (\n typeof sdkState.options?.image === \"string\" &&\n lowercaseOptionsImageValue !== \"nofallback\" &&\n lowercaseOptionsImageValue.substring(0, 4) === \"http\"\n ) {\n return sdkState.options.image;\n }\n\n // No fallback image\n if (lowercaseOptionsImageValue === \"nofallback\") {\n return null;\n }\n\n // Fallback image based on the device\n return isMobile ? MobileFallback : DesktopFallback;\n }, [geography?.image_url, sdkState?.options?.image, isMobile]);\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n locale,\n geography,\n isFallbackImage:\n neighborhoodImage !== null &&\n [MobileFallback, DesktopFallback].includes(neighborhoodImage),\n neighborhoodImage,\n neighborhoodSummary: profilesData?.profiles.summary,\n }),\n [\n isLoading,\n locale,\n geography,\n neighborhoodImage,\n profilesData?.profiles?.summary,\n sdkState,\n ],\n );\n\n return (\n <NeighborhoodHeroContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHeroContext.Provider>\n );\n};\n\nexport { useNeighborhoodHero, NeighborhoodHeroProvider, type Location };\n","export const container = `\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n`;\n\nexport const gradientContainer = `\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n`;\n\nexport const icon = `\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n`;\n\nexport const microLocation = `\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n`;\n\nexport const macroLocation = `\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n`;\n","import React, { useMemo } from \"react\";\n\nimport { MapPinIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Header = () => {\n const { isLoading, locale, geography, neighborhoodImage, isFallbackImage } =\n useNeighborhoodHero();\n\n const style = useMemo(() => {\n if (!neighborhoodImage) {\n return {};\n }\n\n return {\n backgroundImage: `url(\"${neighborhoodImage}\")`,\n };\n }, [neighborhoodImage]);\n\n if (isLoading) {\n return null;\n }\n\n return (\n <div\n data-testid=\"header-container\"\n className={styles.container}\n style={style}\n data-has-image={neighborhoodImage !== null}\n data-use-backdrop={!isFallbackImage && neighborhoodImage !== null}\n >\n <div className={styles.gradientContainer}>\n <MapPinIcon className={styles.icon} />\n <h1 data-testid=\"micro-location\" className={styles.microLocation}>\n {geography?.name?.[locale]}\n </h1>\n {typeof geography !== \"undefined\" &&\n geography?.level < 30 &&\n typeof geography.city !== \"undefined\" && (\n <div data-testid=\"macro-location\" className={styles.macroLocation}>\n {geography?.city?.[locale]}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const container = `px-6 pt-6 pb-px lg:p-6 bg-gray-150/40`;\n\nexport const title = `\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n`;\n\nexport const text = `\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n`;\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Summary = () => {\n const { t } = useTranslation(\"neighborhoodHero\");\n const { neighborhoodSummary, geography } = useNeighborhoodHero();\n\n if (!neighborhoodSummary) {\n return null;\n }\n\n return (\n <div className={styles.container} data-testid=\"summary-container\">\n <h2 className={styles.title} data-testid=\"summary-title\">\n {t(\"summaryTitle\", {\n context: geography && geography.level >= 30 ? \"area\" : undefined,\n })}\n </h2>\n <p className={styles.text} data-testid=\"summary-description\">\n {neighborhoodSummary}\n </p>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Header } from \"../Header\";\nimport { Summary } from \"../Summary\";\n\nexport const Content = () => (\n <>\n <Header />\n <Summary />\n </>\n);\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n image: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport type { NeighborhoodHeroProps } from \"./types\";\nimport { NeighborhoodHeroProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHero = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Hero\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HERO}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HERO,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHeroProvider>\n <Content />\n </NeighborhoodHeroProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHero;\n"],"mappings":"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"}
|
package/dist/assets/{NeighborhoodHighlights-C3maAwKP.js → NeighborhoodHighlights-BhVYsA3-.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as t}from"./rolldown-runtime-BEU_UCik.js";import{l as e}from"./google-maps-vendor-BeDgURNz.js";import{a as i,c as o,d as a,f as s,g as n,m as r,n as l,o as g,r as d,t as h,u as p}from"./sdks-
|
|
2
|
-
//# sourceMappingURL=NeighborhoodHighlights-
|
|
1
|
+
import{a as t}from"./rolldown-runtime-BEU_UCik.js";import{l as e}from"./google-maps-vendor-BeDgURNz.js";import{a as i,c as o,d as a,f as s,g as n,m as r,n as l,o as g,r as d,t as h,u as p}from"./sdks-e3TteF4P.js";import{t as c}from"./ScoreIcon-qr7Dyd1_.js";import{t as u}from"./SpinnerGap.es-xwq7_9W6.js";import{Y as m,i as f,n as x}from"./index-DHfBmUAQ.js";import{t as y}from"./useGeographies-Dbxf3asb.js";/* empty css */import{t as j}from"./ResizeWrapper-Bhg67yfB.js";import{t as b}from"./ValidateOptions-BivAr3ZH.js";import{t as v}from"./useIsMobile-DNaqDzbl.js";import{t as I}from"./useScores-C2l0EkUs.js";import{t as w}from"./TitleHeader-DqQxUayY.js";import{t as N}from"./NoDataContent-BOVv2wDG.js";var H=t(e(),1),D=function(t){return t.SDK_VIEWED="neighborhood-highlights-Viewed",t}({}),M=function(t){return t.SDK_VIEWED="sdk_viewed",t}({}),O={transport:["pedestrian_friendly","car_friendly","transit_friendly","cycling_friendly"],services:["groceries","shopping","restaurants","cafes"],character:["quiet","parks","vibrant","nightlife"]},S=[...O.transport,...O.services,...O.character],E=m(),_=H.createContext({}),k=()=>(0,H.useContext)(_),L=({children:t})=>{const{sdkState:e}=x(),i=g();f(()=>{i.postEvent({eventType:D.SDK_VIEWED}),i.trackAnalyticsEvent({eventName:M.SDK_VIEWED})});const{isLoading:o,data:a}=y({location:{lat:void 0===e.options?.geographyId?e.options?.lat:void 0,lng:void 0===e.options?.geographyId?e.options?.lng:void 0},externalId:e?.globalOptions?.externalId}),s=(0,H.useMemo)(()=>void 0!==e.options?.geographyId?e.options.geographyId:Object.keys(a||{})[0],[e.options?.geographyId,a]),{data:n,isFetching:r}=I({geographyId:s,location:{},include:S}),l=(0,H.useMemo)(()=>o||r,[o,r]),d=(0,H.useMemo)(()=>({isLoading:l,title:e.options?.title,scores:n?.geographies[0]?.scores}),[l,n,e.options?.title]);return(0,E.jsx)(_.Provider,{value:d,children:t})},G="\n text-primary-100 w-7 h-7\n \n group-data-[is-loading=true]/highlight-item:text-gray-200\n group-data-[is-loading=true]/highlight-item:animate-spin\n";function K({isLoading:t=!1,score:e}){return(0,E.jsx)("div",{className:"\n rounded-full bg-primary-100 w-16 h-16 flex items-center justify-center\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n\n ",children:(0,E.jsxs)("div",{className:"rounded-full bg-gray-25 w-12 h-12 border-2 border-base-white flex items-center justify-center",children:[t&&(0,E.jsx)(u,{className:G}),!t&&e&&(0,E.jsx)(c,{score:e,className:G})]})})}function V({score:t}){const{t:e}=n(["neighborhoodHighlights","common"]);return(0,E.jsxs)("div",{"data-testid":`highlight-content-${t}`,className:"\n group-data-[is-loading=true]/highlight-item:flex\n group-data-[is-loading=true]/highlight-item:flex-col\n group-data-[is-loading=true]/highlight-item:grow\n",children:[(0,E.jsx)("p",{"data-testid":"highlight-title",className:"\n text-md mb-1\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:w-full\n group-data-[is-loading=true]/highlight-item:h-2\n\n group-data-[is-loading=true]/highlight-item:[&>span]:hidden\n",children:(0,E.jsx)("span",{children:e("highlight.title")})}),(0,E.jsx)("p",{"data-testid":"highlight-pill",className:"\n text-sm leading-4 font-bold bg-primary-100 text-base-white py-1 px-2 inline rounded\n \n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:animate-pulse\n group-data-[is-loading=true]/highlight-item:w-28\n group-data-[is-loading=true]/highlight-item:h-7\n",children:t&&e(`common:scores.${t}.title`)})]})}var W=({isLoading:t=!1,score:e})=>(0,E.jsxs)("div",{"data-testid":"item",className:"group/highlight-item bg-gray-25 px-5 py-4 flex w-80 items-center gap-x-4 rounded-xl","data-is-loading":t,"data-score":e,children:[(0,E.jsx)(K,{isLoading:t,score:e}),(0,E.jsx)(V,{score:e})]});function T(){const{t:t}=n("neighborhoodHighlights"),{isLoading:e,scores:i}=k(),o=(0,H.useMemo)(()=>e||!i?[]:function(t){const e=[];return void 0===t||S.map(e=>({scoreName:e,value:Math.round(10*Number(t[e]?.value))/10*2})).filter(t=>t.value>7).sort((t,e)=>t.value<e.value?1:-1).slice(0,3).map(t=>e.push(t.scoreName)),e}(i),[i,e]);return e||0!==o.length?(0,E.jsx)("div",{"data-testid":"highlights-container",className:"flex flex-col gap-4 w-full lg:flex-row",children:(e?[1,2,3]:o).map((t,i)=>(0,E.jsx)(W,{isLoading:e,score:"number"!=typeof t?t:void 0},i))}):(0,E.jsx)(N,{text:t("noData")})}function q(){const{t:t}=n("neighborhoodHighlights"),{title:e}=k();return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(w,{title:"string"==typeof e||!1===e?e:t("title")}),(0,E.jsx)(T,{})]})}var C=p({lat:a().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:t=>"string"==typeof t,then:t=>t.optional(),otherwise:t=>t.required()}),lng:a().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:t=>"string"==typeof t,then:t=>t.optional(),otherwise:t=>t.required()}),geographyId:s().optional(),title:r().optional()}).noUnknown(!0);o(l.neighborhoodWrap.key);var R=()=>{const{sdkState:t}=x(),e=v(),o=t.globalOptions?.locale||"en",a=(0,H.useMemo)(()=>t.options?.geographyId?{geographyId:t.options?.geographyId}:{lat:t.options?.lat,lng:t.options?.lng},[t.options?.lat,t.options?.lng,t.options?.geographyId]);return(0,E.jsx)(j,{children:(0,E.jsx)(b,{sdk:"Neighborhood Highlights",schema:C,options:t.options,children:(0,E.jsx)(d,{environment:t.globalOptions?.environment?.api,apiKey:t.apiKey,appearance:t.globalOptions?.appearance,locale:t.globalOptions?.locale,product:h.NEIGHBORHOOD_HIGHLIGHTS,children:(0,E.jsx)(i,{trackingPipelineSettings:{apiKey:t.apiKey||""},analyticsSettings:l.neighborhoodWrap,meta:{clientId:t.clientId,productName:h.NEIGHBORHOOD_HIGHLIGHTS,productVersion:"1.24.64"},attributes:{location:a,host:t.location,host_url:document.referrer,locale:o,isMobile:e},flags:{isDebugMode:!1},children:(0,E.jsx)(L,{children:(0,E.jsx)(q,{})})})})})})};export{R as default};
|
|
2
|
+
//# sourceMappingURL=NeighborhoodHighlights-BhVYsA3-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodHighlights-C3maAwKP.js","names":[],"sources":["../../src/sdks/NeighborhoodHighlights/types.ts","../../src/sdks/NeighborhoodHighlights/constants.ts","../../src/sdks/NeighborhoodHighlights/context.tsx","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/styles.ts","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/Icon/styles.ts","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/Icon/index.tsx","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/Content/styles.ts","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/Content/index.tsx","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/index.tsx","../../src/sdks/NeighborhoodHighlights/components/Highlights/styles.ts","../../src/sdks/NeighborhoodHighlights/utils/getHighlightScoreKeys/index.ts","../../src/sdks/NeighborhoodHighlights/components/Highlights/index.tsx","../../src/sdks/NeighborhoodHighlights/components/Content/index.tsx","../../src/sdks/NeighborhoodHighlights/schema.ts","../../src/sdks/NeighborhoodHighlights/index.tsx"],"sourcesContent":["import { SDKOptions } from \"~/types/options\";\n\nexport type Section = \"transport\" | \"services\" | \"character\";\n\nexport type Score =\n | \"pedestrian_friendly\"\n | \"car_friendly\"\n | \"transit_friendly\"\n | \"cycling_friendly\"\n | \"groceries\"\n | \"shopping\"\n | \"restaurants\"\n | \"cafes\"\n | \"quiet\"\n | \"parks\"\n | \"vibrant\"\n | \"nightlife\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n title?: boolean | string;\n};\n\nexport type NeighborhoodHighlightsProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-highlights-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import { type Score } from \"./types\";\n\nexport const MINIMUM_SCORE_VALUE = 7;\n\nexport const sectionScores = {\n transport: [\n \"pedestrian_friendly\",\n \"car_friendly\",\n \"transit_friendly\",\n \"cycling_friendly\",\n ] as Score[],\n services: [\"groceries\", \"shopping\", \"restaurants\", \"cafes\"] as Score[],\n character: [\"quiet\", \"parks\", \"vibrant\", \"nightlife\"] as Score[],\n};\n\nexport const includeScores = [\n ...sectionScores.transport,\n ...sectionScores.services,\n ...sectionScores.character,\n];\n","import React, { useContext, useMemo } from \"react\";\nimport { type Scores } from \"@local-logic/client\";\nimport {\n NeighborhoodHighlightsProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { includeScores } from \"./constants\";\nimport { useTracking } from \"~/tracking\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useScores } from \"~/features/clientLibrary/useScores\";\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n title: NeighborhoodHighlightsProps[\"options\"][\"title\"];\n scores?: Scores[\"location\"];\n};\n\nconst NeighborhoodHighlightsContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useNeighborhoodHighlights = () =>\n useContext(NeighborhoodHighlightsContext);\n\nconst NeighborhoodHighlightsProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHighlightsProps>();\n const tracking = useTracking();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n location: {\n lat:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lat\n : undefined,\n lng:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lng\n : undefined,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const geographyId = useMemo(() => {\n if (typeof sdkState.options?.geographyId !== \"undefined\") {\n return sdkState.options.geographyId;\n }\n\n return Object.keys(geographyData || {})[0];\n }, [sdkState.options?.geographyId, geographyData]);\n\n const { data: scoresData, isFetching: isScoresFetching } = useScores({\n geographyId,\n location: {},\n include: includeScores,\n });\n\n const isLoading = useMemo(\n () => isGeographyLoading || isScoresFetching,\n [isGeographyLoading, isScoresFetching],\n );\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n title: sdkState.options?.title,\n scores: scoresData?.geographies[0]?.scores,\n }),\n [isLoading, scoresData, sdkState.options?.title],\n );\n\n return (\n <NeighborhoodHighlightsContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHighlightsContext.Provider>\n );\n};\n\nexport { useNeighborhoodHighlights, NeighborhoodHighlightsProvider };\n","export const container = `group/highlight-item bg-gray-25 px-5 py-4 flex w-80 items-center gap-x-4 rounded-xl`;\n","export const container = `\n rounded-full bg-primary-100 w-16 h-16 flex items-center justify-center\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n\n `;\nexport const content = `rounded-full bg-gray-25 w-12 h-12 border-2 border-base-white flex items-center justify-center`;\nexport const icon = `\n text-primary-100 w-7 h-7\n \n group-data-[is-loading=true]/highlight-item:text-gray-200\n group-data-[is-loading=true]/highlight-item:animate-spin\n`;\n","import React from \"react\";\n\nimport type { Scores } from \"@local-logic/client\";\nimport { SpinnerGapIcon } from \"@phosphor-icons/react\";\nimport * as styles from \"./styles\";\nimport { ScoreIcon } from \"~/components/ScoreIcon\";\n\nexport function Icon({\n isLoading = false,\n score,\n}: {\n isLoading?: boolean;\n score?: keyof Scores[\"location\"];\n}) {\n return (\n <div className={styles.container}>\n <div className={styles.content}>\n {isLoading && <SpinnerGapIcon className={styles.icon} />}\n {!isLoading && score && (\n <ScoreIcon score={score} className={styles.icon} />\n )}\n </div>\n </div>\n );\n}\n","export const container = `\n group-data-[is-loading=true]/highlight-item:flex\n group-data-[is-loading=true]/highlight-item:flex-col\n group-data-[is-loading=true]/highlight-item:grow\n`;\n\nexport const text = `\n text-md mb-1\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:w-full\n group-data-[is-loading=true]/highlight-item:h-2\n\n group-data-[is-loading=true]/highlight-item:[&>span]:hidden\n`;\nexport const pill = `\n text-sm leading-4 font-bold bg-primary-100 text-base-white py-1 px-2 inline rounded\n \n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:animate-pulse\n group-data-[is-loading=true]/highlight-item:w-28\n group-data-[is-loading=true]/highlight-item:h-7\n`;\n","import React from \"react\";\n\nimport type { Scores } from \"@local-logic/client\";\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\n\nexport function Content({ score }: { score?: keyof Scores[\"location\"] }) {\n const { t } = useTranslation([\"neighborhoodHighlights\", \"common\"]);\n\n return (\n <div\n data-testid={`highlight-content-${score}`}\n className={styles.container}\n >\n <p data-testid=\"highlight-title\" className={styles.text}>\n <span>{t(\"highlight.title\")}</span>\n </p>\n <p data-testid=\"highlight-pill\" className={styles.pill}>\n {score && t(`common:scores.${score}.title`)}\n </p>\n </div>\n );\n}\n","import React from \"react\";\n\nimport type { Scores } from \"@local-logic/client\";\nimport * as styles from \"./styles\";\n\nimport { Icon } from \"./Icon\";\nimport { Content } from \"./Content\";\n\nexport const Item = ({\n isLoading = false,\n score,\n}: {\n isLoading?: boolean;\n score?: keyof Scores[\"location\"];\n}) => {\n return (\n <div\n data-testid=\"item\"\n className={styles.container}\n data-is-loading={isLoading}\n data-score={score}\n >\n <Icon isLoading={isLoading} score={score} />\n <Content score={score} />\n </div>\n );\n};\n","export const container = `flex flex-col gap-4 w-full lg:flex-row`;\n","import type { Scores } from \"@local-logic/client\";\nimport {\n includeScores,\n MINIMUM_SCORE_VALUE,\n} from \"~/sdks/NeighborhoodHighlights/constants\";\n\nexport function getHighlightScoreKeys(scores: Scores[\"location\"]) {\n const highlightKeys: (keyof Scores[\"location\"])[] = [];\n\n if (typeof scores === \"undefined\") {\n // Safety check just in case\n return highlightKeys;\n }\n\n const filteredScores = includeScores\n .map((scoreName) => ({\n scoreName,\n value: (Math.round(Number(scores[scoreName]?.value) * 10) / 10) * 2,\n }))\n .filter((score) => score.value > MINIMUM_SCORE_VALUE)\n .sort((a, b) => (a.value < b.value ? 1 : -1))\n .slice(0, 3);\n\n filteredScores.map((item) => highlightKeys.push(item.scoreName));\n\n return highlightKeys;\n}\n","import React, { useMemo } from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { Item } from \"./Item\";\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHighlights } from \"~/sdks/NeighborhoodHighlights/context\";\n\nimport { NoDataContent } from \"~/components/NoDataContent\";\n\nimport { getHighlightScoreKeys } from \"~/sdks/NeighborhoodHighlights/utils/getHighlightScoreKeys\";\n\nexport function Highlights() {\n const { t } = useTranslation(\"neighborhoodHighlights\");\n const { isLoading, scores } = useNeighborhoodHighlights();\n\n const highlights = useMemo(() => {\n if (isLoading || !scores) {\n return [];\n }\n\n return getHighlightScoreKeys(scores);\n }, [scores, isLoading]);\n\n if (!isLoading && highlights.length === 0) {\n return <NoDataContent text={t(\"noData\")} />;\n }\n\n return (\n <div data-testid=\"highlights-container\" className={styles.container}>\n {(isLoading ? [1, 2, 3] : highlights).map((highlight, index) => (\n <Item\n key={index}\n isLoading={isLoading}\n score={typeof highlight !== \"number\" ? highlight : undefined}\n />\n ))}\n </div>\n );\n}\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { Highlights } from \"../Highlights\";\nimport { useNeighborhoodHighlights } from \"~/sdks/NeighborhoodHighlights/context\";\n\nimport { TitleHeader } from \"~/components/TitleHeader\";\n\nexport function Content() {\n const { t } = useTranslation(\"neighborhoodHighlights\");\n const { title } = useNeighborhoodHighlights();\n\n return (\n <>\n <TitleHeader\n title={\n typeof title === \"string\" || title === false ? title : t(\"title\")\n }\n />\n\n <Highlights />\n </>\n );\n}\n","import { ObjectSchema, string, mixed, number, object } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n title: mixed<string | boolean>().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport { NeighborhoodHighlightsProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { NeighborhoodHighlightsProps } from \"./types\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHighlights = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHighlightsProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Highlights\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HIGHLIGHTS}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HIGHLIGHTS,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHighlightsProvider>\n <Content />\n </NeighborhoodHighlightsProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHighlights;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NeighborhoodHighlights-BhVYsA3-.js","names":[],"sources":["../../src/sdks/NeighborhoodHighlights/types.ts","../../src/sdks/NeighborhoodHighlights/constants.ts","../../src/sdks/NeighborhoodHighlights/context.tsx","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/styles.ts","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/Icon/styles.ts","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/Icon/index.tsx","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/Content/styles.ts","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/Content/index.tsx","../../src/sdks/NeighborhoodHighlights/components/Highlights/Item/index.tsx","../../src/sdks/NeighborhoodHighlights/components/Highlights/styles.ts","../../src/sdks/NeighborhoodHighlights/utils/getHighlightScoreKeys/index.ts","../../src/sdks/NeighborhoodHighlights/components/Highlights/index.tsx","../../src/sdks/NeighborhoodHighlights/components/Content/index.tsx","../../src/sdks/NeighborhoodHighlights/schema.ts","../../src/sdks/NeighborhoodHighlights/index.tsx"],"sourcesContent":["import { SDKOptions } from \"~/types/options\";\n\nexport type Section = \"transport\" | \"services\" | \"character\";\n\nexport type Score =\n | \"pedestrian_friendly\"\n | \"car_friendly\"\n | \"transit_friendly\"\n | \"cycling_friendly\"\n | \"groceries\"\n | \"shopping\"\n | \"restaurants\"\n | \"cafes\"\n | \"quiet\"\n | \"parks\"\n | \"vibrant\"\n | \"nightlife\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n title?: boolean | string;\n};\n\nexport type NeighborhoodHighlightsProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-highlights-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import { type Score } from \"./types\";\n\nexport const MINIMUM_SCORE_VALUE = 7;\n\nexport const sectionScores = {\n transport: [\n \"pedestrian_friendly\",\n \"car_friendly\",\n \"transit_friendly\",\n \"cycling_friendly\",\n ] as Score[],\n services: [\"groceries\", \"shopping\", \"restaurants\", \"cafes\"] as Score[],\n character: [\"quiet\", \"parks\", \"vibrant\", \"nightlife\"] as Score[],\n};\n\nexport const includeScores = [\n ...sectionScores.transport,\n ...sectionScores.services,\n ...sectionScores.character,\n];\n","import React, { useContext, useMemo } from \"react\";\nimport { type Scores } from \"@local-logic/client\";\nimport {\n NeighborhoodHighlightsProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { includeScores } from \"./constants\";\nimport { useTracking } from \"~/tracking\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useScores } from \"~/features/clientLibrary/useScores\";\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n title: NeighborhoodHighlightsProps[\"options\"][\"title\"];\n scores?: Scores[\"location\"];\n};\n\nconst NeighborhoodHighlightsContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useNeighborhoodHighlights = () =>\n useContext(NeighborhoodHighlightsContext);\n\nconst NeighborhoodHighlightsProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHighlightsProps>();\n const tracking = useTracking();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n location: {\n lat:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lat\n : undefined,\n lng:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lng\n : undefined,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const geographyId = useMemo(() => {\n if (typeof sdkState.options?.geographyId !== \"undefined\") {\n return sdkState.options.geographyId;\n }\n\n return Object.keys(geographyData || {})[0];\n }, [sdkState.options?.geographyId, geographyData]);\n\n const { data: scoresData, isFetching: isScoresFetching } = useScores({\n geographyId,\n location: {},\n include: includeScores,\n });\n\n const isLoading = useMemo(\n () => isGeographyLoading || isScoresFetching,\n [isGeographyLoading, isScoresFetching],\n );\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n title: sdkState.options?.title,\n scores: scoresData?.geographies[0]?.scores,\n }),\n [isLoading, scoresData, sdkState.options?.title],\n );\n\n return (\n <NeighborhoodHighlightsContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHighlightsContext.Provider>\n );\n};\n\nexport { useNeighborhoodHighlights, NeighborhoodHighlightsProvider };\n","export const container = `group/highlight-item bg-gray-25 px-5 py-4 flex w-80 items-center gap-x-4 rounded-xl`;\n","export const container = `\n rounded-full bg-primary-100 w-16 h-16 flex items-center justify-center\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n\n `;\nexport const content = `rounded-full bg-gray-25 w-12 h-12 border-2 border-base-white flex items-center justify-center`;\nexport const icon = `\n text-primary-100 w-7 h-7\n \n group-data-[is-loading=true]/highlight-item:text-gray-200\n group-data-[is-loading=true]/highlight-item:animate-spin\n`;\n","import React from \"react\";\n\nimport type { Scores } from \"@local-logic/client\";\nimport { SpinnerGapIcon } from \"@phosphor-icons/react\";\nimport * as styles from \"./styles\";\nimport { ScoreIcon } from \"~/components/ScoreIcon\";\n\nexport function Icon({\n isLoading = false,\n score,\n}: {\n isLoading?: boolean;\n score?: keyof Scores[\"location\"];\n}) {\n return (\n <div className={styles.container}>\n <div className={styles.content}>\n {isLoading && <SpinnerGapIcon className={styles.icon} />}\n {!isLoading && score && (\n <ScoreIcon score={score} className={styles.icon} />\n )}\n </div>\n </div>\n );\n}\n","export const container = `\n group-data-[is-loading=true]/highlight-item:flex\n group-data-[is-loading=true]/highlight-item:flex-col\n group-data-[is-loading=true]/highlight-item:grow\n`;\n\nexport const text = `\n text-md mb-1\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:w-full\n group-data-[is-loading=true]/highlight-item:h-2\n\n group-data-[is-loading=true]/highlight-item:[&>span]:hidden\n`;\nexport const pill = `\n text-sm leading-4 font-bold bg-primary-100 text-base-white py-1 px-2 inline rounded\n \n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:animate-pulse\n group-data-[is-loading=true]/highlight-item:w-28\n group-data-[is-loading=true]/highlight-item:h-7\n`;\n","import React from \"react\";\n\nimport type { Scores } from \"@local-logic/client\";\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\n\nexport function Content({ score }: { score?: keyof Scores[\"location\"] }) {\n const { t } = useTranslation([\"neighborhoodHighlights\", \"common\"]);\n\n return (\n <div\n data-testid={`highlight-content-${score}`}\n className={styles.container}\n >\n <p data-testid=\"highlight-title\" className={styles.text}>\n <span>{t(\"highlight.title\")}</span>\n </p>\n <p data-testid=\"highlight-pill\" className={styles.pill}>\n {score && t(`common:scores.${score}.title`)}\n </p>\n </div>\n );\n}\n","import React from \"react\";\n\nimport type { Scores } from \"@local-logic/client\";\nimport * as styles from \"./styles\";\n\nimport { Icon } from \"./Icon\";\nimport { Content } from \"./Content\";\n\nexport const Item = ({\n isLoading = false,\n score,\n}: {\n isLoading?: boolean;\n score?: keyof Scores[\"location\"];\n}) => {\n return (\n <div\n data-testid=\"item\"\n className={styles.container}\n data-is-loading={isLoading}\n data-score={score}\n >\n <Icon isLoading={isLoading} score={score} />\n <Content score={score} />\n </div>\n );\n};\n","export const container = `flex flex-col gap-4 w-full lg:flex-row`;\n","import type { Scores } from \"@local-logic/client\";\nimport {\n includeScores,\n MINIMUM_SCORE_VALUE,\n} from \"~/sdks/NeighborhoodHighlights/constants\";\n\nexport function getHighlightScoreKeys(scores: Scores[\"location\"]) {\n const highlightKeys: (keyof Scores[\"location\"])[] = [];\n\n if (typeof scores === \"undefined\") {\n // Safety check just in case\n return highlightKeys;\n }\n\n const filteredScores = includeScores\n .map((scoreName) => ({\n scoreName,\n value: (Math.round(Number(scores[scoreName]?.value) * 10) / 10) * 2,\n }))\n .filter((score) => score.value > MINIMUM_SCORE_VALUE)\n .sort((a, b) => (a.value < b.value ? 1 : -1))\n .slice(0, 3);\n\n filteredScores.map((item) => highlightKeys.push(item.scoreName));\n\n return highlightKeys;\n}\n","import React, { useMemo } from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { Item } from \"./Item\";\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHighlights } from \"~/sdks/NeighborhoodHighlights/context\";\n\nimport { NoDataContent } from \"~/components/NoDataContent\";\n\nimport { getHighlightScoreKeys } from \"~/sdks/NeighborhoodHighlights/utils/getHighlightScoreKeys\";\n\nexport function Highlights() {\n const { t } = useTranslation(\"neighborhoodHighlights\");\n const { isLoading, scores } = useNeighborhoodHighlights();\n\n const highlights = useMemo(() => {\n if (isLoading || !scores) {\n return [];\n }\n\n return getHighlightScoreKeys(scores);\n }, [scores, isLoading]);\n\n if (!isLoading && highlights.length === 0) {\n return <NoDataContent text={t(\"noData\")} />;\n }\n\n return (\n <div data-testid=\"highlights-container\" className={styles.container}>\n {(isLoading ? [1, 2, 3] : highlights).map((highlight, index) => (\n <Item\n key={index}\n isLoading={isLoading}\n score={typeof highlight !== \"number\" ? highlight : undefined}\n />\n ))}\n </div>\n );\n}\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { Highlights } from \"../Highlights\";\nimport { useNeighborhoodHighlights } from \"~/sdks/NeighborhoodHighlights/context\";\n\nimport { TitleHeader } from \"~/components/TitleHeader\";\n\nexport function Content() {\n const { t } = useTranslation(\"neighborhoodHighlights\");\n const { title } = useNeighborhoodHighlights();\n\n return (\n <>\n <TitleHeader\n title={\n typeof title === \"string\" || title === false ? title : t(\"title\")\n }\n />\n\n <Highlights />\n </>\n );\n}\n","import { ObjectSchema, string, mixed, number, object } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n title: mixed<string | boolean>().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport { NeighborhoodHighlightsProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { NeighborhoodHighlightsProps } from \"./types\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHighlights = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHighlightsProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Highlights\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HIGHLIGHTS}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HIGHLIGHTS,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHighlightsProvider>\n <Content />\n </NeighborhoodHighlightsProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHighlights;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./rolldown-runtime-legacy-dtqCu9Cl.js","./google-maps-vendor-legacy-D5NgIsmz.js","./sdks-legacy-
|
|
2
|
-
//# sourceMappingURL=NeighborhoodHighlights-legacy-
|
|
1
|
+
System.register(["./rolldown-runtime-legacy-dtqCu9Cl.js","./google-maps-vendor-legacy-D5NgIsmz.js","./sdks-legacy-BcdXj8R9.js","./ScoreIcon-legacy-Ds3IYvwY.js","./SpinnerGap.es-legacy-CwpkCEbH.js","./index-legacy-CdRffLlb.js","./useGeographies-legacy-BFHs291p.js","./globals-legacy-CFLw8JiR.js","./ResizeWrapper-legacy-F6SJE_TA.js","./ValidateOptions-legacy-B4kQEpo7.js","./useIsMobile-legacy-B6-NPP6W.js","./useScores-legacy-BtI93V2X.js","./TitleHeader-legacy-pLHeIO4_.js","./NoDataContent-legacy-C3AeyeSg.js"],function(i,e){var t,o,n,a,l,s,r,d,g,u,h,c,p,v,m,y,f,x,j,b,I,w,N,H,S,D,M,O,E,_,k,L,G,K,V,W,T,q,C,R,$,B,F;function P({isLoading:i=!1,score:e}){return(0,k.jsx)("div",{className:V,children:(0,k.jsxs)("div",{className:W,children:[i&&(0,k.jsx)(m,{className:T}),!i&&e&&(0,k.jsx)(v,{score:e,className:T})]})})}function z({score:i}){const{t:e}=r(["neighborhoodHighlights","common"]);return(0,k.jsxs)("div",{"data-testid":`highlight-content-${i}`,className:q,children:[(0,k.jsx)("p",{"data-testid":"highlight-title",className:C,children:(0,k.jsx)("span",{children:e("highlight.title")})}),(0,k.jsx)("p",{"data-testid":"highlight-pill",className:R,children:i&&e(`common:scores.${i}.title`)})]})}function A(){const{t:i}=r("neighborhoodHighlights"),{isLoading:e,scores:t}=G(),o=(0,D.useMemo)(()=>e||!t?[]:function(i){const e=[];return void 0===i||_.map(e=>{var t;return{scoreName:e,value:Math.round(10*Number(null===(t=i[e])||void 0===t?void 0:t.value))/10*2}}).filter(i=>i.value>7).sort((i,e)=>i.value<e.value?1:-1).slice(0,3).map(i=>e.push(i.scoreName)),e}(t),[t,e]);return e||0!==o.length?(0,k.jsx)("div",{"data-testid":"highlights-container",className:B,children:(e?[1,2,3]:o).map((i,t)=>(0,k.jsx)($,{isLoading:e,score:"number"!=typeof i?i:void 0},t))}):(0,k.jsx)(S,{text:i("noData")})}function U(){const{t:i}=r("neighborhoodHighlights"),{title:e}=G();return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(H,{title:"string"==typeof e||!1===e?e:i("title")}),(0,k.jsx)(A,{})]})}return{setters:[function(i){t=i.a},function(i){o=i.l},function(i){n=i.a,a=i.c,l=i.d,s=i.f,r=i.g,d=i.m,g=i.n,u=i.o,h=i.r,c=i.t,p=i.u},function(i){v=i.t},function(i){m=i.t},function(i){y=i.Y,f=i.i,x=i.n},function(i){j=i.t},function(i){},function(i){b=i.t},function(i){I=i.t},function(i){w=i.t},function(i){N=i.t},function(i){H=i.t},function(i){S=i.t}],execute:function(){D=t(o(),1),M=function(i){return i.SDK_VIEWED="neighborhood-highlights-Viewed",i}({}),O=function(i){return i.SDK_VIEWED="sdk_viewed",i}({}),_=[...(E={transport:["pedestrian_friendly","car_friendly","transit_friendly","cycling_friendly"],services:["groceries","shopping","restaurants","cafes"],character:["quiet","parks","vibrant","nightlife"]}).transport,...E.services,...E.character],k=y(),L=D.createContext({}),G=()=>(0,D.useContext)(L),K=({children:i})=>{var e,t,o,n,a,l,s;const{sdkState:r}=x(),d=u();f(()=>{d.postEvent({eventType:M.SDK_VIEWED}),d.trackAnalyticsEvent({eventName:O.SDK_VIEWED})});const{isLoading:g,data:h}=j({location:{lat:void 0===(null===(e=r.options)||void 0===e?void 0:e.geographyId)?null===(t=r.options)||void 0===t?void 0:t.lat:void 0,lng:void 0===(null===(o=r.options)||void 0===o?void 0:o.geographyId)?null===(n=r.options)||void 0===n?void 0:n.lng:void 0},externalId:null==r||null===(a=r.globalOptions)||void 0===a?void 0:a.externalId}),c=(0,D.useMemo)(()=>{var i;return void 0!==(null===(i=r.options)||void 0===i?void 0:i.geographyId)?r.options.geographyId:Object.keys(h||{})[0]},[null===(l=r.options)||void 0===l?void 0:l.geographyId,h]),{data:p,isFetching:v}=N({geographyId:c,location:{},include:_}),m=(0,D.useMemo)(()=>g||v,[g,v]),y=(0,D.useMemo)(()=>{var i,e;return{isLoading:m,title:null===(i=r.options)||void 0===i?void 0:i.title,scores:null==p||null===(e=p.geographies[0])||void 0===e?void 0:e.scores}},[m,p,null===(s=r.options)||void 0===s?void 0:s.title]);return(0,k.jsx)(L.Provider,{value:y,children:i})},V="\n rounded-full bg-primary-100 w-16 h-16 flex items-center justify-center\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n\n ",W="rounded-full bg-gray-25 w-12 h-12 border-2 border-base-white flex items-center justify-center",T="\n text-primary-100 w-7 h-7\n \n group-data-[is-loading=true]/highlight-item:text-gray-200\n group-data-[is-loading=true]/highlight-item:animate-spin\n",q="\n group-data-[is-loading=true]/highlight-item:flex\n group-data-[is-loading=true]/highlight-item:flex-col\n group-data-[is-loading=true]/highlight-item:grow\n",C="\n text-md mb-1\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:w-full\n group-data-[is-loading=true]/highlight-item:h-2\n\n group-data-[is-loading=true]/highlight-item:[&>span]:hidden\n",R="\n text-sm leading-4 font-bold bg-primary-100 text-base-white py-1 px-2 inline rounded\n \n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:animate-pulse\n group-data-[is-loading=true]/highlight-item:w-28\n group-data-[is-loading=true]/highlight-item:h-7\n",$=({isLoading:i=!1,score:e})=>(0,k.jsxs)("div",{"data-testid":"item",className:"group/highlight-item bg-gray-25 px-5 py-4 flex w-80 items-center gap-x-4 rounded-xl","data-is-loading":i,"data-score":e,children:[(0,k.jsx)(P,{isLoading:i,score:e}),(0,k.jsx)(z,{score:e})]}),B="flex flex-col gap-4 w-full lg:flex-row",F=p({lat:l().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:i=>"string"==typeof i,then:i=>i.optional(),otherwise:i=>i.required()}),lng:l().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:i=>"string"==typeof i,then:i=>i.optional(),otherwise:i=>i.required()}),geographyId:s().optional(),title:d().optional()}).noUnknown(!0),a(g.neighborhoodWrap.key),i("default",()=>{var i,e,t,o,a,l,s;const{sdkState:r}=x(),d=w(),u=(null===(i=r.globalOptions)||void 0===i?void 0:i.locale)||"en",p=(0,D.useMemo)(()=>{var i,e,t,o;return null!==(i=r.options)&&void 0!==i&&i.geographyId?{geographyId:null===(e=r.options)||void 0===e?void 0:e.geographyId}:{lat:null===(t=r.options)||void 0===t?void 0:t.lat,lng:null===(o=r.options)||void 0===o?void 0:o.lng}},[null===(e=r.options)||void 0===e?void 0:e.lat,null===(t=r.options)||void 0===t?void 0:t.lng,null===(o=r.options)||void 0===o?void 0:o.geographyId]);return(0,k.jsx)(b,{children:(0,k.jsx)(I,{sdk:"Neighborhood Highlights",schema:F,options:r.options,children:(0,k.jsx)(h,{environment:null===(a=r.globalOptions)||void 0===a||null===(a=a.environment)||void 0===a?void 0:a.api,apiKey:r.apiKey,appearance:null===(l=r.globalOptions)||void 0===l?void 0:l.appearance,locale:null===(s=r.globalOptions)||void 0===s?void 0:s.locale,product:c.NEIGHBORHOOD_HIGHLIGHTS,children:(0,k.jsx)(n,{trackingPipelineSettings:{apiKey:r.apiKey||""},analyticsSettings:g.neighborhoodWrap,meta:{clientId:r.clientId,productName:c.NEIGHBORHOOD_HIGHLIGHTS,productVersion:"1.24.64"},attributes:{location:p,host:r.location,host_url:document.referrer,locale:u,isMobile:d},flags:{isDebugMode:!1},children:(0,k.jsx)(K,{children:(0,k.jsx)(U,{})})})})})})})}}});
|
|
2
|
+
//# sourceMappingURL=NeighborhoodHighlights-legacy-Do2PVQvq.js.map
|