@local-logic/sdks-app 1.24.65 → 1.25.0
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-WqAVcFf4.js → Attribution-CUXwGQ1J.js} +2 -2
- package/dist/assets/{Attribution-WqAVcFf4.js.map → Attribution-CUXwGQ1J.js.map} +1 -1
- package/dist/assets/{Attribution-legacy-CZRg2xtq.js → Attribution-legacy-BHwwqaVL.js} +2 -2
- package/dist/assets/{Attribution-legacy-CZRg2xtq.js.map → Attribution-legacy-BHwwqaVL.js.map} +1 -1
- package/dist/assets/{Cluster-DtK-bXwa-legacy-BM2nAsO3.js → Cluster-DtK-bXwa-legacy-Df-qaEE4.js} +2 -2
- package/dist/assets/{Cluster-DtK-bXwa-legacy-BM2nAsO3.js.map → Cluster-DtK-bXwa-legacy-Df-qaEE4.js.map} +1 -1
- package/dist/assets/{Cluster-DtK-bXwa-xBcc5Wcr.js → Cluster-DtK-bXwa-tdNdDFEn.js} +2 -2
- package/dist/assets/{Cluster-DtK-bXwa-xBcc5Wcr.js.map → Cluster-DtK-bXwa-tdNdDFEn.js.map} +1 -1
- package/dist/assets/{Google-BWu1zjvH-D6-Gkisg.js → Google-BWu1zjvH-7kETuMcQ.js} +2 -2
- package/dist/assets/{Google-BWu1zjvH-D6-Gkisg.js.map → Google-BWu1zjvH-7kETuMcQ.js.map} +1 -1
- package/dist/assets/{Google-BWu1zjvH-legacy-B55jbgM4.js → Google-BWu1zjvH-legacy-DyuPcONb.js} +2 -2
- package/dist/assets/{Google-BWu1zjvH-legacy-B55jbgM4.js.map → Google-BWu1zjvH-legacy-DyuPcONb.js.map} +1 -1
- package/dist/assets/{Google-CWJnNepc--n_AS7Xv.js → Google-CWJnNepc-Diak4buL.js} +2 -2
- package/dist/assets/{Google-CWJnNepc--n_AS7Xv.js.map → Google-CWJnNepc-Diak4buL.js.map} +1 -1
- package/dist/assets/{Google-CWJnNepc-legacy-B5xAFaAy.js → Google-CWJnNepc-legacy-Dm-kDgsn.js} +2 -2
- package/dist/assets/{Google-CWJnNepc-legacy-B5xAFaAy.js.map → Google-CWJnNepc-legacy-Dm-kDgsn.js.map} +1 -1
- package/dist/assets/{Google-CxfcrB_--legacy-DMVhlEwb.js → Google-CxfcrB_--legacy-MibdUZx-.js} +2 -2
- package/dist/assets/{Google-CxfcrB_--legacy-DMVhlEwb.js.map → Google-CxfcrB_--legacy-MibdUZx-.js.map} +1 -1
- package/dist/assets/{Google-CxfcrB_--Dm6mI0xL.js → Google-CxfcrB_--xOvNga8x.js} +2 -2
- package/dist/assets/{Google-CxfcrB_--Dm6mI0xL.js.map → Google-CxfcrB_--xOvNga8x.js.map} +1 -1
- package/dist/assets/{Google-DJVjCEDp-DLT08LHH.js → Google-DJVjCEDp-IPBzAnum.js} +2 -2
- package/dist/assets/{Google-DJVjCEDp-DLT08LHH.js.map → Google-DJVjCEDp-IPBzAnum.js.map} +1 -1
- package/dist/assets/{Google-DJVjCEDp-legacy-CX-gmQYg.js → Google-DJVjCEDp-legacy-B5Y13TX3.js} +2 -2
- package/dist/assets/{Google-DJVjCEDp-legacy-CX-gmQYg.js.map → Google-DJVjCEDp-legacy-B5Y13TX3.js.map} +1 -1
- package/dist/assets/{Google-dS9cvzKP-DsufHCWB.js → Google-dS9cvzKP-BE2X0tIf.js} +2 -2
- package/dist/assets/{Google-dS9cvzKP-DsufHCWB.js.map → Google-dS9cvzKP-BE2X0tIf.js.map} +1 -1
- package/dist/assets/{Google-dS9cvzKP-legacy-DpnzKrq2.js → Google-dS9cvzKP-legacy-55YxYzsA.js} +2 -2
- package/dist/assets/{Google-dS9cvzKP-legacy-DpnzKrq2.js.map → Google-dS9cvzKP-legacy-55YxYzsA.js.map} +1 -1
- package/dist/assets/{GridGraph-DoMBR-zc.js → GridGraph-DoIXQCjF.js} +2 -2
- package/dist/assets/{GridGraph-DoMBR-zc.js.map → GridGraph-DoIXQCjF.js.map} +1 -1
- package/dist/assets/{GridGraph-legacy-wcw3Xsv1.js → GridGraph-legacy-ClR9KV5p.js} +2 -2
- package/dist/assets/{GridGraph-legacy-wcw3Xsv1.js.map → GridGraph-legacy-ClR9KV5p.js.map} +1 -1
- package/dist/assets/{LeadCapture-BChrm7jZ.js → LeadCapture-BNqMqKPU.js} +2 -2
- package/dist/assets/{LeadCapture-BChrm7jZ.js.map → LeadCapture-BNqMqKPU.js.map} +1 -1
- package/dist/assets/{LeadCapture-legacy-Bp18__H7.js → LeadCapture-legacy-CWiD-zqE.js} +2 -2
- package/dist/assets/{LeadCapture-legacy-Bp18__H7.js.map → LeadCapture-legacy-CWiD-zqE.js.map} +1 -1
- package/dist/assets/{LocalContent-DfDE8a6m.js → LocalContent-BkN1iLgY.js} +2 -2
- package/dist/assets/{LocalContent-DfDE8a6m.js.map → LocalContent-BkN1iLgY.js.map} +1 -1
- package/dist/assets/{LocalContent-legacy-CbC4zHXr.js → LocalContent-legacy-DQV0bDZr.js} +2 -2
- package/dist/assets/{LocalContent-legacy-CbC4zHXr.js.map → LocalContent-legacy-DQV0bDZr.js.map} +1 -1
- package/dist/assets/{LocalDemographics-legacy-KphugBXo.js → LocalDemographics-legacy-BGSCwuXC.js} +2 -2
- package/dist/assets/{LocalDemographics-legacy-KphugBXo.js.map → LocalDemographics-legacy-BGSCwuXC.js.map} +1 -1
- package/dist/assets/{LocalDemographics-B0FoSqUG.js → LocalDemographics-oyV6-uMH.js} +2 -2
- package/dist/assets/{LocalDemographics-B0FoSqUG.js.map → LocalDemographics-oyV6-uMH.js.map} +1 -1
- package/dist/assets/{Mapbox-B9pa-75a-DqMgbPKZ.js → Mapbox-B9pa-75a-Mu6SCCcO.js} +2 -2
- package/dist/assets/{Mapbox-B9pa-75a-DqMgbPKZ.js.map → Mapbox-B9pa-75a-Mu6SCCcO.js.map} +1 -1
- package/dist/assets/{Mapbox-B9pa-75a-legacy-BZNbt29I.js → Mapbox-B9pa-75a-legacy-oHRMBwlz.js} +2 -2
- package/dist/assets/{Mapbox-B9pa-75a-legacy-BZNbt29I.js.map → Mapbox-B9pa-75a-legacy-oHRMBwlz.js.map} +1 -1
- package/dist/assets/{Mapbox-BpJHQDi--B3iPnnhl.js → Mapbox-BpJHQDi--fpQ7rycQ.js} +2 -2
- package/dist/assets/{Mapbox-BpJHQDi--B3iPnnhl.js.map → Mapbox-BpJHQDi--fpQ7rycQ.js.map} +1 -1
- package/dist/assets/{Mapbox-BpJHQDi--legacy-Dc3nHh68.js → Mapbox-BpJHQDi--legacy-B-XEQhTg.js} +2 -2
- package/dist/assets/{Mapbox-BpJHQDi--legacy-Dc3nHh68.js.map → Mapbox-BpJHQDi--legacy-B-XEQhTg.js.map} +1 -1
- package/dist/assets/{Mapbox-BtxA3en8-legacy-W_SEiuh4.js → Mapbox-BtxA3en8-legacy-BDW_QXt8.js} +2 -2
- package/dist/assets/{Mapbox-BtxA3en8-legacy-W_SEiuh4.js.map → Mapbox-BtxA3en8-legacy-BDW_QXt8.js.map} +1 -1
- package/dist/assets/{Mapbox-BtxA3en8-CUy50TN7.js → Mapbox-BtxA3en8-mt59xOWa.js} +2 -2
- package/dist/assets/{Mapbox-BtxA3en8-CUy50TN7.js.map → Mapbox-BtxA3en8-mt59xOWa.js.map} +1 -1
- package/dist/assets/{Mapbox-CDUr5XKG-BB6075Va.js → Mapbox-CDUr5XKG-Cw2WZwjO.js} +2 -2
- package/dist/assets/{Mapbox-CDUr5XKG-BB6075Va.js.map → Mapbox-CDUr5XKG-Cw2WZwjO.js.map} +1 -1
- package/dist/assets/{Mapbox-CDUr5XKG-legacy-irpdi8fD.js → Mapbox-CDUr5XKG-legacy-CrA0lr7q.js} +2 -2
- package/dist/assets/{Mapbox-CDUr5XKG-legacy-irpdi8fD.js.map → Mapbox-CDUr5XKG-legacy-CrA0lr7q.js.map} +1 -1
- package/dist/assets/{Mapbox-DwSofiet-C2743JRV.js → Mapbox-DwSofiet-D9fQcbet.js} +2 -2
- package/dist/assets/{Mapbox-DwSofiet-C2743JRV.js.map → Mapbox-DwSofiet-D9fQcbet.js.map} +1 -1
- package/dist/assets/{Mapbox-DwSofiet-legacy-CWDGbtkF.js → Mapbox-DwSofiet-legacy-B_n98J-f.js} +2 -2
- package/dist/assets/{Mapbox-DwSofiet-legacy-CWDGbtkF.js.map → Mapbox-DwSofiet-legacy-B_n98J-f.js.map} +1 -1
- package/dist/assets/{Maptiler-CYFdJNvN-B1AyicNq.js → Maptiler-CYFdJNvN-BOIW1DRj.js} +2 -2
- package/dist/assets/{Maptiler-CYFdJNvN-B1AyicNq.js.map → Maptiler-CYFdJNvN-BOIW1DRj.js.map} +1 -1
- package/dist/assets/{Maptiler-CYFdJNvN-legacy-C03mDa24.js → Maptiler-CYFdJNvN-legacy-DaVeeAW_.js} +2 -2
- package/dist/assets/{Maptiler-CYFdJNvN-legacy-C03mDa24.js.map → Maptiler-CYFdJNvN-legacy-DaVeeAW_.js.map} +1 -1
- package/dist/assets/{Maptiler-Ce0L0Kac-Bk8J53ab.js → Maptiler-Ce0L0Kac-C0QBCQj_.js} +2 -2
- package/dist/assets/{Maptiler-Ce0L0Kac-Bk8J53ab.js.map → Maptiler-Ce0L0Kac-C0QBCQj_.js.map} +1 -1
- package/dist/assets/{Maptiler-Ce0L0Kac-legacy-Cpl39Y9p.js → Maptiler-Ce0L0Kac-legacy-Bg_z1W1q.js} +2 -2
- package/dist/assets/{Maptiler-Ce0L0Kac-legacy-Cpl39Y9p.js.map → Maptiler-Ce0L0Kac-legacy-Bg_z1W1q.js.map} +1 -1
- package/dist/assets/{Maptiler-CkoZpE04-BojR3Uld.js → Maptiler-CkoZpE04-CGa-MoE2.js} +2 -2
- package/dist/assets/{Maptiler-CkoZpE04-BojR3Uld.js.map → Maptiler-CkoZpE04-CGa-MoE2.js.map} +1 -1
- package/dist/assets/{Maptiler-CkoZpE04-legacy-D9I4mWbi.js → Maptiler-CkoZpE04-legacy-BTiD7zl7.js} +2 -2
- package/dist/assets/{Maptiler-CkoZpE04-legacy-D9I4mWbi.js.map → Maptiler-CkoZpE04-legacy-BTiD7zl7.js.map} +1 -1
- package/dist/assets/{Maptiler-CyB_-uzB-DL4hI3Us.js → Maptiler-CyB_-uzB-DLX_n2jU.js} +2 -2
- package/dist/assets/{Maptiler-CyB_-uzB-DL4hI3Us.js.map → Maptiler-CyB_-uzB-DLX_n2jU.js.map} +1 -1
- package/dist/assets/{Maptiler-CyB_-uzB-legacy-CImIzPc-.js → Maptiler-CyB_-uzB-legacy-Dq9asuPT.js} +2 -2
- package/dist/assets/{Maptiler-CyB_-uzB-legacy-CImIzPc-.js.map → Maptiler-CyB_-uzB-legacy-Dq9asuPT.js.map} +1 -1
- package/dist/assets/{Maptiler-DsgKmpne-C0Q3IRjD.js → Maptiler-DsgKmpne-CfP11fz9.js} +2 -2
- package/dist/assets/{Maptiler-DsgKmpne-C0Q3IRjD.js.map → Maptiler-DsgKmpne-CfP11fz9.js.map} +1 -1
- package/dist/assets/{Maptiler-DsgKmpne-legacy-m2VgqB2H.js → Maptiler-DsgKmpne-legacy-CGBmsCz9.js} +2 -2
- package/dist/assets/{Maptiler-DsgKmpne-legacy-m2VgqB2H.js.map → Maptiler-DsgKmpne-legacy-CGBmsCz9.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Drkpm3bl-SOq3C2M8.js → MarkerIcon-Drkpm3bl-D3-9sE3p.js} +2 -2
- package/dist/assets/{MarkerIcon-Drkpm3bl-SOq3C2M8.js.map → MarkerIcon-Drkpm3bl-D3-9sE3p.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Drkpm3bl-legacy-Pr3PVQOF.js → MarkerIcon-Drkpm3bl-legacy--eQ8ldVm.js} +2 -2
- package/dist/assets/{MarkerIcon-Drkpm3bl-legacy-Pr3PVQOF.js.map → MarkerIcon-Drkpm3bl-legacy--eQ8ldVm.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-BMMeuDq1.js → NeighborhoodCard-BbsQyDyL.js} +2 -2
- package/dist/assets/{NeighborhoodCard-BMMeuDq1.js.map → NeighborhoodCard-BbsQyDyL.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-legacy-iFrR-F6M.js → NeighborhoodCard-legacy-C7H259NL.js} +2 -2
- package/dist/assets/{NeighborhoodCard-legacy-iFrR-F6M.js.map → NeighborhoodCard-legacy-C7H259NL.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-CX2zxhSJ.js → NeighborhoodCharacteristics-BXAWE_Yr.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-CX2zxhSJ.js.map → NeighborhoodCharacteristics-BXAWE_Yr.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-legacy-2J2zsQBh.js → NeighborhoodCharacteristics-legacy-qOhWab8U.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-legacy-2J2zsQBh.js.map → NeighborhoodCharacteristics-legacy-qOhWab8U.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-CHSrL_pE.js → NeighborhoodDemographics-BckV-fh5.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-CHSrL_pE.js.map → NeighborhoodDemographics-BckV-fh5.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-legacy-BBZLXCYb.js → NeighborhoodDemographics-legacy-lMTE4mul.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-legacy-BBZLXCYb.js.map → NeighborhoodDemographics-legacy-lMTE4mul.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-B5KAxVo_.js → NeighborhoodFeatured-BmoD9P_D.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-B5KAxVo_.js.map → NeighborhoodFeatured-BmoD9P_D.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-legacy--bCKhxiI.js → NeighborhoodFeatured-legacy-CqIwxl9G.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-legacy--bCKhxiI.js.map → NeighborhoodFeatured-legacy-CqIwxl9G.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-C_1mXlr3.js → NeighborhoodHero-Bv5VihH-.js} +2 -2
- package/dist/assets/{NeighborhoodHero-C_1mXlr3.js.map → NeighborhoodHero-Bv5VihH-.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-legacy-BZYi5fC3.js → NeighborhoodHero-legacy-CUECyttR.js} +2 -2
- package/dist/assets/{NeighborhoodHero-legacy-BZYi5fC3.js.map → NeighborhoodHero-legacy-CUECyttR.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-npuDYWm-.js → NeighborhoodHighlights-BIz0hvb3.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-npuDYWm-.js.map → NeighborhoodHighlights-BIz0hvb3.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-legacy-BElhduG4.js → NeighborhoodHighlights-legacy-Dw8oNzJk.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-legacy-BElhduG4.js.map → NeighborhoodHighlights-legacy-Dw8oNzJk.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-DTIk4UJb.js → NeighborhoodMap-DGZzObNH.js} +2 -2
- package/dist/assets/{NeighborhoodMap-DTIk4UJb.js.map → NeighborhoodMap-DGZzObNH.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-legacy-2JbG9XBi.js → NeighborhoodMap-legacy-B2jA9frj.js} +2 -2
- package/dist/assets/{NeighborhoodMap-legacy-2JbG9XBi.js.map → NeighborhoodMap-legacy-B2jA9frj.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-at4L-PT7.js → NeighborhoodMarketTrends-DUxRgP1q.js} +3 -3
- package/dist/assets/{NeighborhoodMarketTrends-at4L-PT7.js.map → NeighborhoodMarketTrends-DUxRgP1q.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-legacy-DVYaKAVN.js → NeighborhoodMarketTrends-legacy-DPc2C4aT.js} +2 -2
- package/dist/assets/{NeighborhoodMarketTrends-legacy-DVYaKAVN.js.map → NeighborhoodMarketTrends-legacy-DPc2C4aT.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-pArwA2Uu.js → NeighborhoodMatch-BW1MPWLo.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-pArwA2Uu.js.map → NeighborhoodMatch-BW1MPWLo.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-legacy-Bnjs8Qcn.js → NeighborhoodMatch-legacy-DkXrqfhC.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-legacy-Bnjs8Qcn.js.map → NeighborhoodMatch-legacy-DkXrqfhC.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-CSlEwRIt.js → NeighborhoodPropertyValueDrivers-BtBv0wb7.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-CSlEwRIt.js.map → NeighborhoodPropertyValueDrivers-BtBv0wb7.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-I2XMZg__.js → NeighborhoodPropertyValueDrivers-legacy-BJuSxrVc.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-I2XMZg__.js.map → NeighborhoodPropertyValueDrivers-legacy-BJuSxrVc.js.map} +1 -1
- package/dist/assets/{NeighborhoodSchools-BsHk_jqd.js → NeighborhoodSchools-BZ66o_Gh.js} +2 -2
- package/dist/assets/{NeighborhoodSchools-BsHk_jqd.js.map → NeighborhoodSchools-BZ66o_Gh.js.map} +1 -1
- package/dist/assets/{NeighborhoodSchools-legacy-Mjn5R_mx.js → NeighborhoodSchools-legacy-Bc58c80Y.js} +2 -2
- package/dist/assets/{NeighborhoodSchools-legacy-Mjn5R_mx.js.map → NeighborhoodSchools-legacy-Bc58c80Y.js.map} +1 -1
- package/dist/assets/{NeighborhoodShowcase-qX4IDeNp.js → NeighborhoodShowcase-Dg1tIkbn.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-qX4IDeNp.js.map → NeighborhoodShowcase-Dg1tIkbn.js.map} +1 -1
- package/dist/assets/{NeighborhoodShowcase-legacy-DQZQfReW.js → NeighborhoodShowcase-legacy-CoSTp16i.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-legacy-DQZQfReW.js.map → NeighborhoodShowcase-legacy-CoSTp16i.js.map} +1 -1
- package/dist/assets/{NoDataContent-scqbLzmG.js → NoDataContent-CLEOr0tN.js} +2 -2
- package/dist/assets/{NoDataContent-scqbLzmG.js.map → NoDataContent-CLEOr0tN.js.map} +1 -1
- package/dist/assets/{NoDataContent-legacy-Dt-Fmme7.js → NoDataContent-legacy-CSjG4pMx.js} +2 -2
- package/dist/assets/{NoDataContent-legacy-Dt-Fmme7.js.map → NoDataContent-legacy-CSjG4pMx.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-CoWkpS6t.js → ResizeWrapper-CacQc137.js} +2 -2
- package/dist/assets/{ResizeWrapper-CoWkpS6t.js.map → ResizeWrapper-CacQc137.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-legacy-dNB7wg4R.js → ResizeWrapper-legacy-Bq7weNwm.js} +2 -2
- package/dist/assets/{ResizeWrapper-legacy-dNB7wg4R.js.map → ResizeWrapper-legacy-Bq7weNwm.js.map} +1 -1
- package/dist/assets/{ScoreCardList-B2AnINHe.js → ScoreCardList-ByN2xpqN.js} +2 -2
- package/dist/assets/{ScoreCardList-B2AnINHe.js.map → ScoreCardList-ByN2xpqN.js.map} +1 -1
- package/dist/assets/{ScoreCardList-legacy-Caqgt45w.js → ScoreCardList-legacy-DL0dIYtn.js} +2 -2
- package/dist/assets/{ScoreCardList-legacy-Caqgt45w.js.map → ScoreCardList-legacy-DL0dIYtn.js.map} +1 -1
- package/dist/assets/{ScoreIcon-DGty1swf.js → ScoreIcon-C8SDoqRb.js} +2 -2
- package/dist/assets/{ScoreIcon-DGty1swf.js.map → ScoreIcon-C8SDoqRb.js.map} +1 -1
- package/dist/assets/{ScoreIcon-legacy-CFr0rGfR.js → ScoreIcon-legacy-DeeA6c3d.js} +2 -2
- package/dist/assets/{ScoreIcon-legacy-CFr0rGfR.js.map → ScoreIcon-legacy-DeeA6c3d.js.map} +1 -1
- package/dist/assets/{Testing-BQ7AFsvh-Dad79Au3.js → Testing-BQ7AFsvh-C64BDPGH.js} +2 -2
- package/dist/assets/{Testing-BQ7AFsvh-Dad79Au3.js.map → Testing-BQ7AFsvh-C64BDPGH.js.map} +1 -1
- package/dist/assets/{Testing-BQ7AFsvh-legacy-CSvYtw_E.js → Testing-BQ7AFsvh-legacy-DglzmwFN.js} +2 -2
- package/dist/assets/{Testing-BQ7AFsvh-legacy-CSvYtw_E.js.map → Testing-BQ7AFsvh-legacy-DglzmwFN.js.map} +1 -1
- package/dist/assets/{Testing-CZDor_UM-DDuitVO1.js → Testing-CZDor_UM-DzK0KC-I.js} +2 -2
- package/dist/assets/{Testing-CZDor_UM-DDuitVO1.js.map → Testing-CZDor_UM-DzK0KC-I.js.map} +1 -1
- package/dist/assets/{Testing-CZDor_UM-legacy-CFevlGP3.js → Testing-CZDor_UM-legacy-Cc5jS1TO.js} +2 -2
- package/dist/assets/{Testing-CZDor_UM-legacy-CFevlGP3.js.map → Testing-CZDor_UM-legacy-Cc5jS1TO.js.map} +1 -1
- package/dist/assets/{Testing-CxwUbSxG-CD3fsBYh.js → Testing-CxwUbSxG-B5AMQcKI.js} +2 -2
- package/dist/assets/{Testing-CxwUbSxG-CD3fsBYh.js.map → Testing-CxwUbSxG-B5AMQcKI.js.map} +1 -1
- package/dist/assets/{Testing-CxwUbSxG-legacy-BEVnAXjX.js → Testing-CxwUbSxG-legacy-BiXBuWxN.js} +2 -2
- package/dist/assets/{Testing-CxwUbSxG-legacy-BEVnAXjX.js.map → Testing-CxwUbSxG-legacy-BiXBuWxN.js.map} +1 -1
- package/dist/assets/{Testing-vfABKYEg-DA1P9rcG.js → Testing-vfABKYEg-CaIxJQwf.js} +2 -2
- package/dist/assets/{Testing-vfABKYEg-DA1P9rcG.js.map → Testing-vfABKYEg-CaIxJQwf.js.map} +1 -1
- package/dist/assets/{Testing-vfABKYEg-legacy-BtSxwbJW.js → Testing-vfABKYEg-legacy-DP5MFU2J.js} +2 -2
- package/dist/assets/{Testing-vfABKYEg-legacy-BtSxwbJW.js.map → Testing-vfABKYEg-legacy-DP5MFU2J.js.map} +1 -1
- package/dist/assets/{Testing-wan6urXy-Bg4sYs7c.js → Testing-wan6urXy-7l16xZjm.js} +2 -2
- package/dist/assets/{Testing-wan6urXy-Bg4sYs7c.js.map → Testing-wan6urXy-7l16xZjm.js.map} +1 -1
- package/dist/assets/{Testing-wan6urXy-legacy-BbL_74Gq.js → Testing-wan6urXy-legacy-C-8TofFN.js} +2 -2
- package/dist/assets/{Testing-wan6urXy-legacy-BbL_74Gq.js.map → Testing-wan6urXy-legacy-C-8TofFN.js.map} +1 -1
- package/dist/assets/{TitleHeader-BlWv-Vn5.js → TitleHeader-Bg-iB4qi.js} +2 -2
- package/dist/assets/{TitleHeader-BlWv-Vn5.js.map → TitleHeader-Bg-iB4qi.js.map} +1 -1
- package/dist/assets/{TitleHeader-legacy-C3IaKPzC.js → TitleHeader-legacy-OyxHyZJv.js} +2 -2
- package/dist/assets/{TitleHeader-legacy-C3IaKPzC.js.map → TitleHeader-legacy-OyxHyZJv.js.map} +1 -1
- package/dist/assets/{Trans-CYxIxTBf.js → Trans-D9IPXQBZ.js} +2 -2
- package/dist/assets/{Trans-CYxIxTBf.js.map → Trans-D9IPXQBZ.js.map} +1 -1
- package/dist/assets/{Trans-legacy-BW24uumM.js → Trans-legacy-NUMpKf4g.js} +2 -2
- package/dist/assets/{Trans-legacy-BW24uumM.js.map → Trans-legacy-NUMpKf4g.js.map} +1 -1
- package/dist/assets/{ValidateOptions-C00hJqCN.js → ValidateOptions-CHpsZ-kR.js} +2 -2
- package/dist/assets/{ValidateOptions-C00hJqCN.js.map → ValidateOptions-CHpsZ-kR.js.map} +1 -1
- package/dist/assets/{ValidateOptions-legacy-DQF5TYHw.js → ValidateOptions-legacy-Dsep8qdV.js} +2 -2
- package/dist/assets/{ValidateOptions-legacy-DQF5TYHw.js.map → ValidateOptions-legacy-Dsep8qdV.js.map} +1 -1
- package/dist/assets/{dist-BhLmWB7-.js → dist-LjV2lD3w.js} +2 -2
- package/dist/assets/{dist-BhLmWB7-.js.map → dist-LjV2lD3w.js.map} +1 -1
- package/dist/assets/{dist-legacy-DiyEMMmk.js → dist-legacy-DoPwJP1x.js} +2 -2
- package/dist/assets/{dist-legacy-DiyEMMmk.js.map → dist-legacy-DoPwJP1x.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-BTXXPYl6.js → getMapProviderConfig-C0wqaxwl.js} +3 -3
- package/dist/assets/{getMapProviderConfig-BTXXPYl6.js.map → getMapProviderConfig-C0wqaxwl.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-legacy-BflZAmBt.js → getMapProviderConfig-legacy-Bq44j1zG.js} +2 -2
- package/dist/assets/{getMapProviderConfig-legacy-BflZAmBt.js.map → getMapProviderConfig-legacy-Bq44j1zG.js.map} +1 -1
- package/dist/assets/{getPaddedBounds-FpsQymJC-DyBASi-q.js → getPaddedBounds-FpsQymJC-BKh4ocDK.js} +2 -2
- package/dist/assets/{getPaddedBounds-FpsQymJC-DyBASi-q.js.map → getPaddedBounds-FpsQymJC-BKh4ocDK.js.map} +1 -1
- package/dist/assets/{getPaddedBounds-FpsQymJC-legacy-CcVw9K1A.js → getPaddedBounds-FpsQymJC-legacy-BffTg2N1.js} +2 -2
- package/dist/assets/{getPaddedBounds-FpsQymJC-legacy-CcVw9K1A.js.map → getPaddedBounds-FpsQymJC-legacy-BffTg2N1.js.map} +1 -1
- package/dist/assets/globals-Bo3rWV-h.css +1 -0
- package/dist/assets/globals-legacy-BHUBCckM.js +1 -0
- package/dist/assets/index-DuYul3n8.js +3 -0
- package/dist/assets/index-DuYul3n8.js.map +1 -0
- package/dist/assets/index-legacy-A0tsrrZt.js +2 -0
- package/dist/assets/index-legacy-A0tsrrZt.js.map +1 -0
- package/dist/assets/{index.es-ZoI1FSEA.js → index.es-C1Gm4nra.js} +2 -2
- package/dist/assets/{index.es-ZoI1FSEA.js.map → index.es-C1Gm4nra.js.map} +1 -1
- package/dist/assets/{index.es-legacy-DkmSd2Jr.js → index.es-legacy-DzobqkKH.js} +2 -2
- package/dist/assets/{index.es-legacy-DkmSd2Jr.js.map → index.es-legacy-DzobqkKH.js.map} +1 -1
- package/dist/assets/{mapbox-BiIB2Zbq-BeMYbC0c.js → mapbox-BiIB2Zbq-UeXogaFk.js} +2 -2
- package/dist/assets/{mapbox-BiIB2Zbq-BeMYbC0c.js.map → mapbox-BiIB2Zbq-UeXogaFk.js.map} +1 -1
- package/dist/assets/{mapbox-BiIB2Zbq-legacy-DMJfvwWV.js → mapbox-BiIB2Zbq-legacy-5zKVSMtD.js} +2 -2
- package/dist/assets/{mapbox-BiIB2Zbq-legacy-DMJfvwWV.js.map → mapbox-BiIB2Zbq-legacy-5zKVSMtD.js.map} +1 -1
- package/dist/assets/{maplibre-Cx0I-z8h-D7cnsqP-.js → maplibre-Cx0I-z8h-B0gv6DfU.js} +2 -2
- package/dist/assets/{maplibre-Cx0I-z8h-D7cnsqP-.js.map → maplibre-Cx0I-z8h-B0gv6DfU.js.map} +1 -1
- package/dist/assets/{maplibre-Cx0I-z8h-legacy-DR-mbMzx.js → maplibre-Cx0I-z8h-legacy-BG8HUyDf.js} +2 -2
- package/dist/assets/{maplibre-Cx0I-z8h-legacy-DR-mbMzx.js.map → maplibre-Cx0I-z8h-legacy-BG8HUyDf.js.map} +1 -1
- package/dist/assets/neighborhood-fallback-Bx8UkjEB.js.map +1 -1
- package/dist/assets/neighborhood-fallback-legacy-BjzkGm-m.js.map +1 -1
- package/dist/assets/{polyfills-legacy-KV91PI-U.js → polyfills-legacy-DWbaINOF.js} +2 -2
- package/dist/assets/polyfills-legacy-DWbaINOF.js.map +1 -0
- package/dist/assets/{sdks-CylBh5qd.js → sdks-C6AQk2vE.js} +2 -2
- package/dist/assets/{sdks-CylBh5qd.js.map → sdks-C6AQk2vE.js.map} +1 -1
- package/dist/assets/{sdks-legacy-eEWqNDw9.js → sdks-legacy-BMudUPgz.js} +2 -2
- package/dist/assets/{sdks-legacy-eEWqNDw9.js.map → sdks-legacy-BMudUPgz.js.map} +1 -1
- package/dist/assets/{styles-DCI3UJny-D5gfaFag.js → styles-DCI3UJny-BwUIG3fK.js} +2 -2
- package/dist/assets/{styles-DCI3UJny-D5gfaFag.js.map → styles-DCI3UJny-BwUIG3fK.js.map} +1 -1
- package/dist/assets/{styles-DCI3UJny-legacy-B65fXxj8.js → styles-DCI3UJny-legacy-C8yK-_bL.js} +2 -2
- package/dist/assets/{styles-DCI3UJny-legacy-B65fXxj8.js.map → styles-DCI3UJny-legacy-C8yK-_bL.js.map} +1 -1
- package/dist/assets/{styles-DMA_7NV0-1MHnrNSZ.js → styles-DMA_7NV0-D56ka4_Y.js} +2 -2
- package/dist/assets/{styles-DMA_7NV0-1MHnrNSZ.js.map → styles-DMA_7NV0-D56ka4_Y.js.map} +1 -1
- package/dist/assets/{styles-DMA_7NV0-legacy-BsSMfe-6.js → styles-DMA_7NV0-legacy-CBhXzFvt.js} +2 -2
- package/dist/assets/{styles-DMA_7NV0-legacy-BsSMfe-6.js.map → styles-DMA_7NV0-legacy-CBhXzFvt.js.map} +1 -1
- package/dist/assets/{useDemographicsData-DdwPh1al.js → useDemographicsData-BCiAVUly.js} +2 -2
- package/dist/assets/{useDemographicsData-DdwPh1al.js.map → useDemographicsData-BCiAVUly.js.map} +1 -1
- package/dist/assets/{useDemographicsData-legacy-CbztLovJ.js → useDemographicsData-legacy-DUgfQmjN.js} +2 -2
- package/dist/assets/{useDemographicsData-legacy-CbztLovJ.js.map → useDemographicsData-legacy-DUgfQmjN.js.map} +1 -1
- package/dist/assets/{useGeographies-CYqI3icF.js → useGeographies-D0Og6wGn.js} +2 -2
- package/dist/assets/{useGeographies-CYqI3icF.js.map → useGeographies-D0Og6wGn.js.map} +1 -1
- package/dist/assets/{useGeographies-legacy-CYCHt3Zt.js → useGeographies-legacy-CzZb8wbH.js} +2 -2
- package/dist/assets/{useGeographies-legacy-CYCHt3Zt.js.map → useGeographies-legacy-CzZb8wbH.js.map} +1 -1
- package/dist/assets/{useIsMobile-Bz4RXQtS.js → useIsMobile-DFRT0gA-.js} +2 -2
- package/dist/assets/{useIsMobile-Bz4RXQtS.js.map → useIsMobile-DFRT0gA-.js.map} +1 -1
- package/dist/assets/{useIsMobile-legacy-DfzhaV7o.js → useIsMobile-legacy-DmiaVB7P.js} +2 -2
- package/dist/assets/{useIsMobile-legacy-DfzhaV7o.js.map → useIsMobile-legacy-DmiaVB7P.js.map} +1 -1
- package/dist/assets/{useLocation-yHkA-hA5.js → useLocation-iMAOqyBM.js} +2 -2
- package/dist/assets/{useLocation-yHkA-hA5.js.map → useLocation-iMAOqyBM.js.map} +1 -1
- package/dist/assets/{useLocation-legacy-DllAtcuN.js → useLocation-legacy-Df4ZfKNB.js} +2 -2
- package/dist/assets/{useLocation-legacy-DllAtcuN.js.map → useLocation-legacy-Df4ZfKNB.js.map} +1 -1
- package/dist/assets/{useProfiles-NWzdipyr.js → useProfiles-Cy-BsR-B.js} +2 -2
- package/dist/assets/{useProfiles-NWzdipyr.js.map → useProfiles-Cy-BsR-B.js.map} +1 -1
- package/dist/assets/{useProfiles-legacy-D2vMNSmu.js → useProfiles-legacy-D_7Zq231.js} +2 -2
- package/dist/assets/{useProfiles-legacy-D2vMNSmu.js.map → useProfiles-legacy-D_7Zq231.js.map} +1 -1
- package/dist/assets/{useSchools-Dj65KKyc.js → useSchools-CDRcjANc.js} +2 -2
- package/dist/assets/{useSchools-Dj65KKyc.js.map → useSchools-CDRcjANc.js.map} +1 -1
- package/dist/assets/{useSchools-legacy-BxcCUrBy.js → useSchools-legacy-WeSe4BEl.js} +2 -2
- package/dist/assets/{useSchools-legacy-BxcCUrBy.js.map → useSchools-legacy-WeSe4BEl.js.map} +1 -1
- package/dist/assets/{useScores-_OWkYR2Y.js → useScores-_UGpgNYY.js} +2 -2
- package/dist/assets/{useScores-_OWkYR2Y.js.map → useScores-_UGpgNYY.js.map} +1 -1
- package/dist/assets/{useScores-legacy-BDgM6HNV.js → useScores-legacy-BDhM4zGM.js} +2 -2
- package/dist/assets/{useScores-legacy-BDgM6HNV.js.map → useScores-legacy-BDhM4zGM.js.map} +1 -1
- package/dist/assets/{utils-CV8G-gCd-BJ0ms7Ic.js → utils-CV8G-gCd-BfqAiww7.js} +2 -2
- package/dist/assets/{utils-CV8G-gCd-BJ0ms7Ic.js.map → utils-CV8G-gCd-BfqAiww7.js.map} +1 -1
- package/dist/assets/{utils-CV8G-gCd-legacy-CyvVi-ac.js → utils-CV8G-gCd-legacy-BrofeRF5.js} +2 -2
- package/dist/assets/{utils-CV8G-gCd-legacy-CyvVi-ac.js.map → utils-CV8G-gCd-legacy-BrofeRF5.js.map} +1 -1
- package/dist/index.html +3 -3
- package/dist/types/main.js +3 -0
- package/dist/types/main.js.map +1 -1
- package/dist/types/utils/recoverCssPreload/index.d.ts +2 -0
- package/dist/types/utils/recoverCssPreload/index.d.ts.map +1 -0
- package/dist/types/utils/recoverCssPreload/index.js +96 -0
- package/dist/types/utils/recoverCssPreload/index.js.map +1 -0
- package/dist/types/utils/recoverCssPreload/index.test.d.ts +2 -0
- package/dist/types/utils/recoverCssPreload/index.test.d.ts.map +1 -0
- package/dist/types/utils/recoverCssPreload/index.test.js +111 -0
- package/dist/types/utils/recoverCssPreload/index.test.js.map +1 -0
- package/package.json +1 -1
- package/dist/assets/globals-CqxFv-_n.css +0 -1
- package/dist/assets/globals-legacy-Dv3_O5ef.js +0 -1
- package/dist/assets/index-DxqnJfnT.js +0 -3
- package/dist/assets/index-DxqnJfnT.js.map +0 -1
- package/dist/assets/index-legacy-DeNa5JFf.js +0 -2
- package/dist/assets/index-legacy-DeNa5JFf.js.map +0 -1
- package/dist/assets/polyfills-legacy-KV91PI-U.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborhoodMap-legacy-2JbG9XBi.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-B2jA9frj.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-at4L-PT7.js → NeighborhoodMarketTrends-DUxRgP1q.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 t}from"./google-maps-vendor-BeDgURNz.js";import{a,c as r,d as s,f as i,g as n,h as l,i as o,m as d,n as c,o as m,p,r as u,t as h,u as _}from"./sdks-CylBh5qd.js";import{t as g}from"./CaretDown.es-DPspOb5f.js";import{n as v,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 k,L as b,N as M,P as C,R as N,U as A,V as w,Y as I,_ as T,c as E,g as V,h as H,i as L,m as Z,n as D,p as O,q as S,t as P,z as R}from"./index-DxqnJfnT.js";import{t as $}from"./useGeographies-CYqI3icF.js";import{t as F}from"./Attribution-WqAVcFf4.js";/* empty css */import{t as q}from"./ResizeWrapper-CoWkpS6t.js";import{t as K}from"./ValidateOptions-C00hJqCN.js";import{t as G}from"./useIsMobile-Bz4RXQtS.js";import{i as B,n as z,r as W,t as U}from"./dist-BhLmWB7-.js";import{t as Y}from"./TitleHeader-BlWv-Vn5.js";import{t as X}from"./NoDataContent-scqbLzmG.js";var J=e(t(),1),Q=new Map([["bold",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.createElement("path",{d:"M200,144l-72,72L56,144Z",opacity:"0.2"}),J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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"}))]]),ee=new Map([["bold",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.createElement("path",{d:"M216,116.69V216H152V152H104v64H40V116.69l82.34-82.35a8,8,0,0,1,11.32,0Z",opacity:"0.2"}),J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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=J.forwardRef((e,t)=>J.createElement(j,{ref:t,...e,weights:Q}));ae.displayName="ArrowDownIcon";var re=J.forwardRef((e,t)=>J.createElement(j,{ref:t,...e,weights:ee}));re.displayName="HouseLineIcon";var se=J.forwardRef((e,t)=>J.createElement(j,{ref:t,...e,weights:te}));se.displayName="InfoIcon";var ie=(e,t="en-US",a="USD",r=0)=>new Intl.NumberFormat(t,{style:"currency",currency:a,maximumFractionDigits:r}).format(e??0),ne=function(e){return e.marketConditions="market-conditions",e.recentTrends="recent-trends",e.currentActivity="current-activity",e}({}),le=function(e){return e.SDK_VIEWED="neighborhood-market-trends-Viewed",e.TAB_CLICKED="neighborhood-market-trends-Tab-Clicked",e}({}),oe=function(e){return e.SDK_VIEWED="sdk_viewed",e.CATEGORY_SELECTED="category_selected",e}({}),de={all:()=>["marketActivity"],list:e=>[...de.all(),e]};var ce=I(),me=J.createContext({}),pe=()=>(0,J.useContext)(me),ue=({children:e})=>{const{sdkState:t}=D(),a=t.globalOptions?.locale||"en",r=m(),s=(0,J.useMemo)(()=>{const e=[],t=new Date;for(let a=0;a<=12;a+=1){const a=t.getFullYear(),r=t.getMonth(),s=`${a}-${String(r+1).padStart(2,"0")}`;e.push(s),t.setMonth(t.getMonth()-1)}return e.reverse()},[]);L(()=>{r.postEvent({eventType:le.SDK_VIEWED}),r.trackAnalyticsEvent({eventName:oe.SDK_VIEWED})});const{isLoading:i,data:n}=$({location:{lat:void 0===t.options?.geographyId?t.options?.lat:void 0,lng:void 0===t.options?.geographyId?t.options?.lng:void 0},geogID:t.options?.geographyId||void 0,externalId:t?.globalOptions?.externalId}),{geographyId:d,geography:c}=(0,J.useMemo)(()=>{const e=Object.entries(n||{});return{geographyId:e[0]?.[0],geography:e[0]?.[1]}},[i,n]),{data:p,isFetching:u}=function({geographyId:e,propertyTypes:t,intervals:a}){const{client:r}=o(),s=P();return l({queryKey:de.list({geogId:e}),queryFn:async()=>{const s=await r.getMarketActivity({geogId:e,propertyTypes:t,intervals:a});return void 0===s?null:s},enabled:!(!e||!s.marketTrendsSdk)})}({geographyId:d,propertyTypes:["all_residential_properties"],intervals:["30d","31-60d","12m","13-24m",...s]}),h=(0,J.useMemo)(()=>{const e=p?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count||0,t=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?t/e:0},[p]),_=(0,J.useMemo)(()=>i||u,[i,u]),g=(0,J.useMemo)(()=>({isLoading:_,title:t.options?.title,homesSoldPercentage:h,marketActivity:p??null,appearance:t?.options?.appearance,locale:a,geography:c,hideAttribution:t.options?.hideAttribution,omitTabs:t.options?.omitTabs}),[p,_,h,a,c,d,t.options?.title,t.options?.hideAttribution,t.options?.omitTabs]);return(0,ce.jsx)(me.Provider,{value:g,children:e})},he="Collapsible",[_e,ge]=f(he),[ve,ye]=_e(he),xe=J.forwardRef((e,t)=>{const{__scopeCollapsible:a,open:r,defaultOpen:s,disabled:i,onOpenChange:n,...l}=e,[o,d]=M({prop:r,defaultProp:s??!1,onChange:n,caller:he});return(0,ce.jsx)(ve,{scope:a,disabled:i,contentId:C(),open:o,onOpenToggle:J.useCallback(()=>d(e=>!e),[d]),children:(0,ce.jsx)(b.div,{"data-state":Ce(o),"data-disabled":i?"":void 0,...l,ref:t})})});xe.displayName=he;var je="CollapsibleTrigger",fe=J.forwardRef((e,t)=>{const{__scopeCollapsible:a,...r}=e,s=ye(je,a);return(0,ce.jsx)(b.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":Ce(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:t,onClick:w(e.onClick,s.onOpenToggle)})});fe.displayName=je;var ke="CollapsibleContent",be=J.forwardRef((e,t)=>{const{forceMount:a,...r}=e,s=ye(ke,e.__scopeCollapsible);return(0,ce.jsx)(T,{present:a||s.open,children:({present:e})=>(0,ce.jsx)(Me,{...r,ref:t,present:e})})});be.displayName=ke;var Me=J.forwardRef((e,t)=>{const{__scopeCollapsible:a,present:r,children:s,...i}=e,n=ye(ke,a),[l,o]=J.useState(r),d=J.useRef(null),c=A(t,d),m=J.useRef(0),p=m.current,u=J.useRef(0),h=u.current,_=n.open||l,g=J.useRef(_),v=J.useRef(void 0);return J.useEffect(()=>{const e=requestAnimationFrame(()=>g.current=!1);return()=>cancelAnimationFrame(e)},[]),k(()=>{const e=d.current;if(e){v.current=v.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";const t=e.getBoundingClientRect();m.current=t.height,u.current=t.width,g.current||(e.style.transitionDuration=v.current.transitionDuration,e.style.animationName=v.current.animationName),o(r)}},[n.open,r]),(0,ce.jsx)(b.div,{"data-state":Ce(n.open),"data-disabled":n.disabled?"":void 0,id:n.contentId,hidden:!_,...i,ref:c,style:{"--radix-collapsible-content-height":p?`${p}px`:void 0,"--radix-collapsible-content-width":h?`${h}px`:void 0,...e.style},children:_&&s})});function Ce(e){return e?"open":"closed"}var Ne=xe,Ae=fe,we=be,Ie="Accordion",Te=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Ee,Ve,He]=R(Ie),[Le,Ze]=f(Ie,[He,ge]),De=ge(),Oe=J.forwardRef((e,t)=>{const{type:a,...r}=e,s=r,i=r;return(0,ce.jsx)(Ee.Provider,{scope:e.__scopeAccordion,children:"multiple"===a?(0,ce.jsx)(qe,{...i,ref:t}):(0,ce.jsx)(Fe,{...s,ref:t})})});Oe.displayName=Ie;var[Se,Pe]=Le(Ie),[Re,$e]=Le(Ie,{collapsible:!1}),Fe=J.forwardRef((e,t)=>{const{value:a,defaultValue:r,onValueChange:s=()=>{},collapsible:i=!1,...n}=e,[l,o]=M({prop:a,defaultProp:r??"",onChange:s,caller:Ie});return(0,ce.jsx)(Se,{scope:e.__scopeAccordion,value:J.useMemo(()=>l?[l]:[],[l]),onItemOpen:o,onItemClose:J.useCallback(()=>i&&o(""),[i,o]),children:(0,ce.jsx)(Re,{scope:e.__scopeAccordion,collapsible:i,children:(0,ce.jsx)(Be,{...n,ref:t})})})}),qe=J.forwardRef((e,t)=>{const{value:a,defaultValue:r,onValueChange:s=()=>{},...i}=e,[n,l]=M({prop:a,defaultProp:r??[],onChange:s,caller:Ie}),o=J.useCallback(e=>l((t=[])=>[...t,e]),[l]),d=J.useCallback(e=>l((t=[])=>t.filter(t=>t!==e)),[l]);return(0,ce.jsx)(Se,{scope:e.__scopeAccordion,value:n,onItemOpen:o,onItemClose:d,children:(0,ce.jsx)(Re,{scope:e.__scopeAccordion,collapsible:!0,children:(0,ce.jsx)(Be,{...i,ref:t})})})}),[Ke,Ge]=Le(Ie),Be=J.forwardRef((e,t)=>{const{__scopeAccordion:a,disabled:r,dir:s,orientation:i="vertical",...n}=e,l=J.useRef(null),o=A(l,t),d=Ve(a),c="ltr"===N(s),m=w(e.onKeyDown,e=>{if(!Te.includes(e.key))return;const t=e.target,a=d().filter(e=>!e.ref.current?.disabled),r=a.findIndex(e=>e.ref.current===t),s=a.length;if(-1===r)return;e.preventDefault();let n=r;const l=s-1,o=()=>{n=r+1,n>l&&(n=0)},m=()=>{n=r-1,n<0&&(n=l)};switch(e.key){case"Home":n=0;break;case"End":n=l;break;case"ArrowRight":"horizontal"===i&&(c?o():m());break;case"ArrowDown":"vertical"===i&&o();break;case"ArrowLeft":"horizontal"===i&&(c?m():o());break;case"ArrowUp":"vertical"===i&&m()}a[n%s].ref.current?.focus()});return(0,ce.jsx)(Ke,{scope:a,disabled:r,direction:s,orientation:i,children:(0,ce.jsx)(Ee.Slot,{scope:a,children:(0,ce.jsx)(b.div,{...n,"data-orientation":i,ref:o,onKeyDown:r?void 0:m})})})}),ze="AccordionItem",[We,Ue]=Le(ze),Ye=J.forwardRef((e,t)=>{const{__scopeAccordion:a,value:r,...s}=e,i=Ge(ze,a),n=Pe(ze,a),l=De(a),o=C(),d=r&&n.value.includes(r)||!1,c=i.disabled||e.disabled;return(0,ce.jsx)(We,{scope:a,open:d,disabled:c,triggerId:o,children:(0,ce.jsx)(Ne,{"data-orientation":i.orientation,"data-state":at(d),...l,...s,ref:t,disabled:c,open:d,onOpenChange:e=>{e?n.onItemOpen(r):n.onItemClose(r)}})})});Ye.displayName=ze;var Xe="AccordionHeader";J.forwardRef((e,t)=>{const{__scopeAccordion:a,...r}=e,s=Ge(Ie,a),i=Ue(Xe,a);return(0,ce.jsx)(b.h3,{"data-orientation":s.orientation,"data-state":at(i.open),"data-disabled":i.disabled?"":void 0,...r,ref:t})}).displayName=Xe;var Je="AccordionTrigger",Qe=J.forwardRef((e,t)=>{const{__scopeAccordion:a,...r}=e,s=Ge(Ie,a),i=Ue(Je,a),n=$e(Je,a),l=De(a);return(0,ce.jsx)(Ee.ItemSlot,{scope:a,children:(0,ce.jsx)(Ae,{"aria-disabled":i.open&&!n.collapsible||void 0,"data-orientation":s.orientation,id:i.triggerId,...l,...r,ref:t})})});Qe.displayName=Je;var et="AccordionContent",tt=J.forwardRef((e,t)=>{const{__scopeAccordion:a,...r}=e,s=Ge(Ie,a),i=Ue(et,a),n=De(a);return(0,ce.jsx)(we,{role:"region","aria-labelledby":i.triggerId,"data-orientation":s.orientation,...n,...r,ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});function at(e){return e?"open":"closed"}tt.displayName=et;var rt=Oe,st=Ye,it=Qe,nt=tt,lt=({value:e,children:t,className:a})=>(0,ce.jsx)(st,{className:`border rounded-md py-4 px-3 overflow-hidden ${a}`,value:e,children:t}),ot=({children:e,className:t,testId:a})=>(0,ce.jsx)(nt,{className:`\n flex\n gap-2\n overflow-hidden\n data-[state=open]:animate-slideDown\n ${t}`,"data-testid":a,children:e}),dt=({children:e,icon:t,testId:a})=>(0,ce.jsxs)(it,{className:'\n flex gap-4 w-full items-center\n group font-medium\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-primary-100\n',"data-testid":a,children:[void 0!==t&&(0,ce.jsx)(t,{className:"\n w-6\n"}),(0,ce.jsxs)("div",{className:"\n grow\n text-left\n",children:[" ",e]}),(0,ce.jsx)(g,{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'})]}),ct=({defaultValue:e,children:t})=>(0,ce.jsx)(rt,{defaultValue:e,collapsible:!0,type:"single",className:"\n flex\n flex-col\n gap-2\n",children:t}),mt=J.createContext({}),pt=({tabId:e,icon:t,children:a,className:r,testId:s})=>(0,ce.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-primary-100\n data-[state="active"]:text-primary-100\n ${r}`,value:e,"data-testid":s,children:[void 0!==t&&(0,ce.jsx)(t,{className:"\n w-6 h-6\n"}),a]}),ut=({tabId:e,children:t,className:a,testId:r})=>(0,ce.jsx)(U,{value:e,className:a,"data-testid":r,children:t}),ht=({children:e,className:t})=>(0,ce.jsx)(z,{className:`flex flex-row justify-between relative font-medium ${t}`,children:e}),_t=({defaultValue:e,onChange:t,children:a})=>(0,ce.jsx)(mt.Provider,{value:{defaultValue:e,onChange:t,children:a},children:(0,ce.jsx)(W,{defaultValue:e,onValueChange:e=>{t&&t(e)},children:a})}),gt="\n border border-gray-150 md:border-gray-200 rounded-md md:min-h-40 w-full flex flex-col md:flex-row\n",vt="\n md:border border-gray-150 md:border-gray-200 rounded-md md:min-h-40 w-full flex flex-col md:p-6\n",yt="\n flex flex-col justify-between min-w-60 p-2 md:p-4 border border-transparent border-b-gray-150 md:border-r-gray-300 md:w-5/12\n",xt="\n font-semibold text-xs text-gray-400 flex gap-x-1 items-center\n",jt="md:h-22 lg:h-11",ft="\n text-xxs text-gray-400\n",kt="\n text-xl font-semibold text-base-black\n leading-7 mt-6 mb-2\n";function bt({children:e,change:t}){const a=G(),r=(0,J.useMemo)(()=>a?"bottom":"right",[a]);return null===t||0===t?null:(0,ce.jsxs)(H,{children:[(0,ce.jsx)(V,{"data-testid":"info-popover-trigger",children:(0,ce.jsx)(se,{className:"w-4 h-4 cursor-pointer"})}),(0,ce.jsxs)(Z,{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:r,sideOffset:4,"data-testid":"info-popover-content",children:[e,(0,ce.jsx)(O,{children:(0,ce.jsx)(x,{className:"absolute right-2 top-1/2 transform -translate-y-1/2 cursor-pointer w-4 h-4",weight:"bold"})})]})]})}var Mt=({yearlyChange:e,disclaimer:t,fieldTitle:a})=>{const{t:r}=n("neighborhoodMarketTrends"),{appearance:s}=pe(),i=e&&e>=0,l=(0,J.useMemo)(()=>i?s?.colors?.increaseColor||E.increaseColor:s?.colors?.decreaseColor||E.decreaseColor,[s,i]);return(0,ce.jsx)(ce.Fragment,{children:e?(0,ce.jsxs)("div",{className:"\n flex flex-wrap items-center\n","data-testid":"change-indicator",children:[(0,ce.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,"data-color":l}),(0,ce.jsxs)("div",{className:"\n flex gap-x-1 items-center\n",style:{color:l},children:[(0,ce.jsxs)("p",{className:"\n text-xs leading-4 font-medium\n","data-testid":"change-indicator-value",children:[(100*e).toFixed(2),"%"," ",r("marketIndicator."+(i?"increase":"decrease"))]}),t&&(0,ce.jsx)(bt,{children:t})]})]}):(0,ce.jsx)("p",{className:"\n text-xs leading-4\n text-gray-400\n","data-testid":"change-indicator-no-data",children:a&&r("marketIndicator.noChangeDisclaimer",{fieldTitle:a.toLocaleLowerCase()})})})},Ct=J.createContext({}),Nt=()=>(0,J.useContext)(Ct);function At({sellerColor:e,neutralColor:t,buyerColor:a}){return(0,ce.jsxs)("div",{className:"relative flex aspect-[2] items-center justify-center overflow-hidden rounded-t-full w-[218px] h-[109px]",children:[(0,ce.jsx)("div",{"data-testid":"gauge-seller","data-color":e,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,ce.jsx)("div",{"data-testid":"gauge-neutral","data-color":t,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%, ${t} 50%)`}}),(0,ce.jsx)("div",{"data-testid":"gauge-buyer","data-color":a,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%, ${a} 50%)`}}),(0,ce.jsx)("div",{className:"absolute inset-7 flex aspect-[2] items-center justify-center overflow-hidden rounded-t-full",children:(0,ce.jsx)("div",{className:"absolute top-0 flex aspect-square w-full justify-center rounded-full bg-white"})})]})}var wt="#272525";function It(){return(0,ce.jsxs)("svg",{"data-testid":"buyer-seller-needle-svg",width:"100%",height:"100%",viewBox:"0 0 13 93",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,ce.jsx)("path",{d:"M6.3151 0.683594L11.6802 88.9218H0.949947L3.63252 44.8027L6.3151 0.683594Z",fill:wt}),(0,ce.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:wt})]})}var Tt="text-stone-400 text-sm w-11 font-medium",Et=({buyerSellerPercentage:e,labels:t})=>{const{sellerColor:a,neutralColor:r,buyerColor:s}=Nt(),i=(0,J.useMemo)(()=>({transform:`translate(-50%, 0) rotate(${1.8*e-90}deg)`,transformOrigin:"50% 100%"}),[e]);return(0,ce.jsxs)("div",{className:"\n flex\n flex-col\n items-center\n gap-2.5\n max-w-80\n",children:[(0,ce.jsx)("span",{className:Tt,children:t.neutral}),(0,ce.jsxs)("div",{className:"\n flex\n items-end\n gap-2.5\n",children:[(0,ce.jsx)("span",{className:Tt,children:t.seller}),(0,ce.jsxs)("div",{className:"\n relative\n",children:[(0,ce.jsx)(At,{sellerColor:a,neutralColor:r,buyerColor:s}),(0,ce.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,"data-testid":"buyer-seller-needle","data-rotation-deg":1.8*e-90,children:(0,ce.jsx)(It,{})})]}),(0,ce.jsx)("span",{className:Tt,children:t.buyer})]})]})},Vt=(0,J.lazy)(()=>S(()=>import("./GridGraph-DoMBR-zc.js").then(e=>({default:e.GridGraph})),__vite__mapDeps([0,1,2,3,4,5]))),Ht=e=>(0,ce.jsx)(J.Suspense,{fallback:(0,ce.jsx)("div",{style:{height:"400px"}}),children:(0,ce.jsx)(Vt,{...e})}),Lt=({yAxisTitle:e,isIncrease:t})=>{const{isLoading:a,marketActivity:r}=pe(),{increaseColor:s,decreaseColor:i}=Nt(),n=(0,J.useMemo)(()=>a||!r?[]:Object.entries(r.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[r,a]),l=(0,J.useMemo)(()=>n.length<1?[]:n.map(([e,t])=>t.market_activity?.stats_at_period_end?.active_listings_count??null).reverse().filter(e=>null!==e),[n]),o=(0,J.useMemo)(()=>n?n.map(([e,t])=>e).reverse():[],[n]),d=(0,J.useMemo)(()=>{const e=Math.max(...l),t=Math.min(...l);return 100*Math.ceil((e+.2*(e-t))/100)},[l]);return r?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Active Listings",data:l}],categories:o,type:"homes",yaxis:{title:{text:e},max:d},markerColor:t?s:i})}):null},Zt=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>t.market_activity?.stats_at_period_end?.home_asking_prices?.median_price??null).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median asking price",data:n}],categories:l,type:"price",markerColor:e?r:s})}):null},Dt=({yAxisTitle:e,isIncrease:t})=>{const{isLoading:a,marketActivity:r}=pe(),{increaseColor:s,decreaseColor:i}=Nt(),n=(0,J.useMemo)(()=>a||!r?[]:Object.entries(r.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[r,a]),l=(0,J.useMemo)(()=>n.length<1?[]:n.map(([e,t])=>t.market_activity?.stats_over_period?.market_speed?.median_days_on_market??null).reverse(),[n]),o=(0,J.useMemo)(()=>n?n.map(([e,t])=>e).reverse():[],[n]),d=(0,J.useMemo)(()=>{const e=l.filter(e=>void 0!==e),t=Math.max(...e),a=Math.min(...e);return{max:10*Math.ceil((t+.2*(t-a))/10),min:Math.max(0,10*Math.floor((a-.2*(t-a))/10))}},[l]);return r?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median Days On Market",data:l}],categories:o,type:"homes",yaxis:{title:{text:e},max:d.max,min:d.min},markerColor:t?s:i})}):null},Ot=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>{const a=t.market_activity?.stats_over_period?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent??null;return null!==a?a>0?a-100:0:null}).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median Sale vs Asking Price",data:n}],categories:l,type:"percentage",chartType:"bar",showGrid:!0,showYAxisAnnotation:!0,markerColor:e?r:s})}):null},St=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>t.market_activity?.stats_over_period?.home_selling_prices.median_price??null).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median sales price",data:n}],categories:l,type:"price",markerColor:e?r:s})}):null},Pt=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>t.market_activity?.stats_over_period?.home_selling_prices.median_price_per_square_foot??null).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median sales price per square foot",data:n}],categories:l,type:"price",markerColor:e?r:s})}):null},Rt=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>t.market_activity?.stats_over_period?.sold_homes_count??null).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Homes Sold",data:n}],categories:l,type:"homes",markerColor:e?r:s})}):null},$t=()=>{const{isLoading:e,marketActivity:t}=pe(),{sellerColor:a,neutralColor:r,buyerColor:s}=Nt(),i=(0,J.useMemo)(()=>e||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,e]),n=(0,J.useMemo)(()=>i.length<1?{numericValues:[],stringValues:[]}:{numericValues:i.map(([e,t])=>t.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??null).reverse().map(e=>null!==e&&e>100?100:e),stringValues:i.map(([e,t])=>t.market_activity?.stats_over_period?.market_conditions_assessment??0).reverse()},[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return t?(0,ce.jsx)("div",{className:"-mr-2",children:(0,ce.jsx)(Ht,{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 t=n.stringValues;return"sellers_market"===t[e]?a:"neutral_market"===t[e]?r:s}})}):null},Ft=({className:e,children:t,colors:a={}})=>{const{buyerColor:r=E.buyerColor,sellerColor:s=E.sellerColor,decreaseColor:i=E.decreaseColor,neutralColor:n=E.neutralColor,increaseColor:l=E.increaseColor}=a;return(0,ce.jsx)(Ct.Provider,{value:{buyerColor:r,sellerColor:s,decreaseColor:i,neutralColor:n,increaseColor:l},children:(0,ce.jsx)("div",{className:`flex flex-col w-full pr-2 md:p-0 -mt-2 -mb-6 md:m-0 ${e||""}`,children:t})})},qt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_at_period_end?.active_listings_count,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_at_period_end?.active_listings_count}:null,[t]),s=(0,J.useMemo)(()=>r&&0!==r.previous?(r.current-r.previous)/r.previous:0,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-active-listings",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsx)("h3",{className:xt,children:e("graphs.activeListings.title")}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-active-listings-amount",children:r.current})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.activeListings.title")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Lt,{yAxisTitle:e("graphs.activeListings.yAxisTitle"),isIncrease:s>=0})})]}):null},Kt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>{const e=t?.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},[t?.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity.stats_over_period?.market_conditions_indicator_MOI_12month]);return r?(0,ce.jsxs)("div",{className:vt,"data-testid":"market-trends-market-type",children:[(0,ce.jsx)("h3",{className:xt,children:e("graphs.marketType.title")}),(0,ce.jsx)("h4",{className:ft,children:e("graphs.marketType.disclaimer")}),(0,ce.jsx)("div",{className:"\n w-full\n flex\n justify-center\n mt-2\n",children:(0,ce.jsx)(Ft,{colors:a?.colors,className:"items-center !p-0 !m-0",children:(0,ce.jsx)(Et,{buyerSellerPercentage:r,labels:{buyer:e("graphs.marketType.marketTypes.buyer"),seller:e("graphs.marketType.marketTypes.seller"),neutral:e("graphs.marketType.marketTypes.neutral")}})})})]}):null},Gt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_at_period_end?.home_asking_prices?.median_price,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_at_period_end?.home_asking_prices?.median_price}:null,[t]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-asking-price",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianAskingPrice.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianAskingPrice.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-asking-price-amount",children:r.current&&ie(r.current)})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianAskingPrice.title"),disclaimer:e("graphs.medianAskingPrice.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Zt,{isIncrease:!s||s>=0})})]}):null},Bt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_over_period?.market_speed?.median_days_on_market,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_over_period?.market_speed?.median_days_on_market}:null,[t]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-days-on-market",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianDaysOnMarket.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianDaysOnMarket.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-days-on-market-amount",children:r.current})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianDaysOnMarket.title"),disclaimer:e("graphs.medianDaysOnMarket.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Dt,{yAxisTitle:e("graphs.medianDaysOnMarket.yAxisTitle"),isIncrease:!s||s>=0})})]}):null},zt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price}:null,[t]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-sale-price",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianSalePrice.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianSalePrice.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-sale-price-amount",children:r.current&&ie(r.current)})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianSalePrice.title"),disclaimer:e("graphs.medianSalePrice.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(St,{isIncrease:!s||s>=0})})]}):null},Wt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>{if(!t)return null;const a=t.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:a,currentInPercentChange:(()=>{if(!a)return null;const t=Math.abs(Math.round(10*(a-100))/10);return 0===t?e("valueComparison.equal"):`${t}% ${e(a>100?"valueComparison.higher":"valueComparison.lower")}`})(),previous:t.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}},[t,e]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-sale-vs-asking-price",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianSaleVsAskingPrice.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianSaleVsAskingPrice.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-sale-vs-asking-price-amount",children:r.currentInPercentChange})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianSaleVsAskingPrice.title"),disclaimer:e("graphs.medianSaleVsAskingPrice.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Ot,{isIncrease:!s||s>=0})})]}):null},Ut=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t}=pe(),a=(0,J.useMemo)(()=>t?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.median_construction_year_sold_homes,[t]);return a?(0,ce.jsx)("div",{className:"\n border border-gray-150 md:border-gray-200 rounded-md\n p-2 md:p-4 w-fit\n","data-testid":"market-trends-median-construction-year",children:(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianConstructionYear.title"),(0,ce.jsx)("span",{className:"\n text-sm\n text-base-black\n","data-testid":"market-trends-median-construction-year-value",children:a}),"."]})}):null},Yt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price_per_square_foot,previous:t.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,[t]),s=(0,J.useMemo)(()=>r&&r.previous&&r.current?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-sale-price-sqft",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianSalePricePerSqft.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianSalePricePerSqft.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-sale-price-sqft-amount",children:r.current&&ie(r.current)})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianSalePricePerSqft.title"),disclaimer:e("graphs.medianSalePricePerSqft.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Pt,{isIncrease:!s||s>=0})})]}):null},Xt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.sold_homes_count}:null,[t]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-homes-sold",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.homesSold.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.homesSold.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-homes-sold-amount",children:r.current})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.homesSold.title"),disclaimer:e("graphs.homesSold.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Rt,{isIncrease:!s||s>=0})})]}):null},Jt="w-2 h-2 rounded-full mr-1.5",Qt="\n flex items-center mr-4\n",ea=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe();return t?(0,ce.jsxs)("div",{className:vt,"data-testid":"market-trends-housing-market-conditions",children:[(0,ce.jsx)("h3",{className:xt,children:e("graphs.housingMarketConditions.title")}),(0,ce.jsx)("h4",{className:ft,children:e("graphs.housingMarketConditions.subtitle")}),(0,ce.jsxs)("div",{className:"\n flex\n",children:[(0,ce.jsxs)("div",{className:"\n flex flex-col justify-between py-12 items-center w-10 -mr-4 md:-mr-2\n",children:[(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.buyer")}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.neutral")}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.seller")})]}),(0,ce.jsx)("div",{className:"\n flex-1\n",children:(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)($t,{})})})]}),(0,ce.jsxs)("div",{className:"\n flex items-center justify-start mt-8 md:mt-2 ml-14\n",children:[(0,ce.jsxs)("div",{className:Qt,children:[(0,ce.jsx)("div",{className:Jt,style:{backgroundColor:a?.colors?.sellerColor||E.sellerColor}}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.seller")})]}),(0,ce.jsxs)("div",{className:Qt,children:[(0,ce.jsx)("div",{className:Jt,style:{backgroundColor:a?.colors?.neutralColor||E.neutralColor}}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.neutral")})]}),(0,ce.jsxs)("div",{className:Qt,children:[(0,ce.jsx)("div",{className:Jt,style:{backgroundColor:a?.colors?.buyerColor||E.buyerColor}}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.buyer")})]})]})]}):null},ta=({className:e,children:t})=>(0,ce.jsx)("div",{className:`\n flex flex-col w-full justify-between gap-2\n ${e||""}`,"data-testid":"market-trends-cards",children:t}),aa=({hideAttribution:e})=>{const{t:t}=n("neighborhoodMarketTrends"),{locale:a,geography:r}=pe();return(0,ce.jsxs)("div",{className:"mt-2 md:mt-0 md:flex items-center bg-base-white [&>a]:justify-end","data-testid":"market-trends-footer",children:[(0,ce.jsx)("p",{className:"flex-1 text-sm p-3 text-gray-400 font-medium","data-testid":"market-trends-footer-disclaimer",children:t("disclaimer.footer",{context:(r?.level||10)>=30?"large":void 0})}),(0,ce.jsx)(F,{sdkName:"neighborhood-market-trends",locale:a,isHidden:e})]})},ra="\n flex\n flex-col\n gap-4\n",sa=()=>{const{t:e}=n("neighborhoodMarketTrends"),t=m(),{isLoading:a,title:r,marketActivity:s,homesSoldPercentage:i,hideAttribution:l,omitTabs:o}=pe(),d=s?.market_activity_by_property_type?.all_residential_properties.intervals,c=(0,J.useMemo)(()=>{const t=d?.["12m"]?.market_activity.stats_over_period,a=d?.["12m"]?.market_activity.stats_at_period_end,r=d?.["30d"]?.market_activity.stats_over_period,s=Object.entries(d??{}).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),n=0===s.length||s.every(([e,t])=>0===(t.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??0))||s.every(([e,t])=>!t.market_activity?.stats_over_period?.market_conditions_assessment);return[{id:ne.marketConditions,icon:y,label:e("tabs.marketConditions.title"),content:[...n||void 0===r?.market_conditions_indicator_MOI_12month?[]:[(0,ce.jsx)(Kt,{},"market-type"),(0,ce.jsx)(ea,{},"market-conditions")]]},{id:ne.currentActivity,icon:re,label:e("tabs.currentActivity.title"),content:[...void 0!==a?.home_asking_prices.median_price?[(0,ce.jsx)(Gt,{},"median-asking-price")]:[],...void 0!==t?.market_speed.median_days_on_market?[(0,ce.jsx)(Bt,{},"median-days-on-market")]:[],...void 0!==d?.["30d"]?.market_activity?.stats_at_period_end?.active_listings_count?[(0,ce.jsx)(qt,{},"active-listings")]:[],...void 0!==t?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent&&i>=.75?[(0,ce.jsx)(Wt,{},"median-sales-vs-asking-price")]:[]]},{id:ne.recentTrends,icon:v,label:e("tabs.recentTrends.title"),content:[...void 0!==t?.median_construction_year_sold_homes?[(0,ce.jsx)(Ut,{},"median-construction-year")]:[],...void 0!==t?.sold_homes_count&&i>=.75?[(0,ce.jsx)(zt,{},"median-sale-price")]:[],...void 0!==t?.home_selling_prices.median_price_per_square_foot&&i>=.75?[(0,ce.jsx)(Yt,{},"median-sale-price-sq-ft")]:[],...void 0!==t?.sold_homes_count?[(0,ce.jsx)(Xt,{},"homes-sold")]:[]]}].filter(e=>!o?.includes(e.id)&&e.content.length>0)},[d]),p=e=>{t.postEvent({eventType:le.TAB_CLICKED,eventAttributes:[{label:"activeCategory",data:e}]}),t.trackAnalyticsEvent({eventName:oe.CATEGORY_SELECTED,eventAttributes:{ll_selected_category:e}})};return(0,ce.jsxs)(ce.Fragment,{children:[(0,ce.jsx)(Y,{title:"string"==typeof r||!1===r?r:e("title")}),(0,ce.jsx)("p",{className:"\n mb-6\n text-xs\n text-neutral-800\n",children:e("disclaimer.header")}),a?(0,ce.jsx)("div",{className:"\n md:border md:border-gray-200 md:rounded-md w-full\n","data-testid":"market-trends-loading","data-is-loading":!0,children:(0,ce.jsx)("div",{className:"\n flex flex-col gap-2 w-full md:py-8 md:px-4\n",children:[0,1,2].map(e=>(0,ce.jsx)("div",{className:"\n rounded-md bg-gray-200 animate-pulse min-h-40 w-full\n"},`market-trends-skeleton-${e}`))})}):!s||!d||d&&0===Object.keys(d).length?(0,ce.jsx)(X,{text:e("noData")}):(0,ce.jsxs)(ce.Fragment,{children:[(0,ce.jsx)("div",{className:"\n border\n rounded-md\n hidden\n md:block\n","data-testid":"market-trends-desktop",children:(0,ce.jsxs)(_t,{defaultValue:c[0]?.id,onChange:p,children:[(0,ce.jsx)(ht,{children:c.map(e=>(0,ce.jsx)(pt,{icon:e.icon,tabId:e.id,className:"\n border-r-2\n last:border-r-0\n",testId:`market-trends-tab-${e.id}`,children:e.label},e.id))}),(0,ce.jsx)("div",{className:"\n py-8\n px-4\n",children:(0,ce.jsx)(ta,{children:c.map(e=>(0,ce.jsx)(ut,{tabId:e.id,className:ra,testId:`market-trends-tab-panel-${e.id}`,children:e.content},`tab-content-${e.id}`))})})]})}),(0,ce.jsx)("div",{className:"\n md:hidden\n","data-testid":"market-trends-mobile",children:(0,ce.jsx)(ct,{defaultValue:c[0]?.id,children:c.map(e=>(0,ce.jsxs)(lt,{value:e.id,children:[(0,ce.jsx)(dt,{icon:e.icon,testId:`market-trends-accordion-trigger-${e.id}`,children:e.label}),(0,ce.jsx)(ot,{className:ra,testId:`market-trends-accordion-panel-${e.id}`,children:e.content})]},e.id))})})]}),(0,ce.jsx)(aa,{hideAttribution:l})]})},ia=_({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:d().optional(),hideAttribution:p().optional(),omitTabs:d().optional(),appearance:_({colors:_({buyerColor:i().optional(),sellerColor:i().optional(),decreaseColor:i().optional(),neutralColor:i().optional(),increaseColor:i().optional()}).optional()}).optional()}).noUnknown(!0);r(c.neighborhoodWrap.key);var na=()=>{const{sdkState:e}=D(),t=G(),r=e.globalOptions?.locale||"en",s=(0,J.useMemo)(()=>e.options?.geographyId?{geographyId:e.options?.geographyId}:{lat:e.options?.lat,lng:e.options?.lng},[e.options?.lat,e.options?.lng,e.options?.geographyId]);return(0,ce.jsx)(q,{children:(0,ce.jsx)(K,{sdk:"Neighborhood Market Trends",schema:ia,options:e.options,children:(0,ce.jsx)(u,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:h.NEIGHBORHOOD_MARKET_TRENDS,children:(0,ce.jsx)(a,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:c.neighborhoodWrap,meta:{clientId:e.clientId,productName:h.NEIGHBORHOOD_MARKET_TRENDS,productVersion:"1.24.65"},attributes:{location:s,host:e.location,host_url:document.referrer,locale:r,isMobile:t},flags:{isDebugMode:!1},children:(0,ce.jsx)(ue,{children:(0,ce.jsx)(sa,{})})})})})})};export{na as default};
|
|
3
|
-
//# sourceMappingURL=NeighborhoodMarketTrends-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GridGraph-DoIXQCjF.js","assets/rolldown-runtime-BEU_UCik.js","assets/google-maps-vendor-BeDgURNz.js","assets/index-DuYul3n8.js","assets/index-CkpAeWak.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 t}from"./google-maps-vendor-BeDgURNz.js";import{a,c as r,d as s,f as i,g as n,h as l,i as o,m as d,n as c,o as m,p,r as u,t as h,u as _}from"./sdks-C6AQk2vE.js";import{t as g}from"./CaretDown.es-DPspOb5f.js";import{n as v,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 k,L as b,N as M,P as C,R as N,U as A,V as w,Y as I,_ as T,c as E,g as V,h as H,i as L,m as Z,n as D,p as O,q as S,t as P,z as R}from"./index-DuYul3n8.js";import{t as $}from"./useGeographies-D0Og6wGn.js";import{t as F}from"./Attribution-CUXwGQ1J.js";/* empty css */import{t as q}from"./ResizeWrapper-CacQc137.js";import{t as K}from"./ValidateOptions-CHpsZ-kR.js";import{t as G}from"./useIsMobile-DFRT0gA-.js";import{i as B,n as z,r as W,t as U}from"./dist-LjV2lD3w.js";import{t as Y}from"./TitleHeader-Bg-iB4qi.js";import{t as X}from"./NoDataContent-CLEOr0tN.js";var J=e(t(),1),Q=new Map([["bold",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.createElement("path",{d:"M200,144l-72,72L56,144Z",opacity:"0.2"}),J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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"}))]]),ee=new Map([["bold",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.createElement("path",{d:"M216,116.69V216H152V152H104v64H40V116.69l82.34-82.35a8,8,0,0,1,11.32,0Z",opacity:"0.2"}),J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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",J.createElement(J.Fragment,null,J.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=J.forwardRef((e,t)=>J.createElement(j,{ref:t,...e,weights:Q}));ae.displayName="ArrowDownIcon";var re=J.forwardRef((e,t)=>J.createElement(j,{ref:t,...e,weights:ee}));re.displayName="HouseLineIcon";var se=J.forwardRef((e,t)=>J.createElement(j,{ref:t,...e,weights:te}));se.displayName="InfoIcon";var ie=(e,t="en-US",a="USD",r=0)=>new Intl.NumberFormat(t,{style:"currency",currency:a,maximumFractionDigits:r}).format(e??0),ne=function(e){return e.marketConditions="market-conditions",e.recentTrends="recent-trends",e.currentActivity="current-activity",e}({}),le=function(e){return e.SDK_VIEWED="neighborhood-market-trends-Viewed",e.TAB_CLICKED="neighborhood-market-trends-Tab-Clicked",e}({}),oe=function(e){return e.SDK_VIEWED="sdk_viewed",e.CATEGORY_SELECTED="category_selected",e}({}),de={all:()=>["marketActivity"],list:e=>[...de.all(),e]};var ce=I(),me=J.createContext({}),pe=()=>(0,J.useContext)(me),ue=({children:e})=>{const{sdkState:t}=D(),a=t.globalOptions?.locale||"en",r=m(),s=(0,J.useMemo)(()=>{const e=[],t=new Date;for(let a=0;a<=12;a+=1){const a=t.getFullYear(),r=t.getMonth(),s=`${a}-${String(r+1).padStart(2,"0")}`;e.push(s),t.setMonth(t.getMonth()-1)}return e.reverse()},[]);L(()=>{r.postEvent({eventType:le.SDK_VIEWED}),r.trackAnalyticsEvent({eventName:oe.SDK_VIEWED})});const{isLoading:i,data:n}=$({location:{lat:void 0===t.options?.geographyId?t.options?.lat:void 0,lng:void 0===t.options?.geographyId?t.options?.lng:void 0},geogID:t.options?.geographyId||void 0,externalId:t?.globalOptions?.externalId}),{geographyId:d,geography:c}=(0,J.useMemo)(()=>{const e=Object.entries(n||{});return{geographyId:e[0]?.[0],geography:e[0]?.[1]}},[i,n]),{data:p,isFetching:u}=function({geographyId:e,propertyTypes:t,intervals:a}){const{client:r}=o(),s=P();return l({queryKey:de.list({geogId:e}),queryFn:async()=>{const s=await r.getMarketActivity({geogId:e,propertyTypes:t,intervals:a});return void 0===s?null:s},enabled:!(!e||!s.marketTrendsSdk)})}({geographyId:d,propertyTypes:["all_residential_properties"],intervals:["30d","31-60d","12m","13-24m",...s]}),h=(0,J.useMemo)(()=>{const e=p?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count||0,t=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?t/e:0},[p]),_=(0,J.useMemo)(()=>i||u,[i,u]),g=(0,J.useMemo)(()=>({isLoading:_,title:t.options?.title,homesSoldPercentage:h,marketActivity:p??null,appearance:t?.options?.appearance,locale:a,geography:c,hideAttribution:t.options?.hideAttribution,omitTabs:t.options?.omitTabs}),[p,_,h,a,c,d,t.options?.title,t.options?.hideAttribution,t.options?.omitTabs]);return(0,ce.jsx)(me.Provider,{value:g,children:e})},he="Collapsible",[_e,ge]=f(he),[ve,ye]=_e(he),xe=J.forwardRef((e,t)=>{const{__scopeCollapsible:a,open:r,defaultOpen:s,disabled:i,onOpenChange:n,...l}=e,[o,d]=M({prop:r,defaultProp:s??!1,onChange:n,caller:he});return(0,ce.jsx)(ve,{scope:a,disabled:i,contentId:C(),open:o,onOpenToggle:J.useCallback(()=>d(e=>!e),[d]),children:(0,ce.jsx)(b.div,{"data-state":Ce(o),"data-disabled":i?"":void 0,...l,ref:t})})});xe.displayName=he;var je="CollapsibleTrigger",fe=J.forwardRef((e,t)=>{const{__scopeCollapsible:a,...r}=e,s=ye(je,a);return(0,ce.jsx)(b.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":Ce(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:t,onClick:w(e.onClick,s.onOpenToggle)})});fe.displayName=je;var ke="CollapsibleContent",be=J.forwardRef((e,t)=>{const{forceMount:a,...r}=e,s=ye(ke,e.__scopeCollapsible);return(0,ce.jsx)(T,{present:a||s.open,children:({present:e})=>(0,ce.jsx)(Me,{...r,ref:t,present:e})})});be.displayName=ke;var Me=J.forwardRef((e,t)=>{const{__scopeCollapsible:a,present:r,children:s,...i}=e,n=ye(ke,a),[l,o]=J.useState(r),d=J.useRef(null),c=A(t,d),m=J.useRef(0),p=m.current,u=J.useRef(0),h=u.current,_=n.open||l,g=J.useRef(_),v=J.useRef(void 0);return J.useEffect(()=>{const e=requestAnimationFrame(()=>g.current=!1);return()=>cancelAnimationFrame(e)},[]),k(()=>{const e=d.current;if(e){v.current=v.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";const t=e.getBoundingClientRect();m.current=t.height,u.current=t.width,g.current||(e.style.transitionDuration=v.current.transitionDuration,e.style.animationName=v.current.animationName),o(r)}},[n.open,r]),(0,ce.jsx)(b.div,{"data-state":Ce(n.open),"data-disabled":n.disabled?"":void 0,id:n.contentId,hidden:!_,...i,ref:c,style:{"--radix-collapsible-content-height":p?`${p}px`:void 0,"--radix-collapsible-content-width":h?`${h}px`:void 0,...e.style},children:_&&s})});function Ce(e){return e?"open":"closed"}var Ne=xe,Ae=fe,we=be,Ie="Accordion",Te=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Ee,Ve,He]=R(Ie),[Le,Ze]=f(Ie,[He,ge]),De=ge(),Oe=J.forwardRef((e,t)=>{const{type:a,...r}=e,s=r,i=r;return(0,ce.jsx)(Ee.Provider,{scope:e.__scopeAccordion,children:"multiple"===a?(0,ce.jsx)(qe,{...i,ref:t}):(0,ce.jsx)(Fe,{...s,ref:t})})});Oe.displayName=Ie;var[Se,Pe]=Le(Ie),[Re,$e]=Le(Ie,{collapsible:!1}),Fe=J.forwardRef((e,t)=>{const{value:a,defaultValue:r,onValueChange:s=()=>{},collapsible:i=!1,...n}=e,[l,o]=M({prop:a,defaultProp:r??"",onChange:s,caller:Ie});return(0,ce.jsx)(Se,{scope:e.__scopeAccordion,value:J.useMemo(()=>l?[l]:[],[l]),onItemOpen:o,onItemClose:J.useCallback(()=>i&&o(""),[i,o]),children:(0,ce.jsx)(Re,{scope:e.__scopeAccordion,collapsible:i,children:(0,ce.jsx)(Be,{...n,ref:t})})})}),qe=J.forwardRef((e,t)=>{const{value:a,defaultValue:r,onValueChange:s=()=>{},...i}=e,[n,l]=M({prop:a,defaultProp:r??[],onChange:s,caller:Ie}),o=J.useCallback(e=>l((t=[])=>[...t,e]),[l]),d=J.useCallback(e=>l((t=[])=>t.filter(t=>t!==e)),[l]);return(0,ce.jsx)(Se,{scope:e.__scopeAccordion,value:n,onItemOpen:o,onItemClose:d,children:(0,ce.jsx)(Re,{scope:e.__scopeAccordion,collapsible:!0,children:(0,ce.jsx)(Be,{...i,ref:t})})})}),[Ke,Ge]=Le(Ie),Be=J.forwardRef((e,t)=>{const{__scopeAccordion:a,disabled:r,dir:s,orientation:i="vertical",...n}=e,l=J.useRef(null),o=A(l,t),d=Ve(a),c="ltr"===N(s),m=w(e.onKeyDown,e=>{if(!Te.includes(e.key))return;const t=e.target,a=d().filter(e=>!e.ref.current?.disabled),r=a.findIndex(e=>e.ref.current===t),s=a.length;if(-1===r)return;e.preventDefault();let n=r;const l=s-1,o=()=>{n=r+1,n>l&&(n=0)},m=()=>{n=r-1,n<0&&(n=l)};switch(e.key){case"Home":n=0;break;case"End":n=l;break;case"ArrowRight":"horizontal"===i&&(c?o():m());break;case"ArrowDown":"vertical"===i&&o();break;case"ArrowLeft":"horizontal"===i&&(c?m():o());break;case"ArrowUp":"vertical"===i&&m()}a[n%s].ref.current?.focus()});return(0,ce.jsx)(Ke,{scope:a,disabled:r,direction:s,orientation:i,children:(0,ce.jsx)(Ee.Slot,{scope:a,children:(0,ce.jsx)(b.div,{...n,"data-orientation":i,ref:o,onKeyDown:r?void 0:m})})})}),ze="AccordionItem",[We,Ue]=Le(ze),Ye=J.forwardRef((e,t)=>{const{__scopeAccordion:a,value:r,...s}=e,i=Ge(ze,a),n=Pe(ze,a),l=De(a),o=C(),d=r&&n.value.includes(r)||!1,c=i.disabled||e.disabled;return(0,ce.jsx)(We,{scope:a,open:d,disabled:c,triggerId:o,children:(0,ce.jsx)(Ne,{"data-orientation":i.orientation,"data-state":at(d),...l,...s,ref:t,disabled:c,open:d,onOpenChange:e=>{e?n.onItemOpen(r):n.onItemClose(r)}})})});Ye.displayName=ze;var Xe="AccordionHeader";J.forwardRef((e,t)=>{const{__scopeAccordion:a,...r}=e,s=Ge(Ie,a),i=Ue(Xe,a);return(0,ce.jsx)(b.h3,{"data-orientation":s.orientation,"data-state":at(i.open),"data-disabled":i.disabled?"":void 0,...r,ref:t})}).displayName=Xe;var Je="AccordionTrigger",Qe=J.forwardRef((e,t)=>{const{__scopeAccordion:a,...r}=e,s=Ge(Ie,a),i=Ue(Je,a),n=$e(Je,a),l=De(a);return(0,ce.jsx)(Ee.ItemSlot,{scope:a,children:(0,ce.jsx)(Ae,{"aria-disabled":i.open&&!n.collapsible||void 0,"data-orientation":s.orientation,id:i.triggerId,...l,...r,ref:t})})});Qe.displayName=Je;var et="AccordionContent",tt=J.forwardRef((e,t)=>{const{__scopeAccordion:a,...r}=e,s=Ge(Ie,a),i=Ue(et,a),n=De(a);return(0,ce.jsx)(we,{role:"region","aria-labelledby":i.triggerId,"data-orientation":s.orientation,...n,...r,ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});function at(e){return e?"open":"closed"}tt.displayName=et;var rt=Oe,st=Ye,it=Qe,nt=tt,lt=({value:e,children:t,className:a})=>(0,ce.jsx)(st,{className:`border rounded-md py-4 px-3 overflow-hidden ${a}`,value:e,children:t}),ot=({children:e,className:t,testId:a})=>(0,ce.jsx)(nt,{className:`\n flex\n gap-2\n overflow-hidden\n data-[state=open]:animate-slideDown\n ${t}`,"data-testid":a,children:e}),dt=({children:e,icon:t,testId:a})=>(0,ce.jsxs)(it,{className:'\n flex gap-4 w-full items-center\n group font-medium\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-primary-100\n',"data-testid":a,children:[void 0!==t&&(0,ce.jsx)(t,{className:"\n w-6\n"}),(0,ce.jsxs)("div",{className:"\n grow\n text-left\n",children:[" ",e]}),(0,ce.jsx)(g,{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'})]}),ct=({defaultValue:e,children:t})=>(0,ce.jsx)(rt,{defaultValue:e,collapsible:!0,type:"single",className:"\n flex\n flex-col\n gap-2\n",children:t}),mt=J.createContext({}),pt=({tabId:e,icon:t,children:a,className:r,testId:s})=>(0,ce.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-primary-100\n data-[state="active"]:text-primary-100\n ${r}`,value:e,"data-testid":s,children:[void 0!==t&&(0,ce.jsx)(t,{className:"\n w-6 h-6\n"}),a]}),ut=({tabId:e,children:t,className:a,testId:r})=>(0,ce.jsx)(U,{value:e,className:a,"data-testid":r,children:t}),ht=({children:e,className:t})=>(0,ce.jsx)(z,{className:`flex flex-row justify-between relative font-medium ${t}`,children:e}),_t=({defaultValue:e,onChange:t,children:a})=>(0,ce.jsx)(mt.Provider,{value:{defaultValue:e,onChange:t,children:a},children:(0,ce.jsx)(W,{defaultValue:e,onValueChange:e=>{t&&t(e)},children:a})}),gt="\n border border-gray-150 md:border-gray-200 rounded-md md:min-h-40 w-full flex flex-col md:flex-row\n",vt="\n md:border border-gray-150 md:border-gray-200 rounded-md md:min-h-40 w-full flex flex-col md:p-6\n",yt="\n flex flex-col justify-between min-w-60 p-2 md:p-4 border border-transparent border-b-gray-150 md:border-r-gray-300 md:w-5/12\n",xt="\n font-semibold text-xs text-gray-400 flex gap-x-1 items-center\n",jt="md:h-22 lg:h-11",ft="\n text-xxs text-gray-400\n",kt="\n text-xl font-semibold text-base-black\n leading-7 mt-6 mb-2\n";function bt({children:e,change:t}){const a=G(),r=(0,J.useMemo)(()=>a?"bottom":"right",[a]);return null===t||0===t?null:(0,ce.jsxs)(H,{children:[(0,ce.jsx)(V,{"data-testid":"info-popover-trigger",children:(0,ce.jsx)(se,{className:"w-4 h-4 cursor-pointer"})}),(0,ce.jsxs)(Z,{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:r,sideOffset:4,"data-testid":"info-popover-content",children:[e,(0,ce.jsx)(O,{children:(0,ce.jsx)(x,{className:"absolute right-2 top-1/2 transform -translate-y-1/2 cursor-pointer w-4 h-4",weight:"bold"})})]})]})}var Mt=({yearlyChange:e,disclaimer:t,fieldTitle:a})=>{const{t:r}=n("neighborhoodMarketTrends"),{appearance:s}=pe(),i=e&&e>=0,l=(0,J.useMemo)(()=>i?s?.colors?.increaseColor||E.increaseColor:s?.colors?.decreaseColor||E.decreaseColor,[s,i]);return(0,ce.jsx)(ce.Fragment,{children:e?(0,ce.jsxs)("div",{className:"\n flex flex-wrap items-center\n","data-testid":"change-indicator",children:[(0,ce.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,"data-color":l}),(0,ce.jsxs)("div",{className:"\n flex gap-x-1 items-center\n",style:{color:l},children:[(0,ce.jsxs)("p",{className:"\n text-xs leading-4 font-medium\n","data-testid":"change-indicator-value",children:[(100*e).toFixed(2),"%"," ",r("marketIndicator."+(i?"increase":"decrease"))]}),t&&(0,ce.jsx)(bt,{children:t})]})]}):(0,ce.jsx)("p",{className:"\n text-xs leading-4\n text-gray-400\n","data-testid":"change-indicator-no-data",children:a&&r("marketIndicator.noChangeDisclaimer",{fieldTitle:a.toLocaleLowerCase()})})})},Ct=J.createContext({}),Nt=()=>(0,J.useContext)(Ct);function At({sellerColor:e,neutralColor:t,buyerColor:a}){return(0,ce.jsxs)("div",{className:"relative flex aspect-[2] items-center justify-center overflow-hidden rounded-t-full w-[218px] h-[109px]",children:[(0,ce.jsx)("div",{"data-testid":"gauge-seller","data-color":e,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,ce.jsx)("div",{"data-testid":"gauge-neutral","data-color":t,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%, ${t} 50%)`}}),(0,ce.jsx)("div",{"data-testid":"gauge-buyer","data-color":a,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%, ${a} 50%)`}}),(0,ce.jsx)("div",{className:"absolute inset-7 flex aspect-[2] items-center justify-center overflow-hidden rounded-t-full",children:(0,ce.jsx)("div",{className:"absolute top-0 flex aspect-square w-full justify-center rounded-full bg-white"})})]})}var wt="#272525";function It(){return(0,ce.jsxs)("svg",{"data-testid":"buyer-seller-needle-svg",width:"100%",height:"100%",viewBox:"0 0 13 93",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,ce.jsx)("path",{d:"M6.3151 0.683594L11.6802 88.9218H0.949947L3.63252 44.8027L6.3151 0.683594Z",fill:wt}),(0,ce.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:wt})]})}var Tt="text-stone-400 text-sm w-11 font-medium",Et=({buyerSellerPercentage:e,labels:t})=>{const{sellerColor:a,neutralColor:r,buyerColor:s}=Nt(),i=(0,J.useMemo)(()=>({transform:`translate(-50%, 0) rotate(${1.8*e-90}deg)`,transformOrigin:"50% 100%"}),[e]);return(0,ce.jsxs)("div",{className:"\n flex\n flex-col\n items-center\n gap-2.5\n max-w-80\n",children:[(0,ce.jsx)("span",{className:Tt,children:t.neutral}),(0,ce.jsxs)("div",{className:"\n flex\n items-end\n gap-2.5\n",children:[(0,ce.jsx)("span",{className:Tt,children:t.seller}),(0,ce.jsxs)("div",{className:"\n relative\n",children:[(0,ce.jsx)(At,{sellerColor:a,neutralColor:r,buyerColor:s}),(0,ce.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,"data-testid":"buyer-seller-needle","data-rotation-deg":1.8*e-90,children:(0,ce.jsx)(It,{})})]}),(0,ce.jsx)("span",{className:Tt,children:t.buyer})]})]})},Vt=(0,J.lazy)(()=>S(()=>import("./GridGraph-DoIXQCjF.js").then(e=>({default:e.GridGraph})),__vite__mapDeps([0,1,2,3,4,5]))),Ht=e=>(0,ce.jsx)(J.Suspense,{fallback:(0,ce.jsx)("div",{style:{height:"400px"}}),children:(0,ce.jsx)(Vt,{...e})}),Lt=({yAxisTitle:e,isIncrease:t})=>{const{isLoading:a,marketActivity:r}=pe(),{increaseColor:s,decreaseColor:i}=Nt(),n=(0,J.useMemo)(()=>a||!r?[]:Object.entries(r.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[r,a]),l=(0,J.useMemo)(()=>n.length<1?[]:n.map(([e,t])=>t.market_activity?.stats_at_period_end?.active_listings_count??null).reverse().filter(e=>null!==e),[n]),o=(0,J.useMemo)(()=>n?n.map(([e,t])=>e).reverse():[],[n]),d=(0,J.useMemo)(()=>{const e=Math.max(...l),t=Math.min(...l);return 100*Math.ceil((e+.2*(e-t))/100)},[l]);return r?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Active Listings",data:l}],categories:o,type:"homes",yaxis:{title:{text:e},max:d},markerColor:t?s:i})}):null},Zt=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>t.market_activity?.stats_at_period_end?.home_asking_prices?.median_price??null).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median asking price",data:n}],categories:l,type:"price",markerColor:e?r:s})}):null},Dt=({yAxisTitle:e,isIncrease:t})=>{const{isLoading:a,marketActivity:r}=pe(),{increaseColor:s,decreaseColor:i}=Nt(),n=(0,J.useMemo)(()=>a||!r?[]:Object.entries(r.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[r,a]),l=(0,J.useMemo)(()=>n.length<1?[]:n.map(([e,t])=>t.market_activity?.stats_over_period?.market_speed?.median_days_on_market??null).reverse(),[n]),o=(0,J.useMemo)(()=>n?n.map(([e,t])=>e).reverse():[],[n]),d=(0,J.useMemo)(()=>{const e=l.filter(e=>void 0!==e),t=Math.max(...e),a=Math.min(...e);return{max:10*Math.ceil((t+.2*(t-a))/10),min:Math.max(0,10*Math.floor((a-.2*(t-a))/10))}},[l]);return r?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median Days On Market",data:l}],categories:o,type:"homes",yaxis:{title:{text:e},max:d.max,min:d.min},markerColor:t?s:i})}):null},Ot=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>{const a=t.market_activity?.stats_over_period?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent??null;return null!==a?a>0?a-100:0:null}).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median Sale vs Asking Price",data:n}],categories:l,type:"percentage",chartType:"bar",showGrid:!0,showYAxisAnnotation:!0,markerColor:e?r:s})}):null},St=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>t.market_activity?.stats_over_period?.home_selling_prices.median_price??null).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median sales price",data:n}],categories:l,type:"price",markerColor:e?r:s})}):null},Pt=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>t.market_activity?.stats_over_period?.home_selling_prices.median_price_per_square_foot??null).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Median sales price per square foot",data:n}],categories:l,type:"price",markerColor:e?r:s})}):null},Rt=({isIncrease:e})=>{const{isLoading:t,marketActivity:a}=pe(),{increaseColor:r,decreaseColor:s}=Nt(),i=(0,J.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]),n=(0,J.useMemo)(()=>i.length<1?[]:i.map(([e,t])=>t.market_activity?.stats_over_period?.sold_homes_count??null).reverse(),[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return a?(0,ce.jsx)("div",{children:(0,ce.jsx)(Ht,{series:[{name:"Homes Sold",data:n}],categories:l,type:"homes",markerColor:e?r:s})}):null},$t=()=>{const{isLoading:e,marketActivity:t}=pe(),{sellerColor:a,neutralColor:r,buyerColor:s}=Nt(),i=(0,J.useMemo)(()=>e||!t?[]:Object.entries(t.market_activity_by_property_type?.all_residential_properties.intervals).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),[t,e]),n=(0,J.useMemo)(()=>i.length<1?{numericValues:[],stringValues:[]}:{numericValues:i.map(([e,t])=>t.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??null).reverse().map(e=>null!==e&&e>100?100:e),stringValues:i.map(([e,t])=>t.market_activity?.stats_over_period?.market_conditions_assessment??0).reverse()},[i]),l=(0,J.useMemo)(()=>i?i.map(([e,t])=>e).reverse():[],[i]);return t?(0,ce.jsx)("div",{className:"-mr-2",children:(0,ce.jsx)(Ht,{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 t=n.stringValues;return"sellers_market"===t[e]?a:"neutral_market"===t[e]?r:s}})}):null},Ft=({className:e,children:t,colors:a={}})=>{const{buyerColor:r=E.buyerColor,sellerColor:s=E.sellerColor,decreaseColor:i=E.decreaseColor,neutralColor:n=E.neutralColor,increaseColor:l=E.increaseColor}=a;return(0,ce.jsx)(Ct.Provider,{value:{buyerColor:r,sellerColor:s,decreaseColor:i,neutralColor:n,increaseColor:l},children:(0,ce.jsx)("div",{className:`flex flex-col w-full pr-2 md:p-0 -mt-2 -mb-6 md:m-0 ${e||""}`,children:t})})},qt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_at_period_end?.active_listings_count,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_at_period_end?.active_listings_count}:null,[t]),s=(0,J.useMemo)(()=>r&&0!==r.previous?(r.current-r.previous)/r.previous:0,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-active-listings",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsx)("h3",{className:xt,children:e("graphs.activeListings.title")}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-active-listings-amount",children:r.current})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.activeListings.title")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Lt,{yAxisTitle:e("graphs.activeListings.yAxisTitle"),isIncrease:s>=0})})]}):null},Kt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>{const e=t?.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},[t?.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity.stats_over_period?.market_conditions_indicator_MOI_12month]);return r?(0,ce.jsxs)("div",{className:vt,"data-testid":"market-trends-market-type",children:[(0,ce.jsx)("h3",{className:xt,children:e("graphs.marketType.title")}),(0,ce.jsx)("h4",{className:ft,children:e("graphs.marketType.disclaimer")}),(0,ce.jsx)("div",{className:"\n w-full\n flex\n justify-center\n mt-2\n",children:(0,ce.jsx)(Ft,{colors:a?.colors,className:"items-center !p-0 !m-0",children:(0,ce.jsx)(Et,{buyerSellerPercentage:r,labels:{buyer:e("graphs.marketType.marketTypes.buyer"),seller:e("graphs.marketType.marketTypes.seller"),neutral:e("graphs.marketType.marketTypes.neutral")}})})})]}):null},Gt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_at_period_end?.home_asking_prices?.median_price,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_at_period_end?.home_asking_prices?.median_price}:null,[t]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-asking-price",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianAskingPrice.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianAskingPrice.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-asking-price-amount",children:r.current&&ie(r.current)})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianAskingPrice.title"),disclaimer:e("graphs.medianAskingPrice.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Zt,{isIncrease:!s||s>=0})})]}):null},Bt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["30d"]?.market_activity?.stats_over_period?.market_speed?.median_days_on_market,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["31-60d"]?.market_activity?.stats_over_period?.market_speed?.median_days_on_market}:null,[t]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-days-on-market",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianDaysOnMarket.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianDaysOnMarket.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-days-on-market-amount",children:r.current})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianDaysOnMarket.title"),disclaimer:e("graphs.medianDaysOnMarket.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Dt,{yAxisTitle:e("graphs.medianDaysOnMarket.yAxisTitle"),isIncrease:!s||s>=0})})]}):null},zt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price}:null,[t]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-sale-price",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianSalePrice.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianSalePrice.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-sale-price-amount",children:r.current&&ie(r.current)})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianSalePrice.title"),disclaimer:e("graphs.medianSalePrice.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(St,{isIncrease:!s||s>=0})})]}):null},Wt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>{if(!t)return null;const a=t.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:a,currentInPercentChange:(()=>{if(!a)return null;const t=Math.abs(Math.round(10*(a-100))/10);return 0===t?e("valueComparison.equal"):`${t}% ${e(a>100?"valueComparison.higher":"valueComparison.lower")}`})(),previous:t.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}},[t,e]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-sale-vs-asking-price",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianSaleVsAskingPrice.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianSaleVsAskingPrice.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-sale-vs-asking-price-amount",children:r.currentInPercentChange})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianSaleVsAskingPrice.title"),disclaimer:e("graphs.medianSaleVsAskingPrice.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Ot,{isIncrease:!s||s>=0})})]}):null},Ut=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t}=pe(),a=(0,J.useMemo)(()=>t?.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.median_construction_year_sold_homes,[t]);return a?(0,ce.jsx)("div",{className:"\n border border-gray-150 md:border-gray-200 rounded-md\n p-2 md:p-4 w-fit\n","data-testid":"market-trends-median-construction-year",children:(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianConstructionYear.title"),(0,ce.jsx)("span",{className:"\n text-sm\n text-base-black\n","data-testid":"market-trends-median-construction-year-value",children:a}),"."]})}):null},Yt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.home_selling_prices?.median_price_per_square_foot,previous:t.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,[t]),s=(0,J.useMemo)(()=>r&&r.previous&&r.current?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-median-sale-price-sqft",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.medianSalePricePerSqft.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.medianSalePricePerSqft.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-median-sale-price-sqft-amount",children:r.current&&ie(r.current)})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.medianSalePricePerSqft.title"),disclaimer:e("graphs.medianSalePricePerSqft.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Pt,{isIncrease:!s||s>=0})})]}):null},Xt=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe(),r=(0,J.useMemo)(()=>t?{current:t.market_activity_by_property_type?.all_residential_properties.intervals["12m"]?.market_activity?.stats_over_period?.sold_homes_count,previous:t.market_activity_by_property_type?.all_residential_properties?.intervals["13-24m"]?.market_activity?.stats_over_period?.sold_homes_count}:null,[t]),s=(0,J.useMemo)(()=>r&&r.current&&r.previous?(r.current-r.previous)/r.previous:null,[r]);return r?(0,ce.jsxs)("div",{className:gt,"data-testid":"market-trends-homes-sold",children:[(0,ce.jsxs)("div",{className:yt,children:[(0,ce.jsx)("div",{children:(0,ce.jsxs)("div",{className:jt,children:[(0,ce.jsxs)("h3",{className:xt,children:[e("graphs.homesSold.title"),(0,ce.jsx)(bt,{change:s,children:e("graphs.homesSold.disclaimer")})]}),(0,ce.jsx)("h4",{className:kt,"data-testid":"market-trends-homes-sold-amount",children:r.current})]})}),(0,ce.jsx)(Mt,{yearlyChange:s,fieldTitle:e("graphs.homesSold.title"),disclaimer:e("graphs.homesSold.changeDisclaimer")})]}),(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)(Rt,{isIncrease:!s||s>=0})})]}):null},Jt="w-2 h-2 rounded-full mr-1.5",Qt="\n flex items-center mr-4\n",ea=()=>{const{t:e}=n("neighborhoodMarketTrends"),{marketActivity:t,appearance:a}=pe();return t?(0,ce.jsxs)("div",{className:vt,"data-testid":"market-trends-housing-market-conditions",children:[(0,ce.jsx)("h3",{className:xt,children:e("graphs.housingMarketConditions.title")}),(0,ce.jsx)("h4",{className:ft,children:e("graphs.housingMarketConditions.subtitle")}),(0,ce.jsxs)("div",{className:"\n flex\n",children:[(0,ce.jsxs)("div",{className:"\n flex flex-col justify-between py-12 items-center w-10 -mr-4 md:-mr-2\n",children:[(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.buyer")}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.neutral")}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.seller")})]}),(0,ce.jsx)("div",{className:"\n flex-1\n",children:(0,ce.jsx)(Ft,{colors:a?.colors,children:(0,ce.jsx)($t,{})})})]}),(0,ce.jsxs)("div",{className:"\n flex items-center justify-start mt-8 md:mt-2 ml-14\n",children:[(0,ce.jsxs)("div",{className:Qt,children:[(0,ce.jsx)("div",{className:Jt,style:{backgroundColor:a?.colors?.sellerColor||E.sellerColor}}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.seller")})]}),(0,ce.jsxs)("div",{className:Qt,children:[(0,ce.jsx)("div",{className:Jt,style:{backgroundColor:a?.colors?.neutralColor||E.neutralColor}}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.neutral")})]}),(0,ce.jsxs)("div",{className:Qt,children:[(0,ce.jsx)("div",{className:Jt,style:{backgroundColor:a?.colors?.buyerColor||E.buyerColor}}),(0,ce.jsx)("p",{className:ft,children:e("graphs.housingMarketConditions.marketTypes.buyer")})]})]})]}):null},ta=({className:e,children:t})=>(0,ce.jsx)("div",{className:`\n flex flex-col w-full justify-between gap-2\n ${e||""}`,"data-testid":"market-trends-cards",children:t}),aa=({hideAttribution:e})=>{const{t:t}=n("neighborhoodMarketTrends"),{locale:a,geography:r}=pe();return(0,ce.jsxs)("div",{className:"mt-2 md:mt-0 md:flex items-center bg-base-white [&>a]:justify-end","data-testid":"market-trends-footer",children:[(0,ce.jsx)("p",{className:"flex-1 text-sm p-3 text-gray-400 font-medium","data-testid":"market-trends-footer-disclaimer",children:t("disclaimer.footer",{context:(r?.level||10)>=30?"large":void 0})}),(0,ce.jsx)(F,{sdkName:"neighborhood-market-trends",locale:a,isHidden:e})]})},ra="\n flex\n flex-col\n gap-4\n",sa=()=>{const{t:e}=n("neighborhoodMarketTrends"),t=m(),{isLoading:a,title:r,marketActivity:s,homesSoldPercentage:i,hideAttribution:l,omitTabs:o}=pe(),d=s?.market_activity_by_property_type?.all_residential_properties.intervals,c=(0,J.useMemo)(()=>{const t=d?.["12m"]?.market_activity.stats_over_period,a=d?.["12m"]?.market_activity.stats_at_period_end,r=d?.["30d"]?.market_activity.stats_over_period,s=Object.entries(d??{}).filter(([e])=>e.match(/^\d{4}-\d{2}$/)),n=0===s.length||s.every(([e,t])=>0===(t.market_activity?.stats_over_period?.market_conditions_indicator_MOI_12month??0))||s.every(([e,t])=>!t.market_activity?.stats_over_period?.market_conditions_assessment);return[{id:ne.marketConditions,icon:y,label:e("tabs.marketConditions.title"),content:[...n||void 0===r?.market_conditions_indicator_MOI_12month?[]:[(0,ce.jsx)(Kt,{},"market-type"),(0,ce.jsx)(ea,{},"market-conditions")]]},{id:ne.currentActivity,icon:re,label:e("tabs.currentActivity.title"),content:[...void 0!==a?.home_asking_prices.median_price?[(0,ce.jsx)(Gt,{},"median-asking-price")]:[],...void 0!==t?.market_speed.median_days_on_market?[(0,ce.jsx)(Bt,{},"median-days-on-market")]:[],...void 0!==d?.["30d"]?.market_activity?.stats_at_period_end?.active_listings_count?[(0,ce.jsx)(qt,{},"active-listings")]:[],...void 0!==t?.home_selling_prices?.median_ratio_of_sold_to_asking_price_percent&&i>=.75?[(0,ce.jsx)(Wt,{},"median-sales-vs-asking-price")]:[]]},{id:ne.recentTrends,icon:v,label:e("tabs.recentTrends.title"),content:[...void 0!==t?.median_construction_year_sold_homes?[(0,ce.jsx)(Ut,{},"median-construction-year")]:[],...void 0!==t?.sold_homes_count&&i>=.75?[(0,ce.jsx)(zt,{},"median-sale-price")]:[],...void 0!==t?.home_selling_prices.median_price_per_square_foot&&i>=.75?[(0,ce.jsx)(Yt,{},"median-sale-price-sq-ft")]:[],...void 0!==t?.sold_homes_count?[(0,ce.jsx)(Xt,{},"homes-sold")]:[]]}].filter(e=>!o?.includes(e.id)&&e.content.length>0)},[d]),p=e=>{t.postEvent({eventType:le.TAB_CLICKED,eventAttributes:[{label:"activeCategory",data:e}]}),t.trackAnalyticsEvent({eventName:oe.CATEGORY_SELECTED,eventAttributes:{ll_selected_category:e}})};return(0,ce.jsxs)(ce.Fragment,{children:[(0,ce.jsx)(Y,{title:"string"==typeof r||!1===r?r:e("title")}),(0,ce.jsx)("p",{className:"\n mb-6\n text-xs\n text-neutral-800\n",children:e("disclaimer.header")}),a?(0,ce.jsx)("div",{className:"\n md:border md:border-gray-200 md:rounded-md w-full\n","data-testid":"market-trends-loading","data-is-loading":!0,children:(0,ce.jsx)("div",{className:"\n flex flex-col gap-2 w-full md:py-8 md:px-4\n",children:[0,1,2].map(e=>(0,ce.jsx)("div",{className:"\n rounded-md bg-gray-200 animate-pulse min-h-40 w-full\n"},`market-trends-skeleton-${e}`))})}):!s||!d||d&&0===Object.keys(d).length?(0,ce.jsx)(X,{text:e("noData")}):(0,ce.jsxs)(ce.Fragment,{children:[(0,ce.jsx)("div",{className:"\n border\n rounded-md\n hidden\n md:block\n","data-testid":"market-trends-desktop",children:(0,ce.jsxs)(_t,{defaultValue:c[0]?.id,onChange:p,children:[(0,ce.jsx)(ht,{children:c.map(e=>(0,ce.jsx)(pt,{icon:e.icon,tabId:e.id,className:"\n border-r-2\n last:border-r-0\n",testId:`market-trends-tab-${e.id}`,children:e.label},e.id))}),(0,ce.jsx)("div",{className:"\n py-8\n px-4\n",children:(0,ce.jsx)(ta,{children:c.map(e=>(0,ce.jsx)(ut,{tabId:e.id,className:ra,testId:`market-trends-tab-panel-${e.id}`,children:e.content},`tab-content-${e.id}`))})})]})}),(0,ce.jsx)("div",{className:"\n md:hidden\n","data-testid":"market-trends-mobile",children:(0,ce.jsx)(ct,{defaultValue:c[0]?.id,children:c.map(e=>(0,ce.jsxs)(lt,{value:e.id,children:[(0,ce.jsx)(dt,{icon:e.icon,testId:`market-trends-accordion-trigger-${e.id}`,children:e.label}),(0,ce.jsx)(ot,{className:ra,testId:`market-trends-accordion-panel-${e.id}`,children:e.content})]},e.id))})})]}),(0,ce.jsx)(aa,{hideAttribution:l})]})},ia=_({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:d().optional(),hideAttribution:p().optional(),omitTabs:d().optional(),appearance:_({colors:_({buyerColor:i().optional(),sellerColor:i().optional(),decreaseColor:i().optional(),neutralColor:i().optional(),increaseColor:i().optional()}).optional()}).optional()}).noUnknown(!0);r(c.neighborhoodWrap.key);var na=()=>{const{sdkState:e}=D(),t=G(),r=e.globalOptions?.locale||"en",s=(0,J.useMemo)(()=>e.options?.geographyId?{geographyId:e.options?.geographyId}:{lat:e.options?.lat,lng:e.options?.lng},[e.options?.lat,e.options?.lng,e.options?.geographyId]);return(0,ce.jsx)(q,{children:(0,ce.jsx)(K,{sdk:"Neighborhood Market Trends",schema:ia,options:e.options,children:(0,ce.jsx)(u,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:h.NEIGHBORHOOD_MARKET_TRENDS,children:(0,ce.jsx)(a,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:c.neighborhoodWrap,meta:{clientId:e.clientId,productName:h.NEIGHBORHOOD_MARKET_TRENDS,productVersion:"1.25.0"},attributes:{location:s,host:e.location,host_url:document.referrer,locale:r,isMobile:t},flags:{isDebugMode:!1},children:(0,ce.jsx)(ue,{children:(0,ce.jsx)(sa,{})})})})})})};export{na as default};
|
|
3
|
+
//# sourceMappingURL=NeighborhoodMarketTrends-DUxRgP1q.js.map
|