@local-logic/sdks-app 1.24.63 → 1.24.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{Attribution-BsltvGRU.js → Attribution-Duhh7k4x.js} +2 -2
- package/dist/assets/{Attribution-BsltvGRU.js.map → Attribution-Duhh7k4x.js.map} +1 -1
- package/dist/assets/{Attribution-legacy-BNtn1w7h.js → Attribution-legacy-BbMLLCok.js} +2 -2
- package/dist/assets/{Attribution-legacy-BNtn1w7h.js.map → Attribution-legacy-BbMLLCok.js.map} +1 -1
- package/dist/assets/{Cluster-DtK-bXwa-B5Pbc1Sc.js → Cluster-DtK-bXwa-DGFFowZA.js} +2 -2
- package/dist/assets/{Cluster-DtK-bXwa-B5Pbc1Sc.js.map → Cluster-DtK-bXwa-DGFFowZA.js.map} +1 -1
- package/dist/assets/{Cluster-DtK-bXwa-legacy-CR_ltwaU.js → Cluster-DtK-bXwa-legacy-CRwU3yNs.js} +2 -2
- package/dist/assets/{Cluster-DtK-bXwa-legacy-CR_ltwaU.js.map → Cluster-DtK-bXwa-legacy-CRwU3yNs.js.map} +1 -1
- package/dist/assets/{Google-BWu1zjvH-SmYYPNWr.js → Google-BWu1zjvH-DRlN3_8l.js} +2 -2
- package/dist/assets/{Google-BWu1zjvH-SmYYPNWr.js.map → Google-BWu1zjvH-DRlN3_8l.js.map} +1 -1
- package/dist/assets/{Google-BWu1zjvH-legacy-DnDbinCb.js → Google-BWu1zjvH-legacy-D6N6CwVh.js} +2 -2
- package/dist/assets/{Google-BWu1zjvH-legacy-DnDbinCb.js.map → Google-BWu1zjvH-legacy-D6N6CwVh.js.map} +1 -1
- package/dist/assets/{Google-CWJnNepc-legacy-jEyNW8D9.js → Google-CWJnNepc-legacy-Bg1ArvyY.js} +2 -2
- package/dist/assets/{Google-CWJnNepc-legacy-jEyNW8D9.js.map → Google-CWJnNepc-legacy-Bg1ArvyY.js.map} +1 -1
- package/dist/assets/{Google-CWJnNepc-DN8UcJ1R.js → Google-CWJnNepc-znEMOnat.js} +2 -2
- package/dist/assets/{Google-CWJnNepc-DN8UcJ1R.js.map → Google-CWJnNepc-znEMOnat.js.map} +1 -1
- package/dist/assets/{Google-CxfcrB_--B_8lT20L.js → Google-CxfcrB_--BmYO6R-e.js} +2 -2
- package/dist/assets/{Google-CxfcrB_--B_8lT20L.js.map → Google-CxfcrB_--BmYO6R-e.js.map} +1 -1
- package/dist/assets/{Google-CxfcrB_--legacy-BIKEf6Ko.js → Google-CxfcrB_--legacy-C2uFttA5.js} +2 -2
- package/dist/assets/{Google-CxfcrB_--legacy-BIKEf6Ko.js.map → Google-CxfcrB_--legacy-C2uFttA5.js.map} +1 -1
- package/dist/assets/{Google-DJVjCEDp-BuybjgkL.js → Google-DJVjCEDp-CQJvIWAS.js} +2 -2
- package/dist/assets/{Google-DJVjCEDp-BuybjgkL.js.map → Google-DJVjCEDp-CQJvIWAS.js.map} +1 -1
- package/dist/assets/{Google-DJVjCEDp-legacy-CmJ3BbnM.js → Google-DJVjCEDp-legacy-DfLEWG8r.js} +2 -2
- package/dist/assets/{Google-DJVjCEDp-legacy-CmJ3BbnM.js.map → Google-DJVjCEDp-legacy-DfLEWG8r.js.map} +1 -1
- package/dist/assets/{Google-dS9cvzKP-J2VUtgal.js → Google-dS9cvzKP-e9BOsmNl.js} +2 -2
- package/dist/assets/{Google-dS9cvzKP-J2VUtgal.js.map → Google-dS9cvzKP-e9BOsmNl.js.map} +1 -1
- package/dist/assets/{Google-dS9cvzKP-legacy-DjMgMIio.js → Google-dS9cvzKP-legacy-CLJ4FcN0.js} +2 -2
- package/dist/assets/{Google-dS9cvzKP-legacy-DjMgMIio.js.map → Google-dS9cvzKP-legacy-CLJ4FcN0.js.map} +1 -1
- package/dist/assets/{GridGraph-CqFuBYej.js → GridGraph-C6-EwOUl.js} +2 -2
- package/dist/assets/{GridGraph-CqFuBYej.js.map → GridGraph-C6-EwOUl.js.map} +1 -1
- package/dist/assets/{GridGraph-legacy-B-ydwbji.js → GridGraph-legacy-25zMZaP_.js} +2 -2
- package/dist/assets/{GridGraph-legacy-B-ydwbji.js.map → GridGraph-legacy-25zMZaP_.js.map} +1 -1
- package/dist/assets/{LeadCapture-yB2WdcOs.js → LeadCapture-6q_e_8dX.js} +2 -2
- package/dist/assets/{LeadCapture-yB2WdcOs.js.map → LeadCapture-6q_e_8dX.js.map} +1 -1
- package/dist/assets/{LeadCapture-legacy-jIlGk8rU.js → LeadCapture-legacy-BHqcP8Iw.js} +2 -2
- package/dist/assets/{LeadCapture-legacy-jIlGk8rU.js.map → LeadCapture-legacy-BHqcP8Iw.js.map} +1 -1
- package/dist/assets/{LocalContent-BA9XaRx7.js → LocalContent-9HZ41rdH.js} +2 -2
- package/dist/assets/{LocalContent-BA9XaRx7.js.map → LocalContent-9HZ41rdH.js.map} +1 -1
- package/dist/assets/LocalContent-legacy-1srGSRaL.js +2 -0
- package/dist/assets/{LocalContent-legacy-ibTI5FZ4.js.map → LocalContent-legacy-1srGSRaL.js.map} +1 -1
- package/dist/assets/{LocalDemographics-BIytidiv.js → LocalDemographics-DWT6vil2.js} +2 -2
- package/dist/assets/{LocalDemographics-BIytidiv.js.map → LocalDemographics-DWT6vil2.js.map} +1 -1
- package/dist/assets/{LocalDemographics-legacy-C7tIK3XH.js → LocalDemographics-legacy-C645xhSC.js} +2 -2
- package/dist/assets/{LocalDemographics-legacy-C7tIK3XH.js.map → LocalDemographics-legacy-C645xhSC.js.map} +1 -1
- package/dist/assets/{Mapbox-B9pa-75a-BOtxeWGb.js → Mapbox-B9pa-75a-ClPYY137.js} +2 -2
- package/dist/assets/{Mapbox-B9pa-75a-BOtxeWGb.js.map → Mapbox-B9pa-75a-ClPYY137.js.map} +1 -1
- package/dist/assets/{Mapbox-B9pa-75a-legacy-CHrYGkGc.js → Mapbox-B9pa-75a-legacy-Dk1YPwyb.js} +2 -2
- package/dist/assets/{Mapbox-B9pa-75a-legacy-CHrYGkGc.js.map → Mapbox-B9pa-75a-legacy-Dk1YPwyb.js.map} +1 -1
- package/dist/assets/{Mapbox-BpJHQDi--DNuvIXte.js → Mapbox-BpJHQDi--CLyxuwqr.js} +2 -2
- package/dist/assets/{Mapbox-BpJHQDi--DNuvIXte.js.map → Mapbox-BpJHQDi--CLyxuwqr.js.map} +1 -1
- package/dist/assets/{Mapbox-BpJHQDi--legacy-pw96w162.js → Mapbox-BpJHQDi--legacy-DwGz9cU-.js} +2 -2
- package/dist/assets/{Mapbox-BpJHQDi--legacy-pw96w162.js.map → Mapbox-BpJHQDi--legacy-DwGz9cU-.js.map} +1 -1
- package/dist/assets/{Mapbox-BtxA3en8-3Z72nNmw.js → Mapbox-BtxA3en8-C82di8Le.js} +2 -2
- package/dist/assets/{Mapbox-BtxA3en8-3Z72nNmw.js.map → Mapbox-BtxA3en8-C82di8Le.js.map} +1 -1
- package/dist/assets/{Mapbox-BtxA3en8-legacy-CSU7NLBt.js → Mapbox-BtxA3en8-legacy-DQTm7hJ_.js} +2 -2
- package/dist/assets/{Mapbox-BtxA3en8-legacy-CSU7NLBt.js.map → Mapbox-BtxA3en8-legacy-DQTm7hJ_.js.map} +1 -1
- package/dist/assets/{Mapbox-CDUr5XKG-5ASiBTlv.js → Mapbox-CDUr5XKG-QYnXDVVu.js} +2 -2
- package/dist/assets/{Mapbox-CDUr5XKG-5ASiBTlv.js.map → Mapbox-CDUr5XKG-QYnXDVVu.js.map} +1 -1
- package/dist/assets/{Mapbox-CDUr5XKG-legacy-3huz0GR_.js → Mapbox-CDUr5XKG-legacy-B6iPzpfO.js} +2 -2
- package/dist/assets/{Mapbox-CDUr5XKG-legacy-3huz0GR_.js.map → Mapbox-CDUr5XKG-legacy-B6iPzpfO.js.map} +1 -1
- package/dist/assets/{Mapbox-DwSofiet-ILkehD5G.js → Mapbox-DwSofiet-Mmgq5D6-.js} +2 -2
- package/dist/assets/{Mapbox-DwSofiet-ILkehD5G.js.map → Mapbox-DwSofiet-Mmgq5D6-.js.map} +1 -1
- package/dist/assets/{Mapbox-DwSofiet-legacy-D3BpQm2w.js → Mapbox-DwSofiet-legacy-BoDFeBXZ.js} +2 -2
- package/dist/assets/{Mapbox-DwSofiet-legacy-D3BpQm2w.js.map → Mapbox-DwSofiet-legacy-BoDFeBXZ.js.map} +1 -1
- package/dist/assets/{Maptiler-CYFdJNvN-g3KKpHdt.js → Maptiler-CYFdJNvN-DYIrBgH6.js} +2 -2
- package/dist/assets/{Maptiler-CYFdJNvN-g3KKpHdt.js.map → Maptiler-CYFdJNvN-DYIrBgH6.js.map} +1 -1
- package/dist/assets/{Maptiler-CYFdJNvN-legacy-NhbfdVrf.js → Maptiler-CYFdJNvN-legacy-yj9pOpKs.js} +2 -2
- package/dist/assets/{Maptiler-CYFdJNvN-legacy-NhbfdVrf.js.map → Maptiler-CYFdJNvN-legacy-yj9pOpKs.js.map} +1 -1
- package/dist/assets/{Maptiler-Ce0L0Kac-CzlrjKAh.js → Maptiler-Ce0L0Kac-BTFcxDAa.js} +2 -2
- package/dist/assets/{Maptiler-Ce0L0Kac-CzlrjKAh.js.map → Maptiler-Ce0L0Kac-BTFcxDAa.js.map} +1 -1
- package/dist/assets/{Maptiler-Ce0L0Kac-legacy-DTnLJDX_.js → Maptiler-Ce0L0Kac-legacy-BmTKKLgL.js} +2 -2
- package/dist/assets/{Maptiler-Ce0L0Kac-legacy-DTnLJDX_.js.map → Maptiler-Ce0L0Kac-legacy-BmTKKLgL.js.map} +1 -1
- package/dist/assets/{Maptiler-CkoZpE04-CL-oFuER.js → Maptiler-CkoZpE04-CKOkRzwH.js} +2 -2
- package/dist/assets/{Maptiler-CkoZpE04-CL-oFuER.js.map → Maptiler-CkoZpE04-CKOkRzwH.js.map} +1 -1
- package/dist/assets/{Maptiler-CkoZpE04-legacy-CLKqb0ok.js → Maptiler-CkoZpE04-legacy-BAfeb_fR.js} +2 -2
- package/dist/assets/{Maptiler-CkoZpE04-legacy-CLKqb0ok.js.map → Maptiler-CkoZpE04-legacy-BAfeb_fR.js.map} +1 -1
- package/dist/assets/{Maptiler-CyB_-uzB-legacy-C3M4Wl83.js → Maptiler-CyB_-uzB-legacy-4okZ1sfA.js} +2 -2
- package/dist/assets/{Maptiler-CyB_-uzB-legacy-C3M4Wl83.js.map → Maptiler-CyB_-uzB-legacy-4okZ1sfA.js.map} +1 -1
- package/dist/assets/{Maptiler-CyB_-uzB-BsYYQ7sz.js → Maptiler-CyB_-uzB-vC5akwa6.js} +2 -2
- package/dist/assets/{Maptiler-CyB_-uzB-BsYYQ7sz.js.map → Maptiler-CyB_-uzB-vC5akwa6.js.map} +1 -1
- package/dist/assets/{Maptiler-DsgKmpne-DxIuH2Tl.js → Maptiler-DsgKmpne-6BzLeKc0.js} +2 -2
- package/dist/assets/{Maptiler-DsgKmpne-DxIuH2Tl.js.map → Maptiler-DsgKmpne-6BzLeKc0.js.map} +1 -1
- package/dist/assets/{Maptiler-DsgKmpne-legacy-BpEYCv0q.js → Maptiler-DsgKmpne-legacy-TqJ_TVEa.js} +2 -2
- package/dist/assets/{Maptiler-DsgKmpne-legacy-BpEYCv0q.js.map → Maptiler-DsgKmpne-legacy-TqJ_TVEa.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Drkpm3bl-DI0HvpiK.js → MarkerIcon-Drkpm3bl-6CRlQtyO.js} +2 -2
- package/dist/assets/{MarkerIcon-Drkpm3bl-DI0HvpiK.js.map → MarkerIcon-Drkpm3bl-6CRlQtyO.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Drkpm3bl-legacy-CjOJi2BD.js → MarkerIcon-Drkpm3bl-legacy-BKTQZxwz.js} +2 -2
- package/dist/assets/{MarkerIcon-Drkpm3bl-legacy-CjOJi2BD.js.map → MarkerIcon-Drkpm3bl-legacy-BKTQZxwz.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-BdTDM3-D.js → NeighborhoodCard-C_-8FpDl.js} +2 -2
- package/dist/assets/{NeighborhoodCard-BdTDM3-D.js.map → NeighborhoodCard-C_-8FpDl.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-legacy-DvpbnJ6S.js → NeighborhoodCard-legacy-DW4x82H7.js} +2 -2
- package/dist/assets/{NeighborhoodCard-legacy-DvpbnJ6S.js.map → NeighborhoodCard-legacy-DW4x82H7.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-Ook5N1T2.js → NeighborhoodCharacteristics-BGdxNjXv.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-Ook5N1T2.js.map → NeighborhoodCharacteristics-BGdxNjXv.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-legacy-D3KCHmoq.js → NeighborhoodCharacteristics-legacy-DVi_mvql.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-legacy-D3KCHmoq.js.map → NeighborhoodCharacteristics-legacy-DVi_mvql.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-CTpC3jE7.js → NeighborhoodDemographics-Bl2aRgAD.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-CTpC3jE7.js.map → NeighborhoodDemographics-Bl2aRgAD.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-legacy-DgcM1GAK.js → NeighborhoodDemographics-legacy-C6PkQmoB.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-legacy-DgcM1GAK.js.map → NeighborhoodDemographics-legacy-C6PkQmoB.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-BKynIDFO.js → NeighborhoodFeatured-C0qVWedw.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-BKynIDFO.js.map → NeighborhoodFeatured-C0qVWedw.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-legacy-DlwdffhT.js → NeighborhoodFeatured-legacy-BcjeyOc7.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-legacy-DlwdffhT.js.map → NeighborhoodFeatured-legacy-BcjeyOc7.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-BcdgrQtP.js → NeighborhoodHero-BSMivGqs.js} +2 -2
- package/dist/assets/{NeighborhoodHero-BcdgrQtP.js.map → NeighborhoodHero-BSMivGqs.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-legacy-CfCrSS6Z.js → NeighborhoodHero-legacy-CVItTB2U.js} +2 -2
- package/dist/assets/{NeighborhoodHero-legacy-CfCrSS6Z.js.map → NeighborhoodHero-legacy-CVItTB2U.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-C3maAwKP.js → NeighborhoodHighlights-BhVYsA3-.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-C3maAwKP.js.map → NeighborhoodHighlights-BhVYsA3-.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-legacy-CALvujpk.js → NeighborhoodHighlights-legacy-Do2PVQvq.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-legacy-CALvujpk.js.map → NeighborhoodHighlights-legacy-Do2PVQvq.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-CT8veCNl.js → NeighborhoodMap-D6OihpAJ.js} +2 -2
- package/dist/assets/{NeighborhoodMap-CT8veCNl.js.map → NeighborhoodMap-D6OihpAJ.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-legacy-CSmAZuD2.js → NeighborhoodMap-legacy-Dzr11Edf.js} +2 -2
- package/dist/assets/{NeighborhoodMap-legacy-CSmAZuD2.js.map → NeighborhoodMap-legacy-Dzr11Edf.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-DLlvQnd2.js → NeighborhoodMarketTrends-BYLv7ssD.js} +3 -3
- package/dist/assets/{NeighborhoodMarketTrends-DLlvQnd2.js.map → NeighborhoodMarketTrends-BYLv7ssD.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-legacy-DA5VImYp.js → NeighborhoodMarketTrends-legacy-D4CqgzKy.js} +2 -2
- package/dist/assets/{NeighborhoodMarketTrends-legacy-DA5VImYp.js.map → NeighborhoodMarketTrends-legacy-D4CqgzKy.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-zUWSiNi8.js → NeighborhoodMatch-2dDNoHEC.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-zUWSiNi8.js.map → NeighborhoodMatch-2dDNoHEC.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-legacy-BkhxK-bz.js → NeighborhoodMatch-legacy-DSUP8S00.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-legacy-BkhxK-bz.js.map → NeighborhoodMatch-legacy-DSUP8S00.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-0Zr-7AQ9.js → NeighborhoodPropertyValueDrivers-BbkPB6Ts.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-0Zr-7AQ9.js.map → NeighborhoodPropertyValueDrivers-BbkPB6Ts.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-yQwTbIN8.js → NeighborhoodPropertyValueDrivers-legacy-D62occGi.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-yQwTbIN8.js.map → NeighborhoodPropertyValueDrivers-legacy-D62occGi.js.map} +1 -1
- package/dist/assets/{NeighborhoodSchools-legacy-CTG5Nbpw.js → NeighborhoodSchools-legacy-CRJgyQRJ.js} +2 -2
- package/dist/assets/{NeighborhoodSchools-legacy-CTG5Nbpw.js.map → NeighborhoodSchools-legacy-CRJgyQRJ.js.map} +1 -1
- package/dist/assets/{NeighborhoodSchools-DFUvz0LY.js → NeighborhoodSchools-zyjBTcAS.js} +2 -2
- package/dist/assets/{NeighborhoodSchools-DFUvz0LY.js.map → NeighborhoodSchools-zyjBTcAS.js.map} +1 -1
- package/dist/assets/{NeighborhoodShowcase-BxcWXdht.js → NeighborhoodShowcase-DkqbmfHO.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-BxcWXdht.js.map → NeighborhoodShowcase-DkqbmfHO.js.map} +1 -1
- package/dist/assets/{NeighborhoodShowcase-legacy-Ciwbw3YX.js → NeighborhoodShowcase-legacy-CztESO-F.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-legacy-Ciwbw3YX.js.map → NeighborhoodShowcase-legacy-CztESO-F.js.map} +1 -1
- package/dist/assets/{NoDataContent-K8RstIPw.js → NoDataContent-BOVv2wDG.js} +2 -2
- package/dist/assets/{NoDataContent-K8RstIPw.js.map → NoDataContent-BOVv2wDG.js.map} +1 -1
- package/dist/assets/{NoDataContent-legacy-CzU5MBcr.js → NoDataContent-legacy-C3AeyeSg.js} +2 -2
- package/dist/assets/{NoDataContent-legacy-CzU5MBcr.js.map → NoDataContent-legacy-C3AeyeSg.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-iptN_OTD.js → ResizeWrapper-Bhg67yfB.js} +2 -2
- package/dist/assets/{ResizeWrapper-iptN_OTD.js.map → ResizeWrapper-Bhg67yfB.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-legacy-OscRVVIk.js → ResizeWrapper-legacy-F6SJE_TA.js} +2 -2
- package/dist/assets/{ResizeWrapper-legacy-OscRVVIk.js.map → ResizeWrapper-legacy-F6SJE_TA.js.map} +1 -1
- package/dist/assets/{ScoreCardList-BGFtynWY.js → ScoreCardList-DReE0M82.js} +2 -2
- package/dist/assets/{ScoreCardList-BGFtynWY.js.map → ScoreCardList-DReE0M82.js.map} +1 -1
- package/dist/assets/{ScoreCardList-legacy-DkYwRt8q.js → ScoreCardList-legacy-B-Iw3TWS.js} +2 -2
- package/dist/assets/{ScoreCardList-legacy-DkYwRt8q.js.map → ScoreCardList-legacy-B-Iw3TWS.js.map} +1 -1
- package/dist/assets/{ScoreIcon-legacy-CKB6p9iW.js → ScoreIcon-legacy-Ds3IYvwY.js} +2 -2
- package/dist/assets/{ScoreIcon-legacy-CKB6p9iW.js.map → ScoreIcon-legacy-Ds3IYvwY.js.map} +1 -1
- package/dist/assets/{ScoreIcon-BGcwqtBH.js → ScoreIcon-qr7Dyd1_.js} +2 -2
- package/dist/assets/{ScoreIcon-BGcwqtBH.js.map → ScoreIcon-qr7Dyd1_.js.map} +1 -1
- package/dist/assets/{Testing-BQ7AFsvh-B0zjSsQX.js → Testing-BQ7AFsvh-DFMBrZvz.js} +2 -2
- package/dist/assets/{Testing-BQ7AFsvh-B0zjSsQX.js.map → Testing-BQ7AFsvh-DFMBrZvz.js.map} +1 -1
- package/dist/assets/{Testing-BQ7AFsvh-legacy-DWyP-TZm.js → Testing-BQ7AFsvh-legacy-u-xLnoNh.js} +2 -2
- package/dist/assets/{Testing-BQ7AFsvh-legacy-DWyP-TZm.js.map → Testing-BQ7AFsvh-legacy-u-xLnoNh.js.map} +1 -1
- package/dist/assets/{Testing-CZDor_UM-DKHyShOL.js → Testing-CZDor_UM-BXoIFD2V.js} +2 -2
- package/dist/assets/{Testing-CZDor_UM-DKHyShOL.js.map → Testing-CZDor_UM-BXoIFD2V.js.map} +1 -1
- package/dist/assets/{Testing-CZDor_UM-legacy-DYOc_7jJ.js → Testing-CZDor_UM-legacy-nUkPPr7r.js} +2 -2
- package/dist/assets/{Testing-CZDor_UM-legacy-DYOc_7jJ.js.map → Testing-CZDor_UM-legacy-nUkPPr7r.js.map} +1 -1
- package/dist/assets/{Testing-CxwUbSxG-Vw-NLu0P.js → Testing-CxwUbSxG-Bht4ySMN.js} +2 -2
- package/dist/assets/{Testing-CxwUbSxG-Vw-NLu0P.js.map → Testing-CxwUbSxG-Bht4ySMN.js.map} +1 -1
- package/dist/assets/{Testing-CxwUbSxG-legacy-Dpbq1Bh4.js → Testing-CxwUbSxG-legacy-CW2pKq5L.js} +2 -2
- package/dist/assets/{Testing-CxwUbSxG-legacy-Dpbq1Bh4.js.map → Testing-CxwUbSxG-legacy-CW2pKq5L.js.map} +1 -1
- package/dist/assets/{Testing-vfABKYEg-legacy-BpzPtqgn.js → Testing-vfABKYEg-legacy-CAaWJ3i7.js} +2 -2
- package/dist/assets/{Testing-vfABKYEg-legacy-BpzPtqgn.js.map → Testing-vfABKYEg-legacy-CAaWJ3i7.js.map} +1 -1
- package/dist/assets/{Testing-vfABKYEg-BEq8jFJw.js → Testing-vfABKYEg-nwKJxiQ-.js} +2 -2
- package/dist/assets/{Testing-vfABKYEg-BEq8jFJw.js.map → Testing-vfABKYEg-nwKJxiQ-.js.map} +1 -1
- package/dist/assets/{Testing-wan6urXy-PZYC8nyQ.js → Testing-wan6urXy-B0sm4u_j.js} +2 -2
- package/dist/assets/{Testing-wan6urXy-PZYC8nyQ.js.map → Testing-wan6urXy-B0sm4u_j.js.map} +1 -1
- package/dist/assets/{Testing-wan6urXy-legacy-CKFpdCQ6.js → Testing-wan6urXy-legacy-CQ0zqTGx.js} +2 -2
- package/dist/assets/{Testing-wan6urXy-legacy-CKFpdCQ6.js.map → Testing-wan6urXy-legacy-CQ0zqTGx.js.map} +1 -1
- package/dist/assets/{TitleHeader-BZ-WJqqQ.js → TitleHeader-DqQxUayY.js} +2 -2
- package/dist/assets/{TitleHeader-BZ-WJqqQ.js.map → TitleHeader-DqQxUayY.js.map} +1 -1
- package/dist/assets/{TitleHeader-legacy-VTfonLLs.js → TitleHeader-legacy-pLHeIO4_.js} +2 -2
- package/dist/assets/{TitleHeader-legacy-VTfonLLs.js.map → TitleHeader-legacy-pLHeIO4_.js.map} +1 -1
- package/dist/assets/{Trans-DJmgQYxZ.js → Trans-BLu0zcU1.js} +2 -2
- package/dist/assets/{Trans-DJmgQYxZ.js.map → Trans-BLu0zcU1.js.map} +1 -1
- package/dist/assets/{Trans-legacy-DfM0QowQ.js → Trans-legacy-CQPgpMfP.js} +2 -2
- package/dist/assets/{Trans-legacy-DfM0QowQ.js.map → Trans-legacy-CQPgpMfP.js.map} +1 -1
- package/dist/assets/{ValidateOptions-BOHq0NLG.js → ValidateOptions-BivAr3ZH.js} +2 -2
- package/dist/assets/{ValidateOptions-BOHq0NLG.js.map → ValidateOptions-BivAr3ZH.js.map} +1 -1
- package/dist/assets/{ValidateOptions-legacy-CRx_un0J.js → ValidateOptions-legacy-B4kQEpo7.js} +2 -2
- package/dist/assets/{ValidateOptions-legacy-CRx_un0J.js.map → ValidateOptions-legacy-B4kQEpo7.js.map} +1 -1
- package/dist/assets/{dist-DjT90Vie.js → dist-JadUzcvL.js} +2 -2
- package/dist/assets/{dist-DjT90Vie.js.map → dist-JadUzcvL.js.map} +1 -1
- package/dist/assets/{dist-legacy-C6cEG2G4.js → dist-legacy-6uOt0Yh8.js} +2 -2
- package/dist/assets/{dist-legacy-C6cEG2G4.js.map → dist-legacy-6uOt0Yh8.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-CLYWizpG.js → getMapProviderConfig-DNFSt_ai.js} +3 -3
- package/dist/assets/{getMapProviderConfig-CLYWizpG.js.map → getMapProviderConfig-DNFSt_ai.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-legacy-BqZuG0-K.js → getMapProviderConfig-legacy-DRwYzoDU.js} +2 -2
- package/dist/assets/{getMapProviderConfig-legacy-BqZuG0-K.js.map → getMapProviderConfig-legacy-DRwYzoDU.js.map} +1 -1
- package/dist/assets/{getPaddedBounds-FpsQymJC-CamcKdIj.js → getPaddedBounds-FpsQymJC--V91KbDr.js} +2 -2
- package/dist/assets/{getPaddedBounds-FpsQymJC-CamcKdIj.js.map → getPaddedBounds-FpsQymJC--V91KbDr.js.map} +1 -1
- package/dist/assets/{getPaddedBounds-FpsQymJC-legacy-TefV3FWy.js → getPaddedBounds-FpsQymJC-legacy-BAfRrfiC.js} +2 -2
- package/dist/assets/{getPaddedBounds-FpsQymJC-legacy-TefV3FWy.js.map → getPaddedBounds-FpsQymJC-legacy-BAfRrfiC.js.map} +1 -1
- package/dist/assets/{index-BLDMLEaX.js → index-DHfBmUAQ.js} +3 -3
- package/dist/assets/{index-BLDMLEaX.js.map → index-DHfBmUAQ.js.map} +1 -1
- package/dist/assets/{index-legacy-BzMlHwaA.js → index-legacy-CdRffLlb.js} +2 -2
- package/dist/assets/{index-legacy-BzMlHwaA.js.map → index-legacy-CdRffLlb.js.map} +1 -1
- package/dist/assets/{index.es-D680q4E2.js → index.es-B0TyuPgo.js} +2 -2
- package/dist/assets/{index.es-D680q4E2.js.map → index.es-B0TyuPgo.js.map} +1 -1
- package/dist/assets/{index.es-legacy-CLQaVm5G.js → index.es-legacy-DGBuVsHM.js} +2 -2
- package/dist/assets/{index.es-legacy-CLQaVm5G.js.map → index.es-legacy-DGBuVsHM.js.map} +1 -1
- package/dist/assets/{mapbox-BiIB2Zbq-DgXGTLoF.js → mapbox-BiIB2Zbq-gUZoKTZh.js} +2 -2
- package/dist/assets/{mapbox-BiIB2Zbq-DgXGTLoF.js.map → mapbox-BiIB2Zbq-gUZoKTZh.js.map} +1 -1
- package/dist/assets/{mapbox-BiIB2Zbq-legacy-CWG67TM7.js → mapbox-BiIB2Zbq-legacy-BzLqYdgk.js} +2 -2
- package/dist/assets/{mapbox-BiIB2Zbq-legacy-CWG67TM7.js.map → mapbox-BiIB2Zbq-legacy-BzLqYdgk.js.map} +1 -1
- package/dist/assets/{maplibre-Cx0I-z8h-CKf-PaNJ.js → maplibre-Cx0I-z8h-CpfLgNDU.js} +2 -2
- package/dist/assets/{maplibre-Cx0I-z8h-CKf-PaNJ.js.map → maplibre-Cx0I-z8h-CpfLgNDU.js.map} +1 -1
- package/dist/assets/{maplibre-Cx0I-z8h-legacy-BLv0jU9u.js → maplibre-Cx0I-z8h-legacy-DNmyXE2u.js} +2 -2
- package/dist/assets/{maplibre-Cx0I-z8h-legacy-BLv0jU9u.js.map → maplibre-Cx0I-z8h-legacy-DNmyXE2u.js.map} +1 -1
- package/dist/assets/neighborhood-fallback-Bx8UkjEB.js.map +1 -1
- package/dist/assets/{sdks-COqbeKyR.js → sdks-e3TteF4P.js} +2 -2
- package/dist/assets/{sdks-COqbeKyR.js.map → sdks-e3TteF4P.js.map} +1 -1
- package/dist/assets/{sdks-legacy-DQ7jLJZE.js → sdks-legacy-BcdXj8R9.js} +2 -2
- package/dist/assets/{sdks-legacy-DQ7jLJZE.js.map → sdks-legacy-BcdXj8R9.js.map} +1 -1
- package/dist/assets/{styles-DCI3UJny-DrJgfl7H.js → styles-DCI3UJny-OwNwQYJv.js} +2 -2
- package/dist/assets/{styles-DCI3UJny-DrJgfl7H.js.map → styles-DCI3UJny-OwNwQYJv.js.map} +1 -1
- package/dist/assets/{styles-DCI3UJny-legacy-Dw44-3MI.js → styles-DCI3UJny-legacy-BfzvePT0.js} +2 -2
- package/dist/assets/{styles-DCI3UJny-legacy-Dw44-3MI.js.map → styles-DCI3UJny-legacy-BfzvePT0.js.map} +1 -1
- package/dist/assets/{styles-DMA_7NV0-D3y1DeLZ.js → styles-DMA_7NV0-CJzE42wT.js} +2 -2
- package/dist/assets/{styles-DMA_7NV0-D3y1DeLZ.js.map → styles-DMA_7NV0-CJzE42wT.js.map} +1 -1
- package/dist/assets/{styles-DMA_7NV0-legacy-CYkSS_lc.js → styles-DMA_7NV0-legacy-DO9L0b_C.js} +2 -2
- package/dist/assets/{styles-DMA_7NV0-legacy-CYkSS_lc.js.map → styles-DMA_7NV0-legacy-DO9L0b_C.js.map} +1 -1
- package/dist/assets/{useDemographicsData-DbxsBDeY.js → useDemographicsData-C4iCuplI.js} +2 -2
- package/dist/assets/{useDemographicsData-DbxsBDeY.js.map → useDemographicsData-C4iCuplI.js.map} +1 -1
- package/dist/assets/{useDemographicsData-legacy-CG3XHkyh.js → useDemographicsData-legacy-OsSaC0p-.js} +2 -2
- package/dist/assets/{useDemographicsData-legacy-CG3XHkyh.js.map → useDemographicsData-legacy-OsSaC0p-.js.map} +1 -1
- package/dist/assets/{useGeographies-Ca5nEDBN.js → useGeographies-Dbxf3asb.js} +2 -2
- package/dist/assets/{useGeographies-Ca5nEDBN.js.map → useGeographies-Dbxf3asb.js.map} +1 -1
- package/dist/assets/{useGeographies-legacy-CcWz8DvM.js → useGeographies-legacy-BFHs291p.js} +2 -2
- package/dist/assets/{useGeographies-legacy-CcWz8DvM.js.map → useGeographies-legacy-BFHs291p.js.map} +1 -1
- package/dist/assets/{useIsMobile-Bxsws0pn.js → useIsMobile-DNaqDzbl.js} +2 -2
- package/dist/assets/{useIsMobile-Bxsws0pn.js.map → useIsMobile-DNaqDzbl.js.map} +1 -1
- package/dist/assets/{useIsMobile-legacy-zb8bPQUw.js → useIsMobile-legacy-B6-NPP6W.js} +2 -2
- package/dist/assets/{useIsMobile-legacy-zb8bPQUw.js.map → useIsMobile-legacy-B6-NPP6W.js.map} +1 -1
- package/dist/assets/{useLocation-Cw-YxWBt.js → useLocation-ZUEWhDQZ.js} +2 -2
- package/dist/assets/{useLocation-Cw-YxWBt.js.map → useLocation-ZUEWhDQZ.js.map} +1 -1
- package/dist/assets/{useLocation-legacy-DROxjKYy.js → useLocation-legacy-DwBFDrsA.js} +2 -2
- package/dist/assets/{useLocation-legacy-DROxjKYy.js.map → useLocation-legacy-DwBFDrsA.js.map} +1 -1
- package/dist/assets/{useProfiles-8Z_GZOzb.js → useProfiles-BIFSAlrA.js} +2 -2
- package/dist/assets/{useProfiles-8Z_GZOzb.js.map → useProfiles-BIFSAlrA.js.map} +1 -1
- package/dist/assets/{useProfiles-legacy-C4_roJUq.js → useProfiles-legacy-DAWflSgN.js} +2 -2
- package/dist/assets/{useProfiles-legacy-C4_roJUq.js.map → useProfiles-legacy-DAWflSgN.js.map} +1 -1
- package/dist/assets/{useSchools-legacy-T6pvbGsp.js → useSchools-legacy-CgZHAzMa.js} +2 -2
- package/dist/assets/{useSchools-legacy-T6pvbGsp.js.map → useSchools-legacy-CgZHAzMa.js.map} +1 -1
- package/dist/assets/{useSchools-DyrTKmXR.js → useSchools-qUQmMbTk.js} +2 -2
- package/dist/assets/{useSchools-DyrTKmXR.js.map → useSchools-qUQmMbTk.js.map} +1 -1
- package/dist/assets/{useScores--bTvRnnj.js → useScores-C2l0EkUs.js} +2 -2
- package/dist/assets/{useScores--bTvRnnj.js.map → useScores-C2l0EkUs.js.map} +1 -1
- package/dist/assets/{useScores-legacy-C2gadPY-.js → useScores-legacy-BtI93V2X.js} +2 -2
- package/dist/assets/{useScores-legacy-C2gadPY-.js.map → useScores-legacy-BtI93V2X.js.map} +1 -1
- package/dist/assets/{utils-CV8G-gCd-CCr0oecj.js → utils-CV8G-gCd-BA5hEMgo.js} +2 -2
- package/dist/assets/{utils-CV8G-gCd-CCr0oecj.js.map → utils-CV8G-gCd-BA5hEMgo.js.map} +1 -1
- package/dist/assets/{utils-CV8G-gCd-legacy-DwIJ3EdU.js → utils-CV8G-gCd-legacy-C6n6__tU.js} +2 -2
- package/dist/assets/{utils-CV8G-gCd-legacy-DwIJ3EdU.js.map → utils-CV8G-gCd-legacy-C6n6__tU.js.map} +1 -1
- package/dist/index.html +2 -2
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.d.ts.map +1 -1
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.js +3 -1
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.js.map +1 -1
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.test.js +24 -0
- package/dist/types/sdks/LocalContent/components/Sidebar/Root/ScoreDetails/index.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/assets/LocalContent-legacy-ibTI5FZ4.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodMap-legacy-CSmAZuD2.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 isGeographyLoading: 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 isGeographyLoading,\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 { isGeographyLoading, locale, map, activeMarker, geography } =\n 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 if (isGeographyLoading) {\n return null;\n }\n\n return (\n <div className={styles.container} {...rest}>\n {typeof geography !== \"undefined\" && (\n <LocalLogicMap.Root\n locale={locale}\n region={geography?.country?.en === \"Canada\" ? \"CA\" : \"US\"}\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-Dzr11Edf.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 isGeographyLoading: 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 isGeographyLoading,\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 { isGeographyLoading, locale, map, activeMarker, geography } =\n 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 if (isGeographyLoading) {\n return null;\n }\n\n return (\n <div className={styles.container} {...rest}>\n {typeof geography !== \"undefined\" && (\n <LocalLogicMap.Root\n locale={locale}\n region={geography?.country?.en === \"Canada\" ? \"CA\" : \"US\"}\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-DLlvQnd2.js → NeighborhoodMarketTrends-BYLv7ssD.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-BEU_UCik.js";import{l as r}from"./google-maps-vendor-BeDgURNz.js";import{a as t,c as a,d as s,f as i,g as n,h as l,i as o,m as c,n as d,o as m,p,r as h,t as u,u as _}from"./sdks-COqbeKyR.js";import{t as v}from"./CaretDown.es-DPspOb5f.js";import{n as g,t as y}from"./HandCoins.es-BiMIlsfQ.js";import{t as x}from"./X.es-BiKOSTWg.js";import{t as j}from"./IconBase.es-kve0MeDL.js";import{B as f,F as b,H as k,L as M,N as C,P as N,R as A,U as w,V as I,Y as T,_ as E,c as V,g as H,h as L,i as Z,m as D,n as O,p as S,q as P,t as R,z as F}from"./index-BLDMLEaX.js";import{t as $}from"./useGeographies-Ca5nEDBN.js";import{n as q}from"./Attribution-BsltvGRU.js";import{t as K}from"./ResizeWrapper-iptN_OTD.js";import{t as z}from"./ValidateOptions-BOHq0NLG.js";import{t as G}from"./useIsMobile-Bxsws0pn.js";/* empty css */import{i as B,n as W,r as U,t as Y}from"./dist-DjT90Vie.js";import{t as X}from"./TitleHeader-BZ-WJqqQ.js";import{n as J}from"./NoDataContent-K8RstIPw.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=T(),pe=Q.createContext({}),he=()=>(0,Q.useContext)(pe),ue=({children:e})=>{const{sdkState:r}=O(),t=r.globalOptions?.locale||"en",a=m(),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()},[]);Z(()=>{a.postEvent({eventType:oe.SDK_VIEWED}),a.trackAnalyticsEvent({eventName:ce.SDK_VIEWED})});const{isLoading:i,data:n}=$({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(n||{});return{geographyId:e[0]?.[0],geography:e[0]?.[1]}},[i,n]),{data:p,isFetching:h}=function({geographyId:e,propertyTypes:r,intervals:t}){const{client:a}=o(),s=R();return l({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=p?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count||0,r=p?.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},[p]),_=(0,Q.useMemo)(()=>i||h,[i,h]),v=(0,Q.useMemo)(()=>({isLoading:_,homesSoldPercentage:u,marketActivity:p??null,appearance:r?.options?.appearance,locale:t,geography:d}),[p,_,u,t,d,c]);return(0,me.jsx)(pe.Provider,{value:v,children:e})},_e="Collapsible",[ve,ge]=f(_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]=C({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)(M.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)(M.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:I(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)(E,{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=w(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)},[]),b(()=>{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)(M.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]=F(Te),[Ze,De]=f(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]=C({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]=C({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})})})}),[ze,Ge]=Ze(Te),Be=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,disabled:a,dir:s,orientation:i="vertical",...n}=e,l=Q.useRef(null),o=w(l,r),c=He(t),d="ltr"===A(s),m=I(e.onKeyDown,e=>{if(!Ee.includes(e.key))return;const r=e.target,t=c().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,o=()=>{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&&(d?o():m());break;case"ArrowDown":"vertical"===i&&o();break;case"ArrowLeft":"horizontal"===i&&(d?m():o());break;case"ArrowUp":"vertical"===i&&m()}t[n%s].ref.current?.focus()});return(0,me.jsx)(ze,{scope:t,disabled:a,direction:s,orientation:i,children:(0,me.jsx)(Ve.Slot,{scope:t,children:(0,me.jsx)(M.div,{...n,"data-orientation":i,ref:o,onKeyDown:a?void 0:m})})})}),We="AccordionItem",[Ue,Ye]=Ze(We),Xe=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,value:a,...s}=e,i=Ge(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=Ge(Te,t),i=Ye(Je,t);return(0,me.jsx)(M.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=Ge(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=Ge(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=G(),a=(0,Q.useMemo)(()=>t?"bottom":"right",[t]);return null===r||0===r?null:(0,me.jsxs)(L,{children:[(0,me.jsx)(H,{children:(0,me.jsx)(ie,{className:"w-4 h-4 cursor-pointer"})}),(0,me.jsxs)(D,{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)(S,{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}=n("neighborhoodMarketTrends"),{appearance:s}=he(),i=e&&e>=0,l=(0,Q.useMemo)(()=>i?s?.colors?.increaseColor||V.increaseColor:s?.colors?.decreaseColor||V.decreaseColor,[s,i]);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":i}),(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."+(i?"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)(()=>P(()=>import("./GridGraph-CqFuBYej.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=V.buyerColor,sellerColor:s=V.sellerColor,decreaseColor:i=V.decreaseColor,neutralColor:n=V.neutralColor,increaseColor:l=V.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}=n("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},zr=()=>{const{t:e}=n("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},Gr=()=>{const{t:e}=n("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}=n("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}=n("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}=n("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}=n("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}=n("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}=n("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}=n("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||V.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||V.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||V.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}=n("neighborhoodMarketTrends"),t=m(),{isLoading:a,marketActivity:s,homesSoldPercentage:i}=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,n=Object.entries(l??{}).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),o=0===n.length||n.every(([e,r])=>0===(r.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??0))||n.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)(zr,{},"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)(Gr,{},"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&&i>=.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&&i>=.75?[(0,me.jsx)(Wr,{},"median-sale-price")]:[],...void 0!==t?.home_selling_prices.median_price_per_square_foot&&i>=.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)(k,{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}=n("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:s().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:s().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:i().optional(),title:c().optional(),hideAttribution:p().optional(),omitTabs:c().optional(),appearance:_({colors:_({buyerColor:i().optional(),sellerColor:i().optional(),decreaseColor:i().optional(),neutralColor:i().optional(),increaseColor:i().optional()}).optional()}).optional()}).noUnknown(!0);a(d.neighborhoodWrap.key);var lt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{sdkState:r}=O(),a=G(),s=r.globalOptions?.locale||"en",i=(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)(z,{sdk:"Neighborhood Market Trends",schema:nt,options:r.options,children:(0,me.jsx)(h,{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:d.neighborhoodWrap,meta:{clientId:r.clientId,productName:u.NEIGHBORHOOD_MARKET_TRENDS,productVersion:"1.24.63"},attributes:{location:i,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-C6-EwOUl.js","assets/rolldown-runtime-BEU_UCik.js","assets/google-maps-vendor-BeDgURNz.js","assets/index-DHfBmUAQ.js","assets/index-C5Xfn8k0.css","assets/apexcharts-vendor-5ZNC43NI.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e}from"./rolldown-runtime-BEU_UCik.js";import{l as r}from"./google-maps-vendor-BeDgURNz.js";import{a as t,c as a,d as s,f as i,g as n,h as l,i as o,m as c,n as d,o as m,p,r as h,t as u,u as _}from"./sdks-e3TteF4P.js";import{t as v}from"./CaretDown.es-DPspOb5f.js";import{n as g,t as y}from"./HandCoins.es-BiMIlsfQ.js";import{t as x}from"./X.es-BiKOSTWg.js";import{t as j}from"./IconBase.es-kve0MeDL.js";import{B as f,F as b,H as k,L as M,N as C,P as N,R as A,U as w,V as I,Y as T,_ as E,c as V,g as H,h as L,i as Z,m as D,n as O,p as S,q as P,t as R,z as F}from"./index-DHfBmUAQ.js";import{t as $}from"./useGeographies-Dbxf3asb.js";import{n as q}from"./Attribution-Duhh7k4x.js";import{t as K}from"./ResizeWrapper-Bhg67yfB.js";import{t as z}from"./ValidateOptions-BivAr3ZH.js";import{t as G}from"./useIsMobile-DNaqDzbl.js";/* empty css */import{i as B,n as W,r as U,t as Y}from"./dist-JadUzcvL.js";import{t as X}from"./TitleHeader-DqQxUayY.js";import{n as J}from"./NoDataContent-BOVv2wDG.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=T(),pe=Q.createContext({}),he=()=>(0,Q.useContext)(pe),ue=({children:e})=>{const{sdkState:r}=O(),t=r.globalOptions?.locale||"en",a=m(),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()},[]);Z(()=>{a.postEvent({eventType:oe.SDK_VIEWED}),a.trackAnalyticsEvent({eventName:ce.SDK_VIEWED})});const{isLoading:i,data:n}=$({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(n||{});return{geographyId:e[0]?.[0],geography:e[0]?.[1]}},[i,n]),{data:p,isFetching:h}=function({geographyId:e,propertyTypes:r,intervals:t}){const{client:a}=o(),s=R();return l({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=p?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count||0,r=p?.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},[p]),_=(0,Q.useMemo)(()=>i||h,[i,h]),v=(0,Q.useMemo)(()=>({isLoading:_,homesSoldPercentage:u,marketActivity:p??null,appearance:r?.options?.appearance,locale:t,geography:d}),[p,_,u,t,d,c]);return(0,me.jsx)(pe.Provider,{value:v,children:e})},_e="Collapsible",[ve,ge]=f(_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]=C({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)(M.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)(M.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:I(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)(E,{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=w(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)},[]),b(()=>{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)(M.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]=F(Te),[Ze,De]=f(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]=C({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]=C({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})})})}),[ze,Ge]=Ze(Te),Be=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,disabled:a,dir:s,orientation:i="vertical",...n}=e,l=Q.useRef(null),o=w(l,r),c=He(t),d="ltr"===A(s),m=I(e.onKeyDown,e=>{if(!Ee.includes(e.key))return;const r=e.target,t=c().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,o=()=>{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&&(d?o():m());break;case"ArrowDown":"vertical"===i&&o();break;case"ArrowLeft":"horizontal"===i&&(d?m():o());break;case"ArrowUp":"vertical"===i&&m()}t[n%s].ref.current?.focus()});return(0,me.jsx)(ze,{scope:t,disabled:a,direction:s,orientation:i,children:(0,me.jsx)(Ve.Slot,{scope:t,children:(0,me.jsx)(M.div,{...n,"data-orientation":i,ref:o,onKeyDown:a?void 0:m})})})}),We="AccordionItem",[Ue,Ye]=Ze(We),Xe=Q.forwardRef((e,r)=>{const{__scopeAccordion:t,value:a,...s}=e,i=Ge(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=Ge(Te,t),i=Ye(Je,t);return(0,me.jsx)(M.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=Ge(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=Ge(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=G(),a=(0,Q.useMemo)(()=>t?"bottom":"right",[t]);return null===r||0===r?null:(0,me.jsxs)(L,{children:[(0,me.jsx)(H,{children:(0,me.jsx)(ie,{className:"w-4 h-4 cursor-pointer"})}),(0,me.jsxs)(D,{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)(S,{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}=n("neighborhoodMarketTrends"),{appearance:s}=he(),i=e&&e>=0,l=(0,Q.useMemo)(()=>i?s?.colors?.increaseColor||V.increaseColor:s?.colors?.decreaseColor||V.decreaseColor,[s,i]);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":i}),(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."+(i?"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)(()=>P(()=>import("./GridGraph-C6-EwOUl.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=V.buyerColor,sellerColor:s=V.sellerColor,decreaseColor:i=V.decreaseColor,neutralColor:n=V.neutralColor,increaseColor:l=V.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}=n("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},zr=()=>{const{t:e}=n("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},Gr=()=>{const{t:e}=n("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}=n("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}=n("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}=n("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}=n("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}=n("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}=n("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}=n("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||V.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||V.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||V.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}=n("neighborhoodMarketTrends"),t=m(),{isLoading:a,marketActivity:s,homesSoldPercentage:i}=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,n=Object.entries(l??{}).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),o=0===n.length||n.every(([e,r])=>0===(r.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??0))||n.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)(zr,{},"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)(Gr,{},"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&&i>=.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&&i>=.75?[(0,me.jsx)(Wr,{},"median-sale-price")]:[],...void 0!==t?.home_selling_prices.median_price_per_square_foot&&i>=.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)(k,{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}=n("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:s().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:s().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:i().optional(),title:c().optional(),hideAttribution:p().optional(),omitTabs:c().optional(),appearance:_({colors:_({buyerColor:i().optional(),sellerColor:i().optional(),decreaseColor:i().optional(),neutralColor:i().optional(),increaseColor:i().optional()}).optional()}).optional()}).noUnknown(!0);a(d.neighborhoodWrap.key);var lt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{sdkState:r}=O(),a=G(),s=r.globalOptions?.locale||"en",i=(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)(z,{sdk:"Neighborhood Market Trends",schema:nt,options:r.options,children:(0,me.jsx)(h,{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:d.neighborhoodWrap,meta:{clientId:r.clientId,productName:u.NEIGHBORHOOD_MARKET_TRENDS,productVersion:"1.24.64"},attributes:{location:i,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-BYLv7ssD.js.map
|