@local-logic/sdks-app 1.24.43 → 1.24.44
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-DnmiY-id.js → Attribution-D012fWNs.js} +2 -2
- package/dist/assets/{Attribution-DnmiY-id.js.map → Attribution-D012fWNs.js.map} +1 -1
- package/dist/assets/{Attribution-legacy-Da4FA00m.js → Attribution-legacy-DSXG-3Q0.js} +2 -2
- package/dist/assets/{Attribution-legacy-Da4FA00m.js.map → Attribution-legacy-DSXG-3Q0.js.map} +1 -1
- package/dist/assets/{Cluster-BHQcO6iC-Do1P9Ia2.js → Cluster-BHQcO6iC-_jL_0N39.js} +2 -2
- package/dist/assets/{Cluster-BHQcO6iC-Do1P9Ia2.js.map → Cluster-BHQcO6iC-_jL_0N39.js.map} +1 -1
- package/dist/assets/{Cluster-BHQcO6iC-legacy-B3k4OIlu.js → Cluster-BHQcO6iC-legacy-3UMx26D5.js} +2 -2
- package/dist/assets/{Cluster-BHQcO6iC-legacy-B3k4OIlu.js.map → Cluster-BHQcO6iC-legacy-3UMx26D5.js.map} +1 -1
- package/dist/assets/{Google-BFAJ84CT-DhLE7SMg.js → Google-BFAJ84CT-Dh97X1sB.js} +2 -2
- package/dist/assets/{Google-BFAJ84CT-DhLE7SMg.js.map → Google-BFAJ84CT-Dh97X1sB.js.map} +1 -1
- package/dist/assets/{Google-BFAJ84CT-legacy-BXfoTpXf.js → Google-BFAJ84CT-legacy-D0OGURqq.js} +2 -2
- package/dist/assets/{Google-BFAJ84CT-legacy-BXfoTpXf.js.map → Google-BFAJ84CT-legacy-D0OGURqq.js.map} +1 -1
- package/dist/assets/{Google-BS41ufih-i8xQrE_C.js → Google-BS41ufih-Cc3f5UsV.js} +2 -2
- package/dist/assets/{Google-BS41ufih-i8xQrE_C.js.map → Google-BS41ufih-Cc3f5UsV.js.map} +1 -1
- package/dist/assets/{Google-BS41ufih-legacy-BdzBlyLB.js → Google-BS41ufih-legacy-BnojXQoy.js} +2 -2
- package/dist/assets/{Google-BS41ufih-legacy-BdzBlyLB.js.map → Google-BS41ufih-legacy-BnojXQoy.js.map} +1 -1
- package/dist/assets/{Google-CH7a2yx--BBV608XJ.js → Google-CH7a2yx--CBaNUH_8.js} +2 -2
- package/dist/assets/{Google-CH7a2yx--BBV608XJ.js.map → Google-CH7a2yx--CBaNUH_8.js.map} +1 -1
- package/dist/assets/{Google-CH7a2yx--legacy-DK3evKRO.js → Google-CH7a2yx--legacy-C_ip84Oz.js} +2 -2
- package/dist/assets/{Google-CH7a2yx--legacy-DK3evKRO.js.map → Google-CH7a2yx--legacy-C_ip84Oz.js.map} +1 -1
- package/dist/assets/{Google-CXGCn-oJ-5ByomDf2.js → Google-CXGCn-oJ-i9rxhVJh.js} +2 -2
- package/dist/assets/{Google-CXGCn-oJ-5ByomDf2.js.map → Google-CXGCn-oJ-i9rxhVJh.js.map} +1 -1
- package/dist/assets/{Google-CXGCn-oJ-legacy-DA32c0kh.js → Google-CXGCn-oJ-legacy-OuENT3oi.js} +2 -2
- package/dist/assets/{Google-CXGCn-oJ-legacy-DA32c0kh.js.map → Google-CXGCn-oJ-legacy-OuENT3oi.js.map} +1 -1
- package/dist/assets/{Google-DbOLrYJn-IeJcma0o.js → Google-DbOLrYJn-bogicaOo.js} +2 -2
- package/dist/assets/{Google-DbOLrYJn-IeJcma0o.js.map → Google-DbOLrYJn-bogicaOo.js.map} +1 -1
- package/dist/assets/{Google-DbOLrYJn-legacy-gzWCKBCo.js → Google-DbOLrYJn-legacy-B95opCm9.js} +2 -2
- package/dist/assets/{Google-DbOLrYJn-legacy-gzWCKBCo.js.map → Google-DbOLrYJn-legacy-B95opCm9.js.map} +1 -1
- package/dist/assets/{GridGraph-C0PP17kA.js → GridGraph-_rWMkwNI.js} +2 -2
- package/dist/assets/{GridGraph-C0PP17kA.js.map → GridGraph-_rWMkwNI.js.map} +1 -1
- package/dist/assets/{GridGraph-legacy-B1C-2d1Q.js → GridGraph-legacy-CsgF_9Vx.js} +2 -2
- package/dist/assets/{GridGraph-legacy-B1C-2d1Q.js.map → GridGraph-legacy-CsgF_9Vx.js.map} +1 -1
- package/dist/assets/{LeadCapture-e2fi_VKJ.js → LeadCapture-IqeCbA_u.js} +2 -2
- package/dist/assets/{LeadCapture-e2fi_VKJ.js.map → LeadCapture-IqeCbA_u.js.map} +1 -1
- package/dist/assets/{LeadCapture-legacy-wC9F3Dq5.js → LeadCapture-legacy-D_miey0j.js} +2 -2
- package/dist/assets/{LeadCapture-legacy-wC9F3Dq5.js.map → LeadCapture-legacy-D_miey0j.js.map} +1 -1
- package/dist/assets/{LocalContent-Bgf0CDoA.js → LocalContent-DL6Y67Ne.js} +2 -2
- package/dist/assets/{LocalContent-Bgf0CDoA.js.map → LocalContent-DL6Y67Ne.js.map} +1 -1
- package/dist/assets/{LocalContent-legacy-BHBTASYp.js → LocalContent-legacy-BBB-ST51.js} +2 -2
- package/dist/assets/{LocalContent-legacy-BHBTASYp.js.map → LocalContent-legacy-BBB-ST51.js.map} +1 -1
- package/dist/assets/{LocalDemographics-BuWGiqEi.js → LocalDemographics-DcirUh9h.js} +2 -2
- package/dist/assets/{LocalDemographics-BuWGiqEi.js.map → LocalDemographics-DcirUh9h.js.map} +1 -1
- package/dist/assets/{LocalDemographics-legacy-D1k5CRVw.js → LocalDemographics-legacy-rmGYdILu.js} +2 -2
- package/dist/assets/{LocalDemographics-legacy-D1k5CRVw.js.map → LocalDemographics-legacy-rmGYdILu.js.map} +1 -1
- package/dist/assets/{Mapbox-CpLnA607-AeAqR5aH.js → Mapbox-CpLnA607-CKDrFvU5.js} +2 -2
- package/dist/assets/{Mapbox-CpLnA607-AeAqR5aH.js.map → Mapbox-CpLnA607-CKDrFvU5.js.map} +1 -1
- package/dist/assets/{Mapbox-CpLnA607-legacy-CZe3Jz0m.js → Mapbox-CpLnA607-legacy-Bx1JnBMX.js} +2 -2
- package/dist/assets/{Mapbox-CpLnA607-legacy-CZe3Jz0m.js.map → Mapbox-CpLnA607-legacy-Bx1JnBMX.js.map} +1 -1
- package/dist/assets/{Mapbox-DDJ1gHRb-rvf9zFJO.js → Mapbox-DDJ1gHRb-BrLhMxW4.js} +2 -2
- package/dist/assets/{Mapbox-DDJ1gHRb-rvf9zFJO.js.map → Mapbox-DDJ1gHRb-BrLhMxW4.js.map} +1 -1
- package/dist/assets/{Mapbox-DDJ1gHRb-legacy-NAVECUv-.js → Mapbox-DDJ1gHRb-legacy-DtASaFMy.js} +2 -2
- package/dist/assets/{Mapbox-DDJ1gHRb-legacy-NAVECUv-.js.map → Mapbox-DDJ1gHRb-legacy-DtASaFMy.js.map} +1 -1
- package/dist/assets/{Mapbox-DiD9etYJ-zR1EkiNp.js → Mapbox-DiD9etYJ-BMtTiGO7.js} +2 -2
- package/dist/assets/{Mapbox-DiD9etYJ-zR1EkiNp.js.map → Mapbox-DiD9etYJ-BMtTiGO7.js.map} +1 -1
- package/dist/assets/{Mapbox-DiD9etYJ-legacy-pThPPnNQ.js → Mapbox-DiD9etYJ-legacy-WIywO1-w.js} +2 -2
- package/dist/assets/{Mapbox-DiD9etYJ-legacy-pThPPnNQ.js.map → Mapbox-DiD9etYJ-legacy-WIywO1-w.js.map} +1 -1
- package/dist/assets/{Mapbox-DtZmt1D_-DHhJhTo8.js → Mapbox-DtZmt1D_-Dq1UD7au.js} +2 -2
- package/dist/assets/{Mapbox-DtZmt1D_-DHhJhTo8.js.map → Mapbox-DtZmt1D_-Dq1UD7au.js.map} +1 -1
- package/dist/assets/{Mapbox-DtZmt1D_-legacy-ccCiz3Pd.js → Mapbox-DtZmt1D_-legacy-CXP5-C49.js} +2 -2
- package/dist/assets/{Mapbox-DtZmt1D_-legacy-ccCiz3Pd.js.map → Mapbox-DtZmt1D_-legacy-CXP5-C49.js.map} +1 -1
- package/dist/assets/{Mapbox-u11C3LWs-B_yCTqoV.js → Mapbox-u11C3LWs-DuakH8Ji.js} +2 -2
- package/dist/assets/{Mapbox-u11C3LWs-B_yCTqoV.js.map → Mapbox-u11C3LWs-DuakH8Ji.js.map} +1 -1
- package/dist/assets/{Mapbox-u11C3LWs-legacy-D90FQvEN.js → Mapbox-u11C3LWs-legacy-ChrUMjPl.js} +2 -2
- package/dist/assets/{Mapbox-u11C3LWs-legacy-D90FQvEN.js.map → Mapbox-u11C3LWs-legacy-ChrUMjPl.js.map} +1 -1
- package/dist/assets/{Maptiler-C0oTROMk-BwaieRuC.js → Maptiler-C0oTROMk-Dz6Vkl6m.js} +2 -2
- package/dist/assets/{Maptiler-C0oTROMk-BwaieRuC.js.map → Maptiler-C0oTROMk-Dz6Vkl6m.js.map} +1 -1
- package/dist/assets/{Maptiler-C0oTROMk-legacy-Dt8ZGBQ1.js → Maptiler-C0oTROMk-legacy-B6L6FzM1.js} +2 -2
- package/dist/assets/{Maptiler-C0oTROMk-legacy-Dt8ZGBQ1.js.map → Maptiler-C0oTROMk-legacy-B6L6FzM1.js.map} +1 -1
- package/dist/assets/{Maptiler-DJScKW8p-D7sqoIWz.js → Maptiler-DJScKW8p-6YGAe8cE.js} +2 -2
- package/dist/assets/{Maptiler-DJScKW8p-D7sqoIWz.js.map → Maptiler-DJScKW8p-6YGAe8cE.js.map} +1 -1
- package/dist/assets/{Maptiler-DJScKW8p-legacy-BxKgw8sA.js → Maptiler-DJScKW8p-legacy-DEW3rPcZ.js} +2 -2
- package/dist/assets/{Maptiler-DJScKW8p-legacy-BxKgw8sA.js.map → Maptiler-DJScKW8p-legacy-DEW3rPcZ.js.map} +1 -1
- package/dist/assets/{Maptiler-DdeFS4iM-CAX4yO3w.js → Maptiler-DdeFS4iM-Brs-80yb.js} +2 -2
- package/dist/assets/{Maptiler-DdeFS4iM-CAX4yO3w.js.map → Maptiler-DdeFS4iM-Brs-80yb.js.map} +1 -1
- package/dist/assets/{Maptiler-DdeFS4iM-legacy-DsI2My96.js → Maptiler-DdeFS4iM-legacy-Ci9oroQC.js} +2 -2
- package/dist/assets/{Maptiler-DdeFS4iM-legacy-DsI2My96.js.map → Maptiler-DdeFS4iM-legacy-Ci9oroQC.js.map} +1 -1
- package/dist/assets/{Maptiler-DqeshLom-a9LD3O-1.js → Maptiler-DqeshLom-B0jdRE1n.js} +2 -2
- package/dist/assets/{Maptiler-DqeshLom-a9LD3O-1.js.map → Maptiler-DqeshLom-B0jdRE1n.js.map} +1 -1
- package/dist/assets/{Maptiler-DqeshLom-legacy-iao-6Wdy.js → Maptiler-DqeshLom-legacy-CurUmtTs.js} +2 -2
- package/dist/assets/{Maptiler-DqeshLom-legacy-iao-6Wdy.js.map → Maptiler-DqeshLom-legacy-CurUmtTs.js.map} +1 -1
- package/dist/assets/{Maptiler-YjlcPccn-BbfdNZAF.js → Maptiler-YjlcPccn-BeECNaQc.js} +2 -2
- package/dist/assets/{Maptiler-YjlcPccn-BbfdNZAF.js.map → Maptiler-YjlcPccn-BeECNaQc.js.map} +1 -1
- package/dist/assets/{Maptiler-YjlcPccn-legacy-D6AZMug8.js → Maptiler-YjlcPccn-legacy-DUPM1fwa.js} +2 -2
- package/dist/assets/{Maptiler-YjlcPccn-legacy-D6AZMug8.js.map → Maptiler-YjlcPccn-legacy-DUPM1fwa.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Bc3X9WQk-ByrgCntx.js → MarkerIcon-Bc3X9WQk-BuSzLTIC.js} +2 -2
- package/dist/assets/{MarkerIcon-Bc3X9WQk-ByrgCntx.js.map → MarkerIcon-Bc3X9WQk-BuSzLTIC.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Bc3X9WQk-legacy-CIGJvvJR.js → MarkerIcon-Bc3X9WQk-legacy-0n6adFAI.js} +2 -2
- package/dist/assets/{MarkerIcon-Bc3X9WQk-legacy-CIGJvvJR.js.map → MarkerIcon-Bc3X9WQk-legacy-0n6adFAI.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-CQFgsjdH.js → NeighborhoodCard-ePSiX1h0.js} +2 -2
- package/dist/assets/{NeighborhoodCard-CQFgsjdH.js.map → NeighborhoodCard-ePSiX1h0.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-legacy-CT-3ylPG.js → NeighborhoodCard-legacy-B7hL1XOX.js} +2 -2
- package/dist/assets/{NeighborhoodCard-legacy-CT-3ylPG.js.map → NeighborhoodCard-legacy-B7hL1XOX.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-w5WKGZ2K.js → NeighborhoodCharacteristics-__nE9rKT.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-w5WKGZ2K.js.map → NeighborhoodCharacteristics-__nE9rKT.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-legacy-CKYaXDfQ.js → NeighborhoodCharacteristics-legacy-zcamdTX5.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-legacy-CKYaXDfQ.js.map → NeighborhoodCharacteristics-legacy-zcamdTX5.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-BZrhdeYZ.js → NeighborhoodDemographics-5cGgXnRY.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-BZrhdeYZ.js.map → NeighborhoodDemographics-5cGgXnRY.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-legacy-BHIQ1ER7.js → NeighborhoodDemographics-legacy-c3eDH26X.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-legacy-BHIQ1ER7.js.map → NeighborhoodDemographics-legacy-c3eDH26X.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-DfjxzlxY.js → NeighborhoodFeatured-DIXhmlRC.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-DfjxzlxY.js.map → NeighborhoodFeatured-DIXhmlRC.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-legacy-DHTnv4CZ.js → NeighborhoodFeatured-legacy-lDme45yC.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-legacy-DHTnv4CZ.js.map → NeighborhoodFeatured-legacy-lDme45yC.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-DrBKD27P.js → NeighborhoodHero-Bj4FlQVV.js} +2 -2
- package/dist/assets/{NeighborhoodHero-DrBKD27P.js.map → NeighborhoodHero-Bj4FlQVV.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-legacy-BMCiD7gd.js → NeighborhoodHero-legacy-C6T-qgPK.js} +2 -2
- package/dist/assets/{NeighborhoodHero-legacy-BMCiD7gd.js.map → NeighborhoodHero-legacy-C6T-qgPK.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-CwoTHUIb.js → NeighborhoodHighlights-BBmVnaLl.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-CwoTHUIb.js.map → NeighborhoodHighlights-BBmVnaLl.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-legacy-R316wAs2.js → NeighborhoodHighlights-legacy-B2x36QRC.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-legacy-R316wAs2.js.map → NeighborhoodHighlights-legacy-B2x36QRC.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-ChZpBdAe.js → NeighborhoodMap-DwMQLhkw.js} +2 -2
- package/dist/assets/{NeighborhoodMap-ChZpBdAe.js.map → NeighborhoodMap-DwMQLhkw.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-legacy-D7V_lZQF.js → NeighborhoodMap-legacy-CugKbgSp.js} +2 -2
- package/dist/assets/{NeighborhoodMap-legacy-D7V_lZQF.js.map → NeighborhoodMap-legacy-CugKbgSp.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-DpUA8_BA.js → NeighborhoodMarketTrends-COqvs4Fz.js} +3 -3
- package/dist/assets/{NeighborhoodMarketTrends-DpUA8_BA.js.map → NeighborhoodMarketTrends-COqvs4Fz.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-legacy-18rcLpS1.js → NeighborhoodMarketTrends-legacy-DSHDUUH_.js} +2 -2
- package/dist/assets/{NeighborhoodMarketTrends-legacy-18rcLpS1.js.map → NeighborhoodMarketTrends-legacy-DSHDUUH_.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-BLDNZBRX.js → NeighborhoodMatch-GqzEoreu.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-BLDNZBRX.js.map → NeighborhoodMatch-GqzEoreu.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-legacy-C2QyjRPr.js → NeighborhoodMatch-legacy-SGEcOXuf.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-legacy-C2QyjRPr.js.map → NeighborhoodMatch-legacy-SGEcOXuf.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-CQoo-TFM.js → NeighborhoodPropertyValueDrivers-Cz4cawqR.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-CQoo-TFM.js.map → NeighborhoodPropertyValueDrivers-Cz4cawqR.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-B-3Ld9XX.js → NeighborhoodPropertyValueDrivers-legacy-7gVUrIgh.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-B-3Ld9XX.js.map → NeighborhoodPropertyValueDrivers-legacy-7gVUrIgh.js.map} +1 -1
- package/dist/assets/{NeighborhoodSchools-DMKDCbUv.js → NeighborhoodSchools-D6CPTgGE.js} +2 -2
- package/dist/assets/{NeighborhoodSchools-DMKDCbUv.js.map → NeighborhoodSchools-D6CPTgGE.js.map} +1 -1
- package/dist/assets/{NeighborhoodSchools-legacy-D_MpmqNV.js → NeighborhoodSchools-legacy-0G_dtI8q.js} +2 -2
- package/dist/assets/{NeighborhoodSchools-legacy-D_MpmqNV.js.map → NeighborhoodSchools-legacy-0G_dtI8q.js.map} +1 -1
- package/dist/assets/{NeighborhoodShowcase-CB3_rfxv.js → NeighborhoodShowcase-CRlKc8OL.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-CB3_rfxv.js.map → NeighborhoodShowcase-CRlKc8OL.js.map} +1 -1
- package/dist/assets/{NeighborhoodShowcase-legacy-B8IQbiVz.js → NeighborhoodShowcase-legacy-Bjz5_C24.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-legacy-B8IQbiVz.js.map → NeighborhoodShowcase-legacy-Bjz5_C24.js.map} +1 -1
- package/dist/assets/{NoDataContent-CFLl-Rd-.js → NoDataContent-CTxzT718.js} +2 -2
- package/dist/assets/{NoDataContent-CFLl-Rd-.js.map → NoDataContent-CTxzT718.js.map} +1 -1
- package/dist/assets/{NoDataContent-legacy-aWMMhT9c.js → NoDataContent-legacy-BWvHzb0g.js} +2 -2
- package/dist/assets/{NoDataContent-legacy-aWMMhT9c.js.map → NoDataContent-legacy-BWvHzb0g.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-C7vwckhm.js → ResizeWrapper-DbYmMKOU.js} +2 -2
- package/dist/assets/{ResizeWrapper-C7vwckhm.js.map → ResizeWrapper-DbYmMKOU.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-legacy-WwfLyk1y.js → ResizeWrapper-legacy-C0ua6RC5.js} +2 -2
- package/dist/assets/{ResizeWrapper-legacy-WwfLyk1y.js.map → ResizeWrapper-legacy-C0ua6RC5.js.map} +1 -1
- package/dist/assets/{ScoreCardList-PWiDx6Ra.js → ScoreCardList-B4NURGgK.js} +2 -2
- package/dist/assets/{ScoreCardList-PWiDx6Ra.js.map → ScoreCardList-B4NURGgK.js.map} +1 -1
- package/dist/assets/{ScoreCardList-legacy-BK5dq36c.js → ScoreCardList-legacy-BTRPIWUP.js} +2 -2
- package/dist/assets/{ScoreCardList-legacy-BK5dq36c.js.map → ScoreCardList-legacy-BTRPIWUP.js.map} +1 -1
- package/dist/assets/{ScoreIcon-legacy-BwaAs8hW.js → ScoreIcon-legacy-D9igp8MS.js} +2 -2
- package/dist/assets/{ScoreIcon-legacy-BwaAs8hW.js.map → ScoreIcon-legacy-D9igp8MS.js.map} +1 -1
- package/dist/assets/{ScoreIcon-CsB-usG9.js → ScoreIcon-s5-ehfPP.js} +2 -2
- package/dist/assets/{ScoreIcon-CsB-usG9.js.map → ScoreIcon-s5-ehfPP.js.map} +1 -1
- package/dist/assets/{Testing--n5Ro0Ek-B4Vejacz.js → Testing--n5Ro0Ek-Cc3RGltv.js} +2 -2
- package/dist/assets/{Testing--n5Ro0Ek-B4Vejacz.js.map → Testing--n5Ro0Ek-Cc3RGltv.js.map} +1 -1
- package/dist/assets/{Testing--n5Ro0Ek-legacy-Co29YW_f.js → Testing--n5Ro0Ek-legacy-BB0u0086.js} +2 -2
- package/dist/assets/{Testing--n5Ro0Ek-legacy-Co29YW_f.js.map → Testing--n5Ro0Ek-legacy-BB0u0086.js.map} +1 -1
- package/dist/assets/{Testing-BNJwzbRK-hEJFbzQg.js → Testing-BNJwzbRK-C1viHx8M.js} +2 -2
- package/dist/assets/{Testing-BNJwzbRK-hEJFbzQg.js.map → Testing-BNJwzbRK-C1viHx8M.js.map} +1 -1
- package/dist/assets/{Testing-BNJwzbRK-legacy-B1EdPb3k.js → Testing-BNJwzbRK-legacy-XPR_-0Eg.js} +2 -2
- package/dist/assets/{Testing-BNJwzbRK-legacy-B1EdPb3k.js.map → Testing-BNJwzbRK-legacy-XPR_-0Eg.js.map} +1 -1
- package/dist/assets/{Testing-CoRLhmNT-Cqyejow7.js → Testing-CoRLhmNT-B4pOjeZH.js} +2 -2
- package/dist/assets/{Testing-CoRLhmNT-Cqyejow7.js.map → Testing-CoRLhmNT-B4pOjeZH.js.map} +1 -1
- package/dist/assets/{Testing-CoRLhmNT-legacy-BQpWn7Bu.js → Testing-CoRLhmNT-legacy-BFVvx40w.js} +2 -2
- package/dist/assets/{Testing-CoRLhmNT-legacy-BQpWn7Bu.js.map → Testing-CoRLhmNT-legacy-BFVvx40w.js.map} +1 -1
- package/dist/assets/{Testing-DGUeGxdc-g-T4vdVq.js → Testing-DGUeGxdc-CKSlgBDu.js} +2 -2
- package/dist/assets/{Testing-DGUeGxdc-g-T4vdVq.js.map → Testing-DGUeGxdc-CKSlgBDu.js.map} +1 -1
- package/dist/assets/{Testing-DGUeGxdc-legacy-GwpDyiTO.js → Testing-DGUeGxdc-legacy-B2yBRluh.js} +2 -2
- package/dist/assets/{Testing-DGUeGxdc-legacy-GwpDyiTO.js.map → Testing-DGUeGxdc-legacy-B2yBRluh.js.map} +1 -1
- package/dist/assets/{Testing-DzWAcbhL-BJOouF0A.js → Testing-DzWAcbhL-B5JOmJod.js} +2 -2
- package/dist/assets/{Testing-DzWAcbhL-BJOouF0A.js.map → Testing-DzWAcbhL-B5JOmJod.js.map} +1 -1
- package/dist/assets/{Testing-DzWAcbhL-legacy-CYECRHWo.js → Testing-DzWAcbhL-legacy-20VBltE2.js} +2 -2
- package/dist/assets/{Testing-DzWAcbhL-legacy-CYECRHWo.js.map → Testing-DzWAcbhL-legacy-20VBltE2.js.map} +1 -1
- package/dist/assets/{TitleHeader-CepE-7Y-.js → TitleHeader-Be2YRN93.js} +2 -2
- package/dist/assets/{TitleHeader-CepE-7Y-.js.map → TitleHeader-Be2YRN93.js.map} +1 -1
- package/dist/assets/{TitleHeader-legacy-UtQZo396.js → TitleHeader-legacy-CzXSoMFC.js} +2 -2
- package/dist/assets/{TitleHeader-legacy-UtQZo396.js.map → TitleHeader-legacy-CzXSoMFC.js.map} +1 -1
- package/dist/assets/{Trans-B1zRm9WH.js → Trans-DntniXa9.js} +2 -2
- package/dist/assets/{Trans-B1zRm9WH.js.map → Trans-DntniXa9.js.map} +1 -1
- package/dist/assets/{Trans-legacy-B47WOepl.js → Trans-legacy-B9t4MV_C.js} +2 -2
- package/dist/assets/{Trans-legacy-B47WOepl.js.map → Trans-legacy-B9t4MV_C.js.map} +1 -1
- package/dist/assets/{ValidateOptions-DsfMKmBQ.js → ValidateOptions-BqL9iY9R.js} +2 -2
- package/dist/assets/{ValidateOptions-DsfMKmBQ.js.map → ValidateOptions-BqL9iY9R.js.map} +1 -1
- package/dist/assets/{ValidateOptions-legacy-CtRpWaj6.js → ValidateOptions-legacy-BQ69tin-.js} +2 -2
- package/dist/assets/{ValidateOptions-legacy-CtRpWaj6.js.map → ValidateOptions-legacy-BQ69tin-.js.map} +1 -1
- package/dist/assets/{dist-DrX-uh0V.js → dist-C_ktdPsv.js} +2 -2
- package/dist/assets/{dist-DrX-uh0V.js.map → dist-C_ktdPsv.js.map} +1 -1
- package/dist/assets/{dist-legacy-CJvY2ayv.js → dist-legacy-DIwOLBcZ.js} +2 -2
- package/dist/assets/{dist-legacy-CJvY2ayv.js.map → dist-legacy-DIwOLBcZ.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-DbC8zRUF.js → getMapProviderConfig-D9e8KNYU.js} +3 -3
- package/dist/assets/{getMapProviderConfig-DbC8zRUF.js.map → getMapProviderConfig-D9e8KNYU.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-legacy-CwpYg6Bq.js → getMapProviderConfig-legacy-DVBUhWqR.js} +2 -2
- package/dist/assets/{getMapProviderConfig-legacy-CwpYg6Bq.js.map → getMapProviderConfig-legacy-DVBUhWqR.js.map} +1 -1
- package/dist/assets/{index-Bi8h_BNl.js → index-PbHyodiU.js} +3 -3
- package/dist/assets/{index-Bi8h_BNl.js.map → index-PbHyodiU.js.map} +1 -1
- package/dist/assets/{index-legacy-DF60d_4Z.js → index-legacy-CYps6nGB.js} +2 -2
- package/dist/assets/{index-legacy-DF60d_4Z.js.map → index-legacy-CYps6nGB.js.map} +1 -1
- package/dist/assets/{index.es-BkZlVTZH.js → index.es-DuM-WVhV.js} +2 -2
- package/dist/assets/{index.es-BkZlVTZH.js.map → index.es-DuM-WVhV.js.map} +1 -1
- package/dist/assets/{index.es-legacy-DdMTxXQK.js → index.es-legacy-Cz2m6e4L.js} +2 -2
- package/dist/assets/{index.es-legacy-DdMTxXQK.js.map → index.es-legacy-Cz2m6e4L.js.map} +1 -1
- package/dist/assets/{mapbox-jb8Zev6T-DbABbE_7.js → mapbox-jb8Zev6T-BgSpiKob.js} +2 -2
- package/dist/assets/{mapbox-jb8Zev6T-DbABbE_7.js.map → mapbox-jb8Zev6T-BgSpiKob.js.map} +1 -1
- package/dist/assets/{mapbox-jb8Zev6T-legacy-DkLTUrvZ.js → mapbox-jb8Zev6T-legacy-hBjjoWXX.js} +2 -2
- package/dist/assets/{mapbox-jb8Zev6T-legacy-DkLTUrvZ.js.map → mapbox-jb8Zev6T-legacy-hBjjoWXX.js.map} +1 -1
- package/dist/assets/{maplibre-CUYkxr-D-DPcOY-Lp.js → maplibre-CUYkxr-D-BJWmGVry.js} +2 -2
- package/dist/assets/{maplibre-CUYkxr-D-DPcOY-Lp.js.map → maplibre-CUYkxr-D-BJWmGVry.js.map} +1 -1
- package/dist/assets/{maplibre-CUYkxr-D-legacy-Ct1K6aaN.js → maplibre-CUYkxr-D-legacy-BNqtRzVB.js} +2 -2
- package/dist/assets/{maplibre-CUYkxr-D-legacy-Ct1K6aaN.js.map → maplibre-CUYkxr-D-legacy-BNqtRzVB.js.map} +1 -1
- package/dist/assets/neighborhood-fallback-CizB5oi9.js.map +1 -1
- package/dist/assets/neighborhood-fallback-legacy-Bu1BwGpC.js.map +1 -1
- package/dist/assets/{sdks-CIuvHxGG.js → sdks-BTkz21XL.js} +2 -2
- package/dist/assets/{sdks-CIuvHxGG.js.map → sdks-BTkz21XL.js.map} +1 -1
- package/dist/assets/{sdks-legacy-3YngGDux.js → sdks-legacy-3sJ2n28B.js} +2 -2
- package/dist/assets/{sdks-legacy-3YngGDux.js.map → sdks-legacy-3sJ2n28B.js.map} +1 -1
- package/dist/assets/{useDemographicsData-Dz3Pu-Ht.js → useDemographicsData-DKScK522.js} +2 -2
- package/dist/assets/{useDemographicsData-Dz3Pu-Ht.js.map → useDemographicsData-DKScK522.js.map} +1 -1
- package/dist/assets/{useDemographicsData-legacy-BD0OVn1e.js → useDemographicsData-legacy-BsoUaI9P.js} +2 -2
- package/dist/assets/{useDemographicsData-legacy-BD0OVn1e.js.map → useDemographicsData-legacy-BsoUaI9P.js.map} +1 -1
- package/dist/assets/{useGeographies-CtCPN011.js → useGeographies-DejQbRC9.js} +2 -2
- package/dist/assets/{useGeographies-CtCPN011.js.map → useGeographies-DejQbRC9.js.map} +1 -1
- package/dist/assets/{useGeographies-legacy-BmNvVGxt.js → useGeographies-legacy-B5ciev2M.js} +2 -2
- package/dist/assets/{useGeographies-legacy-BmNvVGxt.js.map → useGeographies-legacy-B5ciev2M.js.map} +1 -1
- package/dist/assets/{useIsMobile-DqKgF2mC.js → useIsMobile-Co5SddxR.js} +2 -2
- package/dist/assets/{useIsMobile-DqKgF2mC.js.map → useIsMobile-Co5SddxR.js.map} +1 -1
- package/dist/assets/{useIsMobile-legacy-jEoaA3sZ.js → useIsMobile-legacy-B53LlWR8.js} +2 -2
- package/dist/assets/{useIsMobile-legacy-jEoaA3sZ.js.map → useIsMobile-legacy-B53LlWR8.js.map} +1 -1
- package/dist/assets/{useLocation-DnI9ftE5.js → useLocation-DUSQPRn5.js} +2 -2
- package/dist/assets/{useLocation-DnI9ftE5.js.map → useLocation-DUSQPRn5.js.map} +1 -1
- package/dist/assets/{useLocation-legacy-UNiEBLrQ.js → useLocation-legacy-CYzO18ij.js} +2 -2
- package/dist/assets/{useLocation-legacy-UNiEBLrQ.js.map → useLocation-legacy-CYzO18ij.js.map} +1 -1
- package/dist/assets/{useProfiles-DKmVxUf9.js → useProfiles-Dv9s6TWw.js} +2 -2
- package/dist/assets/{useProfiles-DKmVxUf9.js.map → useProfiles-Dv9s6TWw.js.map} +1 -1
- package/dist/assets/{useProfiles-legacy-OVEEk1dZ.js → useProfiles-legacy-DF0NXWwe.js} +2 -2
- package/dist/assets/{useProfiles-legacy-OVEEk1dZ.js.map → useProfiles-legacy-DF0NXWwe.js.map} +1 -1
- package/dist/assets/{useSchools-BC9vy4Xx.js → useSchools-Dqdy1J-D.js} +2 -2
- package/dist/assets/{useSchools-BC9vy4Xx.js.map → useSchools-Dqdy1J-D.js.map} +1 -1
- package/dist/assets/{useSchools-legacy-g8-dezaK.js → useSchools-legacy-CCHNqc2P.js} +2 -2
- package/dist/assets/{useSchools-legacy-g8-dezaK.js.map → useSchools-legacy-CCHNqc2P.js.map} +1 -1
- package/dist/assets/{useScores-BZGEEU4U.js → useScores-C4T2-LUO.js} +2 -2
- package/dist/assets/{useScores-BZGEEU4U.js.map → useScores-C4T2-LUO.js.map} +1 -1
- package/dist/assets/{useScores-legacy-C9icRMIu.js → useScores-legacy-BludORUw.js} +2 -2
- package/dist/assets/{useScores-legacy-C9icRMIu.js.map → useScores-legacy-BludORUw.js.map} +1 -1
- package/dist/index.html +2 -2
- package/dist/types/sdks/LocalContent/hooks/useSurveyTrigger/SurveyTriggerProvider/index.test.js +11 -9
- package/dist/types/sdks/LocalContent/hooks/useSurveyTrigger/SurveyTriggerProvider/index.test.js.map +1 -1
- package/dist/types/sdks/LocalContent/hooks/useSurveyTrigger/index.test.js +19 -5
- package/dist/types/sdks/LocalContent/hooks/useSurveyTrigger/index.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodFeatured-legacy-DHTnv4CZ.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-lDme45yC.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-C_ttsnZz.js";import{l as a}from"./google-maps-vendor-DvfEEdRU.js";import{a as t,d as o,f as s,g as n,n as l,o as i,r,s as p,t as d,u as g}from"./sdks-
|
|
2
|
-
//# sourceMappingURL=NeighborhoodHero-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as a}from"./google-maps-vendor-DvfEEdRU.js";import{a as t,d as o,f as s,g as n,n as l,o as i,r,s as p,t as d,u as g}from"./sdks-BTkz21XL.js";import{t as m}from"./MapPin.es-DUGzA8QJ.js";import{q as c,r as u,t as h}from"./index-PbHyodiU.js";import{t as x}from"./useGeographies-DejQbRC9.js";/* empty css */import{t as b}from"./ResizeWrapper-DbYmMKOU.js";import{t as f}from"./ValidateOptions-BqL9iY9R.js";import{t as y}from"./useIsMobile-Co5SddxR.js";import{t as j}from"./useProfiles-Dv9s6TWw.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=p(),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:r}=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||r,[n,r]),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}=n("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:o().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:o().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);i(l.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)(r,{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:l.neighborhoodWrap,meta:{clientId:e.clientId,productName:d.NEIGHBORHOOD_HERO,productVersion:"1.24.44"},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-Bj4FlQVV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodHero-DrBKD27P.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__$oUiuAXR7gZMKRQU56HW2w__\"","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-Bj4FlQVV.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__U2YZxvNlcnuoWcGKwa9Wsw__\"","export default \"__VITE_ASSET__2$LtLFQdS6IeO$uJxLxRJQ__\"","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-BMCiD7gd.js → NeighborhoodHero-legacy-C6T-qgPK.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./sdks-legacy-
|
|
2
|
-
//# sourceMappingURL=NeighborhoodHero-legacy-
|
|
1
|
+
System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./sdks-legacy-3sJ2n28B.js","./MapPin.es-legacy-BLTd1wBx.js","./index-legacy-CYps6nGB.js","./useGeographies-legacy-B5ciev2M.js","./globals-legacy-BkBmZmLf.js","./ResizeWrapper-legacy-C0ua6RC5.js","./ValidateOptions-legacy-BQ69tin-.js","./useIsMobile-legacy-B53LlWR8.js","./useProfiles-legacy-DF0NXWwe.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.d,i=e.f,s=e.g,d=e.n,r=e.o,u=e.r,g=e.s,c=e.t,p=e.u},function(e){v=e.t},function(e){m=e.q,h=e.r,x=e.t},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,u,c;const{sdkState:p}=x(),v=(null===(o=p.globalOptions)||void 0===o?void 0:o.locale)||"en",m=g(),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===(u=p.options)||void 0===u?void 0:u.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}=s("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:t().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:t().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:i().optional(),image:i().optional()}).noUnknown(!0),r(d.neighborhoodWrap.key),e("default",()=>{var e,o,l,n,t,i,s;const{sdkState:r}=x(),g=j(),p=(null===(e=r.globalOptions)||void 0===e?void 0:e.locale)||"en",v=(0,I.useMemo)(()=>{var e,o,l,n;return null!==(e=r.options)&&void 0!==e&&e.geographyId?{geographyId:null===(o=r.options)||void 0===o?void 0:o.geographyId}:{lat:null===(l=r.options)||void 0===l?void 0:l.lat,lng:null===(n=r.options)||void 0===n?void 0:n.lng}},[null===(o=r.options)||void 0===o?void 0:o.lat,null===(l=r.options)||void 0===l?void 0:l.lng,null===(n=r.options)||void 0===n?void 0:n.geographyId]);return(0,_.jsx)(y,{children:(0,_.jsx)(f,{sdk:"Neighborhood Hero",schema:K,options:r.options,children:(0,_.jsx)(u,{environment:null===(t=r.globalOptions)||void 0===t||null===(t=t.environment)||void 0===t?void 0:t.api,apiKey:r.apiKey,appearance:null===(i=r.globalOptions)||void 0===i?void 0:i.appearance,locale:null===(s=r.globalOptions)||void 0===s?void 0:s.locale,product:c.NEIGHBORHOOD_HERO,children:(0,_.jsx)(a,{trackingPipelineSettings:{apiKey:r.apiKey||""},analyticsSettings:d.neighborhoodWrap,meta:{clientId:r.clientId,productName:c.NEIGHBORHOOD_HERO,productVersion:"1.24.44"},attributes:{location:v,host:r.location,host_url:document.referrer,locale:p,isMobile:g},flags:{isDebugMode:!1},children:(0,_.jsx)(M,{children:(0,_.jsx)(H,{})})})})})})})}}});
|
|
2
|
+
//# sourceMappingURL=NeighborhoodHero-legacy-C6T-qgPK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodHero-legacy-BMCiD7gd.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-legacy-C6T-qgPK.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-CwoTHUIb.js → NeighborhoodHighlights-BBmVnaLl.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as a}from"./google-maps-vendor-DvfEEdRU.js";import{a as t,d as i,f as o,g as n,m as r,n as s,o as l,r as g,s as d,t as h,u as p}from"./sdks-
|
|
2
|
-
//# sourceMappingURL=NeighborhoodHighlights-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as a}from"./google-maps-vendor-DvfEEdRU.js";import{a as t,d as i,f as o,g as n,m as r,n as s,o as l,r as g,s as d,t as h,u as p}from"./sdks-BTkz21XL.js";import{t as m}from"./ScoreIcon-s5-ehfPP.js";import{t as c}from"./IconBase.es-CEehl5AX.js";import{q as u,r as f,t as x}from"./index-PbHyodiU.js";import{t as y}from"./useGeographies-DejQbRC9.js";/* empty css */import{t as v}from"./ResizeWrapper-DbYmMKOU.js";import{t as M}from"./ValidateOptions-BqL9iY9R.js";import{t as Z}from"./useIsMobile-Co5SddxR.js";import{t as j}from"./useScores-C4T2-LUO.js";import{t as b}from"./TitleHeader-Be2YRN93.js";import{t as H}from"./NoDataContent-CTxzT718.js";var I=e(a(),1),A=new Map([["bold",I.createElement(I.Fragment,null,I.createElement("path",{d:"M140,32V64a12,12,0,0,1-24,0V32a12,12,0,0,1,24,0Zm84,84H192a12,12,0,0,0,0,24h32a12,12,0,0,0,0-24Zm-42.26,48.77a12,12,0,1,0-17,17l22.63,22.63a12,12,0,0,0,17-17ZM128,180a12,12,0,0,0-12,12v32a12,12,0,0,0,24,0V192A12,12,0,0,0,128,180ZM74.26,164.77,51.63,187.4a12,12,0,0,0,17,17l22.63-22.63a12,12,0,1,0-17-17ZM76,128a12,12,0,0,0-12-12H32a12,12,0,0,0,0,24H64A12,12,0,0,0,76,128ZM68.6,51.63a12,12,0,1,0-17,17L74.26,91.23a12,12,0,0,0,17-17Z"}))],["duotone",I.createElement(I.Fragment,null,I.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),I.createElement("path",{d:"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z"}))],["fill",I.createElement(I.Fragment,null,I.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM48,136a8,8,0,0,1,0-16H72a8,8,0,0,1,0,16Zm46.06,37.25-17,17a8,8,0,0,1-11.32-11.32l17-17a8,8,0,0,1,11.31,11.31Zm0-79.19a8,8,0,0,1-11.31,0l-17-17A8,8,0,0,1,77.09,65.77l17,17A8,8,0,0,1,94.06,94.06ZM136,208a8,8,0,0,1-16,0V184a8,8,0,0,1,16,0Zm0-136a8,8,0,0,1-16,0V48a8,8,0,0,1,16,0Zm54.23,118.23a8,8,0,0,1-11.32,0l-17-17a8,8,0,0,1,11.31-11.31l17,17A8,8,0,0,1,190.23,190.23ZM208,136H184a8,8,0,0,1,0-16h24a8,8,0,0,1,0,16Z"}))],["light",I.createElement(I.Fragment,null,I.createElement("path",{d:"M134,32V64a6,6,0,0,1-12,0V32a6,6,0,0,1,12,0Zm90,90H192a6,6,0,0,0,0,12h32a6,6,0,0,0,0-12Zm-46.5,47A6,6,0,0,0,169,177.5l22.63,22.62a6,6,0,0,0,8.48-8.48ZM128,186a6,6,0,0,0-6,6v32a6,6,0,0,0,12,0V192A6,6,0,0,0,128,186ZM78.5,169,55.88,191.64a6,6,0,1,0,8.48,8.48L87,177.5A6,6,0,1,0,78.5,169ZM70,128a6,6,0,0,0-6-6H32a6,6,0,0,0,0,12H64A6,6,0,0,0,70,128ZM64.36,55.88a6,6,0,0,0-8.48,8.48L78.5,87A6,6,0,1,0,87,78.5Z"}))],["regular",I.createElement(I.Fragment,null,I.createElement("path",{d:"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z"}))],["thin",I.createElement(I.Fragment,null,I.createElement("path",{d:"M132,32V64a4,4,0,0,1-8,0V32a4,4,0,0,1,8,0Zm92,92H192a4,4,0,0,0,0,8h32a4,4,0,0,0,0-8Zm-47.92,46.43a4,4,0,1,0-5.65,5.65l22.62,22.63a4,4,0,0,0,5.66-5.66ZM128,188a4,4,0,0,0-4,4v32a4,4,0,0,0,8,0V192A4,4,0,0,0,128,188ZM79.92,170.43,57.29,193.05A4,4,0,0,0,63,198.71l22.62-22.63a4,4,0,1,0-5.65-5.65ZM68,128a4,4,0,0,0-4-4H32a4,4,0,0,0,0,8H64A4,4,0,0,0,68,128ZM63,57.29A4,4,0,0,0,57.29,63L79.92,85.57a4,4,0,1,0,5.65-5.65Z"}))]]),E=I.forwardRef((e,a)=>I.createElement(c,{ref:a,...e,weights:A}));E.displayName="SpinnerGapIcon";var V=function(e){return e.SDK_VIEWED="neighborhood-highlights-Viewed",e}({}),w=function(e){return e.SDK_VIEWED="sdk_viewed",e}({}),N={transport:["pedestrian_friendly","car_friendly","transit_friendly","cycling_friendly"],services:["groceries","shopping","restaurants","cafes"],character:["quiet","parks","vibrant","nightlife"]},L=[...N.transport,...N.services,...N.character],D=u(),O=I.createContext({}),S=()=>(0,I.useContext)(O),_=({children:e})=>{const{sdkState:a}=x(),t=d();f(()=>{t.postEvent({eventType:V.SDK_VIEWED}),t.trackAnalyticsEvent({eventName:w.SDK_VIEWED})});const{isLoading:i,data:o}=y({location:{lat:void 0===a.options?.geographyId?a.options?.lat:void 0,lng:void 0===a.options?.geographyId?a.options?.lng:void 0},externalId:a?.globalOptions?.externalId}),{data:n,isFetching:r}=j({geographyId:(0,I.useMemo)(()=>void 0!==a.options?.geographyId?a.options.geographyId:Object.keys(o||{})[0],[a.options?.geographyId,o]),location:{},include:L}),s=(0,I.useMemo)(()=>i||r,[i,r]),l=(0,I.useMemo)(()=>({isLoading:s,title:a.options?.title,scores:n?.geographies[0]?.scores}),[s,n,a.options?.title]);return(0,D.jsx)(O.Provider,{value:l,children:e})},k="\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 F({isLoading:e=!1,score:a}){return(0,D.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,D.jsxs)("div",{className:"rounded-full bg-gray-25 w-12 h-12 border-2 border-base-white flex items-center justify-center",children:[e&&(0,D.jsx)(E,{className:k}),!e&&a&&(0,D.jsx)(m,{score:a,className:k})]})})}function G({score:e}){const{t:a}=n(["neighborhoodHighlights","common"]);return(0,D.jsxs)("div",{"data-testid":`highlight-content-${e}`,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,D.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,D.jsx)("span",{children:a("highlight.title")})}),(0,D.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:e&&a(`common:scores.${e}.title`)})]})}var K=({isLoading:e=!1,score:a})=>(0,D.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":e,"data-score":a,children:[(0,D.jsx)(F,{isLoading:e,score:a}),(0,D.jsx)(G,{score:a})]});function W(){const{t:e}=n("neighborhoodHighlights"),{isLoading:a,scores:t}=S(),i=(0,I.useMemo)(()=>a||!t?[]:function(e){const a=[];return void 0===e||L.map(a=>({scoreName:a,value:Math.round(10*Number(e[a]?.value))/10*2})).filter(e=>e.value>7).sort((e,a)=>e.value<a.value?1:-1).slice(0,3).map(e=>a.push(e.scoreName)),a}(t),[t,a]);return a||0!==i.length?(0,D.jsx)("div",{"data-testid":"highlights-container",className:"flex flex-col gap-4 w-full lg:flex-row",children:(a?[1,2,3]:i).map((e,t)=>(0,D.jsx)(K,{isLoading:a,score:"number"!=typeof e?e:void 0},t))}):(0,D.jsx)(H,{text:e("noData")})}function q(){const{t:e}=n("neighborhoodHighlights"),{title:a}=S();return(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(b,{title:"string"==typeof a||!1===a?a:e("title")}),(0,D.jsx)(W,{})]})}var R=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:o().optional(),title:r().optional()}).noUnknown(!0);l(s.neighborhoodWrap.key);var T=()=>{const{sdkState:e}=x(),a=Z(),i=e.globalOptions?.locale||"en",o=(0,I.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,D.jsx)(v,{children:(0,D.jsx)(M,{sdk:"Neighborhood Highlights",schema:R,options:e.options,children:(0,D.jsx)(g,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:h.NEIGHBORHOOD_HIGHLIGHTS,children:(0,D.jsx)(t,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:s.neighborhoodWrap,meta:{clientId:e.clientId,productName:h.NEIGHBORHOOD_HIGHLIGHTS,productVersion:"1.24.44"},attributes:{location:o,host:e.location,host_url:document.referrer,locale:i,isMobile:a},flags:{isDebugMode:!1},children:(0,D.jsx)(_,{children:(0,D.jsx)(q,{})})})})})})};export{T as default};
|
|
2
|
+
//# sourceMappingURL=NeighborhoodHighlights-BBmVnaLl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodHighlights-CwoTHUIb.js","names":["a","p"],"sources":["../../../../node_modules/@phosphor-icons/react/dist/defs/SpinnerGap.es.js","../../../../node_modules/@phosphor-icons/react/dist/csr/SpinnerGap.es.js","../../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 * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M140,32V64a12,12,0,0,1-24,0V32a12,12,0,0,1,24,0Zm84,84H192a12,12,0,0,0,0,24h32a12,12,0,0,0,0-24Zm-42.26,48.77a12,12,0,1,0-17,17l22.63,22.63a12,12,0,0,0,17-17ZM128,180a12,12,0,0,0-12,12v32a12,12,0,0,0,24,0V192A12,12,0,0,0,128,180ZM74.26,164.77,51.63,187.4a12,12,0,0,0,17,17l22.63-22.63a12,12,0,1,0-17-17ZM76,128a12,12,0,0,0-12-12H32a12,12,0,0,0,0,24H64A12,12,0,0,0,76,128ZM68.6,51.63a12,12,0,1,0-17,17L74.26,91.23a12,12,0,0,0,17-17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM48,136a8,8,0,0,1,0-16H72a8,8,0,0,1,0,16Zm46.06,37.25-17,17a8,8,0,0,1-11.32-11.32l17-17a8,8,0,0,1,11.31,11.31Zm0-79.19a8,8,0,0,1-11.31,0l-17-17A8,8,0,0,1,77.09,65.77l17,17A8,8,0,0,1,94.06,94.06ZM136,208a8,8,0,0,1-16,0V184a8,8,0,0,1,16,0Zm0-136a8,8,0,0,1-16,0V48a8,8,0,0,1,16,0Zm54.23,118.23a8,8,0,0,1-11.32,0l-17-17a8,8,0,0,1,11.31-11.31l17,17A8,8,0,0,1,190.23,190.23ZM208,136H184a8,8,0,0,1,0-16h24a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M134,32V64a6,6,0,0,1-12,0V32a6,6,0,0,1,12,0Zm90,90H192a6,6,0,0,0,0,12h32a6,6,0,0,0,0-12Zm-46.5,47A6,6,0,0,0,169,177.5l22.63,22.62a6,6,0,0,0,8.48-8.48ZM128,186a6,6,0,0,0-6,6v32a6,6,0,0,0,12,0V192A6,6,0,0,0,128,186ZM78.5,169,55.88,191.64a6,6,0,1,0,8.48,8.48L87,177.5A6,6,0,1,0,78.5,169ZM70,128a6,6,0,0,0-6-6H32a6,6,0,0,0,0,12H64A6,6,0,0,0,70,128ZM64.36,55.88a6,6,0,0,0-8.48,8.48L78.5,87A6,6,0,1,0,87,78.5Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M132,32V64a4,4,0,0,1-8,0V32a4,4,0,0,1,8,0Zm92,92H192a4,4,0,0,0,0,8h32a4,4,0,0,0,0-8Zm-47.92,46.43a4,4,0,1,0-5.65,5.65l22.62,22.63a4,4,0,0,0,5.66-5.66ZM128,188a4,4,0,0,0-4,4v32a4,4,0,0,0,8,0V192A4,4,0,0,0,128,188ZM79.92,170.43,57.29,193.05A4,4,0,0,0,63,198.71l22.62-22.63a4,4,0,1,0-5.65-5.65ZM68,128a4,4,0,0,0-4-4H32a4,4,0,0,0,0,8H64A4,4,0,0,0,68,128ZM63,57.29A4,4,0,0,0,57.29,63L79.92,85.57a4,4,0,1,0,5.65-5.65Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport p from \"../defs/SpinnerGap.es.js\";\nconst o = e.forwardRef((r, n) => /* @__PURE__ */ e.createElement(a, { ref: n, ...r, weights: p }));\no.displayName = \"SpinnerGapIcon\";\nconst m = o;\nexport {\n m as SpinnerGap,\n o as SpinnerGapIcon\n};\n","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"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NeighborhoodHighlights-BBmVnaLl.js","names":["a","p"],"sources":["../../../../node_modules/@phosphor-icons/react/dist/defs/SpinnerGap.es.js","../../../../node_modules/@phosphor-icons/react/dist/csr/SpinnerGap.es.js","../../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 * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M140,32V64a12,12,0,0,1-24,0V32a12,12,0,0,1,24,0Zm84,84H192a12,12,0,0,0,0,24h32a12,12,0,0,0,0-24Zm-42.26,48.77a12,12,0,1,0-17,17l22.63,22.63a12,12,0,0,0,17-17ZM128,180a12,12,0,0,0-12,12v32a12,12,0,0,0,24,0V192A12,12,0,0,0,128,180ZM74.26,164.77,51.63,187.4a12,12,0,0,0,17,17l22.63-22.63a12,12,0,1,0-17-17ZM76,128a12,12,0,0,0-12-12H32a12,12,0,0,0,0,24H64A12,12,0,0,0,76,128ZM68.6,51.63a12,12,0,1,0-17,17L74.26,91.23a12,12,0,0,0,17-17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM48,136a8,8,0,0,1,0-16H72a8,8,0,0,1,0,16Zm46.06,37.25-17,17a8,8,0,0,1-11.32-11.32l17-17a8,8,0,0,1,11.31,11.31Zm0-79.19a8,8,0,0,1-11.31,0l-17-17A8,8,0,0,1,77.09,65.77l17,17A8,8,0,0,1,94.06,94.06ZM136,208a8,8,0,0,1-16,0V184a8,8,0,0,1,16,0Zm0-136a8,8,0,0,1-16,0V48a8,8,0,0,1,16,0Zm54.23,118.23a8,8,0,0,1-11.32,0l-17-17a8,8,0,0,1,11.31-11.31l17,17A8,8,0,0,1,190.23,190.23ZM208,136H184a8,8,0,0,1,0-16h24a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M134,32V64a6,6,0,0,1-12,0V32a6,6,0,0,1,12,0Zm90,90H192a6,6,0,0,0,0,12h32a6,6,0,0,0,0-12Zm-46.5,47A6,6,0,0,0,169,177.5l22.63,22.62a6,6,0,0,0,8.48-8.48ZM128,186a6,6,0,0,0-6,6v32a6,6,0,0,0,12,0V192A6,6,0,0,0,128,186ZM78.5,169,55.88,191.64a6,6,0,1,0,8.48,8.48L87,177.5A6,6,0,1,0,78.5,169ZM70,128a6,6,0,0,0-6-6H32a6,6,0,0,0,0,12H64A6,6,0,0,0,70,128ZM64.36,55.88a6,6,0,0,0-8.48,8.48L78.5,87A6,6,0,1,0,87,78.5Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M132,32V64a4,4,0,0,1-8,0V32a4,4,0,0,1,8,0Zm92,92H192a4,4,0,0,0,0,8h32a4,4,0,0,0,0-8Zm-47.92,46.43a4,4,0,1,0-5.65,5.65l22.62,22.63a4,4,0,0,0,5.66-5.66ZM128,188a4,4,0,0,0-4,4v32a4,4,0,0,0,8,0V192A4,4,0,0,0,128,188ZM79.92,170.43,57.29,193.05A4,4,0,0,0,63,198.71l22.62-22.63a4,4,0,1,0-5.65-5.65ZM68,128a4,4,0,0,0-4-4H32a4,4,0,0,0,0,8H64A4,4,0,0,0,68,128ZM63,57.29A4,4,0,0,0,57.29,63L79.92,85.57a4,4,0,1,0,5.65-5.65Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport p from \"../defs/SpinnerGap.es.js\";\nconst o = e.forwardRef((r, n) => /* @__PURE__ */ e.createElement(a, { ref: n, ...r, weights: p }));\no.displayName = \"SpinnerGapIcon\";\nconst m = o;\nexport {\n m as SpinnerGap,\n o as SpinnerGapIcon\n};\n","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"],"x_google_ignoreList":[0,1],"mappings":"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"}
|