@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":"NeighborhoodMap-legacy-D7V_lZQF.js","names":[],"sources":["../../src/sdks/NeighborhoodMap/types.ts","../../src/sdks/NeighborhoodMap/constants.ts","../../src/sdks/NeighborhoodMap/context.tsx","../../src/sdks/NeighborhoodMap/components/Map/Layers/index.tsx","../../src/sdks/NeighborhoodMap/components/Map/Markers/index.tsx","../../src/sdks/NeighborhoodMap/components/Map/Popup/index.tsx","../../src/sdks/NeighborhoodMap/components/Map/styles.ts","../../src/sdks/NeighborhoodMap/components/Map/index.tsx","../../src/sdks/NeighborhoodMap/components/Content/styles.ts","../../src/sdks/NeighborhoodMap/components/Content/index.tsx","../../src/sdks/NeighborhoodMap/schema.ts","../../src/sdks/NeighborhoodMap/index.tsx"],"sourcesContent":["import type { POI, EnhancedPOIs, School, Schools } from \"@local-logic/client\";\nimport { POICategories } from \"@local-logic/client\";\nimport type { SDKOptions, MapProviderNames } from \"~/types/options\";\n\nexport type MapProvider = {\n name: MapProviderNames;\n key?: string;\n theme?: string;\n};\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n zoom?: number;\n pitch?: number;\n bearing?: number;\n cooperativeGestures?: boolean;\n mapProvider?: MapProvider;\n hideAttribution?: boolean;\n showSchoolRatings?: boolean;\n};\n\nexport type NeighborhoodMapProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport type POICategory = EnhancedPOIs | keyof Schools;\nexport type POIGroup = (keyof typeof POICategories)[];\nexport type SchoolGroup = (keyof Schools)[];\nexport type Marker = POI | School;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-map-Viewed\",\n CATEGORY_CLICKED = \"neighborhood-map-Category-Clicked\",\n POI_CLICKED = \"neighborhood-map-Poi-Clicked\",\n POI_LINK_CLICKED = \"neighborhood-map-Poi-Link-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 CATEGORY_CLICKED = \"category_clicked\",\n POI_CLICKED = \"poi_clicked\",\n POI_LINK_CLICKED = \"poi_link_clicked\",\n}\n","import type { POICategory } from \"./types\";\n\nexport const DEFAULT_MIN_ZOOM = 2; // Default minimum zoom level for the map\nexport const DEFAULT_MAX_ZOOM = 17; // Default maximum zoom level for the map\n\nexport const MAX_POI_LIMIT = 500;\n\nexport const MAP_PADDING = {\n desktop: {\n top: 30,\n bottom: 30,\n left: 30,\n right: 30,\n },\n mobile: {\n top: 15,\n bottom: 15,\n left: 15,\n right: 15,\n },\n};\n\nexport const categories: POICategory[] = [\n \"primary_schools\",\n \"high_schools\",\n \"restaurants\",\n \"groceries\",\n \"groceries_specialized\",\n \"non_food_shops\",\n \"nightlife\",\n \"cafes\",\n \"daycares\",\n \"bus_stops\",\n \"rapid_transit_stations\",\n \"train_stations\",\n \"parks\",\n \"fitness\",\n \"sport_facilities\",\n \"health_care\",\n \"pet_care\",\n \"car_fueling_stations\",\n \"art_culture_science\",\n \"home_improvement\",\n \"personal_care\",\n];\n","import React, { useContext, useState, useMemo, useCallback } from \"react\";\nimport type { Geography, POI, School } from \"@local-logic/client\";\nimport type { MarkerPoint } from \"@local-logic/maps\";\nimport {\n type NeighborhoodMapProps,\n type POICategory,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { MAX_POI_LIMIT } from \"./constants\";\n\nimport { useTracking } from \"~/tracking\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport errorTracker from \"~/utils/errorTracker\";\n\nimport { getIdFromMarker } from \"~/utils/map/getIdFromMarker\";\nimport { useMarkers } from \"~/hooks/useMarkers\";\n\ninterface Location {\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n locale: \"en\" | \"fr\";\n isLoading: boolean;\n map: {\n mapProvider: NeighborhoodMapProps[\"options\"][\"mapProvider\"];\n zoom: NeighborhoodMapProps[\"options\"][\"zoom\"];\n pitch: NeighborhoodMapProps[\"options\"][\"pitch\"];\n bearing: NeighborhoodMapProps[\"options\"][\"bearing\"];\n cooperativeGestures: NeighborhoodMapProps[\"options\"][\"cooperativeGestures\"];\n };\n geography?: Geography;\n activeMarker?: MarkerPoint;\n activeMarkerDetails: POI | School | null;\n activePoiCategory?: POICategory;\n onSelectPoiCategory: (category?: POICategory) => void;\n handleMarkerClick: (marker?: MarkerPoint) => void;\n markersData?: POI[] | School[];\n hideAttribution?: boolean;\n showSchoolRatings?: boolean;\n};\n\nconst NeighborhoodMapContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useNeighborhoodMap = () => useContext(NeighborhoodMapContext);\n\nconst NeighborhoodMapProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodMapProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const [activeMarker, setActiveMarker] = useState<MarkerPoint>();\n const [activePoiCategory, setActivePoiCategory] =\n useState<DefaultContext[\"activePoiCategory\"]>();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n eventAttributes: [\n {\n label: \"default_category\",\n data: activePoiCategory,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n eventAttributes: {\n ll_default_category: activePoiCategory,\n },\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 include: \"geometry\",\n },\n );\n\n const { geographyId, geography } = useMemo(() => {\n const geographiesArray = Object.entries(geographyData || {});\n\n return {\n geographyId: geographiesArray[0]?.[0],\n geography: geographiesArray[0]?.[1],\n };\n }, [isGeographyLoading, geographyData]);\n\n const { data: markersDataRaw, isLoading: isMarkersLoading } = useMarkers({\n geogId: geographyId,\n limit: MAX_POI_LIMIT,\n categories: activePoiCategory ? [activePoiCategory] : undefined,\n });\n\n // Flatten the markers data into a single array\n const markersData = useMemo(\n () =>\n ([] as (POI | School)[]).concat(...Object.values(markersDataRaw || {})),\n [markersDataRaw],\n );\n\n const handleSelectPoiCategory = (category?: POICategory) => {\n errorTracker.addBreadCrumb(\n \"NeighborhoodMapProvider\",\n \"handleSelectPoiCategory\",\n {\n category,\n },\n );\n\n setActivePoiCategory(activePoiCategory === category ? undefined : category);\n };\n\n const handleMarkerClick = useCallback(\n (marker?: MarkerPoint) => {\n if (\n activeMarker?.latitude === marker?.latitude &&\n activeMarker?.longitude === marker?.longitude\n ) {\n setActiveMarker(undefined);\n return;\n }\n\n setActiveMarker(marker);\n },\n [activeMarker],\n );\n\n const activeMarkerDetails = useMemo(() => {\n if (!markersData || !activeMarker || activeMarker.markers.length !== 1) {\n return null;\n }\n\n return (\n markersData.find(\n (marker) =>\n activeMarker.markers[0].id ===\n getIdFromMarker(marker.lat, marker.lng, marker.name),\n ) || null\n );\n }, [activeMarker, markersData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isMarkersLoading,\n [isGeographyLoading, isMarkersLoading],\n );\n\n return (\n <NeighborhoodMapContext.Provider\n value={{\n locale,\n isLoading,\n map: {\n mapProvider: sdkState.options?.mapProvider,\n zoom: sdkState.options?.zoom,\n pitch: sdkState.options?.pitch,\n bearing: sdkState.options?.bearing,\n cooperativeGestures: sdkState.options?.cooperativeGestures,\n },\n geography,\n activeMarker,\n activeMarkerDetails,\n handleMarkerClick,\n activePoiCategory,\n onSelectPoiCategory: handleSelectPoiCategory,\n markersData,\n hideAttribution: sdkState.options?.hideAttribution,\n showSchoolRatings: sdkState.options?.showSchoolRatings,\n }}\n >\n {children}\n </NeighborhoodMapContext.Provider>\n );\n};\n\nexport { useNeighborhoodMap, NeighborhoodMapProvider, type Location };\n","import React, { useMemo } from \"react\";\n\nimport { LocalLogicMap, type Source, type LayerType } from \"@local-logic/maps\";\n\nimport type { School } from \"@local-logic/client\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\n\nconst GEOGRAPHY_LAYER_COLOR = \"#008491\";\nconst SCHOOL_CATCHMENT_COLOR = \"#9333ea\";\n\nexport function Layers() {\n const { geography, activeMarkerDetails } = useNeighborhoodMap();\n\n const primaryColor = useMemo(\n () =>\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--ll-colors-primary-100\",\n ) || GEOGRAPHY_LAYER_COLOR,\n [],\n );\n\n const neighborhoodLayerSources = useMemo(() => {\n const sources: Source[] = [];\n\n if (\n typeof geography?.geometry === \"undefined\" ||\n (Array.isArray(geography.geometry) && geography.geometry.length === 0)\n ) {\n return undefined;\n }\n\n geography.geometry.forEach((geometry, index) => {\n sources.push({\n key: `neighborhood-geometry-${index}`,\n layer: [\n {\n type: \"fill\" as LayerType,\n color: primaryColor,\n },\n {\n type: \"line\" as LayerType,\n color: primaryColor,\n },\n ],\n geometry: [geometry],\n });\n });\n\n return sources;\n }, [geography, primaryColor]);\n\n const schoolLayerSources = useMemo(() => {\n const activeSchoolMarkerDetails = activeMarkerDetails as School;\n if (\n typeof activeSchoolMarkerDetails?.catchments === \"undefined\" ||\n activeSchoolMarkerDetails.catchments?.length === 0\n ) {\n return undefined;\n }\n\n const sources: Source[] = [];\n\n activeSchoolMarkerDetails.catchments.forEach(\n (catchment, catchmentIndex) => {\n if (\n Array.isArray(catchment.geometry) &&\n catchment.geometry.length > 0\n ) {\n catchment.geometry.forEach((geometry, geomIndex) => {\n sources.push({\n key: `school-catchment-${catchmentIndex}-geom-${geomIndex}`,\n layer: [\n {\n type: \"fill\" as LayerType,\n color: SCHOOL_CATCHMENT_COLOR,\n },\n {\n type: \"line\" as LayerType,\n color: SCHOOL_CATCHMENT_COLOR,\n },\n ],\n geometry: [geometry],\n });\n });\n }\n },\n );\n\n return sources;\n }, [activeMarkerDetails]);\n\n return (\n <>\n <LocalLogicMap.Layers sources={neighborhoodLayerSources} />\n <LocalLogicMap.Layers sources={schoolLayerSources} />\n </>\n );\n}\n","import React, { useMemo } from \"react\";\n\nimport { LocalLogicMap, type Marker } from \"@local-logic/maps\";\nimport { useTracking } from \"~/tracking\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\n\nimport { getIdFromMarker } from \"~/utils/map/getIdFromMarker\";\n\nimport {\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodMap/types\";\nimport { icons as poiIcons } from \"~/components/PoiIcon\";\n\nexport function Markers() {\n const tracking = useTracking();\n const { isLoading, activePoiCategory, markersData, handleMarkerClick } =\n useNeighborhoodMap();\n\n const icon = useMemo(() => {\n if (typeof activePoiCategory === \"undefined\") {\n return undefined;\n }\n\n return poiIcons[activePoiCategory] as Marker[\"icon\"];\n }, [activePoiCategory]);\n\n const mapMarkers = useMemo(() => {\n if (typeof activePoiCategory === \"undefined\") {\n return [];\n }\n\n // Filter out duplicate markers by ID\n // This is because we combine multiple data sources that may have overlapping POIs\n return Array.from(\n (markersData || [])\n .map(\n (marker) =>\n ({\n id: getIdFromMarker(marker.lat, marker.lng, marker.name),\n latitude: marker.lat,\n longitude: marker.lng,\n name: marker.name,\n icon,\n }) as Marker,\n )\n .reduce((acc, marker) => {\n acc.set(marker.id, marker);\n return acc;\n }, new Map<string, Marker>())\n .values(),\n );\n }, [markersData, icon, activePoiCategory]);\n\n /**\n * Handles clicking on a map marker. This includes both single markers and cluster markers.\n *\n * @param marker\n * @returns\n */\n const handleMapMarkerClick = (\n marker: Parameters<typeof handleMarkerClick>[0],\n ) => {\n handleMarkerClick(marker);\n\n if (!activePoiCategory || !marker) {\n return;\n }\n\n const eventAttributes: Record<string, boolean | string | number> = {\n category: activePoiCategory,\n };\n\n if (marker.markers.length > 1) {\n eventAttributes.isCluster = true;\n eventAttributes.clusterSize = marker.markers.length;\n eventAttributes.lat = marker.latitude;\n eventAttributes.lng = marker.longitude;\n } else if (marker.markers.length === 1) {\n Object.entries(marker.markers[0]).forEach(([key, value]) => {\n if (\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n typeof value === \"number\"\n ) {\n // Remove sdk id before sending to tracking\n if (key === \"id\") {\n return;\n }\n eventAttributes[key] = value;\n }\n });\n }\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.POI_CLICKED,\n eventAttributes: Object.entries(eventAttributes).map(([key, value]) => ({\n label: key,\n data: value,\n })),\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.POI_CLICKED,\n eventAttributes,\n });\n };\n\n return (\n <LocalLogicMap.Markers\n isLoading={isLoading}\n markers={mapMarkers}\n clusterIcon={icon}\n onClick={handleMapMarkerClick}\n />\n );\n}\n","import React from \"react\";\n\nimport {\n LocalLogicMap,\n type Marker,\n type MarkerPoint,\n} from \"@local-logic/maps\";\nimport { useTracking } from \"~/tracking\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\n\nimport {\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodMap/types\";\n\nimport { ClusterPopupContent } from \"~/components/map/ClusterPopupContent\";\nimport { POIPopupContent } from \"~/components/map/POIPopupContent\";\n\nexport function Popup() {\n const tracking = useTracking();\n const {\n activePoiCategory,\n activeMarker,\n activeMarkerDetails,\n handleMarkerClick,\n showSchoolRatings,\n } = useNeighborhoodMap();\n\n /**\n * Handles selecting a marker from within a cluster popup.\n *\n * @param marker\n * @returns\n */\n const handleClusterMarkerSelected = (marker: Marker) => {\n handleMarkerClick({\n id: marker.id,\n latitude: marker.latitude,\n longitude: marker.longitude,\n markers: [marker],\n } as MarkerPoint);\n\n if (!activePoiCategory) {\n return;\n }\n\n const eventAttributes: Record<string, boolean | string | number> = {\n category: activePoiCategory,\n };\n\n Object.entries(marker).forEach(([key, value]) => {\n if (\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n typeof value === \"number\"\n ) {\n eventAttributes[key] = value;\n }\n });\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.POI_CLICKED,\n eventAttributes: Object.entries(eventAttributes).map(([key, value]) => ({\n label: key,\n data: value,\n })),\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.POI_CLICKED,\n eventAttributes,\n });\n };\n\n const handleLinkClick = (url: string) => {\n if (!activePoiCategory || !activeMarkerDetails) {\n return;\n }\n\n const eventAttributes: Record<string, boolean | string | number> = {\n category: activePoiCategory,\n };\n\n Object.entries(activeMarkerDetails).forEach(([key, value]) => {\n if (\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n typeof value === \"number\"\n ) {\n eventAttributes[key] = value;\n }\n });\n eventAttributes.clickedUrl = url;\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.POI_LINK_CLICKED,\n eventAttributes: Object.entries(eventAttributes).map(([key, value]) => ({\n label: key,\n data: value,\n })),\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.POI_LINK_CLICKED,\n eventAttributes,\n });\n };\n\n return (\n <LocalLogicMap.Popup\n latitude={activeMarker?.latitude}\n longitude={activeMarker?.longitude}\n onClose={() => handleMarkerClick(undefined)}\n >\n <ClusterPopupContent\n activeMarker={activeMarker}\n onMarkerSelected={handleClusterMarkerSelected}\n onClose={handleMarkerClick}\n />\n <POIPopupContent\n marker={activeMarkerDetails}\n poiCategory={activePoiCategory}\n onLocationLinkClick={handleLinkClick}\n onSchoolLinkClick={handleLinkClick}\n onClose={handleMarkerClick}\n showSchoolRatings={showSchoolRatings}\n />\n </LocalLogicMap.Popup>\n );\n}\n","export const container = `relative w-full overflow-hidden grow`;\n","import React, { useMemo } from \"react\";\n\nimport \"@local-logic/maps/style.css\";\n\nimport { LocalLogicMap } from \"@local-logic/maps\";\n\nimport { Layers } from \"./Layers\";\nimport { Markers } from \"./Markers\";\nimport { Popup } from \"./Popup\";\n\nimport * as styles from \"./styles\";\nimport { getMapProviderConfig } from \"~/utils/map/getMapProviderConfig\";\nimport {\n DEFAULT_MIN_ZOOM,\n DEFAULT_MAX_ZOOM,\n MAP_PADDING,\n} from \"~/sdks/NeighborhoodMap/constants\";\nimport { useResponsiveBreakpoints } from \"~/hooks/useResponsiveBreakpoints\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\n\nexport function Map({\n children,\n ...rest\n}: {\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>) {\n const breakpoints = useResponsiveBreakpoints();\n const { locale, map, activeMarker, geography } = useNeighborhoodMap();\n\n const mapProviderConfig = useMemo(\n () =>\n getMapProviderConfig(\n map.mapProvider?.name,\n map.mapProvider?.key,\n map.mapProvider?.theme,\n ),\n [map.mapProvider?.name, map.mapProvider?.key, map.mapProvider?.theme],\n );\n\n const locationBoundary = useMemo(() => {\n if (typeof geography === \"undefined\" || !geography?.geometry) {\n return undefined;\n }\n\n const outerRing = geography.geometry.flatMap((polygon) => polygon[0] || []);\n\n if (!outerRing || outerRing.length === 0) {\n return undefined;\n }\n return outerRing.map((point: number[]) => [point[1], point[0]]);\n }, [geography]);\n\n return (\n <div className={styles.container} {...rest}>\n {typeof geography !== \"undefined\" && (\n <LocalLogicMap.Root\n locale={locale}\n mapProvider={mapProviderConfig}\n mapPadding={MAP_PADDING[breakpoints.sm ? \"mobile\" : \"desktop\"]}\n locationBoundary={locationBoundary}\n center={{\n latitude: geography?.centroid.lat,\n longitude: geography?.centroid.lng,\n }}\n zoom={map.zoom}\n minZoom={DEFAULT_MIN_ZOOM}\n maxZoom={DEFAULT_MAX_ZOOM}\n zoomPosition={breakpoints.sm ? \"bottom-right\" : undefined}\n pitch={map.pitch}\n bearing={map.bearing}\n cooperativeGestures={map.cooperativeGestures}\n activeMarker={activeMarker}\n >\n <LocalLogicMap.BaseMap>\n <Layers />\n <Markers />\n <Popup />\n </LocalLogicMap.BaseMap>\n </LocalLogicMap.Root>\n )}\n\n {children}\n </div>\n );\n}\n","export const container = `relative bg-base-white w-full h-screen flex flex-col`;\nexport const header = `w-full flex items-center mb-4 gap-4 flex-row-reverse md:flex-row`;\n","import React, { useMemo, useState, useEffect } from \"react\";\n\nimport { useFlags } from \"launchdarkly-react-client-sdk\";\nimport { useTranslation } from \"react-i18next\";\nimport { HorizontalScrollFilters } from \"@local-logic/design-system\";\nimport { Map } from \"../Map\";\nimport * as styles from \"./styles\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\nimport { useTracking } from \"~/tracking\";\n\nimport { Attribution } from \"~/components/Attribution\";\n\nimport { icons as poiIcons } from \"~/components/PoiIcon\";\nimport { categories } from \"~/sdks/NeighborhoodMap/constants\";\n\nimport {\n type POICategory,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodMap/types\";\n\nexport const Content = () => {\n const { t } = useTranslation([\"neighborhoodMap\", \"common\"]);\n const flags = useFlags();\n const tracking = useTracking();\n\n const {\n locale,\n handleMarkerClick,\n activePoiCategory,\n onSelectPoiCategory,\n hideAttribution,\n } = useNeighborhoodMap();\n const [dialogSelectedPoiCategory, setDialogSelectedPoiCategory] = useState<\n POICategory | undefined\n >();\n\n useEffect(() => {\n handleMarkerClick(undefined);\n setDialogSelectedPoiCategory(activePoiCategory);\n }, [activePoiCategory]);\n\n const poiCategories = useMemo(\n () =>\n categories.map((category) => ({\n key: category as POICategory,\n icon: poiIcons[category],\n })),\n [flags],\n );\n\n const handleOnSelectCategory = (category: POICategory) => {\n onSelectPoiCategory(category);\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.CATEGORY_CLICKED,\n eventAttributes: [\n {\n label: \"category\",\n data: category,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.CATEGORY_CLICKED,\n eventAttributes: {\n ll_category: category,\n },\n });\n };\n\n const handleOnDialogSelectCategory = (category: POICategory) => {\n setDialogSelectedPoiCategory(\n dialogSelectedPoiCategory === category ? undefined : category,\n );\n };\n\n const handleResetFilters = () => {\n onSelectPoiCategory(undefined);\n };\n\n const handleApplyFilter = () => {\n onSelectPoiCategory(dialogSelectedPoiCategory);\n };\n\n return (\n <div className={styles.container}>\n <HorizontalScrollFilters.Root>\n <div className={styles.header}>\n <HorizontalScrollFilters.ScrollList\n activeFilter={activePoiCategory}\n leftArrowAriaLabel={t(\"filters.navigation.scrollLeftAriaLabel\")}\n rightArrowAriaLabel={t(\"filters.navigation.scrollRightAriaLabel\")}\n >\n {poiCategories.map(({ key, icon }) => (\n <HorizontalScrollFilters.Filter<POICategory>\n key={`category-${key}`}\n filter={key}\n label={t(`common:pois.${key}`)}\n icon={icon}\n isActive={key === activePoiCategory}\n onSelectFilter={handleOnSelectCategory}\n />\n ))}\n </HorizontalScrollFilters.ScrollList>\n <HorizontalScrollFilters.DialogTrigger\n label={t(\"filters.navigation.allFiltersAriaLabel\")}\n />\n </div>\n\n <HorizontalScrollFilters.Dialog\n title={t(\"filters.popup.title\")}\n description={t(\"filters.popup.description\")}\n applyLabel={t(\"filters.popup.cta.apply\")}\n resetLabel={t(\"filters.popup.cta.reset\")}\n onReset={handleResetFilters}\n onApply={handleApplyFilter}\n >\n {poiCategories.map(({ key, icon }) => (\n <HorizontalScrollFilters.Filter<POICategory>\n key={`dialog-category-${key}`}\n filter={key}\n label={t(`common:pois.${key}`)}\n icon={icon}\n isActive={key === dialogSelectedPoiCategory}\n onSelectFilter={handleOnDialogSelectCategory}\n />\n ))}\n </HorizontalScrollFilters.Dialog>\n </HorizontalScrollFilters.Root>\n\n <Map />\n\n <Attribution\n sdkName=\"neighborhood-map\"\n locale={locale}\n isHidden={hideAttribution}\n />\n </div>\n );\n};\n","import { ObjectSchema, number, object, mixed, string, boolean } from \"yup\";\nimport { Options } from \"./types\";\nimport { MapProvider } from \"~/types/options\";\n\nexport const schema: ObjectSchema<Options> = object({\n theme: string().oneOf([\"day\", \"night\"]).optional(),\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 zoom: number().optional(),\n pitch: number().optional(),\n bearing: number().optional(),\n cooperativeGestures: boolean().optional(),\n mapProvider: mixed<MapProvider>().optional(),\n hideAttribution: boolean().optional(),\n showSchoolRatings: boolean().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\nimport { Content } from \"./components/Content\";\nimport { NeighborhoodMapProvider } from \"./context\";\nimport { schema } from \"./schema\";\nimport { NeighborhoodMapProps } from \"./types\";\n\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 { 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 NeighborhoodMap = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodMapProps>();\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 <ValidateOptions\n sdk=\"Neighborhood Map\"\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_MAP}\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_MAP,\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 <NeighborhoodMapProvider>\n <Content />\n </NeighborhoodMapProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n );\n};\n\nexport default NeighborhoodMap;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NeighborhoodMap-legacy-CugKbgSp.js","names":[],"sources":["../../src/sdks/NeighborhoodMap/types.ts","../../src/sdks/NeighborhoodMap/constants.ts","../../src/sdks/NeighborhoodMap/context.tsx","../../src/sdks/NeighborhoodMap/components/Map/Layers/index.tsx","../../src/sdks/NeighborhoodMap/components/Map/Markers/index.tsx","../../src/sdks/NeighborhoodMap/components/Map/Popup/index.tsx","../../src/sdks/NeighborhoodMap/components/Map/styles.ts","../../src/sdks/NeighborhoodMap/components/Map/index.tsx","../../src/sdks/NeighborhoodMap/components/Content/styles.ts","../../src/sdks/NeighborhoodMap/components/Content/index.tsx","../../src/sdks/NeighborhoodMap/schema.ts","../../src/sdks/NeighborhoodMap/index.tsx"],"sourcesContent":["import type { POI, EnhancedPOIs, School, Schools } from \"@local-logic/client\";\nimport { POICategories } from \"@local-logic/client\";\nimport type { SDKOptions, MapProviderNames } from \"~/types/options\";\n\nexport type MapProvider = {\n name: MapProviderNames;\n key?: string;\n theme?: string;\n};\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n zoom?: number;\n pitch?: number;\n bearing?: number;\n cooperativeGestures?: boolean;\n mapProvider?: MapProvider;\n hideAttribution?: boolean;\n showSchoolRatings?: boolean;\n};\n\nexport type NeighborhoodMapProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport type POICategory = EnhancedPOIs | keyof Schools;\nexport type POIGroup = (keyof typeof POICategories)[];\nexport type SchoolGroup = (keyof Schools)[];\nexport type Marker = POI | School;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-map-Viewed\",\n CATEGORY_CLICKED = \"neighborhood-map-Category-Clicked\",\n POI_CLICKED = \"neighborhood-map-Poi-Clicked\",\n POI_LINK_CLICKED = \"neighborhood-map-Poi-Link-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 CATEGORY_CLICKED = \"category_clicked\",\n POI_CLICKED = \"poi_clicked\",\n POI_LINK_CLICKED = \"poi_link_clicked\",\n}\n","import type { POICategory } from \"./types\";\n\nexport const DEFAULT_MIN_ZOOM = 2; // Default minimum zoom level for the map\nexport const DEFAULT_MAX_ZOOM = 17; // Default maximum zoom level for the map\n\nexport const MAX_POI_LIMIT = 500;\n\nexport const MAP_PADDING = {\n desktop: {\n top: 30,\n bottom: 30,\n left: 30,\n right: 30,\n },\n mobile: {\n top: 15,\n bottom: 15,\n left: 15,\n right: 15,\n },\n};\n\nexport const categories: POICategory[] = [\n \"primary_schools\",\n \"high_schools\",\n \"restaurants\",\n \"groceries\",\n \"groceries_specialized\",\n \"non_food_shops\",\n \"nightlife\",\n \"cafes\",\n \"daycares\",\n \"bus_stops\",\n \"rapid_transit_stations\",\n \"train_stations\",\n \"parks\",\n \"fitness\",\n \"sport_facilities\",\n \"health_care\",\n \"pet_care\",\n \"car_fueling_stations\",\n \"art_culture_science\",\n \"home_improvement\",\n \"personal_care\",\n];\n","import React, { useContext, useState, useMemo, useCallback } from \"react\";\nimport type { Geography, POI, School } from \"@local-logic/client\";\nimport type { MarkerPoint } from \"@local-logic/maps\";\nimport {\n type NeighborhoodMapProps,\n type POICategory,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { MAX_POI_LIMIT } from \"./constants\";\n\nimport { useTracking } from \"~/tracking\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport errorTracker from \"~/utils/errorTracker\";\n\nimport { getIdFromMarker } from \"~/utils/map/getIdFromMarker\";\nimport { useMarkers } from \"~/hooks/useMarkers\";\n\ninterface Location {\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n locale: \"en\" | \"fr\";\n isLoading: boolean;\n map: {\n mapProvider: NeighborhoodMapProps[\"options\"][\"mapProvider\"];\n zoom: NeighborhoodMapProps[\"options\"][\"zoom\"];\n pitch: NeighborhoodMapProps[\"options\"][\"pitch\"];\n bearing: NeighborhoodMapProps[\"options\"][\"bearing\"];\n cooperativeGestures: NeighborhoodMapProps[\"options\"][\"cooperativeGestures\"];\n };\n geography?: Geography;\n activeMarker?: MarkerPoint;\n activeMarkerDetails: POI | School | null;\n activePoiCategory?: POICategory;\n onSelectPoiCategory: (category?: POICategory) => void;\n handleMarkerClick: (marker?: MarkerPoint) => void;\n markersData?: POI[] | School[];\n hideAttribution?: boolean;\n showSchoolRatings?: boolean;\n};\n\nconst NeighborhoodMapContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useNeighborhoodMap = () => useContext(NeighborhoodMapContext);\n\nconst NeighborhoodMapProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodMapProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const [activeMarker, setActiveMarker] = useState<MarkerPoint>();\n const [activePoiCategory, setActivePoiCategory] =\n useState<DefaultContext[\"activePoiCategory\"]>();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n eventAttributes: [\n {\n label: \"default_category\",\n data: activePoiCategory,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n eventAttributes: {\n ll_default_category: activePoiCategory,\n },\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 include: \"geometry\",\n },\n );\n\n const { geographyId, geography } = useMemo(() => {\n const geographiesArray = Object.entries(geographyData || {});\n\n return {\n geographyId: geographiesArray[0]?.[0],\n geography: geographiesArray[0]?.[1],\n };\n }, [isGeographyLoading, geographyData]);\n\n const { data: markersDataRaw, isLoading: isMarkersLoading } = useMarkers({\n geogId: geographyId,\n limit: MAX_POI_LIMIT,\n categories: activePoiCategory ? [activePoiCategory] : undefined,\n });\n\n // Flatten the markers data into a single array\n const markersData = useMemo(\n () =>\n ([] as (POI | School)[]).concat(...Object.values(markersDataRaw || {})),\n [markersDataRaw],\n );\n\n const handleSelectPoiCategory = (category?: POICategory) => {\n errorTracker.addBreadCrumb(\n \"NeighborhoodMapProvider\",\n \"handleSelectPoiCategory\",\n {\n category,\n },\n );\n\n setActivePoiCategory(activePoiCategory === category ? undefined : category);\n };\n\n const handleMarkerClick = useCallback(\n (marker?: MarkerPoint) => {\n if (\n activeMarker?.latitude === marker?.latitude &&\n activeMarker?.longitude === marker?.longitude\n ) {\n setActiveMarker(undefined);\n return;\n }\n\n setActiveMarker(marker);\n },\n [activeMarker],\n );\n\n const activeMarkerDetails = useMemo(() => {\n if (!markersData || !activeMarker || activeMarker.markers.length !== 1) {\n return null;\n }\n\n return (\n markersData.find(\n (marker) =>\n activeMarker.markers[0].id ===\n getIdFromMarker(marker.lat, marker.lng, marker.name),\n ) || null\n );\n }, [activeMarker, markersData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isMarkersLoading,\n [isGeographyLoading, isMarkersLoading],\n );\n\n return (\n <NeighborhoodMapContext.Provider\n value={{\n locale,\n isLoading,\n map: {\n mapProvider: sdkState.options?.mapProvider,\n zoom: sdkState.options?.zoom,\n pitch: sdkState.options?.pitch,\n bearing: sdkState.options?.bearing,\n cooperativeGestures: sdkState.options?.cooperativeGestures,\n },\n geography,\n activeMarker,\n activeMarkerDetails,\n handleMarkerClick,\n activePoiCategory,\n onSelectPoiCategory: handleSelectPoiCategory,\n markersData,\n hideAttribution: sdkState.options?.hideAttribution,\n showSchoolRatings: sdkState.options?.showSchoolRatings,\n }}\n >\n {children}\n </NeighborhoodMapContext.Provider>\n );\n};\n\nexport { useNeighborhoodMap, NeighborhoodMapProvider, type Location };\n","import React, { useMemo } from \"react\";\n\nimport { LocalLogicMap, type Source, type LayerType } from \"@local-logic/maps\";\n\nimport type { School } from \"@local-logic/client\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\n\nconst GEOGRAPHY_LAYER_COLOR = \"#008491\";\nconst SCHOOL_CATCHMENT_COLOR = \"#9333ea\";\n\nexport function Layers() {\n const { geography, activeMarkerDetails } = useNeighborhoodMap();\n\n const primaryColor = useMemo(\n () =>\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--ll-colors-primary-100\",\n ) || GEOGRAPHY_LAYER_COLOR,\n [],\n );\n\n const neighborhoodLayerSources = useMemo(() => {\n const sources: Source[] = [];\n\n if (\n typeof geography?.geometry === \"undefined\" ||\n (Array.isArray(geography.geometry) && geography.geometry.length === 0)\n ) {\n return undefined;\n }\n\n geography.geometry.forEach((geometry, index) => {\n sources.push({\n key: `neighborhood-geometry-${index}`,\n layer: [\n {\n type: \"fill\" as LayerType,\n color: primaryColor,\n },\n {\n type: \"line\" as LayerType,\n color: primaryColor,\n },\n ],\n geometry: [geometry],\n });\n });\n\n return sources;\n }, [geography, primaryColor]);\n\n const schoolLayerSources = useMemo(() => {\n const activeSchoolMarkerDetails = activeMarkerDetails as School;\n if (\n typeof activeSchoolMarkerDetails?.catchments === \"undefined\" ||\n activeSchoolMarkerDetails.catchments?.length === 0\n ) {\n return undefined;\n }\n\n const sources: Source[] = [];\n\n activeSchoolMarkerDetails.catchments.forEach(\n (catchment, catchmentIndex) => {\n if (\n Array.isArray(catchment.geometry) &&\n catchment.geometry.length > 0\n ) {\n catchment.geometry.forEach((geometry, geomIndex) => {\n sources.push({\n key: `school-catchment-${catchmentIndex}-geom-${geomIndex}`,\n layer: [\n {\n type: \"fill\" as LayerType,\n color: SCHOOL_CATCHMENT_COLOR,\n },\n {\n type: \"line\" as LayerType,\n color: SCHOOL_CATCHMENT_COLOR,\n },\n ],\n geometry: [geometry],\n });\n });\n }\n },\n );\n\n return sources;\n }, [activeMarkerDetails]);\n\n return (\n <>\n <LocalLogicMap.Layers sources={neighborhoodLayerSources} />\n <LocalLogicMap.Layers sources={schoolLayerSources} />\n </>\n );\n}\n","import React, { useMemo } from \"react\";\n\nimport { LocalLogicMap, type Marker } from \"@local-logic/maps\";\nimport { useTracking } from \"~/tracking\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\n\nimport { getIdFromMarker } from \"~/utils/map/getIdFromMarker\";\n\nimport {\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodMap/types\";\nimport { icons as poiIcons } from \"~/components/PoiIcon\";\n\nexport function Markers() {\n const tracking = useTracking();\n const { isLoading, activePoiCategory, markersData, handleMarkerClick } =\n useNeighborhoodMap();\n\n const icon = useMemo(() => {\n if (typeof activePoiCategory === \"undefined\") {\n return undefined;\n }\n\n return poiIcons[activePoiCategory] as Marker[\"icon\"];\n }, [activePoiCategory]);\n\n const mapMarkers = useMemo(() => {\n if (typeof activePoiCategory === \"undefined\") {\n return [];\n }\n\n // Filter out duplicate markers by ID\n // This is because we combine multiple data sources that may have overlapping POIs\n return Array.from(\n (markersData || [])\n .map(\n (marker) =>\n ({\n id: getIdFromMarker(marker.lat, marker.lng, marker.name),\n latitude: marker.lat,\n longitude: marker.lng,\n name: marker.name,\n icon,\n }) as Marker,\n )\n .reduce((acc, marker) => {\n acc.set(marker.id, marker);\n return acc;\n }, new Map<string, Marker>())\n .values(),\n );\n }, [markersData, icon, activePoiCategory]);\n\n /**\n * Handles clicking on a map marker. This includes both single markers and cluster markers.\n *\n * @param marker\n * @returns\n */\n const handleMapMarkerClick = (\n marker: Parameters<typeof handleMarkerClick>[0],\n ) => {\n handleMarkerClick(marker);\n\n if (!activePoiCategory || !marker) {\n return;\n }\n\n const eventAttributes: Record<string, boolean | string | number> = {\n category: activePoiCategory,\n };\n\n if (marker.markers.length > 1) {\n eventAttributes.isCluster = true;\n eventAttributes.clusterSize = marker.markers.length;\n eventAttributes.lat = marker.latitude;\n eventAttributes.lng = marker.longitude;\n } else if (marker.markers.length === 1) {\n Object.entries(marker.markers[0]).forEach(([key, value]) => {\n if (\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n typeof value === \"number\"\n ) {\n // Remove sdk id before sending to tracking\n if (key === \"id\") {\n return;\n }\n eventAttributes[key] = value;\n }\n });\n }\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.POI_CLICKED,\n eventAttributes: Object.entries(eventAttributes).map(([key, value]) => ({\n label: key,\n data: value,\n })),\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.POI_CLICKED,\n eventAttributes,\n });\n };\n\n return (\n <LocalLogicMap.Markers\n isLoading={isLoading}\n markers={mapMarkers}\n clusterIcon={icon}\n onClick={handleMapMarkerClick}\n />\n );\n}\n","import React from \"react\";\n\nimport {\n LocalLogicMap,\n type Marker,\n type MarkerPoint,\n} from \"@local-logic/maps\";\nimport { useTracking } from \"~/tracking\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\n\nimport {\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodMap/types\";\n\nimport { ClusterPopupContent } from \"~/components/map/ClusterPopupContent\";\nimport { POIPopupContent } from \"~/components/map/POIPopupContent\";\n\nexport function Popup() {\n const tracking = useTracking();\n const {\n activePoiCategory,\n activeMarker,\n activeMarkerDetails,\n handleMarkerClick,\n showSchoolRatings,\n } = useNeighborhoodMap();\n\n /**\n * Handles selecting a marker from within a cluster popup.\n *\n * @param marker\n * @returns\n */\n const handleClusterMarkerSelected = (marker: Marker) => {\n handleMarkerClick({\n id: marker.id,\n latitude: marker.latitude,\n longitude: marker.longitude,\n markers: [marker],\n } as MarkerPoint);\n\n if (!activePoiCategory) {\n return;\n }\n\n const eventAttributes: Record<string, boolean | string | number> = {\n category: activePoiCategory,\n };\n\n Object.entries(marker).forEach(([key, value]) => {\n if (\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n typeof value === \"number\"\n ) {\n eventAttributes[key] = value;\n }\n });\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.POI_CLICKED,\n eventAttributes: Object.entries(eventAttributes).map(([key, value]) => ({\n label: key,\n data: value,\n })),\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.POI_CLICKED,\n eventAttributes,\n });\n };\n\n const handleLinkClick = (url: string) => {\n if (!activePoiCategory || !activeMarkerDetails) {\n return;\n }\n\n const eventAttributes: Record<string, boolean | string | number> = {\n category: activePoiCategory,\n };\n\n Object.entries(activeMarkerDetails).forEach(([key, value]) => {\n if (\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n typeof value === \"number\"\n ) {\n eventAttributes[key] = value;\n }\n });\n eventAttributes.clickedUrl = url;\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.POI_LINK_CLICKED,\n eventAttributes: Object.entries(eventAttributes).map(([key, value]) => ({\n label: key,\n data: value,\n })),\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.POI_LINK_CLICKED,\n eventAttributes,\n });\n };\n\n return (\n <LocalLogicMap.Popup\n latitude={activeMarker?.latitude}\n longitude={activeMarker?.longitude}\n onClose={() => handleMarkerClick(undefined)}\n >\n <ClusterPopupContent\n activeMarker={activeMarker}\n onMarkerSelected={handleClusterMarkerSelected}\n onClose={handleMarkerClick}\n />\n <POIPopupContent\n marker={activeMarkerDetails}\n poiCategory={activePoiCategory}\n onLocationLinkClick={handleLinkClick}\n onSchoolLinkClick={handleLinkClick}\n onClose={handleMarkerClick}\n showSchoolRatings={showSchoolRatings}\n />\n </LocalLogicMap.Popup>\n );\n}\n","export const container = `relative w-full overflow-hidden grow`;\n","import React, { useMemo } from \"react\";\n\nimport \"@local-logic/maps/style.css\";\n\nimport { LocalLogicMap } from \"@local-logic/maps\";\n\nimport { Layers } from \"./Layers\";\nimport { Markers } from \"./Markers\";\nimport { Popup } from \"./Popup\";\n\nimport * as styles from \"./styles\";\nimport { getMapProviderConfig } from \"~/utils/map/getMapProviderConfig\";\nimport {\n DEFAULT_MIN_ZOOM,\n DEFAULT_MAX_ZOOM,\n MAP_PADDING,\n} from \"~/sdks/NeighborhoodMap/constants\";\nimport { useResponsiveBreakpoints } from \"~/hooks/useResponsiveBreakpoints\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\n\nexport function Map({\n children,\n ...rest\n}: {\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>) {\n const breakpoints = useResponsiveBreakpoints();\n const { locale, map, activeMarker, geography } = useNeighborhoodMap();\n\n const mapProviderConfig = useMemo(\n () =>\n getMapProviderConfig(\n map.mapProvider?.name,\n map.mapProvider?.key,\n map.mapProvider?.theme,\n ),\n [map.mapProvider?.name, map.mapProvider?.key, map.mapProvider?.theme],\n );\n\n const locationBoundary = useMemo(() => {\n if (typeof geography === \"undefined\" || !geography?.geometry) {\n return undefined;\n }\n\n const outerRing = geography.geometry.flatMap((polygon) => polygon[0] || []);\n\n if (!outerRing || outerRing.length === 0) {\n return undefined;\n }\n return outerRing.map((point: number[]) => [point[1], point[0]]);\n }, [geography]);\n\n return (\n <div className={styles.container} {...rest}>\n {typeof geography !== \"undefined\" && (\n <LocalLogicMap.Root\n locale={locale}\n mapProvider={mapProviderConfig}\n mapPadding={MAP_PADDING[breakpoints.sm ? \"mobile\" : \"desktop\"]}\n locationBoundary={locationBoundary}\n center={{\n latitude: geography?.centroid.lat,\n longitude: geography?.centroid.lng,\n }}\n zoom={map.zoom}\n minZoom={DEFAULT_MIN_ZOOM}\n maxZoom={DEFAULT_MAX_ZOOM}\n zoomPosition={breakpoints.sm ? \"bottom-right\" : undefined}\n pitch={map.pitch}\n bearing={map.bearing}\n cooperativeGestures={map.cooperativeGestures}\n activeMarker={activeMarker}\n >\n <LocalLogicMap.BaseMap>\n <Layers />\n <Markers />\n <Popup />\n </LocalLogicMap.BaseMap>\n </LocalLogicMap.Root>\n )}\n\n {children}\n </div>\n );\n}\n","export const container = `relative bg-base-white w-full h-screen flex flex-col`;\nexport const header = `w-full flex items-center mb-4 gap-4 flex-row-reverse md:flex-row`;\n","import React, { useMemo, useState, useEffect } from \"react\";\n\nimport { useFlags } from \"launchdarkly-react-client-sdk\";\nimport { useTranslation } from \"react-i18next\";\nimport { HorizontalScrollFilters } from \"@local-logic/design-system\";\nimport { Map } from \"../Map\";\nimport * as styles from \"./styles\";\nimport { useNeighborhoodMap } from \"~/sdks/NeighborhoodMap/context\";\nimport { useTracking } from \"~/tracking\";\n\nimport { Attribution } from \"~/components/Attribution\";\n\nimport { icons as poiIcons } from \"~/components/PoiIcon\";\nimport { categories } from \"~/sdks/NeighborhoodMap/constants\";\n\nimport {\n type POICategory,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodMap/types\";\n\nexport const Content = () => {\n const { t } = useTranslation([\"neighborhoodMap\", \"common\"]);\n const flags = useFlags();\n const tracking = useTracking();\n\n const {\n locale,\n handleMarkerClick,\n activePoiCategory,\n onSelectPoiCategory,\n hideAttribution,\n } = useNeighborhoodMap();\n const [dialogSelectedPoiCategory, setDialogSelectedPoiCategory] = useState<\n POICategory | undefined\n >();\n\n useEffect(() => {\n handleMarkerClick(undefined);\n setDialogSelectedPoiCategory(activePoiCategory);\n }, [activePoiCategory]);\n\n const poiCategories = useMemo(\n () =>\n categories.map((category) => ({\n key: category as POICategory,\n icon: poiIcons[category],\n })),\n [flags],\n );\n\n const handleOnSelectCategory = (category: POICategory) => {\n onSelectPoiCategory(category);\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.CATEGORY_CLICKED,\n eventAttributes: [\n {\n label: \"category\",\n data: category,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.CATEGORY_CLICKED,\n eventAttributes: {\n ll_category: category,\n },\n });\n };\n\n const handleOnDialogSelectCategory = (category: POICategory) => {\n setDialogSelectedPoiCategory(\n dialogSelectedPoiCategory === category ? undefined : category,\n );\n };\n\n const handleResetFilters = () => {\n onSelectPoiCategory(undefined);\n };\n\n const handleApplyFilter = () => {\n onSelectPoiCategory(dialogSelectedPoiCategory);\n };\n\n return (\n <div className={styles.container}>\n <HorizontalScrollFilters.Root>\n <div className={styles.header}>\n <HorizontalScrollFilters.ScrollList\n activeFilter={activePoiCategory}\n leftArrowAriaLabel={t(\"filters.navigation.scrollLeftAriaLabel\")}\n rightArrowAriaLabel={t(\"filters.navigation.scrollRightAriaLabel\")}\n >\n {poiCategories.map(({ key, icon }) => (\n <HorizontalScrollFilters.Filter<POICategory>\n key={`category-${key}`}\n filter={key}\n label={t(`common:pois.${key}`)}\n icon={icon}\n isActive={key === activePoiCategory}\n onSelectFilter={handleOnSelectCategory}\n />\n ))}\n </HorizontalScrollFilters.ScrollList>\n <HorizontalScrollFilters.DialogTrigger\n label={t(\"filters.navigation.allFiltersAriaLabel\")}\n />\n </div>\n\n <HorizontalScrollFilters.Dialog\n title={t(\"filters.popup.title\")}\n description={t(\"filters.popup.description\")}\n applyLabel={t(\"filters.popup.cta.apply\")}\n resetLabel={t(\"filters.popup.cta.reset\")}\n onReset={handleResetFilters}\n onApply={handleApplyFilter}\n >\n {poiCategories.map(({ key, icon }) => (\n <HorizontalScrollFilters.Filter<POICategory>\n key={`dialog-category-${key}`}\n filter={key}\n label={t(`common:pois.${key}`)}\n icon={icon}\n isActive={key === dialogSelectedPoiCategory}\n onSelectFilter={handleOnDialogSelectCategory}\n />\n ))}\n </HorizontalScrollFilters.Dialog>\n </HorizontalScrollFilters.Root>\n\n <Map />\n\n <Attribution\n sdkName=\"neighborhood-map\"\n locale={locale}\n isHidden={hideAttribution}\n />\n </div>\n );\n};\n","import { ObjectSchema, number, object, mixed, string, boolean } from \"yup\";\nimport { Options } from \"./types\";\nimport { MapProvider } from \"~/types/options\";\n\nexport const schema: ObjectSchema<Options> = object({\n theme: string().oneOf([\"day\", \"night\"]).optional(),\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 zoom: number().optional(),\n pitch: number().optional(),\n bearing: number().optional(),\n cooperativeGestures: boolean().optional(),\n mapProvider: mixed<MapProvider>().optional(),\n hideAttribution: boolean().optional(),\n showSchoolRatings: boolean().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\nimport { Content } from \"./components/Content\";\nimport { NeighborhoodMapProvider } from \"./context\";\nimport { schema } from \"./schema\";\nimport { NeighborhoodMapProps } from \"./types\";\n\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 { 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 NeighborhoodMap = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodMapProps>();\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 <ValidateOptions\n sdk=\"Neighborhood Map\"\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_MAP}\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_MAP,\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 <NeighborhoodMapProvider>\n <Content />\n </NeighborhoodMapProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n );\n};\n\nexport default NeighborhoodMap;\n"],"mappings":"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"}
|
package/dist/assets/{NeighborhoodMarketTrends-DpUA8_BA.js → NeighborhoodMarketTrends-COqvs4Fz.js}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GridGraph-
|
|
2
|
-
import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as r}from"./google-maps-vendor-DvfEEdRU.js";import{a as t,d as a,f as s,g as i,h as n,i as l,m as o,n as c,o as d,p as m,r as p,s as h,t as u,u as _}from"./sdks-CIuvHxGG.js";import{t as v}from"./CaretDown.es-nJe-LNlT.js";import{n as g,t as y}from"./HandCoins.es-CC012gfJ.js";import{t as x}from"./X.es-6bJd6-yU.js";import{t as j}from"./IconBase.es-CEehl5AX.js";import{B as f,F as b,G as k,I as M,L as C,M as N,N as A,R as w,V as I,d as T,f as E,h as V,j as H,m as L,o as Z,p as D,q as O,r as S,t as P,vt as R,z as F}from"./index-Bi8h_BNl.js";import{t as $}from"./useGeographies-CtCPN011.js";import{n as q}from"./Attribution-DnmiY-id.js";import{t as K}from"./ResizeWrapper-C7vwckhm.js";import{t as G}from"./ValidateOptions-DsfMKmBQ.js";import{t as z}from"./useIsMobile-DqKgF2mC.js";/* empty css */import{i as B,n as W,r as U,t as Y}from"./dist-DrX-uh0V.js";import{t as X}from"./TitleHeader-CepE-7Y-.js";import{n as J}from"./NoDataContent-CFLl-Rd-.js";var Q=e(r(),1),ee=new Map([["bold",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M208.49,152.49l-72,72a12,12,0,0,1-17,0l-72-72a12,12,0,0,1,17-17L116,187V40a12,12,0,0,1,24,0V187l51.51-51.52a12,12,0,0,1,17,17Z"}))],["duotone",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M200,144l-72,72L56,144Z",opacity:"0.2"}),Q.createElement("path",{d:"M207.39,140.94A8,8,0,0,0,200,136H136V40a8,8,0,0,0-16,0v96H56a8,8,0,0,0-5.66,13.66l72,72a8,8,0,0,0,11.32,0l72-72A8,8,0,0,0,207.39,140.94ZM128,204.69,75.31,152H180.69Z"}))],["fill",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M205.66,149.66l-72,72a8,8,0,0,1-11.32,0l-72-72A8,8,0,0,1,56,136h64V40a8,8,0,0,1,16,0v96h64a8,8,0,0,1,5.66,13.66Z"}))],["light",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M204.24,148.24l-72,72a6,6,0,0,1-8.48,0l-72-72a6,6,0,0,1,8.48-8.48L122,201.51V40a6,6,0,0,1,12,0V201.51l61.76-61.75a6,6,0,0,1,8.48,8.48Z"}))],["regular",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M205.66,149.66l-72,72a8,8,0,0,1-11.32,0l-72-72a8,8,0,0,1,11.32-11.32L120,196.69V40a8,8,0,0,1,16,0V196.69l58.34-58.35a8,8,0,0,1,11.32,11.32Z"}))],["thin",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M202.83,146.83l-72,72a4,4,0,0,1-5.66,0l-72-72a4,4,0,0,1,5.66-5.66L124,206.34V40a4,4,0,0,1,8,0V206.34l65.17-65.17a4,4,0,0,1,5.66,5.66Z"}))]]),re=new Map([["bold",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,204H228V144a12,12,0,0,0,12.49-19.78L142.14,25.85a20,20,0,0,0-28.28,0L15.51,124.2A12,12,0,0,0,28,144v60H16a12,12,0,0,0,0,24H240a12,12,0,0,0,0-24ZM52,121.65l76-76,76,76V204H164V152a12,12,0,0,0-12-12H104a12,12,0,0,0-12,12v52H52ZM140,204H116V164h24Z"}))],["duotone",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M216,116.69V216H152V152H104v64H40V116.69l82.34-82.35a8,8,0,0,1,11.32,0Z",opacity:"0.2"}),Q.createElement("path",{d:"M240,208H224V136l2.34,2.34A8,8,0,0,0,237.66,127L139.31,28.68a16,16,0,0,0-22.62,0L18.34,127a8,8,0,0,0,11.32,11.31L32,136v72H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM48,120l80-80,80,80v88H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48Zm96,88H112V160h32Z"}))],["fill",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,208H224V136l2.34,2.34A8,8,0,0,0,237.66,127L139.31,28.68a16,16,0,0,0-22.62,0L18.34,127a8,8,0,0,0,11.32,11.31L32,136v72H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16Zm-88,0H104V160a4,4,0,0,1,4-4h40a4,4,0,0,1,4,4Z"}))],["light",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,210H222V131.17l5.76,5.76a6,6,0,0,0,8.48-8.49L137.9,30.09a14,14,0,0,0-19.8,0L19.76,128.44a6,6,0,0,0,8.48,8.49L34,131.17V210H16a6,6,0,0,0,0,12H240a6,6,0,0,0,0-12ZM46,119.17l80.58-80.59a2,2,0,0,1,2.84,0L210,119.17V210H158V152a6,6,0,0,0-6-6H104a6,6,0,0,0-6,6v58H46ZM146,210H110V158h36Z"}))],["regular",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,208H224V136l2.34,2.34A8,8,0,0,0,237.66,127L139.31,28.68a16,16,0,0,0-22.62,0L18.34,127a8,8,0,0,0,11.32,11.31L32,136v72H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM48,120l80-80,80,80v88H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48Zm96,88H112V160h32Z"}))],["thin",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,212H220V126.34l9.17,9.17a4,4,0,1,0,5.66-5.66L136.49,31.51a12,12,0,0,0-17,0L21.17,129.85a4,4,0,1,0,5.66,5.66L36,126.34V212H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8ZM44,118.34l81.17-81.17a4,4,0,0,1,5.66,0L212,118.34V212H156V152a4,4,0,0,0-4-4H104a4,4,0,0,0-4,4v60H44ZM148,212H108V156h40Z"}))]]),te=new Map([["bold",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M108,84a16,16,0,1,1,16,16A16,16,0,0,1,108,84Zm128,44A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Zm-72,36.68V132a20,20,0,0,0-20-20,12,12,0,0,0-4,23.32V168a20,20,0,0,0,20,20,12,12,0,0,0,4-23.32Z"}))],["duotone",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),Q.createElement("path",{d:"M144,176a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176Zm88-48A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128ZM124,96a12,12,0,1,0-12-12A12,12,0,0,0,124,96Z"}))],["fill",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z"}))],["light",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M142,176a6,6,0,0,1-6,6,14,14,0,0,1-14-14V128a2,2,0,0,0-2-2,6,6,0,0,1,0-12,14,14,0,0,1,14,14v40a2,2,0,0,0,2,2A6,6,0,0,1,142,176ZM124,94a10,10,0,1,0-10-10A10,10,0,0,0,124,94Zm106,34A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z"}))],["regular",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"}))],["thin",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M140,176a4,4,0,0,1-4,4,12,12,0,0,1-12-12V128a4,4,0,0,0-4-4,4,4,0,0,1,0-8,12,12,0,0,1,12,12v40a4,4,0,0,0,4,4A4,4,0,0,1,140,176ZM124,92a8,8,0,1,0-8-8A8,8,0,0,0,124,92Zm104,36A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z"}))]]),ae=Q.forwardRef((e,r)=>Q.createElement(j,{ref:r,...e,weights:ee}));ae.displayName="ArrowDownIcon";var se=Q.forwardRef((e,r)=>Q.createElement(j,{ref:r,...e,weights:re}));se.displayName="HouseLineIcon";var ie=Q.forwardRef((e,r)=>Q.createElement(j,{ref:r,...e,weights:te}));ie.displayName="InfoIcon";var ne=(e,r="en-US",t="USD",a=0)=>new Intl.NumberFormat(r,{style:"currency",currency:t,maximumFractionDigits:a}).format(e??0),le=function(e){return e.marketConditions="market-conditions",e.recentTrends="recent-trends",e.currentActivity="current-activity",e}({}),oe=function(e){return e.SDK_VIEWED="neighborhood-market-trends-Viewed",e.TAB_CLICKED="neighborhood-market-trends-Tab-Clicked",e}({}),ce=function(e){return e.SDK_VIEWED="sdk_viewed",e.CATEGORY_SELECTED="category_selected",e}({}),de={all:()=>["marketActivity"],list:e=>[...de.all(),e]};var me=O(),pe=Q.createContext({}),he=()=>(0,Q.useContext)(pe),ue=({children:e})=>{const{sdkState:r}=P(),t=r.globalOptions?.locale||"en",a=h(),s=(0,Q.useMemo)(()=>{const e=[],r=new Date;for(let t=0;t<=12;t+=1){const t=r.getFullYear(),a=r.getMonth(),s=`${t}-${String(a+1).padStart(2,"0")}`;e.push(s),r.setMonth(r.getMonth()-1)}return e.reverse()},[]);S(()=>{a.postEvent({eventType:oe.SDK_VIEWED}),a.trackAnalyticsEvent({eventName:ce.SDK_VIEWED})});const{isLoading:i,data:o}=$({location:{lat:void 0===r.options?.geographyId?r.options?.lat:void 0,lng:void 0===r.options?.geographyId?r.options?.lng:void 0},geogID:r.options?.geographyId||void 0,externalId:r?.globalOptions?.externalId}),{geographyId:c,geography:d}=(0,Q.useMemo)(()=>{const e=Object.entries(o||{});return{geographyId:e[0]?.[0],geography:e[0]?.[1]}},[i,o]),{data:m,isFetching:p}=function({geographyId:e,propertyTypes:r,intervals:t}){const{client:a}=l(),s=R();return n({queryKey:de.list({geogId:e}),queryFn:async()=>{const s=await a.getMarketActivity({geogId:e,propertyTypes:r,intervals:t});return void 0===s?null:s},enabled:!(!e||!s.marketTrendsSdk)})}({geographyId:c,propertyTypes:["all_residential_properties"],intervals:["30d","31-60d","12m","13-24m",...s]}),u=(0,Q.useMemo)(()=>{const e=m?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count||0,r=m?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.sold_homes_with_sold_price_count||0;return e>0?r/e:0},[m]),_=(0,Q.useMemo)(()=>i||p,[i,p]),v=(0,Q.useMemo)(()=>({isLoading:_,homesSoldPercentage:u,marketActivity:m??null,appearance:r?.options?.appearance,locale:t,geography:d}),[m,_,u,t,d,c]);return(0,me.jsx)(pe.Provider,{value:v,children:e})},_e="Collapsible",[ve,ge]=w(_e),[ye,xe]=ve(_e),je=Q.forwardRef((e,r)=>{const{__scopeCollapsible:t,open:a,defaultOpen:s,disabled:i,onOpenChange:n,...l}=e,[o,c]=H({prop:a,defaultProp:s??!1,onChange:n,caller:_e});return(0,me.jsx)(ye,{scope:t,disabled:i,contentId:N(),open:o,onOpenToggle:Q.useCallback(()=>c(e=>!e),[c]),children:(0,me.jsx)(b.div,{"data-state":Ne(o),"data-disabled":i?"":void 0,...l,ref:r})})});je.displayName=_e;var fe="CollapsibleTrigger",be=Q.forwardRef((e,r)=>{const{__scopeCollapsible:t,...a}=e,s=xe(fe,t);return(0,me.jsx)(b.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":Ne(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...a,ref:r,onClick:F(e.onClick,s.onOpenToggle)})});be.displayName=fe;var ke="CollapsibleContent",Me=Q.forwardRef((e,r)=>{const{forceMount:t,...a}=e,s=xe(ke,e.__scopeCollapsible);return(0,me.jsx)(V,{present:t||s.open,children:({present:e})=>(0,me.jsx)(Ce,{...a,ref:r,present:e})})});Me.displayName=ke;var Ce=Q.forwardRef((e,r)=>{const{__scopeCollapsible:t,present:a,children:s,...i}=e,n=xe(ke,t),[l,o]=Q.useState(a),c=Q.useRef(null),d=I(r,c),m=Q.useRef(0),p=m.current,h=Q.useRef(0),u=h.current,_=n.open||l,v=Q.useRef(_),g=Q.useRef(void 0);return Q.useEffect(()=>{const e=requestAnimationFrame(()=>v.current=!1);return()=>cancelAnimationFrame(e)},[]),A(()=>{const e=c.current;if(e){g.current=g.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";const r=e.getBoundingClientRect();m.current=r.height,h.current=r.width,v.current||(e.style.transitionDuration=g.current.transitionDuration,e.style.animationName=g.current.animationName),o(a)}},[n.open,a]),(0,me.jsx)(b.div,{"data-state":Ne(n.open),"data-disabled":n.disabled?"":void 0,id:n.contentId,hidden:!_,...i,ref:d,style:{"--radix-collapsible-content-height":p?`${p}px`:void 0,"--radix-collapsible-content-width":u?`${u}px`:void 0,...e.style},children:_&&s})});function Ne(e){return e?"open":"closed"}var Ae=je,we=be,Ie=Me,Te="Accordion",Ee=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Ve,He,Le]=C(Te),[Ze,De]=w(Te,[Le,ge]),Oe=ge(),Se=Q.forwardRef((e,r)=>{const{type:t,...a}=e,s=a,i=a;return(0,me.jsx)(Ve.Provider,{scope:e.__scopeAccordion,children:"multiple"===t?(0,me.jsx)(Ke,{...i,ref:r}):(0,me.jsx)(qe,{...s,ref:r})})});Se.displayName=Te;var[Pe,Re]=Ze(Te),[Fe,$e]=Ze(Te,{collapsible:!1}),qe=Q.forwardRef((e,r)=>{const{value:t,defaultValue:a,onValueChange:s=()=>{},collapsible:i=!1,...n}=e,[l,o]=H({prop:t,defaultProp:a??"",onChange:s,caller:Te});return(0,me.jsx)(Pe,{scope:e.__scopeAccordion,value:Q.useMemo(()=>l?[l]:[],[l]),onItemOpen:o,onItemClose:Q.useCallback(()=>i&&o(""),[i,o]),children:(0,me.jsx)(Fe,{scope:e.__scopeAccordion,collapsible:i,children:(0,me.jsx)(Be,{...n,ref:r})})})}),Ke=Q.forwardRef((e,r)=>{const{value:t,defaultValue:a,onValueChange:s=()=>{},...i}=e,[n,l]=H({prop:t,defaultProp:a??[],onChange:s,caller:Te}),o=Q.useCallback(e=>l((r=[])=>[...r,e]),[l]),c=Q.useCallback(e=>l((r=[])=>r.filter(r=>r!==e)),[l]);return(0,me.jsx)(Pe,{scope:e.__scopeAccordion,value:n,onItemOpen:o,onItemClose:c,children:(0,me.jsx)(Fe,{scope:e.__scopeAccordion,collapsible:!0,children:(0,me.jsx)(Be,{...i,ref:r})})})}),[Ge,ze]=Ze(Te),Be=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,disabled:a,dir:s,orientation:i="vertical",...n}=e,l=I(Q.useRef(null),r),o=He(t),c="ltr"===M(s),d=F(e.onKeyDown,e=>{if(!Ee.includes(e.key))return;const r=e.target,t=o().filter(e=>!e.ref.current?.disabled),a=t.findIndex(e=>e.ref.current===r),s=t.length;if(-1===a)return;e.preventDefault();let n=a;const l=s-1,d=()=>{n=a+1,n>l&&(n=0)},m=()=>{n=a-1,n<0&&(n=l)};switch(e.key){case"Home":n=0;break;case"End":n=l;break;case"ArrowRight":"horizontal"===i&&(c?d():m());break;case"ArrowDown":"vertical"===i&&d();break;case"ArrowLeft":"horizontal"===i&&(c?m():d());break;case"ArrowUp":"vertical"===i&&m()}t[n%s].ref.current?.focus()});return(0,me.jsx)(Ge,{scope:t,disabled:a,direction:s,orientation:i,children:(0,me.jsx)(Ve.Slot,{scope:t,children:(0,me.jsx)(b.div,{...n,"data-orientation":i,ref:l,onKeyDown:a?void 0:d})})})}),We="AccordionItem",[Ue,Ye]=Ze(We),Xe=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,value:a,...s}=e,i=ze(We,t),n=Re(We,t),l=Oe(t),o=N(),c=a&&n.value.includes(a)||!1,d=i.disabled||e.disabled;return(0,me.jsx)(Ue,{scope:t,open:c,disabled:d,triggerId:o,children:(0,me.jsx)(Ae,{"data-orientation":i.orientation,"data-state":ar(c),...l,...s,ref:r,disabled:d,open:c,onOpenChange:e=>{e?n.onItemOpen(a):n.onItemClose(a)}})})});Xe.displayName=We;var Je="AccordionHeader";Q.forwardRef((e,r)=>{const{__scopeAccordion:t,...a}=e,s=ze(Te,t),i=Ye(Je,t);return(0,me.jsx)(b.h3,{"data-orientation":s.orientation,"data-state":ar(i.open),"data-disabled":i.disabled?"":void 0,...a,ref:r})}).displayName=Je;var Qe="AccordionTrigger",er=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,...a}=e,s=ze(Te,t),i=Ye(Qe,t),n=$e(Qe,t),l=Oe(t);return(0,me.jsx)(Ve.ItemSlot,{scope:t,children:(0,me.jsx)(we,{"aria-disabled":i.open&&!n.collapsible||void 0,"data-orientation":s.orientation,id:i.triggerId,...l,...a,ref:r})})});er.displayName=Qe;var rr="AccordionContent",tr=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,...a}=e,s=ze(Te,t),i=Ye(rr,t),n=Oe(t);return(0,me.jsx)(Ie,{role:"region","aria-labelledby":i.triggerId,"data-orientation":s.orientation,...n,...a,ref:r,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});function ar(e){return e?"open":"closed"}tr.displayName=rr;var sr=Se,ir=Xe,nr=er,lr=tr,or=({value:e,children:r,className:t})=>(0,me.jsx)(ir,{className:`\n border\n rounded-md\n py-4 px-3\n overflow-hidden\n ${t}`,value:e,children:r}),cr=({children:e,className:r})=>(0,me.jsx)(lr,{className:`\n flex\n gap-2\n overflow-hidden\n data-[state=open]:animate-slideDown\n ${r}`,children:e}),dr=({children:e,icon:r})=>(0,me.jsxs)(nr,{className:'\n flex gap-4 w-full\n group\n text-stone-500\n data-[state="open"]:border-b\n data-[state="open"]:pb-3\n data-[state="open"]:mb-4\n data-[state="open"]:text-ll-primary\n',children:[void 0!==r&&(0,me.jsx)(r,{className:"\n w-6\n"}),(0,me.jsxs)("div",{className:"\n grow\n text-left\n",children:[" ",e]}),(0,me.jsx)(v,{className:'\n h-3\n transition-transform duration-300 ease-[cubic-bezier(0.87,_0,_0.13,_1)]\n group-data-[state="open"]:rotate-180\n'})]}),mr=({defaultValue:e,children:r})=>(0,me.jsx)(sr,{defaultValue:e,collapsible:!0,type:"single",className:"\n flex\n flex-col\n gap-2\n",children:r}),pr=Q.createContext({}),hr=({tabId:e,icon:r,children:t,className:a})=>(0,me.jsxs)(B,{className:`\n flex\n gap-2\n text-stone-500\n justify-center\n w-full\n py-4\n border-b-4\n cursor-pointer\n select-none\n data-[state="active"]:border-b-ll-primary\n data-[state="active"]:text-ll-primary\n ${a}`,value:e,children:[void 0!==r&&(0,me.jsx)(r,{className:"\n w-6 h-6\n"}),t]}),ur=({tabId:e,children:r,className:t})=>(0,me.jsx)(Y,{value:e,className:t,children:r}),_r=({children:e,className:r})=>(0,me.jsx)(W,{className:`\n flex\n flex-row\n justify-between\n relative\n ${r}`,children:e}),vr=({defaultValue:e,onChange:r,children:t})=>(0,me.jsx)(pr.Provider,{value:{defaultValue:e,onChange:r,children:t},children:(0,me.jsx)(U,{defaultValue:e,onValueChange:e=>{r&&r(e)},children:t})}),gr="\n border border-gray-100 md:border-ll-border rounded-md md:min-h-40 w-full flex flex-col md:flex-row\n",yr="\n md:border border-gray-100 md:border-ll-border rounded-md md:min-h-40 w-full flex flex-col md:p-6\n",xr="\n flex flex-col justify-between min-w-60 p-2 md:p-4 border border-transparent border-b-gray-100 md:border-r-gray-300 md:w-5/12\n",jr="\n font-semibold text-ll-font-size-caption-1 text-ll-placeholder flex gap-x-1 items-center\n",fr="md:h-22 lg:h-11",br="\n text-xxs text-ll-placeholder\n",kr="\n text-ll-font-size-h4 font-semibold text-ll-on-surface\n leading-7 mt-6 mb-2\n";function Mr({children:e,change:r}){const t=z(),a=(0,Q.useMemo)(()=>t?"bottom":"right",[t]);return null===r||0===r?null:(0,me.jsxs)(D,{children:[(0,me.jsx)(L,{children:(0,me.jsx)(ie,{className:"w-4 h-4 cursor-pointer"})}),(0,me.jsxs)(E,{className:"bg-white py-2 pl-3 pr-8 relative shadow z-10 text-black max-w-80 font-normal text-xs rounded-lg",side:a,sideOffset:4,children:[e,(0,me.jsx)(T,{children:(0,me.jsx)(x,{className:"absolute right-2 top-1/2 transform -translate-y-1/2 cursor-pointer w-4 h-4",weight:"bold"})})]})]})}var Cr=({yearlyChange:e,disclaimer:r,fieldTitle:t})=>{const{t:a}=i("neighborhoodMarketTrends"),{appearance:s}=he(),n=e&&e>=0,l=(0,Q.useMemo)(()=>n?s?.colors?.increaseColor||Z.increaseColor:s?.colors?.decreaseColor||Z.decreaseColor,[s,n]);return(0,me.jsx)(me.Fragment,{children:e?(0,me.jsxs)("div",{className:"\n flex flex-wrap items-center\n",children:[(0,me.jsx)(ae,{className:"\n w-3 h-3 mr-1 data-[is-increase=true]:rotate-180\n",style:{color:l},weight:"bold","data-is-increase":n}),(0,me.jsxs)("div",{className:"\n flex gap-x-1 items-center\n",style:{color:l},children:[(0,me.jsxs)("p",{className:"\n text-ll-font-size-caption-1 leading-4\n",children:[(100*e).toFixed(2),"%"," ",a("marketIndicator."+(n?"increase":"decrease"))]}),r&&(0,me.jsx)(Mr,{children:r})]})]}):(0,me.jsx)("p",{className:"\n text-ll-font-size-caption-1 leading-4\n text-ll-placeholder\n",children:t&&a("marketIndicator.noChangeDisclaimer",{fieldTitle:t.toLocaleLowerCase()})})})},Nr=Q.createContext({}),Ar=()=>(0,Q.useContext)(Nr);function wr({sellerColor:e,neutralColor:r,buyerColor:t}){return(0,me.jsxs)("div",{className:"relative flex aspect-[2] items-center justify-center overflow-hidden rounded-t-full w-[218px] h-[109px]",children:[(0,me.jsx)("div",{className:"absolute aspect-square top-0 w-full rotate-[17deg] transition-transform duration-500",style:{backgroundImage:`linear-gradient(to right top, ${e} 50%, rgba(0, 0, 0, 0) 50%)`}}),(0,me.jsx)("div",{className:"absolute aspect-square top-0 w-full rotate-[17deg] transition-transform duration-500 opacity-30",style:{backgroundImage:`linear-gradient(to right top, rgba(0, 0, 0, 0) 50%, ${r} 50%)`}}),(0,me.jsx)("div",{className:"absolute aspect-square top-0 w-full rotate-[73deg] transition-transform duration-500",style:{backgroundImage:`linear-gradient(to right top, rgba(0, 0, 0, 0) 50%, ${t} 50%)`}}),(0,me.jsx)("div",{className:"absolute inset-7 flex aspect-[2] items-center justify-center overflow-hidden rounded-t-full",children:(0,me.jsx)("div",{className:"absolute top-0 flex aspect-square w-full justify-center rounded-full bg-white"})})]})}var Ir="#272525";function Tr(){return(0,me.jsxs)("svg",{width:"100%",height:"100%",viewBox:"0 0 13 93",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,me.jsx)("path",{d:"M6.3151 0.683594L11.6802 88.9218H0.949947L3.63252 44.8027L6.3151 0.683594Z",fill:Ir}),(0,me.jsx)("path",{d:"M12.1458 86.9782C12.1458 90.1985 9.53531 92.809 6.3151 92.809C3.09488 92.809 0.484375 90.1985 0.484375 86.9782C0.484375 83.758 3.09488 81.1475 6.3151 81.1475C9.53531 81.1475 12.1458 83.758 12.1458 86.9782Z",fill:Ir})]})}var Er="\n text-stone-400\n text-sm\n w-11\n",Vr=({buyerSellerPercentage:e,labels:r})=>{const{sellerColor:t,neutralColor:a,buyerColor:s}=Ar(),i=(0,Q.useMemo)(()=>({transform:`translate(-50%, 0) rotate(${1.8*e-90}deg)`,transformOrigin:"50% 100%"}),[e]);return(0,me.jsxs)("div",{className:"\n flex\n flex-col\n items-center\n gap-2.5\n max-w-80\n",children:[(0,me.jsx)("span",{className:Er,children:r.neutral}),(0,me.jsxs)("div",{className:"\n flex\n items-end\n gap-2.5\n",children:[(0,me.jsx)("span",{className:Er,children:r.seller}),(0,me.jsxs)("div",{className:"\n relative\n",children:[(0,me.jsx)(wr,{sellerColor:t,neutralColor:a,buyerColor:s}),(0,me.jsx)("div",{className:"\n absolute\n left-1/2\n w-5/6\n h-5/6\n -translate-x-1/2\n bottom-1\n",style:i,children:(0,me.jsx)(Tr,{})})]}),(0,me.jsx)("span",{className:Er,children:r.buyer})]})]})},Hr=(0,Q.lazy)(()=>k(()=>import("./GridGraph-C0PP17kA.js").then(e=>({default:e.GridGraph})),__vite__mapDeps([0,1,2,3,4,5]))),Lr=e=>(0,me.jsx)(Q.Suspense,{fallback:(0,me.jsx)("div",{style:{height:"400px"}}),children:(0,me.jsx)(Hr,{...e})}),Zr=({yAxisTitle:e,isIncrease:r})=>{const{isLoading:t,marketActivity:a}=he(),{increaseColor:s,decreaseColor:i}=Ar(),n=(0,Q.useMemo)(()=>t||!a?[]:Object.entries(a.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[a,t]),l=(0,Q.useMemo)(()=>n.length<1?[]:n.map(([e,r])=>r.market_activity?.stats_at_period_end?.active_listings_count??null).reverse().filter(e=>null!==e),[n]),o=(0,Q.useMemo)(()=>n?n.map(([e,r])=>e).reverse():[],[n]),c=(0,Q.useMemo)(()=>{const e=Math.max(...l),r=Math.min(...l);return 100*Math.ceil((e+.2*(e-r))/100)},[l]);return a?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Active Listings",data:l}],categories:o,type:"homes",yaxis:{title:{text:e},max:c},markerColor:r?s:i})}):null},Dr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>r.market_activity?.stats_at_period_end?.home_asking_prices?.median_price??null).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median asking price",data:n}],categories:l,type:"price",markerColor:e?a:s})}):null},Or=({yAxisTitle:e,isIncrease:r})=>{const{isLoading:t,marketActivity:a}=he(),{increaseColor:s,decreaseColor:i}=Ar(),n=(0,Q.useMemo)(()=>t||!a?[]:Object.entries(a.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[a,t]),l=(0,Q.useMemo)(()=>n.length<1?[]:n.map(([e,r])=>r.market_activity?.stats_over_period?.market_speed?.median_days_on_market??null).reverse(),[n]),o=(0,Q.useMemo)(()=>n?n.map(([e,r])=>e).reverse():[],[n]),c=(0,Q.useMemo)(()=>{const e=l.filter(e=>void 0!==e),r=Math.max(...e),t=Math.min(...e);return{max:10*Math.ceil((r+.2*(r-t))/10),min:Math.max(0,10*Math.floor((t-.2*(r-t))/10))}},[l]);return a?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median Days On Market",data:l}],categories:o,type:"homes",yaxis:{title:{text:e},max:c.max,min:c.min},markerColor:r?s:i})}):null},Sr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>{const t=r.market_activity?.stats_over_period?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent??null;return null!==t?t>0?t-100:0:null}).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median Sale vs Asking Price",data:n}],categories:l,type:"percentage",chartType:"bar",showGrid:!0,showYAxisAnnotation:!0,markerColor:e?a:s})}):null},Pr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>r.market_activity?.stats_over_period?.home_selling_prices.median_price??null).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median sales price",data:n}],categories:l,type:"price",markerColor:e?a:s})}):null},Rr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>r.market_activity?.stats_over_period?.home_selling_prices.median_price_per_square_foot??null).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median sales price per square foot",data:n}],categories:l,type:"price",markerColor:e?a:s})}):null},Fr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>r.market_activity?.stats_over_period?.sold_homes_count??null).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Homes Sold",data:n}],categories:l,type:"homes",markerColor:e?a:s})}):null},$r=()=>{const{isLoading:e,marketActivity:r}=he(),{sellerColor:t,neutralColor:a,buyerColor:s}=Ar(),i=(0,Q.useMemo)(()=>e||!r?[]:Object.entries(r.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[r,e]),n=(0,Q.useMemo)(()=>i.length<1?{numericValues:[],stringValues:[]}:{numericValues:i.map(([e,r])=>r.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??null).reverse().map(e=>null!==e&&e>100?100:e),stringValues:i.map(([e,r])=>r.market_activity?.stats_over_period?.market_conditions_assessment??0).reverse()},[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return r?(0,me.jsx)("div",{className:"-mr-2",children:(0,me.jsx)(Lr,{series:[{name:"Housing Market Conditions",data:n.numericValues}],categories:l,type:"homes",chartType:"bar",showGrid:!1,yaxis:{min:0,labels:{show:!1}},height:"150%",colorAssignmentRule:({dataPointIndex:e})=>{const r=n.stringValues;return"sellers_market"===r[e]?t:"neutral_market"===r[e]?a:s}})}):null},qr=({className:e,children:r,colors:t={}})=>{const{buyerColor:a=Z.buyerColor,sellerColor:s=Z.sellerColor,decreaseColor:i=Z.decreaseColor,neutralColor:n=Z.neutralColor,increaseColor:l=Z.increaseColor}=t;return(0,me.jsx)(Nr.Provider,{value:{buyerColor:a,sellerColor:s,decreaseColor:i,neutralColor:n,increaseColor:l},children:(0,me.jsx)("div",{className:`flex flex-col w-full pr-2 md:p-0 -mt-2 -mb-6 md:m-0 ${e||""}`,children:r})})},Kr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_at_period_end?.active_listings_count,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_at_period_end?.active_listings_count}:null,[r]),s=(0,Q.useMemo)(()=>a&&0!==a.previous?(a.current-a.previous)/a.previous:0,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsx)("h3",{className:jr,children:e("graphs.activeListings.title")}),(0,me.jsx)("h4",{className:kr,children:a.current})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.activeListings.title")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Zr,{yAxisTitle:e("graphs.activeListings.yAxisTitle"),isIncrease:s>=0})})]}):null},Gr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>{const e=r?.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity.stats_over_period?.market_conditions_indicator_MOI_12month;return"number"!=typeof e?null:e>=9?100:e/9*100},[r?.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity.stats_over_period?.market_conditions_indicator_MOI_12month]);return a?(0,me.jsxs)("div",{className:yr,children:[(0,me.jsx)("h3",{className:jr,children:e("graphs.marketType.title")}),(0,me.jsx)("h4",{className:br,children:e("graphs.marketType.disclaimer")}),(0,me.jsx)("div",{className:"\n w-full\n flex\n justify-center\n mt-2\n",children:(0,me.jsx)(qr,{colors:t?.colors,className:"items-center !p-0 !m-0",children:(0,me.jsx)(Vr,{buyerSellerPercentage:a,labels:{buyer:e("graphs.marketType.marketTypes.buyer"),seller:e("graphs.marketType.marketTypes.seller"),neutral:e("graphs.marketType.marketTypes.neutral")}})})})]}):null},zr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_at_period_end?.home_asking_prices?.median_price,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_at_period_end?.home_asking_prices?.median_price}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianAskingPrice.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianAskingPrice.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current&&ne(a.current)})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianAskingPrice.title"),disclaimer:e("graphs.medianAskingPrice.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Dr,{isIncrease:!s||s>=0})})]}):null},Br=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_over_period?.market_speed?.median_days_on_market,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_over_period?.market_speed?.median_days_on_market}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianDaysOnMarket.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianDaysOnMarket.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianDaysOnMarket.title"),disclaimer:e("graphs.medianDaysOnMarket.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Or,{yAxisTitle:e("graphs.medianDaysOnMarket.yAxisTitle"),isIncrease:!s||s>=0})})]}):null},Wr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianSalePrice.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianSalePrice.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current&&ne(a.current)})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianSalePrice.title"),disclaimer:e("graphs.medianSalePrice.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Pr,{isIncrease:!s||s>=0})})]}):null},Ur=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>{if(!r)return null;const t=r.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_over_period?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent;return{current:t,currentInPercentChange:(()=>{if(!t)return null;const r=Math.abs(Math.round(10*(t-100))/10);return 0===r?e("valueComparison.equal"):`${r}% ${e(t>100?"valueComparison.higher":"valueComparison.lower")}`})(),previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_over_period?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent}},[r,e]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianSaleVsAskingPrice.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianSaleVsAskingPrice.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.currentInPercentChange})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianSaleVsAskingPrice.title"),disclaimer:e("graphs.medianSaleVsAskingPrice.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Sr,{isIncrease:!s||s>=0})})]}):null},Yr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r}=he(),t=(0,Q.useMemo)(()=>r?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.median_construction_year_sold_homes,[r]);return t?(0,me.jsx)("div",{className:"\n border border-gray-100 md:border-ll-border rounded-md\n p-2 md:p-4 w-fit\n",children:(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianConstructionYear.title"),(0,me.jsx)("span",{className:"\n text-sm\n text-ll-on-surface\n",children:t}),"."]})}):null},Xr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price_per_square_foot,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price_per_square_foot}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.previous&&a.current?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianSalePricePerSqft.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianSalePricePerSqft.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current&&ne(a.current)})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianSalePricePerSqft.title"),disclaimer:e("graphs.medianSalePricePerSqft.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Rr,{isIncrease:!s||s>=0})})]}):null},Jr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.sold_homes_count}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.homesSold.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.homesSold.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.homesSold.title"),disclaimer:e("graphs.homesSold.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Fr,{isIncrease:!s||s>=0})})]}):null},Qr="w-2 h-2 rounded-full mr-1.5",et="\n flex items-center mr-4\n",rt=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he();return r?(0,me.jsxs)("div",{className:yr,children:[(0,me.jsx)("h3",{className:jr,children:e("graphs.housingMarketConditions.title")}),(0,me.jsx)("h4",{className:br,children:e("graphs.housingMarketConditions.subtitle")}),(0,me.jsxs)("div",{className:"\n flex\n",children:[(0,me.jsxs)("div",{className:"\n flex flex-col justify-between py-12 items-center w-10 -mr-4 md:-mr-2\n",children:[(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.buyer")}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.neutral")}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.seller")})]}),(0,me.jsx)("div",{className:"\n flex-1\n",children:(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)($r,{})})})]}),(0,me.jsxs)("div",{className:"\n flex items-center justify-start mt-8 md:mt-2 ml-14\n",children:[(0,me.jsxs)("div",{className:et,children:[(0,me.jsx)("div",{className:Qr,style:{backgroundColor:t?.colors?.sellerColor||Z.sellerColor}}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.seller")})]}),(0,me.jsxs)("div",{className:et,children:[(0,me.jsx)("div",{className:Qr,style:{backgroundColor:t?.colors?.neutralColor||Z.neutralColor}}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.neutral")})]}),(0,me.jsxs)("div",{className:et,children:[(0,me.jsx)("div",{className:Qr,style:{backgroundColor:t?.colors?.buyerColor||Z.buyerColor}}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.buyer")})]})]})]}):null},tt=({className:e,children:r})=>(0,me.jsx)("div",{className:`\n flex flex-col w-full justify-between gap-2\n ${e||""}`,children:r}),at="\n flex\n flex-col\n gap-4\n",st=({omitTabs:e})=>{const{t:r}=i("neighborhoodMarketTrends"),t=h(),{isLoading:a,marketActivity:s,homesSoldPercentage:n}=he(),l=s?.market_activity_by_property_type?.all_residential_properties.intervals,o=(0,Q.useMemo)(()=>{const t=l?.["12m"]?.market_activity.stats_over_period,a=l?.["12m"]?.market_activity.stats_at_period_end,s=l?.["30d"]?.market_activity.stats_over_period,i=Object.entries(l??{}).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),o=0===i.length||i.every(([e,r])=>0===(r.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??0))||i.every(([e,r])=>!r.market_activity?.stats_over_period?.market_conditions_assessment);return[{id:le.marketConditions,icon:y,label:r("tabs.marketConditions.title"),content:[...o||void 0===s?.market_conditions_indicator_MOI_12month?[]:[(0,me.jsx)(Gr,{},"market-type"),(0,me.jsx)(rt,{},"market-conditions")]]},{id:le.currentActivity,icon:se,label:r("tabs.currentActivity.title"),content:[...void 0!==a?.home_asking_prices.median_price?[(0,me.jsx)(zr,{},"median-asking-price")]:[],...void 0!==t?.market_speed.median_days_on_market?[(0,me.jsx)(Br,{},"median-days-on-market")]:[],...void 0!==l?.["30d"]?.market_activity?.stats_at_period_end?.active_listings_count?[(0,me.jsx)(Kr,{},"active-listings")]:[],...void 0!==t?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent&&n>=.75?[(0,me.jsx)(Ur,{},"median-sales-vs-asking-price")]:[]]},{id:le.recentTrends,icon:g,label:r("tabs.recentTrends.title"),content:[...void 0!==t?.median_construction_year_sold_homes?[(0,me.jsx)(Yr,{},"median-construction-year")]:[],...void 0!==t?.sold_homes_count&&n>=.75?[(0,me.jsx)(Wr,{},"median-sale-price")]:[],...void 0!==t?.home_selling_prices.median_price_per_square_foot&&n>=.75?[(0,me.jsx)(Xr,{},"median-sale-price-sq-ft")]:[],...void 0!==t?.sold_homes_count?[(0,me.jsx)(Jr,{},"homes-sold")]:[]]}].filter(r=>!e?.includes(r.id)&&r.content.length>0)},[l]);return a?(0,me.jsx)("div",{className:"w-full h-full flex justify-center align-cennter",children:(0,me.jsx)(f,{image:!0})}):!s||!l||l&&0===Object.keys(l).length?(0,me.jsx)(J,{text:r("noData")}):(0,me.jsxs)(me.Fragment,{children:[(0,me.jsx)("div",{className:"\n border\n rounded-md\n hidden\n md:block\n",children:(0,me.jsxs)(vr,{defaultValue:o[0]?.id,onChange:e=>{t.postEvent({eventType:oe.TAB_CLICKED,eventAttributes:[{label:"activeCategory",data:e}]}),t.trackAnalyticsEvent({eventName:ce.CATEGORY_SELECTED,eventAttributes:{ll_selected_category:e}})},children:[(0,me.jsx)(_r,{children:o.map(e=>(0,me.jsx)(hr,{icon:e.icon,tabId:e.id,className:"\n border-r-2\n last:border-r-0\n",children:e.label},e.id))}),(0,me.jsx)("div",{className:"\n py-8\n px-4\n",children:(0,me.jsx)(tt,{children:o.map(e=>(0,me.jsx)(ur,{tabId:e.id,className:at,children:e.content},`tab-content-${e.id}`))})})]})}),(0,me.jsx)("div",{className:"\n md:hidden\n",children:(0,me.jsx)(mr,{defaultValue:o[0]?.id,children:o.map(e=>(0,me.jsxs)(or,{value:e.id,children:[(0,me.jsx)(dr,{icon:e.icon,children:e.label}),(0,me.jsx)(cr,{className:at,children:e.content})]},e.id))})})]})},it=({hideAttribution:e})=>{const{t:r}=i("neighborhoodMarketTrends"),{locale:t,geography:a}=he();return(0,me.jsxs)("div",{className:"mt-2 md:mt-0 md:flex items-center bg-ll-background [&>a]:justify-end",children:[(0,me.jsx)("p",{className:"flex-1 text-sm p-3 text-ll-placeholder",children:r("disclaimer.footer",{context:(a?.level||10)>=30?"large":void 0})}),!e&&(0,me.jsx)(q,{sdkName:"neighborhood-market-trends",locale:t})]})},nt=_({lat:a().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:a().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(),title:o().optional(),hideAttribution:m().optional(),omitTabs:o().optional(),appearance:_({colors:_({buyerColor:s().optional(),sellerColor:s().optional(),decreaseColor:s().optional(),neutralColor:s().optional(),increaseColor:s().optional()}).optional()}).optional()}).noUnknown(!0);d(c.neighborhoodWrap.key);var lt=()=>{const{t:e}=i("neighborhoodMarketTrends"),{sdkState:r}=P(),a=z(),s=r.globalOptions?.locale||"en",n=(0,Q.useMemo)(()=>r.options?.geographyId?{geographyId:r.options?.geographyId}:{lat:r.options?.lat,lng:r.options?.lng},[r.options?.lat,r.options?.lng,r.options?.geographyId]);return(0,me.jsx)(K,{children:(0,me.jsx)(G,{sdk:"Neighborhood Market Trends",schema:nt,options:r.options,children:(0,me.jsx)(p,{environment:r.globalOptions?.environment?.api,apiKey:r.apiKey,appearance:r.globalOptions?.appearance,locale:r.globalOptions?.locale,product:u.NEIGHBORHOOD_MARKET_TRENDS,children:(0,me.jsx)(t,{trackingPipelineSettings:{apiKey:r.apiKey||""},analyticsSettings:c.neighborhoodWrap,meta:{clientId:r.clientId,productName:u.NEIGHBORHOOD_MARKET_TRENDS,productVersion:"1.24.43"},attributes:{location:n,host:r.location,host_url:document.referrer,locale:s,isMobile:a},flags:{isDebugMode:!1},children:(0,me.jsxs)(ue,{children:[(0,me.jsx)(X,{title:"string"==typeof r.options?.title||!1===r.options?.title?r.options.title:e("title")}),(0,me.jsx)("p",{className:"\n mb-6\n text-xs\n text-neutral-800\n",children:e("disclaimer.header")}),(0,me.jsx)(st,{omitTabs:r.options?.omitTabs}),(0,me.jsx)(it,{hideAttribution:r.options?.hideAttribution})]})})})})})};export{lt as default};
|
|
3
|
-
//# sourceMappingURL=NeighborhoodMarketTrends-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GridGraph-_rWMkwNI.js","assets/index-PbHyodiU.js","assets/rolldown-runtime-C_ttsnZz.js","assets/google-maps-vendor-DvfEEdRU.js","assets/index-BeGXeG6-.css","assets/apexcharts-vendor-DL0uDIMv.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as r}from"./google-maps-vendor-DvfEEdRU.js";import{a as t,d as a,f as s,g as i,h as n,i as l,m as o,n as c,o as d,p as m,r as p,s as h,t as u,u as _}from"./sdks-BTkz21XL.js";import{t as v}from"./CaretDown.es-nJe-LNlT.js";import{n as g,t as y}from"./HandCoins.es-CC012gfJ.js";import{t as x}from"./X.es-6bJd6-yU.js";import{t as j}from"./IconBase.es-CEehl5AX.js";import{B as f,F as b,G as k,I as M,L as C,M as N,N as A,R as w,V as I,d as T,f as E,h as V,j as H,m as L,o as Z,p as D,q as O,r as S,t as P,vt as R,z as F}from"./index-PbHyodiU.js";import{t as $}from"./useGeographies-DejQbRC9.js";import{n as q}from"./Attribution-D012fWNs.js";import{t as K}from"./ResizeWrapper-DbYmMKOU.js";import{t as G}from"./ValidateOptions-BqL9iY9R.js";import{t as z}from"./useIsMobile-Co5SddxR.js";/* empty css */import{i as B,n as W,r as U,t as Y}from"./dist-C_ktdPsv.js";import{t as X}from"./TitleHeader-Be2YRN93.js";import{n as J}from"./NoDataContent-CTxzT718.js";var Q=e(r(),1),ee=new Map([["bold",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M208.49,152.49l-72,72a12,12,0,0,1-17,0l-72-72a12,12,0,0,1,17-17L116,187V40a12,12,0,0,1,24,0V187l51.51-51.52a12,12,0,0,1,17,17Z"}))],["duotone",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M200,144l-72,72L56,144Z",opacity:"0.2"}),Q.createElement("path",{d:"M207.39,140.94A8,8,0,0,0,200,136H136V40a8,8,0,0,0-16,0v96H56a8,8,0,0,0-5.66,13.66l72,72a8,8,0,0,0,11.32,0l72-72A8,8,0,0,0,207.39,140.94ZM128,204.69,75.31,152H180.69Z"}))],["fill",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M205.66,149.66l-72,72a8,8,0,0,1-11.32,0l-72-72A8,8,0,0,1,56,136h64V40a8,8,0,0,1,16,0v96h64a8,8,0,0,1,5.66,13.66Z"}))],["light",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M204.24,148.24l-72,72a6,6,0,0,1-8.48,0l-72-72a6,6,0,0,1,8.48-8.48L122,201.51V40a6,6,0,0,1,12,0V201.51l61.76-61.75a6,6,0,0,1,8.48,8.48Z"}))],["regular",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M205.66,149.66l-72,72a8,8,0,0,1-11.32,0l-72-72a8,8,0,0,1,11.32-11.32L120,196.69V40a8,8,0,0,1,16,0V196.69l58.34-58.35a8,8,0,0,1,11.32,11.32Z"}))],["thin",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M202.83,146.83l-72,72a4,4,0,0,1-5.66,0l-72-72a4,4,0,0,1,5.66-5.66L124,206.34V40a4,4,0,0,1,8,0V206.34l65.17-65.17a4,4,0,0,1,5.66,5.66Z"}))]]),re=new Map([["bold",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,204H228V144a12,12,0,0,0,12.49-19.78L142.14,25.85a20,20,0,0,0-28.28,0L15.51,124.2A12,12,0,0,0,28,144v60H16a12,12,0,0,0,0,24H240a12,12,0,0,0,0-24ZM52,121.65l76-76,76,76V204H164V152a12,12,0,0,0-12-12H104a12,12,0,0,0-12,12v52H52ZM140,204H116V164h24Z"}))],["duotone",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M216,116.69V216H152V152H104v64H40V116.69l82.34-82.35a8,8,0,0,1,11.32,0Z",opacity:"0.2"}),Q.createElement("path",{d:"M240,208H224V136l2.34,2.34A8,8,0,0,0,237.66,127L139.31,28.68a16,16,0,0,0-22.62,0L18.34,127a8,8,0,0,0,11.32,11.31L32,136v72H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM48,120l80-80,80,80v88H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48Zm96,88H112V160h32Z"}))],["fill",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,208H224V136l2.34,2.34A8,8,0,0,0,237.66,127L139.31,28.68a16,16,0,0,0-22.62,0L18.34,127a8,8,0,0,0,11.32,11.31L32,136v72H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16Zm-88,0H104V160a4,4,0,0,1,4-4h40a4,4,0,0,1,4,4Z"}))],["light",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,210H222V131.17l5.76,5.76a6,6,0,0,0,8.48-8.49L137.9,30.09a14,14,0,0,0-19.8,0L19.76,128.44a6,6,0,0,0,8.48,8.49L34,131.17V210H16a6,6,0,0,0,0,12H240a6,6,0,0,0,0-12ZM46,119.17l80.58-80.59a2,2,0,0,1,2.84,0L210,119.17V210H158V152a6,6,0,0,0-6-6H104a6,6,0,0,0-6,6v58H46ZM146,210H110V158h36Z"}))],["regular",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,208H224V136l2.34,2.34A8,8,0,0,0,237.66,127L139.31,28.68a16,16,0,0,0-22.62,0L18.34,127a8,8,0,0,0,11.32,11.31L32,136v72H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM48,120l80-80,80,80v88H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48Zm96,88H112V160h32Z"}))],["thin",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M240,212H220V126.34l9.17,9.17a4,4,0,1,0,5.66-5.66L136.49,31.51a12,12,0,0,0-17,0L21.17,129.85a4,4,0,1,0,5.66,5.66L36,126.34V212H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8ZM44,118.34l81.17-81.17a4,4,0,0,1,5.66,0L212,118.34V212H156V152a4,4,0,0,0-4-4H104a4,4,0,0,0-4,4v60H44ZM148,212H108V156h40Z"}))]]),te=new Map([["bold",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M108,84a16,16,0,1,1,16,16A16,16,0,0,1,108,84Zm128,44A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Zm-72,36.68V132a20,20,0,0,0-20-20,12,12,0,0,0-4,23.32V168a20,20,0,0,0,20,20,12,12,0,0,0,4-23.32Z"}))],["duotone",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),Q.createElement("path",{d:"M144,176a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176Zm88-48A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128ZM124,96a12,12,0,1,0-12-12A12,12,0,0,0,124,96Z"}))],["fill",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z"}))],["light",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M142,176a6,6,0,0,1-6,6,14,14,0,0,1-14-14V128a2,2,0,0,0-2-2,6,6,0,0,1,0-12,14,14,0,0,1,14,14v40a2,2,0,0,0,2,2A6,6,0,0,1,142,176ZM124,94a10,10,0,1,0-10-10A10,10,0,0,0,124,94Zm106,34A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z"}))],["regular",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"}))],["thin",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M140,176a4,4,0,0,1-4,4,12,12,0,0,1-12-12V128a4,4,0,0,0-4-4,4,4,0,0,1,0-8,12,12,0,0,1,12,12v40a4,4,0,0,0,4,4A4,4,0,0,1,140,176ZM124,92a8,8,0,1,0-8-8A8,8,0,0,0,124,92Zm104,36A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z"}))]]),ae=Q.forwardRef((e,r)=>Q.createElement(j,{ref:r,...e,weights:ee}));ae.displayName="ArrowDownIcon";var se=Q.forwardRef((e,r)=>Q.createElement(j,{ref:r,...e,weights:re}));se.displayName="HouseLineIcon";var ie=Q.forwardRef((e,r)=>Q.createElement(j,{ref:r,...e,weights:te}));ie.displayName="InfoIcon";var ne=(e,r="en-US",t="USD",a=0)=>new Intl.NumberFormat(r,{style:"currency",currency:t,maximumFractionDigits:a}).format(e??0),le=function(e){return e.marketConditions="market-conditions",e.recentTrends="recent-trends",e.currentActivity="current-activity",e}({}),oe=function(e){return e.SDK_VIEWED="neighborhood-market-trends-Viewed",e.TAB_CLICKED="neighborhood-market-trends-Tab-Clicked",e}({}),ce=function(e){return e.SDK_VIEWED="sdk_viewed",e.CATEGORY_SELECTED="category_selected",e}({}),de={all:()=>["marketActivity"],list:e=>[...de.all(),e]};var me=O(),pe=Q.createContext({}),he=()=>(0,Q.useContext)(pe),ue=({children:e})=>{const{sdkState:r}=P(),t=r.globalOptions?.locale||"en",a=h(),s=(0,Q.useMemo)(()=>{const e=[],r=new Date;for(let t=0;t<=12;t+=1){const t=r.getFullYear(),a=r.getMonth(),s=`${t}-${String(a+1).padStart(2,"0")}`;e.push(s),r.setMonth(r.getMonth()-1)}return e.reverse()},[]);S(()=>{a.postEvent({eventType:oe.SDK_VIEWED}),a.trackAnalyticsEvent({eventName:ce.SDK_VIEWED})});const{isLoading:i,data:o}=$({location:{lat:void 0===r.options?.geographyId?r.options?.lat:void 0,lng:void 0===r.options?.geographyId?r.options?.lng:void 0},geogID:r.options?.geographyId||void 0,externalId:r?.globalOptions?.externalId}),{geographyId:c,geography:d}=(0,Q.useMemo)(()=>{const e=Object.entries(o||{});return{geographyId:e[0]?.[0],geography:e[0]?.[1]}},[i,o]),{data:m,isFetching:p}=function({geographyId:e,propertyTypes:r,intervals:t}){const{client:a}=l(),s=R();return n({queryKey:de.list({geogId:e}),queryFn:async()=>{const s=await a.getMarketActivity({geogId:e,propertyTypes:r,intervals:t});return void 0===s?null:s},enabled:!(!e||!s.marketTrendsSdk)})}({geographyId:c,propertyTypes:["all_residential_properties"],intervals:["30d","31-60d","12m","13-24m",...s]}),u=(0,Q.useMemo)(()=>{const e=m?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count||0,r=m?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.sold_homes_with_sold_price_count||0;return e>0?r/e:0},[m]),_=(0,Q.useMemo)(()=>i||p,[i,p]),v=(0,Q.useMemo)(()=>({isLoading:_,homesSoldPercentage:u,marketActivity:m??null,appearance:r?.options?.appearance,locale:t,geography:d}),[m,_,u,t,d,c]);return(0,me.jsx)(pe.Provider,{value:v,children:e})},_e="Collapsible",[ve,ge]=w(_e),[ye,xe]=ve(_e),je=Q.forwardRef((e,r)=>{const{__scopeCollapsible:t,open:a,defaultOpen:s,disabled:i,onOpenChange:n,...l}=e,[o,c]=H({prop:a,defaultProp:s??!1,onChange:n,caller:_e});return(0,me.jsx)(ye,{scope:t,disabled:i,contentId:N(),open:o,onOpenToggle:Q.useCallback(()=>c(e=>!e),[c]),children:(0,me.jsx)(b.div,{"data-state":Ne(o),"data-disabled":i?"":void 0,...l,ref:r})})});je.displayName=_e;var fe="CollapsibleTrigger",be=Q.forwardRef((e,r)=>{const{__scopeCollapsible:t,...a}=e,s=xe(fe,t);return(0,me.jsx)(b.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":Ne(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...a,ref:r,onClick:F(e.onClick,s.onOpenToggle)})});be.displayName=fe;var ke="CollapsibleContent",Me=Q.forwardRef((e,r)=>{const{forceMount:t,...a}=e,s=xe(ke,e.__scopeCollapsible);return(0,me.jsx)(V,{present:t||s.open,children:({present:e})=>(0,me.jsx)(Ce,{...a,ref:r,present:e})})});Me.displayName=ke;var Ce=Q.forwardRef((e,r)=>{const{__scopeCollapsible:t,present:a,children:s,...i}=e,n=xe(ke,t),[l,o]=Q.useState(a),c=Q.useRef(null),d=I(r,c),m=Q.useRef(0),p=m.current,h=Q.useRef(0),u=h.current,_=n.open||l,v=Q.useRef(_),g=Q.useRef(void 0);return Q.useEffect(()=>{const e=requestAnimationFrame(()=>v.current=!1);return()=>cancelAnimationFrame(e)},[]),A(()=>{const e=c.current;if(e){g.current=g.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";const r=e.getBoundingClientRect();m.current=r.height,h.current=r.width,v.current||(e.style.transitionDuration=g.current.transitionDuration,e.style.animationName=g.current.animationName),o(a)}},[n.open,a]),(0,me.jsx)(b.div,{"data-state":Ne(n.open),"data-disabled":n.disabled?"":void 0,id:n.contentId,hidden:!_,...i,ref:d,style:{"--radix-collapsible-content-height":p?`${p}px`:void 0,"--radix-collapsible-content-width":u?`${u}px`:void 0,...e.style},children:_&&s})});function Ne(e){return e?"open":"closed"}var Ae=je,we=be,Ie=Me,Te="Accordion",Ee=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Ve,He,Le]=C(Te),[Ze,De]=w(Te,[Le,ge]),Oe=ge(),Se=Q.forwardRef((e,r)=>{const{type:t,...a}=e,s=a,i=a;return(0,me.jsx)(Ve.Provider,{scope:e.__scopeAccordion,children:"multiple"===t?(0,me.jsx)(Ke,{...i,ref:r}):(0,me.jsx)(qe,{...s,ref:r})})});Se.displayName=Te;var[Pe,Re]=Ze(Te),[Fe,$e]=Ze(Te,{collapsible:!1}),qe=Q.forwardRef((e,r)=>{const{value:t,defaultValue:a,onValueChange:s=()=>{},collapsible:i=!1,...n}=e,[l,o]=H({prop:t,defaultProp:a??"",onChange:s,caller:Te});return(0,me.jsx)(Pe,{scope:e.__scopeAccordion,value:Q.useMemo(()=>l?[l]:[],[l]),onItemOpen:o,onItemClose:Q.useCallback(()=>i&&o(""),[i,o]),children:(0,me.jsx)(Fe,{scope:e.__scopeAccordion,collapsible:i,children:(0,me.jsx)(Be,{...n,ref:r})})})}),Ke=Q.forwardRef((e,r)=>{const{value:t,defaultValue:a,onValueChange:s=()=>{},...i}=e,[n,l]=H({prop:t,defaultProp:a??[],onChange:s,caller:Te}),o=Q.useCallback(e=>l((r=[])=>[...r,e]),[l]),c=Q.useCallback(e=>l((r=[])=>r.filter(r=>r!==e)),[l]);return(0,me.jsx)(Pe,{scope:e.__scopeAccordion,value:n,onItemOpen:o,onItemClose:c,children:(0,me.jsx)(Fe,{scope:e.__scopeAccordion,collapsible:!0,children:(0,me.jsx)(Be,{...i,ref:r})})})}),[Ge,ze]=Ze(Te),Be=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,disabled:a,dir:s,orientation:i="vertical",...n}=e,l=I(Q.useRef(null),r),o=He(t),c="ltr"===M(s),d=F(e.onKeyDown,e=>{if(!Ee.includes(e.key))return;const r=e.target,t=o().filter(e=>!e.ref.current?.disabled),a=t.findIndex(e=>e.ref.current===r),s=t.length;if(-1===a)return;e.preventDefault();let n=a;const l=s-1,d=()=>{n=a+1,n>l&&(n=0)},m=()=>{n=a-1,n<0&&(n=l)};switch(e.key){case"Home":n=0;break;case"End":n=l;break;case"ArrowRight":"horizontal"===i&&(c?d():m());break;case"ArrowDown":"vertical"===i&&d();break;case"ArrowLeft":"horizontal"===i&&(c?m():d());break;case"ArrowUp":"vertical"===i&&m()}t[n%s].ref.current?.focus()});return(0,me.jsx)(Ge,{scope:t,disabled:a,direction:s,orientation:i,children:(0,me.jsx)(Ve.Slot,{scope:t,children:(0,me.jsx)(b.div,{...n,"data-orientation":i,ref:l,onKeyDown:a?void 0:d})})})}),We="AccordionItem",[Ue,Ye]=Ze(We),Xe=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,value:a,...s}=e,i=ze(We,t),n=Re(We,t),l=Oe(t),o=N(),c=a&&n.value.includes(a)||!1,d=i.disabled||e.disabled;return(0,me.jsx)(Ue,{scope:t,open:c,disabled:d,triggerId:o,children:(0,me.jsx)(Ae,{"data-orientation":i.orientation,"data-state":ar(c),...l,...s,ref:r,disabled:d,open:c,onOpenChange:e=>{e?n.onItemOpen(a):n.onItemClose(a)}})})});Xe.displayName=We;var Je="AccordionHeader";Q.forwardRef((e,r)=>{const{__scopeAccordion:t,...a}=e,s=ze(Te,t),i=Ye(Je,t);return(0,me.jsx)(b.h3,{"data-orientation":s.orientation,"data-state":ar(i.open),"data-disabled":i.disabled?"":void 0,...a,ref:r})}).displayName=Je;var Qe="AccordionTrigger",er=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,...a}=e,s=ze(Te,t),i=Ye(Qe,t),n=$e(Qe,t),l=Oe(t);return(0,me.jsx)(Ve.ItemSlot,{scope:t,children:(0,me.jsx)(we,{"aria-disabled":i.open&&!n.collapsible||void 0,"data-orientation":s.orientation,id:i.triggerId,...l,...a,ref:r})})});er.displayName=Qe;var rr="AccordionContent",tr=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,...a}=e,s=ze(Te,t),i=Ye(rr,t),n=Oe(t);return(0,me.jsx)(Ie,{role:"region","aria-labelledby":i.triggerId,"data-orientation":s.orientation,...n,...a,ref:r,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});function ar(e){return e?"open":"closed"}tr.displayName=rr;var sr=Se,ir=Xe,nr=er,lr=tr,or=({value:e,children:r,className:t})=>(0,me.jsx)(ir,{className:`\n border\n rounded-md\n py-4 px-3\n overflow-hidden\n ${t}`,value:e,children:r}),cr=({children:e,className:r})=>(0,me.jsx)(lr,{className:`\n flex\n gap-2\n overflow-hidden\n data-[state=open]:animate-slideDown\n ${r}`,children:e}),dr=({children:e,icon:r})=>(0,me.jsxs)(nr,{className:'\n flex gap-4 w-full\n group\n text-stone-500\n data-[state="open"]:border-b\n data-[state="open"]:pb-3\n data-[state="open"]:mb-4\n data-[state="open"]:text-ll-primary\n',children:[void 0!==r&&(0,me.jsx)(r,{className:"\n w-6\n"}),(0,me.jsxs)("div",{className:"\n grow\n text-left\n",children:[" ",e]}),(0,me.jsx)(v,{className:'\n h-3\n transition-transform duration-300 ease-[cubic-bezier(0.87,_0,_0.13,_1)]\n group-data-[state="open"]:rotate-180\n'})]}),mr=({defaultValue:e,children:r})=>(0,me.jsx)(sr,{defaultValue:e,collapsible:!0,type:"single",className:"\n flex\n flex-col\n gap-2\n",children:r}),pr=Q.createContext({}),hr=({tabId:e,icon:r,children:t,className:a})=>(0,me.jsxs)(B,{className:`\n flex\n gap-2\n text-stone-500\n justify-center\n w-full\n py-4\n border-b-4\n cursor-pointer\n select-none\n data-[state="active"]:border-b-ll-primary\n data-[state="active"]:text-ll-primary\n ${a}`,value:e,children:[void 0!==r&&(0,me.jsx)(r,{className:"\n w-6 h-6\n"}),t]}),ur=({tabId:e,children:r,className:t})=>(0,me.jsx)(Y,{value:e,className:t,children:r}),_r=({children:e,className:r})=>(0,me.jsx)(W,{className:`\n flex\n flex-row\n justify-between\n relative\n ${r}`,children:e}),vr=({defaultValue:e,onChange:r,children:t})=>(0,me.jsx)(pr.Provider,{value:{defaultValue:e,onChange:r,children:t},children:(0,me.jsx)(U,{defaultValue:e,onValueChange:e=>{r&&r(e)},children:t})}),gr="\n border border-gray-100 md:border-ll-border rounded-md md:min-h-40 w-full flex flex-col md:flex-row\n",yr="\n md:border border-gray-100 md:border-ll-border rounded-md md:min-h-40 w-full flex flex-col md:p-6\n",xr="\n flex flex-col justify-between min-w-60 p-2 md:p-4 border border-transparent border-b-gray-100 md:border-r-gray-300 md:w-5/12\n",jr="\n font-semibold text-ll-font-size-caption-1 text-ll-placeholder flex gap-x-1 items-center\n",fr="md:h-22 lg:h-11",br="\n text-xxs text-ll-placeholder\n",kr="\n text-ll-font-size-h4 font-semibold text-ll-on-surface\n leading-7 mt-6 mb-2\n";function Mr({children:e,change:r}){const t=z(),a=(0,Q.useMemo)(()=>t?"bottom":"right",[t]);return null===r||0===r?null:(0,me.jsxs)(D,{children:[(0,me.jsx)(L,{children:(0,me.jsx)(ie,{className:"w-4 h-4 cursor-pointer"})}),(0,me.jsxs)(E,{className:"bg-white py-2 pl-3 pr-8 relative shadow z-10 text-black max-w-80 font-normal text-xs rounded-lg",side:a,sideOffset:4,children:[e,(0,me.jsx)(T,{children:(0,me.jsx)(x,{className:"absolute right-2 top-1/2 transform -translate-y-1/2 cursor-pointer w-4 h-4",weight:"bold"})})]})]})}var Cr=({yearlyChange:e,disclaimer:r,fieldTitle:t})=>{const{t:a}=i("neighborhoodMarketTrends"),{appearance:s}=he(),n=e&&e>=0,l=(0,Q.useMemo)(()=>n?s?.colors?.increaseColor||Z.increaseColor:s?.colors?.decreaseColor||Z.decreaseColor,[s,n]);return(0,me.jsx)(me.Fragment,{children:e?(0,me.jsxs)("div",{className:"\n flex flex-wrap items-center\n",children:[(0,me.jsx)(ae,{className:"\n w-3 h-3 mr-1 data-[is-increase=true]:rotate-180\n",style:{color:l},weight:"bold","data-is-increase":n}),(0,me.jsxs)("div",{className:"\n flex gap-x-1 items-center\n",style:{color:l},children:[(0,me.jsxs)("p",{className:"\n text-ll-font-size-caption-1 leading-4\n",children:[(100*e).toFixed(2),"%"," ",a("marketIndicator."+(n?"increase":"decrease"))]}),r&&(0,me.jsx)(Mr,{children:r})]})]}):(0,me.jsx)("p",{className:"\n text-ll-font-size-caption-1 leading-4\n text-ll-placeholder\n",children:t&&a("marketIndicator.noChangeDisclaimer",{fieldTitle:t.toLocaleLowerCase()})})})},Nr=Q.createContext({}),Ar=()=>(0,Q.useContext)(Nr);function wr({sellerColor:e,neutralColor:r,buyerColor:t}){return(0,me.jsxs)("div",{className:"relative flex aspect-[2] items-center justify-center overflow-hidden rounded-t-full w-[218px] h-[109px]",children:[(0,me.jsx)("div",{className:"absolute aspect-square top-0 w-full rotate-[17deg] transition-transform duration-500",style:{backgroundImage:`linear-gradient(to right top, ${e} 50%, rgba(0, 0, 0, 0) 50%)`}}),(0,me.jsx)("div",{className:"absolute aspect-square top-0 w-full rotate-[17deg] transition-transform duration-500 opacity-30",style:{backgroundImage:`linear-gradient(to right top, rgba(0, 0, 0, 0) 50%, ${r} 50%)`}}),(0,me.jsx)("div",{className:"absolute aspect-square top-0 w-full rotate-[73deg] transition-transform duration-500",style:{backgroundImage:`linear-gradient(to right top, rgba(0, 0, 0, 0) 50%, ${t} 50%)`}}),(0,me.jsx)("div",{className:"absolute inset-7 flex aspect-[2] items-center justify-center overflow-hidden rounded-t-full",children:(0,me.jsx)("div",{className:"absolute top-0 flex aspect-square w-full justify-center rounded-full bg-white"})})]})}var Ir="#272525";function Tr(){return(0,me.jsxs)("svg",{width:"100%",height:"100%",viewBox:"0 0 13 93",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,me.jsx)("path",{d:"M6.3151 0.683594L11.6802 88.9218H0.949947L3.63252 44.8027L6.3151 0.683594Z",fill:Ir}),(0,me.jsx)("path",{d:"M12.1458 86.9782C12.1458 90.1985 9.53531 92.809 6.3151 92.809C3.09488 92.809 0.484375 90.1985 0.484375 86.9782C0.484375 83.758 3.09488 81.1475 6.3151 81.1475C9.53531 81.1475 12.1458 83.758 12.1458 86.9782Z",fill:Ir})]})}var Er="\n text-stone-400\n text-sm\n w-11\n",Vr=({buyerSellerPercentage:e,labels:r})=>{const{sellerColor:t,neutralColor:a,buyerColor:s}=Ar(),i=(0,Q.useMemo)(()=>({transform:`translate(-50%, 0) rotate(${1.8*e-90}deg)`,transformOrigin:"50% 100%"}),[e]);return(0,me.jsxs)("div",{className:"\n flex\n flex-col\n items-center\n gap-2.5\n max-w-80\n",children:[(0,me.jsx)("span",{className:Er,children:r.neutral}),(0,me.jsxs)("div",{className:"\n flex\n items-end\n gap-2.5\n",children:[(0,me.jsx)("span",{className:Er,children:r.seller}),(0,me.jsxs)("div",{className:"\n relative\n",children:[(0,me.jsx)(wr,{sellerColor:t,neutralColor:a,buyerColor:s}),(0,me.jsx)("div",{className:"\n absolute\n left-1/2\n w-5/6\n h-5/6\n -translate-x-1/2\n bottom-1\n",style:i,children:(0,me.jsx)(Tr,{})})]}),(0,me.jsx)("span",{className:Er,children:r.buyer})]})]})},Hr=(0,Q.lazy)(()=>k(()=>import("./GridGraph-_rWMkwNI.js").then(e=>({default:e.GridGraph})),__vite__mapDeps([0,1,2,3,4,5]))),Lr=e=>(0,me.jsx)(Q.Suspense,{fallback:(0,me.jsx)("div",{style:{height:"400px"}}),children:(0,me.jsx)(Hr,{...e})}),Zr=({yAxisTitle:e,isIncrease:r})=>{const{isLoading:t,marketActivity:a}=he(),{increaseColor:s,decreaseColor:i}=Ar(),n=(0,Q.useMemo)(()=>t||!a?[]:Object.entries(a.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[a,t]),l=(0,Q.useMemo)(()=>n.length<1?[]:n.map(([e,r])=>r.market_activity?.stats_at_period_end?.active_listings_count??null).reverse().filter(e=>null!==e),[n]),o=(0,Q.useMemo)(()=>n?n.map(([e,r])=>e).reverse():[],[n]),c=(0,Q.useMemo)(()=>{const e=Math.max(...l),r=Math.min(...l);return 100*Math.ceil((e+.2*(e-r))/100)},[l]);return a?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Active Listings",data:l}],categories:o,type:"homes",yaxis:{title:{text:e},max:c},markerColor:r?s:i})}):null},Dr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>r.market_activity?.stats_at_period_end?.home_asking_prices?.median_price??null).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median asking price",data:n}],categories:l,type:"price",markerColor:e?a:s})}):null},Or=({yAxisTitle:e,isIncrease:r})=>{const{isLoading:t,marketActivity:a}=he(),{increaseColor:s,decreaseColor:i}=Ar(),n=(0,Q.useMemo)(()=>t||!a?[]:Object.entries(a.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[a,t]),l=(0,Q.useMemo)(()=>n.length<1?[]:n.map(([e,r])=>r.market_activity?.stats_over_period?.market_speed?.median_days_on_market??null).reverse(),[n]),o=(0,Q.useMemo)(()=>n?n.map(([e,r])=>e).reverse():[],[n]),c=(0,Q.useMemo)(()=>{const e=l.filter(e=>void 0!==e),r=Math.max(...e),t=Math.min(...e);return{max:10*Math.ceil((r+.2*(r-t))/10),min:Math.max(0,10*Math.floor((t-.2*(r-t))/10))}},[l]);return a?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median Days On Market",data:l}],categories:o,type:"homes",yaxis:{title:{text:e},max:c.max,min:c.min},markerColor:r?s:i})}):null},Sr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>{const t=r.market_activity?.stats_over_period?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent??null;return null!==t?t>0?t-100:0:null}).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median Sale vs Asking Price",data:n}],categories:l,type:"percentage",chartType:"bar",showGrid:!0,showYAxisAnnotation:!0,markerColor:e?a:s})}):null},Pr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>r.market_activity?.stats_over_period?.home_selling_prices.median_price??null).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median sales price",data:n}],categories:l,type:"price",markerColor:e?a:s})}):null},Rr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>r.market_activity?.stats_over_period?.home_selling_prices.median_price_per_square_foot??null).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Median sales price per square foot",data:n}],categories:l,type:"price",markerColor:e?a:s})}):null},Fr=({isIncrease:e})=>{const{isLoading:r,marketActivity:t}=he(),{increaseColor:a,decreaseColor:s}=Ar(),i=(0,Q.useMemo)(()=>r||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,r]),n=(0,Q.useMemo)(()=>i.length<1?[]:i.map(([e,r])=>r.market_activity?.stats_over_period?.sold_homes_count??null).reverse(),[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return t?(0,me.jsx)("div",{children:(0,me.jsx)(Lr,{series:[{name:"Homes Sold",data:n}],categories:l,type:"homes",markerColor:e?a:s})}):null},$r=()=>{const{isLoading:e,marketActivity:r}=he(),{sellerColor:t,neutralColor:a,buyerColor:s}=Ar(),i=(0,Q.useMemo)(()=>e||!r?[]:Object.entries(r.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[r,e]),n=(0,Q.useMemo)(()=>i.length<1?{numericValues:[],stringValues:[]}:{numericValues:i.map(([e,r])=>r.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??null).reverse().map(e=>null!==e&&e>100?100:e),stringValues:i.map(([e,r])=>r.market_activity?.stats_over_period?.market_conditions_assessment??0).reverse()},[i]),l=(0,Q.useMemo)(()=>i?i.map(([e,r])=>e).reverse():[],[i]);return r?(0,me.jsx)("div",{className:"-mr-2",children:(0,me.jsx)(Lr,{series:[{name:"Housing Market Conditions",data:n.numericValues}],categories:l,type:"homes",chartType:"bar",showGrid:!1,yaxis:{min:0,labels:{show:!1}},height:"150%",colorAssignmentRule:({dataPointIndex:e})=>{const r=n.stringValues;return"sellers_market"===r[e]?t:"neutral_market"===r[e]?a:s}})}):null},qr=({className:e,children:r,colors:t={}})=>{const{buyerColor:a=Z.buyerColor,sellerColor:s=Z.sellerColor,decreaseColor:i=Z.decreaseColor,neutralColor:n=Z.neutralColor,increaseColor:l=Z.increaseColor}=t;return(0,me.jsx)(Nr.Provider,{value:{buyerColor:a,sellerColor:s,decreaseColor:i,neutralColor:n,increaseColor:l},children:(0,me.jsx)("div",{className:`flex flex-col w-full pr-2 md:p-0 -mt-2 -mb-6 md:m-0 ${e||""}`,children:r})})},Kr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_at_period_end?.active_listings_count,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_at_period_end?.active_listings_count}:null,[r]),s=(0,Q.useMemo)(()=>a&&0!==a.previous?(a.current-a.previous)/a.previous:0,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsx)("h3",{className:jr,children:e("graphs.activeListings.title")}),(0,me.jsx)("h4",{className:kr,children:a.current})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.activeListings.title")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Zr,{yAxisTitle:e("graphs.activeListings.yAxisTitle"),isIncrease:s>=0})})]}):null},Gr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>{const e=r?.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity.stats_over_period?.market_conditions_indicator_MOI_12month;return"number"!=typeof e?null:e>=9?100:e/9*100},[r?.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity.stats_over_period?.market_conditions_indicator_MOI_12month]);return a?(0,me.jsxs)("div",{className:yr,children:[(0,me.jsx)("h3",{className:jr,children:e("graphs.marketType.title")}),(0,me.jsx)("h4",{className:br,children:e("graphs.marketType.disclaimer")}),(0,me.jsx)("div",{className:"\n w-full\n flex\n justify-center\n mt-2\n",children:(0,me.jsx)(qr,{colors:t?.colors,className:"items-center !p-0 !m-0",children:(0,me.jsx)(Vr,{buyerSellerPercentage:a,labels:{buyer:e("graphs.marketType.marketTypes.buyer"),seller:e("graphs.marketType.marketTypes.seller"),neutral:e("graphs.marketType.marketTypes.neutral")}})})})]}):null},zr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_at_period_end?.home_asking_prices?.median_price,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_at_period_end?.home_asking_prices?.median_price}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianAskingPrice.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianAskingPrice.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current&&ne(a.current)})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianAskingPrice.title"),disclaimer:e("graphs.medianAskingPrice.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Dr,{isIncrease:!s||s>=0})})]}):null},Br=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_over_period?.market_speed?.median_days_on_market,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_over_period?.market_speed?.median_days_on_market}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianDaysOnMarket.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianDaysOnMarket.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianDaysOnMarket.title"),disclaimer:e("graphs.medianDaysOnMarket.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Or,{yAxisTitle:e("graphs.medianDaysOnMarket.yAxisTitle"),isIncrease:!s||s>=0})})]}):null},Wr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianSalePrice.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianSalePrice.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current&&ne(a.current)})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianSalePrice.title"),disclaimer:e("graphs.medianSalePrice.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Pr,{isIncrease:!s||s>=0})})]}):null},Ur=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>{if(!r)return null;const t=r.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_over_period?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent;return{current:t,currentInPercentChange:(()=>{if(!t)return null;const r=Math.abs(Math.round(10*(t-100))/10);return 0===r?e("valueComparison.equal"):`${r}% ${e(t>100?"valueComparison.higher":"valueComparison.lower")}`})(),previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_over_period?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent}},[r,e]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianSaleVsAskingPrice.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianSaleVsAskingPrice.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.currentInPercentChange})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianSaleVsAskingPrice.title"),disclaimer:e("graphs.medianSaleVsAskingPrice.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Sr,{isIncrease:!s||s>=0})})]}):null},Yr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r}=he(),t=(0,Q.useMemo)(()=>r?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.median_construction_year_sold_homes,[r]);return t?(0,me.jsx)("div",{className:"\n border border-gray-100 md:border-ll-border rounded-md\n p-2 md:p-4 w-fit\n",children:(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianConstructionYear.title"),(0,me.jsx)("span",{className:"\n text-sm\n text-ll-on-surface\n",children:t}),"."]})}):null},Xr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price_per_square_foot,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price_per_square_foot}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.previous&&a.current?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.medianSalePricePerSqft.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.medianSalePricePerSqft.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current&&ne(a.current)})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.medianSalePricePerSqft.title"),disclaimer:e("graphs.medianSalePricePerSqft.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Rr,{isIncrease:!s||s>=0})})]}):null},Jr=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he(),a=(0,Q.useMemo)(()=>r?{current:r.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count,previous:r.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.sold_homes_count}:null,[r]),s=(0,Q.useMemo)(()=>a&&a.current&&a.previous?(a.current-a.previous)/a.previous:null,[a]);return a?(0,me.jsxs)("div",{className:gr,children:[(0,me.jsxs)("div",{className:xr,children:[(0,me.jsx)("div",{children:(0,me.jsxs)("div",{className:fr,children:[(0,me.jsxs)("h3",{className:jr,children:[e("graphs.homesSold.title"),(0,me.jsx)(Mr,{change:s,children:e("graphs.homesSold.disclaimer")})]}),(0,me.jsx)("h4",{className:kr,children:a.current})]})}),(0,me.jsx)(Cr,{yearlyChange:s,fieldTitle:e("graphs.homesSold.title"),disclaimer:e("graphs.homesSold.changeDisclaimer")})]}),(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)(Fr,{isIncrease:!s||s>=0})})]}):null},Qr="w-2 h-2 rounded-full mr-1.5",et="\n flex items-center mr-4\n",rt=()=>{const{t:e}=i("neighborhoodMarketTrends"),{marketActivity:r,appearance:t}=he();return r?(0,me.jsxs)("div",{className:yr,children:[(0,me.jsx)("h3",{className:jr,children:e("graphs.housingMarketConditions.title")}),(0,me.jsx)("h4",{className:br,children:e("graphs.housingMarketConditions.subtitle")}),(0,me.jsxs)("div",{className:"\n flex\n",children:[(0,me.jsxs)("div",{className:"\n flex flex-col justify-between py-12 items-center w-10 -mr-4 md:-mr-2\n",children:[(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.buyer")}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.neutral")}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.seller")})]}),(0,me.jsx)("div",{className:"\n flex-1\n",children:(0,me.jsx)(qr,{colors:t?.colors,children:(0,me.jsx)($r,{})})})]}),(0,me.jsxs)("div",{className:"\n flex items-center justify-start mt-8 md:mt-2 ml-14\n",children:[(0,me.jsxs)("div",{className:et,children:[(0,me.jsx)("div",{className:Qr,style:{backgroundColor:t?.colors?.sellerColor||Z.sellerColor}}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.seller")})]}),(0,me.jsxs)("div",{className:et,children:[(0,me.jsx)("div",{className:Qr,style:{backgroundColor:t?.colors?.neutralColor||Z.neutralColor}}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.neutral")})]}),(0,me.jsxs)("div",{className:et,children:[(0,me.jsx)("div",{className:Qr,style:{backgroundColor:t?.colors?.buyerColor||Z.buyerColor}}),(0,me.jsx)("p",{className:br,children:e("graphs.housingMarketConditions.marketTypes.buyer")})]})]})]}):null},tt=({className:e,children:r})=>(0,me.jsx)("div",{className:`\n flex flex-col w-full justify-between gap-2\n ${e||""}`,children:r}),at="\n flex\n flex-col\n gap-4\n",st=({omitTabs:e})=>{const{t:r}=i("neighborhoodMarketTrends"),t=h(),{isLoading:a,marketActivity:s,homesSoldPercentage:n}=he(),l=s?.market_activity_by_property_type?.all_residential_properties.intervals,o=(0,Q.useMemo)(()=>{const t=l?.["12m"]?.market_activity.stats_over_period,a=l?.["12m"]?.market_activity.stats_at_period_end,s=l?.["30d"]?.market_activity.stats_over_period,i=Object.entries(l??{}).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),o=0===i.length||i.every(([e,r])=>0===(r.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??0))||i.every(([e,r])=>!r.market_activity?.stats_over_period?.market_conditions_assessment);return[{id:le.marketConditions,icon:y,label:r("tabs.marketConditions.title"),content:[...o||void 0===s?.market_conditions_indicator_MOI_12month?[]:[(0,me.jsx)(Gr,{},"market-type"),(0,me.jsx)(rt,{},"market-conditions")]]},{id:le.currentActivity,icon:se,label:r("tabs.currentActivity.title"),content:[...void 0!==a?.home_asking_prices.median_price?[(0,me.jsx)(zr,{},"median-asking-price")]:[],...void 0!==t?.market_speed.median_days_on_market?[(0,me.jsx)(Br,{},"median-days-on-market")]:[],...void 0!==l?.["30d"]?.market_activity?.stats_at_period_end?.active_listings_count?[(0,me.jsx)(Kr,{},"active-listings")]:[],...void 0!==t?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent&&n>=.75?[(0,me.jsx)(Ur,{},"median-sales-vs-asking-price")]:[]]},{id:le.recentTrends,icon:g,label:r("tabs.recentTrends.title"),content:[...void 0!==t?.median_construction_year_sold_homes?[(0,me.jsx)(Yr,{},"median-construction-year")]:[],...void 0!==t?.sold_homes_count&&n>=.75?[(0,me.jsx)(Wr,{},"median-sale-price")]:[],...void 0!==t?.home_selling_prices.median_price_per_square_foot&&n>=.75?[(0,me.jsx)(Xr,{},"median-sale-price-sq-ft")]:[],...void 0!==t?.sold_homes_count?[(0,me.jsx)(Jr,{},"homes-sold")]:[]]}].filter(r=>!e?.includes(r.id)&&r.content.length>0)},[l]);return a?(0,me.jsx)("div",{className:"w-full h-full flex justify-center align-cennter",children:(0,me.jsx)(f,{image:!0})}):!s||!l||l&&0===Object.keys(l).length?(0,me.jsx)(J,{text:r("noData")}):(0,me.jsxs)(me.Fragment,{children:[(0,me.jsx)("div",{className:"\n border\n rounded-md\n hidden\n md:block\n",children:(0,me.jsxs)(vr,{defaultValue:o[0]?.id,onChange:e=>{t.postEvent({eventType:oe.TAB_CLICKED,eventAttributes:[{label:"activeCategory",data:e}]}),t.trackAnalyticsEvent({eventName:ce.CATEGORY_SELECTED,eventAttributes:{ll_selected_category:e}})},children:[(0,me.jsx)(_r,{children:o.map(e=>(0,me.jsx)(hr,{icon:e.icon,tabId:e.id,className:"\n border-r-2\n last:border-r-0\n",children:e.label},e.id))}),(0,me.jsx)("div",{className:"\n py-8\n px-4\n",children:(0,me.jsx)(tt,{children:o.map(e=>(0,me.jsx)(ur,{tabId:e.id,className:at,children:e.content},`tab-content-${e.id}`))})})]})}),(0,me.jsx)("div",{className:"\n md:hidden\n",children:(0,me.jsx)(mr,{defaultValue:o[0]?.id,children:o.map(e=>(0,me.jsxs)(or,{value:e.id,children:[(0,me.jsx)(dr,{icon:e.icon,children:e.label}),(0,me.jsx)(cr,{className:at,children:e.content})]},e.id))})})]})},it=({hideAttribution:e})=>{const{t:r}=i("neighborhoodMarketTrends"),{locale:t,geography:a}=he();return(0,me.jsxs)("div",{className:"mt-2 md:mt-0 md:flex items-center bg-ll-background [&>a]:justify-end",children:[(0,me.jsx)("p",{className:"flex-1 text-sm p-3 text-ll-placeholder",children:r("disclaimer.footer",{context:(a?.level||10)>=30?"large":void 0})}),!e&&(0,me.jsx)(q,{sdkName:"neighborhood-market-trends",locale:t})]})},nt=_({lat:a().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:a().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(),title:o().optional(),hideAttribution:m().optional(),omitTabs:o().optional(),appearance:_({colors:_({buyerColor:s().optional(),sellerColor:s().optional(),decreaseColor:s().optional(),neutralColor:s().optional(),increaseColor:s().optional()}).optional()}).optional()}).noUnknown(!0);d(c.neighborhoodWrap.key);var lt=()=>{const{t:e}=i("neighborhoodMarketTrends"),{sdkState:r}=P(),a=z(),s=r.globalOptions?.locale||"en",n=(0,Q.useMemo)(()=>r.options?.geographyId?{geographyId:r.options?.geographyId}:{lat:r.options?.lat,lng:r.options?.lng},[r.options?.lat,r.options?.lng,r.options?.geographyId]);return(0,me.jsx)(K,{children:(0,me.jsx)(G,{sdk:"Neighborhood Market Trends",schema:nt,options:r.options,children:(0,me.jsx)(p,{environment:r.globalOptions?.environment?.api,apiKey:r.apiKey,appearance:r.globalOptions?.appearance,locale:r.globalOptions?.locale,product:u.NEIGHBORHOOD_MARKET_TRENDS,children:(0,me.jsx)(t,{trackingPipelineSettings:{apiKey:r.apiKey||""},analyticsSettings:c.neighborhoodWrap,meta:{clientId:r.clientId,productName:u.NEIGHBORHOOD_MARKET_TRENDS,productVersion:"1.24.44"},attributes:{location:n,host:r.location,host_url:document.referrer,locale:s,isMobile:a},flags:{isDebugMode:!1},children:(0,me.jsxs)(ue,{children:[(0,me.jsx)(X,{title:"string"==typeof r.options?.title||!1===r.options?.title?r.options.title:e("title")}),(0,me.jsx)("p",{className:"\n mb-6\n text-xs\n text-neutral-800\n",children:e("disclaimer.header")}),(0,me.jsx)(st,{omitTabs:r.options?.omitTabs}),(0,me.jsx)(it,{hideAttribution:r.options?.hideAttribution})]})})})})})};export{lt as default};
|
|
3
|
+
//# sourceMappingURL=NeighborhoodMarketTrends-COqvs4Fz.js.map
|