@local-logic/sdks-app 1.24.46 → 1.24.48
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-DbOBCi1z.js → Attribution-VAUTsSaN.js} +2 -2
- package/dist/assets/{Attribution-DbOBCi1z.js.map → Attribution-VAUTsSaN.js.map} +1 -1
- package/dist/assets/{Attribution-legacy-CfRQzeMT.js → Attribution-legacy-DboLkPv_.js} +2 -2
- package/dist/assets/{Attribution-legacy-CfRQzeMT.js.map → Attribution-legacy-DboLkPv_.js.map} +1 -1
- package/dist/assets/{Cluster-BHQcO6iC-COo7MZkY.js → Cluster-BHQcO6iC-BJl43kIy.js} +2 -2
- package/dist/assets/{Cluster-BHQcO6iC-COo7MZkY.js.map → Cluster-BHQcO6iC-BJl43kIy.js.map} +1 -1
- package/dist/assets/{Cluster-BHQcO6iC-legacy-YFZGJFm9.js → Cluster-BHQcO6iC-legacy-CWct_rTL.js} +2 -2
- package/dist/assets/{Cluster-BHQcO6iC-legacy-YFZGJFm9.js.map → Cluster-BHQcO6iC-legacy-CWct_rTL.js.map} +1 -1
- package/dist/assets/{Google-BFAJ84CT-CVCRsl9z.js → Google-BFAJ84CT-CiY2-EF8.js} +2 -2
- package/dist/assets/{Google-BFAJ84CT-CVCRsl9z.js.map → Google-BFAJ84CT-CiY2-EF8.js.map} +1 -1
- package/dist/assets/{Google-BFAJ84CT-legacy-W4Tvm2Mc.js → Google-BFAJ84CT-legacy-PddiRo87.js} +2 -2
- package/dist/assets/{Google-BFAJ84CT-legacy-W4Tvm2Mc.js.map → Google-BFAJ84CT-legacy-PddiRo87.js.map} +1 -1
- package/dist/assets/{Google-BS41ufih-C3NNI2F3.js → Google-BS41ufih-DgrARGk_.js} +2 -2
- package/dist/assets/{Google-BS41ufih-C3NNI2F3.js.map → Google-BS41ufih-DgrARGk_.js.map} +1 -1
- package/dist/assets/{Google-BS41ufih-legacy-KqwoY-s-.js → Google-BS41ufih-legacy-Ctgvq5J8.js} +2 -2
- package/dist/assets/{Google-BS41ufih-legacy-KqwoY-s-.js.map → Google-BS41ufih-legacy-Ctgvq5J8.js.map} +1 -1
- package/dist/assets/{Google-CH7a2yx--B5OZwBb3.js → Google-CH7a2yx--6S15nNMT.js} +2 -2
- package/dist/assets/{Google-CH7a2yx--B5OZwBb3.js.map → Google-CH7a2yx--6S15nNMT.js.map} +1 -1
- package/dist/assets/{Google-CH7a2yx--legacy-ovzCny0i.js → Google-CH7a2yx--legacy-BYKE7f5n.js} +2 -2
- package/dist/assets/{Google-CH7a2yx--legacy-ovzCny0i.js.map → Google-CH7a2yx--legacy-BYKE7f5n.js.map} +1 -1
- package/dist/assets/{Google-CXGCn-oJ-znpmnYf8.js → Google-CXGCn-oJ-CVQofaXT.js} +2 -2
- package/dist/assets/{Google-CXGCn-oJ-znpmnYf8.js.map → Google-CXGCn-oJ-CVQofaXT.js.map} +1 -1
- package/dist/assets/{Google-CXGCn-oJ-legacy-DqVd9_aH.js → Google-CXGCn-oJ-legacy-JWuCwGCf.js} +2 -2
- package/dist/assets/{Google-CXGCn-oJ-legacy-DqVd9_aH.js.map → Google-CXGCn-oJ-legacy-JWuCwGCf.js.map} +1 -1
- package/dist/assets/{Google-DbOLrYJn-DOg3M4UT.js → Google-DbOLrYJn-CrsHDATa.js} +2 -2
- package/dist/assets/{Google-DbOLrYJn-DOg3M4UT.js.map → Google-DbOLrYJn-CrsHDATa.js.map} +1 -1
- package/dist/assets/{Google-DbOLrYJn-legacy-CgUrK8b9.js → Google-DbOLrYJn-legacy-CiSc0ULE.js} +2 -2
- package/dist/assets/{Google-DbOLrYJn-legacy-CgUrK8b9.js.map → Google-DbOLrYJn-legacy-CiSc0ULE.js.map} +1 -1
- package/dist/assets/{GridGraph-yBBTzk8L.js → GridGraph-Bw4l3RHR.js} +2 -2
- package/dist/assets/{GridGraph-yBBTzk8L.js.map → GridGraph-Bw4l3RHR.js.map} +1 -1
- package/dist/assets/{GridGraph-legacy-BEm4tULl.js → GridGraph-legacy-DWR6NaB3.js} +2 -2
- package/dist/assets/{GridGraph-legacy-BEm4tULl.js.map → GridGraph-legacy-DWR6NaB3.js.map} +1 -1
- package/dist/assets/{LeadCapture-CcCJOdMF.js → LeadCapture-CkmSW5Pr.js} +2 -2
- package/dist/assets/{LeadCapture-CcCJOdMF.js.map → LeadCapture-CkmSW5Pr.js.map} +1 -1
- package/dist/assets/{LeadCapture-legacy-CC7GvUIm.js → LeadCapture-legacy-DKtkrsO8.js} +2 -2
- package/dist/assets/{LeadCapture-legacy-CC7GvUIm.js.map → LeadCapture-legacy-DKtkrsO8.js.map} +1 -1
- package/dist/assets/{LocalContent-CUEHVePD.js → LocalContent-CV5K_rfr.js} +2 -2
- package/dist/assets/{LocalContent-CUEHVePD.js.map → LocalContent-CV5K_rfr.js.map} +1 -1
- package/dist/assets/{LocalContent-legacy-Eg3jqs1z.js → LocalContent-legacy-C5Fpv5_B.js} +2 -2
- package/dist/assets/{LocalContent-legacy-Eg3jqs1z.js.map → LocalContent-legacy-C5Fpv5_B.js.map} +1 -1
- package/dist/assets/{LocalDemographics-D1myrahD.js → LocalDemographics-D3-WhZSc.js} +2 -2
- package/dist/assets/{LocalDemographics-D1myrahD.js.map → LocalDemographics-D3-WhZSc.js.map} +1 -1
- package/dist/assets/{LocalDemographics-legacy-DJscsEe8.js → LocalDemographics-legacy-B6Sa5XzJ.js} +2 -2
- package/dist/assets/{LocalDemographics-legacy-DJscsEe8.js.map → LocalDemographics-legacy-B6Sa5XzJ.js.map} +1 -1
- package/dist/assets/{Mapbox-CpLnA607-C35-XzRp.js → Mapbox-CpLnA607-CEa_XDw3.js} +2 -2
- package/dist/assets/{Mapbox-CpLnA607-C35-XzRp.js.map → Mapbox-CpLnA607-CEa_XDw3.js.map} +1 -1
- package/dist/assets/{Mapbox-CpLnA607-legacy-D-RFP_i8.js → Mapbox-CpLnA607-legacy-BMu_DMew.js} +2 -2
- package/dist/assets/{Mapbox-CpLnA607-legacy-D-RFP_i8.js.map → Mapbox-CpLnA607-legacy-BMu_DMew.js.map} +1 -1
- package/dist/assets/{Mapbox-DDJ1gHRb-BEuZAMRW.js → Mapbox-DDJ1gHRb-C36Qt85j.js} +2 -2
- package/dist/assets/{Mapbox-DDJ1gHRb-BEuZAMRW.js.map → Mapbox-DDJ1gHRb-C36Qt85j.js.map} +1 -1
- package/dist/assets/{Mapbox-DDJ1gHRb-legacy-D5mmvaXK.js → Mapbox-DDJ1gHRb-legacy-DVoK7jfv.js} +2 -2
- package/dist/assets/{Mapbox-DDJ1gHRb-legacy-D5mmvaXK.js.map → Mapbox-DDJ1gHRb-legacy-DVoK7jfv.js.map} +1 -1
- package/dist/assets/{Mapbox-DiD9etYJ-D0p8Z1Hf.js → Mapbox-DiD9etYJ-CO_gjNje.js} +2 -2
- package/dist/assets/{Mapbox-DiD9etYJ-D0p8Z1Hf.js.map → Mapbox-DiD9etYJ-CO_gjNje.js.map} +1 -1
- package/dist/assets/{Mapbox-DiD9etYJ-legacy-ecnYbFLA.js → Mapbox-DiD9etYJ-legacy-Dgmp3ATd.js} +2 -2
- package/dist/assets/{Mapbox-DiD9etYJ-legacy-ecnYbFLA.js.map → Mapbox-DiD9etYJ-legacy-Dgmp3ATd.js.map} +1 -1
- package/dist/assets/{Mapbox-DtZmt1D_-D-25hmVE.js → Mapbox-DtZmt1D_-BlzdhDxn.js} +2 -2
- package/dist/assets/{Mapbox-DtZmt1D_-D-25hmVE.js.map → Mapbox-DtZmt1D_-BlzdhDxn.js.map} +1 -1
- package/dist/assets/{Mapbox-DtZmt1D_-legacy-Dt4ppBn4.js → Mapbox-DtZmt1D_-legacy-CO57dhdL.js} +2 -2
- package/dist/assets/{Mapbox-DtZmt1D_-legacy-Dt4ppBn4.js.map → Mapbox-DtZmt1D_-legacy-CO57dhdL.js.map} +1 -1
- package/dist/assets/{Mapbox-u11C3LWs-NZfgmrTU.js → Mapbox-u11C3LWs-BgmUme_E.js} +2 -2
- package/dist/assets/{Mapbox-u11C3LWs-NZfgmrTU.js.map → Mapbox-u11C3LWs-BgmUme_E.js.map} +1 -1
- package/dist/assets/{Mapbox-u11C3LWs-legacy-C66ki0mu.js → Mapbox-u11C3LWs-legacy-xAhG5vp_.js} +2 -2
- package/dist/assets/{Mapbox-u11C3LWs-legacy-C66ki0mu.js.map → Mapbox-u11C3LWs-legacy-xAhG5vp_.js.map} +1 -1
- package/dist/assets/{Maptiler-C0oTROMk-BqovvwwC.js → Maptiler-C0oTROMk-1XxXvK9C.js} +2 -2
- package/dist/assets/{Maptiler-C0oTROMk-BqovvwwC.js.map → Maptiler-C0oTROMk-1XxXvK9C.js.map} +1 -1
- package/dist/assets/{Maptiler-C0oTROMk-legacy-BBj3sP6x.js → Maptiler-C0oTROMk-legacy-Dpy0lP10.js} +2 -2
- package/dist/assets/{Maptiler-C0oTROMk-legacy-BBj3sP6x.js.map → Maptiler-C0oTROMk-legacy-Dpy0lP10.js.map} +1 -1
- package/dist/assets/{Maptiler-DJScKW8p-legacy-XfyovsQe.js → Maptiler-DJScKW8p-legacy-C4Afd73M.js} +2 -2
- package/dist/assets/{Maptiler-DJScKW8p-legacy-XfyovsQe.js.map → Maptiler-DJScKW8p-legacy-C4Afd73M.js.map} +1 -1
- package/dist/assets/{Maptiler-DJScKW8p-TUrBO7_a.js → Maptiler-DJScKW8p-tTknnklb.js} +2 -2
- package/dist/assets/{Maptiler-DJScKW8p-TUrBO7_a.js.map → Maptiler-DJScKW8p-tTknnklb.js.map} +1 -1
- package/dist/assets/{Maptiler-DdeFS4iM-Cx5ogDJ1.js → Maptiler-DdeFS4iM-4hobXola.js} +2 -2
- package/dist/assets/{Maptiler-DdeFS4iM-Cx5ogDJ1.js.map → Maptiler-DdeFS4iM-4hobXola.js.map} +1 -1
- package/dist/assets/{Maptiler-DdeFS4iM-legacy-NQtjsE92.js → Maptiler-DdeFS4iM-legacy-CNntdDSk.js} +2 -2
- package/dist/assets/{Maptiler-DdeFS4iM-legacy-NQtjsE92.js.map → Maptiler-DdeFS4iM-legacy-CNntdDSk.js.map} +1 -1
- package/dist/assets/{Maptiler-DqeshLom-mNJfOh1F.js → Maptiler-DqeshLom-DbyVG18V.js} +2 -2
- package/dist/assets/{Maptiler-DqeshLom-mNJfOh1F.js.map → Maptiler-DqeshLom-DbyVG18V.js.map} +1 -1
- package/dist/assets/{Maptiler-DqeshLom-legacy-EC2k1zPm.js → Maptiler-DqeshLom-legacy-Dn6h239n.js} +2 -2
- package/dist/assets/{Maptiler-DqeshLom-legacy-EC2k1zPm.js.map → Maptiler-DqeshLom-legacy-Dn6h239n.js.map} +1 -1
- package/dist/assets/{Maptiler-YjlcPccn-BJPHRwv_.js → Maptiler-YjlcPccn-D7VPGNbZ.js} +2 -2
- package/dist/assets/{Maptiler-YjlcPccn-BJPHRwv_.js.map → Maptiler-YjlcPccn-D7VPGNbZ.js.map} +1 -1
- package/dist/assets/{Maptiler-YjlcPccn-legacy-ChoeWKWv.js → Maptiler-YjlcPccn-legacy-BLFJcOlg.js} +2 -2
- package/dist/assets/{Maptiler-YjlcPccn-legacy-ChoeWKWv.js.map → Maptiler-YjlcPccn-legacy-BLFJcOlg.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Bc3X9WQk-65JagyeU.js → MarkerIcon-Bc3X9WQk-Brd7XGn2.js} +2 -2
- package/dist/assets/{MarkerIcon-Bc3X9WQk-65JagyeU.js.map → MarkerIcon-Bc3X9WQk-Brd7XGn2.js.map} +1 -1
- package/dist/assets/{MarkerIcon-Bc3X9WQk-legacy-gVB3owO5.js → MarkerIcon-Bc3X9WQk-legacy-CVBR0czK.js} +2 -2
- package/dist/assets/{MarkerIcon-Bc3X9WQk-legacy-gVB3owO5.js.map → MarkerIcon-Bc3X9WQk-legacy-CVBR0czK.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-legacy-BqOK9NxX.js → NeighborhoodCard-legacy-6QatJ_AV.js} +2 -2
- package/dist/assets/{NeighborhoodCard-legacy-BqOK9NxX.js.map → NeighborhoodCard-legacy-6QatJ_AV.js.map} +1 -1
- package/dist/assets/{NeighborhoodCard-C2AH1bMm.js → NeighborhoodCard-y49qqUhP.js} +2 -2
- package/dist/assets/{NeighborhoodCard-C2AH1bMm.js.map → NeighborhoodCard-y49qqUhP.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-BsXGAPP1.js → NeighborhoodCharacteristics-DNuFR4OM.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-BsXGAPP1.js.map → NeighborhoodCharacteristics-DNuFR4OM.js.map} +1 -1
- package/dist/assets/{NeighborhoodCharacteristics-legacy-D-ZKNfDg.js → NeighborhoodCharacteristics-legacy-CpZ6yc2w.js} +2 -2
- package/dist/assets/{NeighborhoodCharacteristics-legacy-D-ZKNfDg.js.map → NeighborhoodCharacteristics-legacy-CpZ6yc2w.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-DKSbyeKt.js → NeighborhoodDemographics-CXFUR9KF.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-DKSbyeKt.js.map → NeighborhoodDemographics-CXFUR9KF.js.map} +1 -1
- package/dist/assets/{NeighborhoodDemographics-legacy-BOMYw_wh.js → NeighborhoodDemographics-legacy-DSkioQNG.js} +2 -2
- package/dist/assets/{NeighborhoodDemographics-legacy-BOMYw_wh.js.map → NeighborhoodDemographics-legacy-DSkioQNG.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-DJZf3R4I.js → NeighborhoodFeatured-BKd6YA1v.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-DJZf3R4I.js.map → NeighborhoodFeatured-BKd6YA1v.js.map} +1 -1
- package/dist/assets/{NeighborhoodFeatured-legacy-BGKve7eG.js → NeighborhoodFeatured-legacy-CCONjKB2.js} +2 -2
- package/dist/assets/{NeighborhoodFeatured-legacy-BGKve7eG.js.map → NeighborhoodFeatured-legacy-CCONjKB2.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-BwIQbJJr.js → NeighborhoodHero-DVQjRoqv.js} +2 -2
- package/dist/assets/{NeighborhoodHero-BwIQbJJr.js.map → NeighborhoodHero-DVQjRoqv.js.map} +1 -1
- package/dist/assets/{NeighborhoodHero-legacy-SrF8PbpD.js → NeighborhoodHero-legacy-BeO8mbMP.js} +2 -2
- package/dist/assets/{NeighborhoodHero-legacy-SrF8PbpD.js.map → NeighborhoodHero-legacy-BeO8mbMP.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-mjAr2hfD.js → NeighborhoodHighlights-C-l3FSHS.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-mjAr2hfD.js.map → NeighborhoodHighlights-C-l3FSHS.js.map} +1 -1
- package/dist/assets/{NeighborhoodHighlights-legacy-C67W_sfq.js → NeighborhoodHighlights-legacy-VAwV6Yuf.js} +2 -2
- package/dist/assets/{NeighborhoodHighlights-legacy-C67W_sfq.js.map → NeighborhoodHighlights-legacy-VAwV6Yuf.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-DPYOytyi.js → NeighborhoodMap-SOLqk915.js} +2 -2
- package/dist/assets/{NeighborhoodMap-DPYOytyi.js.map → NeighborhoodMap-SOLqk915.js.map} +1 -1
- package/dist/assets/{NeighborhoodMap-legacy-DTKrBYM9.js → NeighborhoodMap-legacy-6HMmPy3k.js} +2 -2
- package/dist/assets/{NeighborhoodMap-legacy-DTKrBYM9.js.map → NeighborhoodMap-legacy-6HMmPy3k.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-DVoJqBSK.js → NeighborhoodMarketTrends-BWkydTvh.js} +3 -3
- package/dist/assets/{NeighborhoodMarketTrends-DVoJqBSK.js.map → NeighborhoodMarketTrends-BWkydTvh.js.map} +1 -1
- package/dist/assets/{NeighborhoodMarketTrends-legacy-DoJzHzt-.js → NeighborhoodMarketTrends-legacy-BEaZtDZU.js} +2 -2
- package/dist/assets/{NeighborhoodMarketTrends-legacy-DoJzHzt-.js.map → NeighborhoodMarketTrends-legacy-BEaZtDZU.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-Cxd5Ckmz.js → NeighborhoodMatch-SYR9pQjq.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-Cxd5Ckmz.js.map → NeighborhoodMatch-SYR9pQjq.js.map} +1 -1
- package/dist/assets/{NeighborhoodMatch-legacy-CCvhi7d9.js → NeighborhoodMatch-legacy-D2nxJCLs.js} +2 -2
- package/dist/assets/{NeighborhoodMatch-legacy-CCvhi7d9.js.map → NeighborhoodMatch-legacy-D2nxJCLs.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-Cp13TlP1.js → NeighborhoodPropertyValueDrivers-RNMduJAJ.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-Cp13TlP1.js.map → NeighborhoodPropertyValueDrivers-RNMduJAJ.js.map} +1 -1
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-DgHKj3YB.js → NeighborhoodPropertyValueDrivers-legacy-DgcEJj_s.js} +2 -2
- package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-DgHKj3YB.js.map → NeighborhoodPropertyValueDrivers-legacy-DgcEJj_s.js.map} +1 -1
- package/dist/assets/{NeighborhoodSchools-BxW7f8MW.js → NeighborhoodSchools-BKGM8wnj.js} +2 -2
- package/dist/assets/NeighborhoodSchools-BKGM8wnj.js.map +1 -0
- package/dist/assets/{NeighborhoodSchools-legacy-wn_vhMVg.js → NeighborhoodSchools-legacy-BRf8JdnT.js} +2 -2
- package/dist/assets/NeighborhoodSchools-legacy-BRf8JdnT.js.map +1 -0
- package/dist/assets/{NeighborhoodShowcase-Rtb9H8H0.js → NeighborhoodShowcase-BiCRslfL.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-Rtb9H8H0.js.map → NeighborhoodShowcase-BiCRslfL.js.map} +1 -1
- package/dist/assets/{NeighborhoodShowcase-legacy-YVLKFRYs.js → NeighborhoodShowcase-legacy-DGxKc7rU.js} +2 -2
- package/dist/assets/{NeighborhoodShowcase-legacy-YVLKFRYs.js.map → NeighborhoodShowcase-legacy-DGxKc7rU.js.map} +1 -1
- package/dist/assets/{NoDataContent-j_PMnP79.js → NoDataContent-Cuc_i84P.js} +2 -2
- package/dist/assets/{NoDataContent-j_PMnP79.js.map → NoDataContent-Cuc_i84P.js.map} +1 -1
- package/dist/assets/{NoDataContent-legacy-CjZJUM48.js → NoDataContent-legacy-BBaI2iBm.js} +2 -2
- package/dist/assets/{NoDataContent-legacy-CjZJUM48.js.map → NoDataContent-legacy-BBaI2iBm.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-D1ZDVM4H.js → ResizeWrapper-VGCtIrce.js} +2 -2
- package/dist/assets/{ResizeWrapper-D1ZDVM4H.js.map → ResizeWrapper-VGCtIrce.js.map} +1 -1
- package/dist/assets/{ResizeWrapper-legacy-iNKkL14f.js → ResizeWrapper-legacy-DkCsuOZO.js} +2 -2
- package/dist/assets/{ResizeWrapper-legacy-iNKkL14f.js.map → ResizeWrapper-legacy-DkCsuOZO.js.map} +1 -1
- package/dist/assets/{ScoreCardList-Da29v8up.js → ScoreCardList-Bqj71YOG.js} +2 -2
- package/dist/assets/{ScoreCardList-Da29v8up.js.map → ScoreCardList-Bqj71YOG.js.map} +1 -1
- package/dist/assets/{ScoreCardList-legacy-B03WLqqz.js → ScoreCardList-legacy-GjU22ucO.js} +2 -2
- package/dist/assets/{ScoreCardList-legacy-B03WLqqz.js.map → ScoreCardList-legacy-GjU22ucO.js.map} +1 -1
- package/dist/assets/{ScoreIcon-Cs8AKFlJ.js → ScoreIcon-D8jtY6Ea.js} +2 -2
- package/dist/assets/{ScoreIcon-Cs8AKFlJ.js.map → ScoreIcon-D8jtY6Ea.js.map} +1 -1
- package/dist/assets/{ScoreIcon-legacy-DLpLn9UI.js → ScoreIcon-legacy-DpsGX2TN.js} +2 -2
- package/dist/assets/{ScoreIcon-legacy-DLpLn9UI.js.map → ScoreIcon-legacy-DpsGX2TN.js.map} +1 -1
- package/dist/assets/{Testing--n5Ro0Ek-D8R3uSPy.js → Testing--n5Ro0Ek-Pvcn0lfC.js} +2 -2
- package/dist/assets/{Testing--n5Ro0Ek-D8R3uSPy.js.map → Testing--n5Ro0Ek-Pvcn0lfC.js.map} +1 -1
- package/dist/assets/{Testing--n5Ro0Ek-legacy-lrZwtxeE.js → Testing--n5Ro0Ek-legacy-Ba6Q6M2W.js} +2 -2
- package/dist/assets/{Testing--n5Ro0Ek-legacy-lrZwtxeE.js.map → Testing--n5Ro0Ek-legacy-Ba6Q6M2W.js.map} +1 -1
- package/dist/assets/{Testing-BNJwzbRK-DMVFp6wm.js → Testing-BNJwzbRK-eW1GWySU.js} +2 -2
- package/dist/assets/{Testing-BNJwzbRK-DMVFp6wm.js.map → Testing-BNJwzbRK-eW1GWySU.js.map} +1 -1
- package/dist/assets/{Testing-BNJwzbRK-legacy-DhE0k8_N.js → Testing-BNJwzbRK-legacy-CWb3Z6R3.js} +2 -2
- package/dist/assets/{Testing-BNJwzbRK-legacy-DhE0k8_N.js.map → Testing-BNJwzbRK-legacy-CWb3Z6R3.js.map} +1 -1
- package/dist/assets/{Testing-CoRLhmNT-BJJKyFG7.js → Testing-CoRLhmNT-BIpkyisS.js} +2 -2
- package/dist/assets/{Testing-CoRLhmNT-BJJKyFG7.js.map → Testing-CoRLhmNT-BIpkyisS.js.map} +1 -1
- package/dist/assets/{Testing-CoRLhmNT-legacy-S3Y0lzmm.js → Testing-CoRLhmNT-legacy-cwrKNn0N.js} +2 -2
- package/dist/assets/{Testing-CoRLhmNT-legacy-S3Y0lzmm.js.map → Testing-CoRLhmNT-legacy-cwrKNn0N.js.map} +1 -1
- package/dist/assets/{Testing-DGUeGxdc-VXIwuCIj.js → Testing-DGUeGxdc-L5zJf9Fs.js} +2 -2
- package/dist/assets/{Testing-DGUeGxdc-VXIwuCIj.js.map → Testing-DGUeGxdc-L5zJf9Fs.js.map} +1 -1
- package/dist/assets/{Testing-DGUeGxdc-legacy-B_y2fEvm.js → Testing-DGUeGxdc-legacy-BbdpxUgc.js} +2 -2
- package/dist/assets/{Testing-DGUeGxdc-legacy-B_y2fEvm.js.map → Testing-DGUeGxdc-legacy-BbdpxUgc.js.map} +1 -1
- package/dist/assets/{Testing-DzWAcbhL-DcrzqLJK.js → Testing-DzWAcbhL-bQx9Z3zk.js} +2 -2
- package/dist/assets/{Testing-DzWAcbhL-DcrzqLJK.js.map → Testing-DzWAcbhL-bQx9Z3zk.js.map} +1 -1
- package/dist/assets/{Testing-DzWAcbhL-legacy-Cid9X_rY.js → Testing-DzWAcbhL-legacy-BVsTIu7Y.js} +2 -2
- package/dist/assets/{Testing-DzWAcbhL-legacy-Cid9X_rY.js.map → Testing-DzWAcbhL-legacy-BVsTIu7Y.js.map} +1 -1
- package/dist/assets/{TitleHeader-DVfGGRuh.js → TitleHeader-CV5TUzIR.js} +2 -2
- package/dist/assets/{TitleHeader-DVfGGRuh.js.map → TitleHeader-CV5TUzIR.js.map} +1 -1
- package/dist/assets/{TitleHeader-legacy-C0J7rhSj.js → TitleHeader-legacy-DtRJmLOD.js} +2 -2
- package/dist/assets/{TitleHeader-legacy-C0J7rhSj.js.map → TitleHeader-legacy-DtRJmLOD.js.map} +1 -1
- package/dist/assets/{Trans-DHo3R0Pu.js → Trans-DeObSm-C.js} +2 -2
- package/dist/assets/{Trans-DHo3R0Pu.js.map → Trans-DeObSm-C.js.map} +1 -1
- package/dist/assets/{Trans-legacy-IBYjh5ES.js → Trans-legacy-ClsWwsJX.js} +2 -2
- package/dist/assets/{Trans-legacy-IBYjh5ES.js.map → Trans-legacy-ClsWwsJX.js.map} +1 -1
- package/dist/assets/{ValidateOptions-6YGZBTfN.js → ValidateOptions-DlSPr2zT.js} +2 -2
- package/dist/assets/{ValidateOptions-6YGZBTfN.js.map → ValidateOptions-DlSPr2zT.js.map} +1 -1
- package/dist/assets/{ValidateOptions-legacy-D3wUBs-p.js → ValidateOptions-legacy-C72LlxRr.js} +2 -2
- package/dist/assets/{ValidateOptions-legacy-D3wUBs-p.js.map → ValidateOptions-legacy-C72LlxRr.js.map} +1 -1
- package/dist/assets/{dist-md0aO-Bl.js → dist-CHt1w1gi.js} +2 -2
- package/dist/assets/{dist-md0aO-Bl.js.map → dist-CHt1w1gi.js.map} +1 -1
- package/dist/assets/{dist-legacy-N10x0Qn4.js → dist-legacy-Dfnzo7mD.js} +2 -2
- package/dist/assets/{dist-legacy-N10x0Qn4.js.map → dist-legacy-Dfnzo7mD.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-DsdY4TCR.js → getMapProviderConfig-cBxa08J2.js} +3 -3
- package/dist/assets/{getMapProviderConfig-DsdY4TCR.js.map → getMapProviderConfig-cBxa08J2.js.map} +1 -1
- package/dist/assets/{getMapProviderConfig-legacy-DFdhoXtH.js → getMapProviderConfig-legacy-DyD__vlI.js} +2 -2
- package/dist/assets/{getMapProviderConfig-legacy-DFdhoXtH.js.map → getMapProviderConfig-legacy-DyD__vlI.js.map} +1 -1
- package/dist/assets/{index-BEULKAl4.js → index-DXa_XaD4.js} +3 -3
- package/dist/assets/{index-BEULKAl4.js.map → index-DXa_XaD4.js.map} +1 -1
- package/dist/assets/{index-legacy-BrWz4Paw.js → index-legacy-k3Sg9cNx.js} +2 -2
- package/dist/assets/{index-legacy-BrWz4Paw.js.map → index-legacy-k3Sg9cNx.js.map} +1 -1
- package/dist/assets/{index.es-BjcD-yLc.js → index.es-Cf2zREaA.js} +2 -2
- package/dist/assets/{index.es-BjcD-yLc.js.map → index.es-Cf2zREaA.js.map} +1 -1
- package/dist/assets/{index.es-legacy-DmyP4yz8.js → index.es-legacy-DA8oW7UU.js} +2 -2
- package/dist/assets/{index.es-legacy-DmyP4yz8.js.map → index.es-legacy-DA8oW7UU.js.map} +1 -1
- package/dist/assets/{mapbox-jb8Zev6T-BDzYTcTT.js → mapbox-jb8Zev6T-DyLOtQWl.js} +2 -2
- package/dist/assets/{mapbox-jb8Zev6T-BDzYTcTT.js.map → mapbox-jb8Zev6T-DyLOtQWl.js.map} +1 -1
- package/dist/assets/{mapbox-jb8Zev6T-legacy-DW10c6JQ.js → mapbox-jb8Zev6T-legacy-De5QdraR.js} +2 -2
- package/dist/assets/{mapbox-jb8Zev6T-legacy-DW10c6JQ.js.map → mapbox-jb8Zev6T-legacy-De5QdraR.js.map} +1 -1
- package/dist/assets/{maplibre-CUYkxr-D-Dl5E27wE.js → maplibre-CUYkxr-D-D9xIR2sA.js} +2 -2
- package/dist/assets/{maplibre-CUYkxr-D-Dl5E27wE.js.map → maplibre-CUYkxr-D-D9xIR2sA.js.map} +1 -1
- package/dist/assets/{maplibre-CUYkxr-D-legacy-mdA6yno0.js → maplibre-CUYkxr-D-legacy-Dm9oh3Qu.js} +2 -2
- package/dist/assets/{maplibre-CUYkxr-D-legacy-mdA6yno0.js.map → maplibre-CUYkxr-D-legacy-Dm9oh3Qu.js.map} +1 -1
- package/dist/assets/neighborhood-fallback-CizB5oi9.js.map +1 -1
- package/dist/assets/{sdks-BJKbwweQ.js → sdks-CJeKEoVJ.js} +2 -2
- package/dist/assets/{sdks-BJKbwweQ.js.map → sdks-CJeKEoVJ.js.map} +1 -1
- package/dist/assets/{sdks-legacy-B-Giiy-T.js → sdks-legacy-CGD_BVHv.js} +2 -2
- package/dist/assets/{sdks-legacy-B-Giiy-T.js.map → sdks-legacy-CGD_BVHv.js.map} +1 -1
- package/dist/assets/{useDemographicsData-DAN7xNS4.js → useDemographicsData-BLyzDX9B.js} +2 -2
- package/dist/assets/{useDemographicsData-DAN7xNS4.js.map → useDemographicsData-BLyzDX9B.js.map} +1 -1
- package/dist/assets/{useDemographicsData-legacy-BvZ5-foT.js → useDemographicsData-legacy-tXicT5qg.js} +2 -2
- package/dist/assets/{useDemographicsData-legacy-BvZ5-foT.js.map → useDemographicsData-legacy-tXicT5qg.js.map} +1 -1
- package/dist/assets/{useGeographies-BWyCShYG.js → useGeographies--nd8CDy6.js} +2 -2
- package/dist/assets/{useGeographies-BWyCShYG.js.map → useGeographies--nd8CDy6.js.map} +1 -1
- package/dist/assets/{useGeographies-legacy-PoRI2Ty0.js → useGeographies-legacy-B2A71Fvq.js} +2 -2
- package/dist/assets/{useGeographies-legacy-PoRI2Ty0.js.map → useGeographies-legacy-B2A71Fvq.js.map} +1 -1
- package/dist/assets/{useIsMobile-legacy-C5ZrOy25.js → useIsMobile-legacy-BCZnP0fd.js} +2 -2
- package/dist/assets/{useIsMobile-legacy-C5ZrOy25.js.map → useIsMobile-legacy-BCZnP0fd.js.map} +1 -1
- package/dist/assets/{useIsMobile-Ctl89qPO.js → useIsMobile-xZV-dkji.js} +2 -2
- package/dist/assets/{useIsMobile-Ctl89qPO.js.map → useIsMobile-xZV-dkji.js.map} +1 -1
- package/dist/assets/{useLocation-COmhiVk7.js → useLocation-BH1znnCK.js} +2 -2
- package/dist/assets/{useLocation-COmhiVk7.js.map → useLocation-BH1znnCK.js.map} +1 -1
- package/dist/assets/{useLocation-legacy-BB8GkEGc.js → useLocation-legacy-TDQwoBsN.js} +2 -2
- package/dist/assets/{useLocation-legacy-BB8GkEGc.js.map → useLocation-legacy-TDQwoBsN.js.map} +1 -1
- package/dist/assets/{useProfiles-CONvAhQh.js → useProfiles-Bv1oBqsf.js} +2 -2
- package/dist/assets/{useProfiles-CONvAhQh.js.map → useProfiles-Bv1oBqsf.js.map} +1 -1
- package/dist/assets/{useProfiles-legacy-CZEWgjR_.js → useProfiles-legacy-l89ci-nV.js} +2 -2
- package/dist/assets/{useProfiles-legacy-CZEWgjR_.js.map → useProfiles-legacy-l89ci-nV.js.map} +1 -1
- package/dist/assets/{useSchools-DHlUvy8w.js → useSchools-DvVxvlVD.js} +2 -2
- package/dist/assets/{useSchools-DHlUvy8w.js.map → useSchools-DvVxvlVD.js.map} +1 -1
- package/dist/assets/{useSchools-legacy-hkMWX2Sm.js → useSchools-legacy-CI4xGBO9.js} +2 -2
- package/dist/assets/{useSchools-legacy-hkMWX2Sm.js.map → useSchools-legacy-CI4xGBO9.js.map} +1 -1
- package/dist/assets/{useScores-QYhAfpZF.js → useScores-UTZXpQJY.js} +2 -2
- package/dist/assets/{useScores-QYhAfpZF.js.map → useScores-UTZXpQJY.js.map} +1 -1
- package/dist/assets/{useScores-legacy-DTRBsa6H.js → useScores-legacy-BMeniwuI.js} +2 -2
- package/dist/assets/{useScores-legacy-DTRBsa6H.js.map → useScores-legacy-BMeniwuI.js.map} +1 -1
- package/dist/index.html +2 -2
- package/dist/types/sdks/NeighborhoodSchools/components/Content/index.js +1 -1
- package/dist/types/sdks/NeighborhoodSchools/components/Content/index.js.map +1 -1
- package/dist/types/sdks/NeighborhoodSchools/components/Content/styles.d.ts +1 -0
- package/dist/types/sdks/NeighborhoodSchools/components/Content/styles.d.ts.map +1 -1
- package/dist/types/sdks/NeighborhoodSchools/components/Content/styles.js +1 -0
- package/dist/types/sdks/NeighborhoodSchools/components/Content/styles.js.map +1 -1
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolCategories/index.d.ts.map +1 -1
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolCategories/index.js +2 -1
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolCategories/index.js.map +1 -1
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolCategories/styles.d.ts +2 -0
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolCategories/styles.d.ts.map +1 -0
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolCategories/styles.js +2 -0
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolCategories/styles.js.map +1 -0
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/styles.d.ts +1 -1
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/styles.d.ts.map +1 -1
- package/dist/types/sdks/NeighborhoodSchools/components/SchoolsList/styles.js +1 -1
- package/package.json +1 -1
- package/dist/assets/NeighborhoodSchools-BxW7f8MW.js.map +0 -1
- package/dist/assets/NeighborhoodSchools-legacy-wn_vhMVg.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as t}from"./google-maps-vendor-DvfEEdRU.js";import{a as n,d as o,f as r,g as s,m as i,n as a,o as l,p as c,r as d,s as u,t as h,u as f}from"./sdks-BJKbwweQ.js";import{t as m}from"./Backpack.es-VkU9yjoN.js";import{t as p}from"./CaretDown.es-nJe-LNlT.js";import{t as g}from"./GraduationCap.es-Bvo9K-N3.js";import{t as x}from"./IconBase.es-CEehl5AX.js";import{r as b,t as v}from"./useSchools-DHlUvy8w.js";import{C as y,D as j,J as _,O as S,T as L,i as E,j as w,k as I,n as N,w as k,x as C}from"./index-BEULKAl4.js";import{r as T}from"./index.es-BjcD-yLc.js";import{t as O}from"./useGeographies-BWyCShYG.js";import{t as F}from"./useLocation-COmhiVk7.js";import{t as A}from"./Attribution-DbOBCi1z.js";/* empty css */import{t as D}from"./ResizeWrapper-D1ZDVM4H.js";import{t as M}from"./ValidateOptions-6YGZBTfN.js";import{t as R}from"./useIsMobile-Ctl89qPO.js";import{t as V}from"./bundle-mjs-orX75hSI.js";import{t as z}from"./TitleHeader-DVfGGRuh.js";import{t as B}from"./NoDataContent-j_PMnP79.js";var H=e(t(),1),P=new Map([["bold",H.createElement(H.Fragment,null,H.createElement("path",{d:"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z"}))],["duotone",H.createElement(H.Fragment,null,H.createElement("path",{d:"M232,56V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56Z",opacity:"0.2"}),H.createElement("path",{d:"M205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z"}))],["fill",H.createElement(H.Fragment,null,H.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z"}))],["light",H.createElement(H.Fragment,null,H.createElement("path",{d:"M228.24,76.24l-128,128a6,6,0,0,1-8.48,0l-56-56a6,6,0,0,1,8.48-8.48L96,191.51,219.76,67.76a6,6,0,0,1,8.48,8.48Z"}))],["regular",H.createElement(H.Fragment,null,H.createElement("path",{d:"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"}))],["thin",H.createElement(H.Fragment,null,H.createElement("path",{d:"M226.83,74.83l-128,128a4,4,0,0,1-5.66,0l-56-56a4,4,0,0,1,5.66-5.66L96,194.34,221.17,69.17a4,4,0,1,1,5.66,5.66Z"}))]]),$=H.forwardRef((e,t)=>H.createElement(x,{ref:t,...e,weights:P}));$.displayName="CheckIcon";var U=function(e){return e.SDK_VIEWED="neighborhood-schools-Viewed",e.ATTRIBUTION_CLICKED="LC-Attribution-Clicked",e.SCHOOL_URL_CLICKED="neighborhood-schools-URL-Clicked",e.FILTER_BY_TYPE="neighborhood-schools-Filter-By-Type",e.FILTER_BY_LEVEL="neighborhood-schools-Filter-By-Level",e}({}),K=function(e){return e.SDK_VIEWED="sdk_viewed",e.SCHOOL_URL_CLICKED="neighborhood_schools_url_clicked",e.FILTER_BY_TYPE="neighborhood_schools_filter_by_type",e.FILTER_BY_LEVEL="neighborhood_schools_filter_by_level",e}({});var Y=_(),W=H.createContext({}),G=()=>(0,H.useContext)(W),Z=({children:e})=>{const{sdkState:t}=N(),n=t.globalOptions?.locale||"en",o=u();E(()=>{o.postEvent({eventType:U.SDK_VIEWED}),o.trackAnalyticsEvent({eventName:K.SDK_VIEWED})});const{isLoading:r,data:s}=O({geogID:t.options?.geographyId,location:{lat:t.options?.lat,lng:t.options?.lng}}),{geographyId:i,geography:a}=(0,H.useMemo)(()=>{const e=Object.entries(s||{});return{geographyId:e[0]?.[0],geography:e[0]?.[1]}},[r,s]),l=(0,H.useMemo)(()=>t.options?.geographyId?a?.centroid||{lat:0,lng:0}:{lat:t.options?.lat||0,lng:t.options?.lng||0},[t.options?.geographyId,t.options?.lat,t.options?.lng,a]),{isLoading:c,data:d}=F({lat:l.lat,lng:l.lng}),[h,f]=(0,H.useState)(),[m,p]=(0,H.useState)(),{isLoading:g,filteredSchools:x,schoolTypes:b,schoolLevels:y,hasCategories:j}=function({country:e,filterLevel:t,filterType:n,...o}){const{isLoading:r,data:s}=v({...o,include:["schools"],radius:2e3,limit:30,buffer:250}),{schools:i,filteredSchools:a,schoolTypes:l,schoolLevels:c,hasCategories:d}=(0,H.useMemo)(()=>{const o={schools:void 0,filteredSchools:void 0,schoolTypes:[],schoolLevels:[],hasCategories:!1};if(!s||!s.primary_schools&&!s.high_schools)return o;const r=new Set,i=new Set,a=new Set,l=[...s.primary_schools||[],...s.high_schools||[]],c=[],d=[];for(const s of l){if(r.has(s.name))continue;r.add(s.name),c.push(s),"USA"===e&&(o.hasCategories=o.hasCategories||!!s.is_advanced_placement||!!s.is_charter||!!s.is_magnet);for(const e of s.school_attributes?.types||[])i.add(e);for(const e of s.school_attributes?.levels||[])a.add(e);const l=void 0===t||s.school_attributes?.levels?.includes(t),u=void 0===n||s.school_attributes?.types?.includes(n);l&&u&&d.push(s)}return{schools:c,filteredSchools:d,schoolTypes:[...i],schoolLevels:[...a],hasCategories:o.hasCategories}},[e,t,n,s]);return{isLoading:r,schools:i,filteredSchools:a,schoolTypes:l,schoolLevels:c,hasCategories:d}}({geogId:i,country:d.country,filterLevel:h,filterType:m}),_=(0,H.useMemo)(()=>g||c,[g,c]);(0,H.useEffect)(()=>{p(e=>void 0===e||b.includes(e)?e:void 0)},[b]),(0,H.useEffect)(()=>{f(e=>void 0===e||y.includes(e)?e:void 0)},[y]);const S=(0,H.useMemo)(()=>({isLoading:_,filteredSchools:x,schoolTypes:b,schoolLevels:y,filterType:m,filterLevel:h,setFilterType:p,setFilterLevel:f,hasCategories:j,locale:n,location:d,showSchoolRatings:t.options?.showSchoolRatings}),[_,x,b,y,m,h,n,j,d,t.options?.showSchoolRatings]);return(0,Y.jsx)(W.Provider,{value:S,children:e})},q=f({lat:o().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:o().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:r().optional(),title:i().optional(),hideAttribution:c().optional(),showSchoolRatings:c().optional()}).noUnknown(!0),J=({size:e="medium",children:t,...n})=>(0,Y.jsx)(C,{className:"\n overflow-hidden bg-base-white rounded-sm shadow-md\n z-10 min-w-32\n data-[size=medium]:text-sm\n data-[size=large]:text-base\n","data-size":e,...n,children:(0,Y.jsx)(w,{className:"font-inherit p-0",children:t})}),Q=({variant:e="dark",children:t,...n})=>(0,Y.jsxs)(y,{className:'\n font-sans font-inherit py-1 pr-8 pl-6 outline-none\n relative rounded-sm cursor-default text-zinc-800\n\n data-[highlighted]:[&:not([data-variant="light"])]:bg-primary-100\n data-[highlighted]:[&:not([data-variant="light"])]:text-base-white\n\n // Special color between now and design system\n data-[highlighted]:[&:not([data-variant="dark"])]:bg-primary-10\n data-[highlighted]:[&:not([data-variant="dark"])]:text-zinc-950\n ',"data-variant":e,...n,children:[(0,Y.jsx)(L,{children:t}),(0,Y.jsx)(k,{className:"\n absolute left-0 bottom-0\n inline-flex justify-center items-center\n h-full w-6\n",children:(0,Y.jsx)($,{className:"\n text-base-black\n h-3 w-3\n"})})]}),X=({size:e="medium",children:t,...n})=>(0,Y.jsxs)(I,{className:"\n inline-flex items-center justify-between flex-1\n bg-base-white rounded-lg border\n py-1 pr-2 pl-3 min-w-32\n data-[size=medium]:text-sm data-[size=medium]:h-8\n data-[size=large]:text-base data-[size=large]:h-10\n","data-size":e,...n,children:[t,(0,Y.jsx)(S,{children:(0,Y.jsx)(p,{className:"\n text-base-black\n h-5 w-5\n"})})]}),ee="\n capitalize text-sm font-normal\n py-2 pl-2\n pr-6 sm:pr-36\n",te=({options:e,activeFilter:t,allLabel:n,label:o,icon:r=m,handleFilterChange:s})=>{const i=[{label:n,value:"ALL"},...e],a=t??"ALL";return(0,Y.jsxs)("div",{children:[(0,Y.jsx)("label",{className:"\n ml-2 mb-1\n text-sm font-normal\n","data-testid":`filter-label-${o}`,htmlFor:`filter-select-${o}`,children:o}),e&&(0,Y.jsx)("div",{className:"\n shadow\n rounded-lg\n -outline-offset-2\n",children:(0,Y.jsxs)(j,{value:a,onValueChange:e=>s("ALL"===e?void 0:e),children:[(0,Y.jsxs)(X,{size:"large",id:`filter-select-${o}`,children:[(0,Y.jsx)(r,{className:"\n w-4 h-4 text-stone-500\n"}),(0,Y.jsx)("p",{className:ee,children:i.find(e=>e.value===a)?.label})]}),(0,Y.jsx)(J,{children:i.map(e=>(0,Y.jsx)(Q,{value:e.value,variant:"light",children:(0,Y.jsx)("p",{className:ee,children:e.label})},e.value))})]})})]})},ne='\n text-neutral-600\n text-sm font-bold\n data-[has-link="true"]:text-primary-100\n data-[has-link="true"]:pointer\n data-[has-link="true"]:hover:underline\n',oe=({school:e})=>{const{t:t}=s(["common"]),n=u(),{showSchoolRatings:o}=G();return(0,Y.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[e.url?(0,Y.jsx)("a",{onClick:()=>{n.postEvent({eventType:U.SCHOOL_URL_CLICKED,eventAttributes:[{label:"school_name_clicked",data:e.name},{label:"school_url_clicked",data:e.url}]}),n.trackAnalyticsEvent({eventName:K.SCHOOL_URL_CLICKED,eventAttributes:{school_name:e.name,school_url:e.url}})},className:ne,href:e.url,target:"_blank",rel:"noreferrer","data-has-link":void 0!==e.url,"data-testid":"school-name-with-link",children:e.name}):(0,Y.jsx)("p",{"data-testid":"school-name",className:ne,children:e.name}),o&&e.rating&&(0,Y.jsx)("div",{"data-testid":"school-rating",className:"cursor-pointer",title:t("common:map.marker.schoolAttributes.rating"),children:(0,Y.jsx)(T,{children:e.rating})})]})},re=({school:e})=>(0,Y.jsxs)("div",{className:"pb-4",children:[(0,Y.jsx)(oe,{school:e}),e.school_board_attributes?.name&&(0,Y.jsx)("p",{"data-testid":"school-board",className:"text-xs font-normal text-neutral-600",children:e.school_board_attributes?.name})]}),se="\n flex flex-wrap gap-2\n",ie=({schools:e,headers:t})=>{const{t:n}=s("neighborhoodSchools"),{hasCategories:o}=G();return(0,Y.jsx)(Y.Fragment,{children:e?.map(e=>(0,Y.jsxs)("tr",{className:"\n odd:bg-white even:bg-neutral-50\n [&_td]:px-4 [&_td]:py-3\n",children:[(0,Y.jsx)("td",{children:(0,Y.jsx)(re,{school:e})}),(0,Y.jsx)("td",{children:(0,Y.jsx)("div",{className:se,children:e.school_attributes?.types?.map(t=>(0,Y.jsx)(T,{children:t},`${e.name}-${t}`))})}),-1!==t.indexOf("languages")&&(0,Y.jsx)("td",{children:(0,Y.jsx)("div",{className:se,children:e.school_attributes?.languages?.map(t=>(0,Y.jsx)(T,{variant:"light",children:n("fr"===t?"french":"english")},`${e.name}-${t}`))})}),(0,Y.jsx)("td",{children:(0,Y.jsx)("div",{className:se,children:e.school_attributes?.levels?.map(t=>(0,Y.jsx)(T,{variant:"light",children:t},`${e.name}-${t}`))})}),o&&(0,Y.jsx)("td",{children:(0,Y.jsxs)("div",{className:se,children:[(0,Y.jsx)(T,{isVisible:!!e.is_advanced_placement,children:n("categories.advancedPlacement")}),(0,Y.jsx)(T,{isVisible:!!e.is_charter,children:n("categories.charter")}),(0,Y.jsx)(T,{isVisible:!!e.is_magnet,children:n("categories.magnet")})]})}),(0,Y.jsx)("td",{children:(0,Y.jsx)("p",{className:"\n text-sm font-normal\n text-neutral-600\n",children:b({street:e.address,city:e.city,state:e.province})})})]},`row-${e.name}`))})},ae={CAN:["name","type","languages","levels","address"],USA:["name","type","levels","address"]},le=({schools:e})=>{const{t:t}=s("neighborhoodSchools"),{isLoading:n,hasCategories:o,location:r}=G(),i=(0,H.useMemo)(()=>{if(n)return ae.USA;if("USA"===r?.country&&o){const e=[...ae.USA];return e.includes("category")||e.splice(e.length-1,0,"category"),e}return ae[r.country]},[n,r,o]);return(0,Y.jsxs)("div",{className:"\n overflow-y-scroll\n h-full\n max-h-[70vh]\n border border-neutral-300 rounded-lg\n\n data-[is-loading=true]:h-36\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n ","data-is-loading":n,children:[!n&&(0,Y.jsxs)("table",{className:"\n w-full h-full\n table-auto\n -outline-offset-2\n",children:[(0,Y.jsx)("thead",{children:(0,Y.jsx)("tr",{children:i&&i.map(e=>(0,Y.jsx)("th",{className:"\n p-4\n text-left\n bg-neutral-50\n [&_h2]:text-md\n [&_h2]:font-medium\n",children:(0,Y.jsx)("h2",{children:t(`headers.${e}`)})},e))})}),(0,Y.jsxs)("tbody",{children:[e&&e?.length>0&&(0,Y.jsx)(ie,{schools:e,headers:i}),0===e?.length&&(0,Y.jsx)("div",{className:"m-5",children:(0,Y.jsx)(B,{text:t("noFilteredData")})})]})]}),!n&&!e&&(0,Y.jsx)(B,{text:t("noData")})]})};function ce(e){return function(e){return"[object Object]"===Object.prototype.toString.call(e)}(e)||Array.isArray(e)}function de(e,t){const n=Object.keys(e),o=Object.keys(t);return n.length===o.length&&(JSON.stringify(Object.keys(e.breakpoints||{}))===JSON.stringify(Object.keys(t.breakpoints||{}))&&n.every(n=>{const o=e[n],r=t[n];return"function"==typeof o?`${o}`==`${r}`:ce(o)&&ce(r)?de(o,r):o===r}))}function ue(e){return e.concat().sort((e,t)=>e.name>t.name?1:-1).map(e=>e.options)}function he(e){return"number"==typeof e}function fe(e){return"string"==typeof e}function me(e){return"boolean"==typeof e}function pe(e){return"[object Object]"===Object.prototype.toString.call(e)}function ge(e){return Math.abs(e)}function xe(e){return Math.sign(e)}function be(e,t){return ge(e-t)}function ve(e){return Le(e).map(Number)}function ye(e){return e[je(e)]}function je(e){return Math.max(0,e.length-1)}function _e(e,t){return t===je(e)}function Se(e,t=0){return Array.from(Array(e),(e,n)=>t+n)}function Le(e){return Object.keys(e)}function Ee(e,t){return[e,t].reduce((e,t)=>(Le(t).forEach(n=>{const o=e[n],r=t[n];e[n]=pe(o)&&pe(r)?Ee(o,r):r}),e),{})}function we(e,t){return void 0!==t.MouseEvent&&e instanceof t.MouseEvent}function Ie(){let e=[];const t={add:function(n,o,r,s={passive:!0}){let i;if("addEventListener"in n)n.addEventListener(o,r,s),i=()=>n.removeEventListener(o,r,s);else{const e=n;e.addListener(r),i=()=>e.removeListener(r)}return e.push(i),t},clear:function(){e=e.filter(e=>e())}};return t}function Ne(e,t,n,o){const r=Ie(),s=1e3/60;let i=null,a=0,l=0;function c(e){if(!l)return;i||(i=e,n(),n());const r=e-i;for(i=e,a+=r;a>=s;)n(),a-=s;o(a/s),l&&(l=t.requestAnimationFrame(c))}function d(){t.cancelAnimationFrame(l),i=null,a=0,l=0}return{init:function(){r.add(e,"visibilitychange",()=>{e.hidden&&(i=null,a=0)})},destroy:function(){d(),r.clear()},start:function(){l||(l=t.requestAnimationFrame(c))},stop:d,update:n,render:o}}function ke(e=0,t=0){const n=ge(e-t);function o(t){return t<e}function r(e){return e>t}function s(e){return o(e)||r(e)}return{length:n,max:t,min:e,constrain:function(n){return s(n)?o(n)?e:t:n},reachedAny:s,reachedMax:r,reachedMin:o,removeOffset:function(e){return n?e-n*Math.ceil((e-t)/n):e}}}function Ce(e,t,n){const{constrain:o}=ke(0,e),r=e+1;let s=i(t);function i(e){return n?ge((r+e)%r):o(e)}function a(){return s}function l(){return Ce(e,a(),n)}const c={get:a,set:function(e){return s=i(e),c},add:function(e){return l().set(a()+e)},clone:l};return c}function Te(e,t,n,o,r,s,i,a,l,c,d,u,h,f,m,p,g,x,b){const{cross:v,direction:y}=e,j=["INPUT","SELECT","TEXTAREA"],_={passive:!1},S=Ie(),L=Ie(),E=ke(50,225).constrain(f.measure(20)),w={mouse:300,touch:400},I={mouse:500,touch:600},N=m?43:25;let k=!1,C=0,T=0,O=!1,F=!1,A=!1,D=!1;function M(e){if(!we(e,o)&&e.touches.length>=2)return R(e);const t=s.readPoint(e),n=s.readPoint(e,v),i=be(t,C),l=be(n,T);if(!F&&!D){if(!e.cancelable)return R(e);if(F=i>l,!F)return R(e)}const d=s.pointerMove(e);i>p&&(A=!0),c.useFriction(.3).useDuration(.75),a.start(),r.add(y(d)),e.preventDefault()}function R(e){const t=d.byDistance(0,!1).index!==u.get(),n=s.pointerUp(e)*(m?I:w)[D?"mouse":"touch"],o=function(e,t){const n=u.add(-1*xe(e)),o=d.byDistance(e,!m).distance;return m||ge(e)<E?o:g&&t?.5*o:d.byIndex(n.get(),0).distance}(y(n),t),r=(a=o,0===(i=n)||0===a||ge(i)<=ge(a)?0:ge(be(ge(i),ge(a))/i));var i,a;const f=N-10*r,p=x+r/50;F=!1,O=!1,L.clear(),c.useDuration(f).useFriction(p),l.distance(o,!m),D=!1,h.emit("pointerUp")}function V(e){A&&(e.stopPropagation(),e.preventDefault(),A=!1)}return{init:function(e){if(!b)return;function a(a){(me(b)||b(e,a))&&function(e){const a=we(e,o);if(D=a,A=m&&a&&!e.buttons&&k,k=be(r.get(),i.get())>=2,a&&0!==e.button)return;if(function(e){const t=e.nodeName||"";return j.includes(t)}(e.target))return;O=!0,s.pointerDown(e),c.useFriction(0).useDuration(0),r.set(i),function(){const e=D?n:t;L.add(e,"touchmove",M,_).add(e,"touchend",R).add(e,"mousemove",M,_).add(e,"mouseup",R)}(),C=s.readPoint(e),T=s.readPoint(e,v),h.emit("pointerDown")}(a)}const l=t;S.add(l,"dragstart",e=>e.preventDefault(),_).add(l,"touchmove",()=>{},_).add(l,"touchend",()=>{}).add(l,"touchstart",a).add(l,"mousedown",a).add(l,"touchcancel",R).add(l,"contextmenu",R).add(l,"click",V,!0)},destroy:function(){S.clear(),L.clear()},pointerDown:function(){return O}}}function Oe(e,t){let n,o;function r(e){return e.timeStamp}function s(n,o){const r="client"+("x"===(o||e.scroll)?"X":"Y");return(we(n,t)?n:n.touches[0])[r]}return{pointerDown:function(e){return n=e,o=e,s(e)},pointerMove:function(e){const t=s(e)-s(o),i=r(e)-r(n)>170;return o=e,i&&(n=e),t},pointerUp:function(e){if(!n||!o)return 0;const t=s(o)-s(n),i=r(e)-r(n),a=r(e)-r(o)>170,l=t/i;return i&&!a&&ge(l)>.1?l:0},readPoint:s}}function Fe(e,t,n,o,r,s,i){const a=[e].concat(o);let l,c,d=[],u=!1;function h(e){return r.measureSize(i.measure(e))}return{init:function(r){s&&(c=h(e),d=o.map(h),l=new ResizeObserver(n=>{(me(s)||s(r,n))&&function(n){for(const s of n){if(u)return;const n=s.target===e,i=o.indexOf(s.target),a=n?c:d[i];if(ge(h(n?e:o[i])-a)>=.5){r.reInit(),t.emit("resize");break}}}(n)}),n.requestAnimationFrame(()=>{a.forEach(e=>l.observe(e))}))},destroy:function(){u=!0,l&&l.disconnect()}}}function Ae(e,t,n,o,r){const s=r.measure(10),i=r.measure(50),a=ke(.1,.99);let l=!1;function c(){return!l&&(!!e.reachedAny(n.get())&&!!e.reachedAny(t.get()))}return{shouldConstrain:c,constrain:function(r){if(!c())return;const l=ge(e[e.reachedMin(t.get())?"min":"max"]-t.get()),d=n.get()-t.get(),u=a.constrain(l/i);n.subtract(d*u),!r&&ge(d)<s&&(n.set(e.constrain(n.get())),o.useDuration(25).useBaseFriction())},toggleActive:function(e){l=!e}}}function De(e,t,n,o){const{reachedMin:r,reachedMax:s}=ke(t.min+.1,t.max+.1);return{loop:function(t){if(!function(e){return 1===e?s(n.get()):-1===e&&r(n.get())}(t))return;const i=e*(-1*t);o.forEach(e=>e.add(i))}}}function Me(e,t,n,o,r){const{reachedAny:s,removeOffset:i,constrain:a}=o;function l(e){return e.concat().sort((e,t)=>ge(e)-ge(t))[0]}function c(t,o){const r=[t,t+n,t-n];if(!e)return t;if(!o)return l(r);const s=r.filter(e=>xe(e)===o);return s.length?l(s):ye(r)-n}return{byDistance:function(n,o){const l=r.get()+n,{index:d,distance:u}=function(n){const o=e?i(n):a(n),{index:r}=t.map((e,t)=>({diff:c(e-o,0),index:t})).sort((e,t)=>ge(e.diff)-ge(t.diff))[0];return{index:r,distance:o}}(l),h=!e&&s(l);return!o||h?{index:d,distance:n}:{index:d,distance:n+c(t[d]-u,0)}},byIndex:function(e,n){return{index:e,distance:c(t[e]-r.get(),n)}},shortcut:c}}function Re(e,t,n,o,r,s,i,a){const l={passive:!0,capture:!0};let c=0;function d(e){"Tab"===e.code&&(c=(new Date).getTime())}return{init:function(u){a&&(s.add(document,"keydown",d,!1),t.forEach((t,d)=>{s.add(t,"focus",t=>{(me(a)||a(u,t))&&function(t){if((new Date).getTime()-c>10)return;i.emit("slideFocusStart"),e.scrollLeft=0;const s=n.findIndex(e=>e.includes(t));he(s)&&(r.useDuration(0),o.index(s,0),i.emit("slideFocus"))}(d)},l)}))}}}function Ve(e){let t=e;function n(e){return he(e)?e:e.get()}return{get:function(){return t},set:function(e){t=n(e)},add:function(e){t+=n(e)},subtract:function(e){t-=n(e)}}}function ze(e,t){const n="x"===e.scroll?function(e){return`translate3d(${e}px,0px,0px)`}:function(e){return`translate3d(0px,${e}px,0px)`},o=t.style;let r=null,s=!1;return{clear:function(){s||(o.transform="",t.getAttribute("style")||t.removeAttribute("style"))},to:function(t){if(s)return;const i=(a=e.direction(t),Math.round(100*a)/100);var a;i!==r&&(o.transform=n(i),r=i)},toggleActive:function(e){s=!e}}}function Be(e,t,n,o,r,s,i,a,l){const c=ve(r),d=ve(r).reverse(),u=function(){const e=i[0];return m(f(d,e),n,!1)}().concat(m(f(c,t-i[0]-1),-n,!0));function h(e,t){return e.reduce((e,t)=>e-r[t],t)}function f(e,t){return e.reduce((e,n)=>h(e,t)>0?e.concat([n]):e,[])}function m(r,i,c){const d=function(e){return s.map((n,r)=>({start:n-o[r]+.5+e,end:n+t-.5+e}))}(i);return r.map(t=>{const o=c?0:-n,r=c?n:0,s=c?"end":"start",i=d[t][s];return{index:t,loopPoint:i,slideLocation:Ve(-1),translate:ze(e,l[t]),target:()=>a.get()>i?o:r}})}return{canLoop:function(){return u.every(({index:e})=>h(c.filter(t=>t!==e),t)<=.1)},clear:function(){u.forEach(e=>e.translate.clear())},loop:function(){u.forEach(e=>{const{target:t,translate:n,slideLocation:o}=e,r=t();r!==o.get()&&(n.to(r),o.set(r))})},loopPoints:u}}function He(e,t,n){let o,r=!1;return{init:function(s){n&&(o=new MutationObserver(e=>{r||(me(n)||n(s,e))&&function(e){for(const n of e)if("childList"===n.type){s.reInit(),t.emit("slidesChanged");break}}(e)}),o.observe(e,{childList:!0}))},destroy:function(){o&&o.disconnect(),r=!0}}}function Pe(e,t,n,o){const r={};let s,i=null,a=null,l=!1;return{init:function(){s=new IntersectionObserver(e=>{l||(e.forEach(e=>{const n=t.indexOf(e.target);r[n]=e}),i=null,a=null,n.emit("slidesInView"))},{root:e.parentElement,threshold:o}),t.forEach(e=>s.observe(e))},destroy:function(){s&&s.disconnect(),l=!0},get:function(e=!0){if(e&&i)return i;if(!e&&a)return a;const t=function(e){return Le(r).reduce((t,n)=>{const o=parseInt(n),{isIntersecting:s}=r[o];return(e&&s||!e&&!s)&&t.push(o),t},[])}(e);return e&&(i=t),e||(a=t),t}}}function $e(e,t,n,o,r,s,i,a,l){const{startEdge:c,endEdge:d,direction:u}=e,h=he(n);return{groupSlides:function(e){return h?function(e,t){return ve(e).filter(e=>e%t===0).map(n=>e.slice(n,n+t))}(e,n):function(e){return e.length?ve(e).reduce((n,h,f)=>{const m=ye(n)||0,p=0===m,g=h===je(e),x=r[c]-s[m][c],b=r[c]-s[h][d],v=!o&&p?u(i):0,y=ge(b-(!o&&g?u(a):0)-(x+v));return f&&y>t+l&&n.push(h),g&&n.push(e.length),n},[]).map((t,n,o)=>{const r=Math.max(o[n-1]||0);return e.slice(r,t)}):[]}(e)}}}function Ue(e,t,n,o,r,s,i){const{align:a,axis:l,direction:c,startIndex:d,loop:u,duration:h,dragFree:f,dragThreshold:m,inViewThreshold:p,slidesToScroll:g,skipSnaps:x,containScroll:b,watchResize:v,watchSlides:y,watchDrag:j,watchFocus:_}=s,S={measure:function(e){const{offsetTop:t,offsetLeft:n,offsetWidth:o,offsetHeight:r}=e;return{top:t,right:n+o,bottom:t+r,left:n,width:o,height:r}}},L=S.measure(t),E=n.map(S.measure),w=function(e,t){const n="rtl"===t,o="y"===e,r=!o&&n?-1:1;return{scroll:o?"y":"x",cross:o?"x":"y",startEdge:o?"top":n?"right":"left",endEdge:o?"bottom":n?"left":"right",measureSize:function(e){const{height:t,width:n}=e;return o?t:n},direction:function(e){return e*r}}}(l,c),I=w.measureSize(L),N=function(e){return{measure:function(t){return e*(t/100)}}}(I),k=function(e,t){const n={start:function(){return 0},center:function(e){return o(e)/2},end:o};function o(e){return t-e}return{measure:function(o,r){return fe(e)?n[e](o):e(t,o,r)}}}(a,I),C=!u&&!!b,{slideSizes:T,slideSizesWithGaps:O,startGap:F,endGap:A}=function(e,t,n,o,r,s){const{measureSize:i,startEdge:a,endEdge:l}=e,c=n[0]&&r,d=function(){if(!c)return 0;const e=n[0];return ge(t[a]-e[a])}(),u=function(){if(!c)return 0;const e=s.getComputedStyle(ye(o));return parseFloat(e.getPropertyValue(`margin-${l}`))}(),h=n.map(i),f=n.map((e,t,n)=>{const o=!t,r=_e(n,t);return o?h[t]+d:r?h[t]+u:n[t+1][a]-e[a]}).map(ge);return{slideSizes:h,slideSizesWithGaps:f,startGap:d,endGap:u}}(w,L,E,n,u||!!b,r),D=$e(w,I,g,u,L,E,F,A,2),{snaps:M,snapsAligned:R}=function(e,t,n,o,r){const{startEdge:s,endEdge:i}=e,{groupSlides:a}=r,l=a(o).map(e=>ye(e)[i]-e[0][s]).map(ge).map(t.measure),c=o.map(e=>n[s]-e[s]).map(e=>-ge(e)),d=a(c).map(e=>e[0]).map((e,t)=>e+l[t]);return{snaps:c,snapsAligned:d}}(w,k,L,E,D),V=-ye(M)+ye(O),{snapsContained:z,scrollContainLimit:B}=function(e,t,n,o,r){const s=ke(-t+e,0),i=n.map((e,t)=>{const{min:o,max:r}=s,i=s.constrain(e),a=!t,c=_e(n,t);return a?r:c||l(o,i)?o:l(r,i)?r:i}).map(e=>parseFloat(e.toFixed(3))),a=function(){const e=i[0],t=ye(i);return ke(i.lastIndexOf(e),i.indexOf(t)+1)}();function l(e,t){return be(e,t)<=1}return{snapsContained:function(){if(t<=e+r)return[s.max];if("keepSnaps"===o)return i;const{min:n,max:l}=a;return i.slice(n,l)}(),scrollContainLimit:a}}(I,V,R,b,2),H=C?z:R,{limit:P}=function(e,t,n){const o=t[0];return{limit:ke(n?o-e:ye(t),o)}}(V,H,u),$=Ce(je(H),d,u),U=$.clone(),K=ve(n),Y=Ne(o,r,()=>(({dragHandler:e,scrollBody:t,scrollBounds:n,options:{loop:o}})=>{o||n.constrain(e.pointerDown()),t.seek()})(ie),e=>(({scrollBody:e,translate:t,location:n,offsetLocation:o,previousLocation:r,scrollLooper:s,slideLooper:i,dragHandler:a,animation:l,eventHandler:c,scrollBounds:d,options:{loop:u}},h)=>{const f=e.settled(),m=!d.shouldConstrain(),p=u?f:f&&m,g=p&&!a.pointerDown();g&&l.stop();const x=n.get()*h+r.get()*(1-h);o.set(x),u&&(s.loop(e.direction()),i.loop()),t.to(o.get()),g&&c.emit("settle"),p||c.emit("scroll")})(ie,e)),W=H[$.get()],G=Ve(W),Z=Ve(W),q=Ve(W),J=Ve(W),Q=function(e,t,n,o,r,s){let i=0,a=0,l=r,c=s,d=e.get(),u=0;function h(e){return l=e,m}function f(e){return c=e,m}const m={direction:function(){return a},duration:function(){return l},velocity:function(){return i},seek:function(){const t=o.get()-e.get();let r=0;return l?(n.set(e),i+=t/l,i*=c,d+=i,e.add(i),r=d-u):(i=0,n.set(o),e.set(o),r=t),a=xe(r),u=d,m},settled:function(){return ge(o.get()-t.get())<.001},useBaseFriction:function(){return f(s)},useBaseDuration:function(){return h(r)},useFriction:f,useDuration:h};return m}(G,q,Z,J,h,.68),X=Me(u,H,V,P,J),ee=function(e,t,n,o,r,s,i){function a(r){const a=r.distance,l=r.index!==t.get();s.add(a),a&&(o.duration()?e.start():(e.update(),e.render(1),e.update())),l&&(n.set(t.get()),t.set(r.index),i.emit("select"))}return{distance:function(e,t){a(r.byDistance(e,t))},index:function(e,n){const o=t.clone().set(e);a(r.byIndex(o.get(),n))}}}(Y,$,U,Q,X,J,i),te=function(e){const{max:t,length:n}=e;return{get:function(e){return n?(e-t)/-n:0}}}(P),ne=Ie(),oe=Pe(t,n,i,p),{slideRegistry:re}=function(e,t,n,o,r,s){const{groupSlides:i}=r,{min:a,max:l}=o;return{slideRegistry:function(){const o=i(s),r=!e||"keepSnaps"===t;return 1===n.length?[s]:r?o:o.slice(a,l).map((e,t,n)=>{const o=!t,r=_e(n,t);return o?Se(ye(n[0])+1):r?Se(je(s)-ye(n)[0]+1,ye(n)[0]):e})}()}}(C,b,H,B,D,K),se=Re(e,n,re,ee,Q,ne,i,_),ie={ownerDocument:o,ownerWindow:r,eventHandler:i,containerRect:L,slideRects:E,animation:Y,axis:w,dragHandler:Te(w,e,o,r,J,Oe(w,r),G,Y,ee,Q,X,$,i,N,f,m,x,.68,j),eventStore:ne,percentOfView:N,index:$,indexPrevious:U,limit:P,location:G,offsetLocation:q,previousLocation:Z,options:s,resizeHandler:Fe(t,i,r,n,w,v,S),scrollBody:Q,scrollBounds:Ae(P,q,J,Q,N),scrollLooper:De(V,P,q,[G,q,Z,J]),scrollProgress:te,scrollSnapList:H.map(te.get),scrollSnaps:H,scrollTarget:X,scrollTo:ee,slideLooper:Be(w,I,V,T,O,M,H,q,n),slideFocus:se,slidesHandler:He(t,i,y),slidesInView:oe,slideIndexes:K,slideRegistry:re,slidesToScroll:D,target:J,translate:ze(w,t)};return ie}var Ke={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function Ye(e){function t(e,t){return Ee(e,t||{})}return{mergeOptions:t,optionsAtMedia:function(n){const o=n.breakpoints||{};return t(n,Le(o).filter(t=>e.matchMedia(t).matches).map(e=>o[e]).reduce((e,n)=>t(e,n),{}))},optionsMediaQueries:function(t){return t.map(e=>Le(e.breakpoints||{})).reduce((e,t)=>e.concat(t),[]).map(e.matchMedia)}}}function We(e,t,n){const o=e.ownerDocument,r=o.defaultView,s=Ye(r),i=function(e){let t=[];return{init:function(n,o){return t=o.filter(({options:t})=>!1!==e.optionsAtMedia(t).active),t.forEach(t=>t.init(n,e)),o.reduce((e,t)=>Object.assign(e,{[t.name]:t}),{})},destroy:function(){t=t.filter(e=>e.destroy())}}}(s),a=Ie(),l=function(){let e,t={};function n(e){return t[e]||[]}const o={init:function(t){e=t},emit:function(t){return n(t).forEach(n=>n(e,t)),o},off:function(e,r){return t[e]=n(e).filter(e=>e!==r),o},on:function(e,r){return t[e]=n(e).concat([r]),o},clear:function(){t={}}};return o}(),{mergeOptions:c,optionsAtMedia:d,optionsMediaQueries:u}=s,{on:h,off:f,emit:m}=l,p=w;let g,x,b,v,y=!1,j=c(Ke,We.globalOptions),_=c(j),S=[];function L(t){const n=Ue(e,b,v,o,r,t,l);return t.loop&&!n.slideLooper.canLoop()?L(Object.assign({},t,{loop:!1})):n}function E(t,n){y||(j=c(j,t),_=d(j),S=n||S,function(){const{container:t,slides:n}=_;b=(fe(t)?e.querySelector(t):t)||e.children[0];const o=fe(n)?b.querySelectorAll(n):n;v=[].slice.call(o||b.children)}(),g=L(_),u([j,...S.map(({options:e})=>e)]).forEach(e=>a.add(e,"change",w)),_.active&&(g.translate.to(g.location.get()),g.animation.init(),g.slidesInView.init(),g.slideFocus.init(C),g.eventHandler.init(C),g.resizeHandler.init(C),g.slidesHandler.init(C),g.options.loop&&g.slideLooper.loop(),b.offsetParent&&v.length&&g.dragHandler.init(C),x=i.init(C,S)))}function w(e,t){const n=k();I(),E(c({startIndex:n},e),t),l.emit("reInit")}function I(){g.dragHandler.destroy(),g.eventStore.clear(),g.translate.clear(),g.slideLooper.clear(),g.resizeHandler.destroy(),g.slidesHandler.destroy(),g.slidesInView.destroy(),g.animation.destroy(),i.destroy(),a.clear()}function N(e,t,n){_.active&&!y&&(g.scrollBody.useBaseFriction().useDuration(!0===t?0:_.duration),g.scrollTo.index(e,n||0))}function k(){return g.index.get()}const C={canScrollNext:function(){return g.index.add(1).get()!==k()},canScrollPrev:function(){return g.index.add(-1).get()!==k()},containerNode:function(){return b},internalEngine:function(){return g},destroy:function(){y||(y=!0,a.clear(),I(),l.emit("destroy"),l.clear())},off:f,on:h,emit:m,plugins:function(){return x},previousScrollSnap:function(){return g.indexPrevious.get()},reInit:p,rootNode:function(){return e},scrollNext:function(e){N(g.index.add(1).get(),e,-1)},scrollPrev:function(e){N(g.index.add(-1).get(),e,1)},scrollProgress:function(){return g.scrollProgress.get(g.offsetLocation.get())},scrollSnapList:function(){return g.scrollSnapList},scrollTo:N,selectedScrollSnap:k,slideNodes:function(){return v},slidesInView:function(){return g.slidesInView.get()},slidesNotInView:function(){return g.slidesInView.get(!1)}};return E(t,n),setTimeout(()=>l.emit("init"),0),C}function Ge(e={},t=[]){const n=(0,H.useRef)(e),o=(0,H.useRef)(t),[r,s]=(0,H.useState)(),[i,a]=(0,H.useState)(),l=(0,H.useCallback)(()=>{r&&r.reInit(n.current,o.current)},[r]);return(0,H.useEffect)(()=>{de(n.current,e)||(n.current=e,l())},[e,l]),(0,H.useEffect)(()=>{(function(e,t){if(e.length!==t.length)return!1;const n=ue(e),o=ue(t);return n.every((e,t)=>de(e,o[t]))})(o.current,t)||(o.current=t,l())},[t,l]),(0,H.useEffect)(()=>{if("undefined"!=typeof window&&window.document&&window.document.createElement&&i){We.globalOptions=Ge.globalOptions;const e=We(i,n.current,o.current);return s(e),()=>e.destroy()}s(void 0)},[i,s]),[a,r]}We.globalOptions=void 0,Ge.globalOptions=void 0;var Ze=e=>{const{children:t,...n}=e;return(0,Y.jsx)("button",{type:"button",...n,children:t})},qe="\n flex flex-wrap\n mb-4 gap-2\n",Je=({selectedIndex:e,scrollSnaps:t,onDotButtonClick:n})=>(0,Y.jsx)("div",{className:V("embla__dots py-2"),children:t.map((t,o)=>(0,Y.jsx)(Ze,{onClick:()=>n(o),className:V("embla__dot \n bg-zinc-300\n data-[selected=true]:bg-primary-100\n"),"data-selected":o===e},o))}),Qe=({title:e,children:t})=>(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)("p",{className:"\n pt-4 pb-2\n font-medium\n text-sm\n border-t border-neutral-300\n",children:e}),t]}),Xe=({school:e})=>{const{t:t}=s("neighborhoodSchools");return e.is_advanced_placement||e.is_charter||e.is_magnet?(0,Y.jsx)(Qe,{title:t("headers.category"),children:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(T,{isVisible:!!e.is_advanced_placement,children:t("categories.advancedPlacement")}),(0,Y.jsx)(T,{isVisible:!!e.is_charter,children:t("categories.charter")}),(0,Y.jsx)(T,{isVisible:!!e.is_magnet,children:t("categories.magnet")})]})}):null},et=({school:e})=>{const{t:t}=s("neighborhoodSchools");return(0,Y.jsxs)("div",{className:"\n px-6 pt-4 pb-6\n md:px-5 md:pt-6 md:pb-6\n",children:[(0,Y.jsx)(re,{school:e}),(0,Y.jsx)(Qe,{title:t("headers.type"),children:(0,Y.jsx)("div",{className:qe,children:e.school_attributes?.types?.map(t=>(0,Y.jsx)(T,{children:t},`${e.name}-${t}`))})}),(0,Y.jsx)(Qe,{title:t("headers.levels"),children:(0,Y.jsx)("div",{className:qe,children:e.school_attributes?.levels?.map(t=>(0,Y.jsx)(T,{variant:"light",children:t},`${e.name}-${t}`))})}),(0,Y.jsx)(Xe,{school:e}),(0,Y.jsx)(Qe,{title:t("headers.address"),children:(0,Y.jsx)("p",{className:"\n font-normal text-sm\n text-neutral-600 \n mb-4\n",children:b({street:e.address,city:e.city,state:e.province})})})]})},tt=({schools:e})=>{const{t:t}=s("neighborhoodSchools"),{isLoading:n}=G(),[o,r]=Ge(),{selectedIndex:i,scrollSnaps:a,onDotButtonClick:l}=(e=>{const[t,n]=(0,H.useState)(0),[o,r]=(0,H.useState)([]),s=(0,H.useCallback)(t=>{e&&e.scrollTo(t)},[e]),i=(0,H.useCallback)(e=>{r(e.scrollSnapList())},[]),a=(0,H.useCallback)(e=>{n(e.selectedScrollSnap())},[]);return(0,H.useEffect)(()=>{e&&(i(e),a(e),e.on("reInit",i).on("reInit",a).on("select",a))},[e,i,a]),{selectedIndex:t,scrollSnaps:o,onDotButtonClick:s}})(r);return(0,Y.jsx)(Y.Fragment,{children:(0,Y.jsxs)("section",{className:V("embla \n group/schools-list\n\n data-[is-loading=true]:h-36\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n\n"),"data-is-loading":n,children:[!n&&(e&&0!==e.length?(0,Y.jsx)("div",{className:"embla__viewport",ref:o,children:(0,Y.jsx)("div",{className:V("embla__container \n [&>div:nth-child(odd)]:bg-neutral-50\n"),children:e.map(e=>(0,Y.jsx)("div",{className:"embla__slide",children:(0,Y.jsx)(et,{school:e})},e.name))})}):(0,Y.jsx)(B,{text:t("noData")})),(0,Y.jsx)(Je,{selectedIndex:i,scrollSnaps:a,onDotButtonClick:l})]})})},nt=({hideAttribution:e})=>{const{t:t}=s("neighborhoodSchools"),n=u(),{locale:o}=G();return(0,Y.jsxs)("div",{className:"\n mt-4\n md:flex items-center\n bg-base-white\n [&>a]:justify-end\n",children:[(0,Y.jsx)("p",{className:"flex-1 text-xs",children:t("dataDisclaimer")}),(0,Y.jsx)(A,{onClick:()=>{n.postEvent({eventType:U.ATTRIBUTION_CLICKED})},sdkName:"neighborhood-schools",locale:o,isHidden:e})]})},ot=()=>{const{t:e}=s("neighborhoodSchools"),t=u(),{sdkState:n}=N(),{filteredSchools:o,schoolLevels:r,schoolTypes:i,filterLevel:a,filterType:l,setFilterLevel:c,setFilterType:d}=G(),h=R(),f=i.map(e=>({value:e,label:e})),p=r.map(e=>({value:e,label:e}));return(0,H.useEffect)(()=>{void 0!==l&&(t.postEvent({eventType:U.FILTER_BY_TYPE,eventAttributes:[{label:"filter_by_type",data:l}]}),t.trackAnalyticsEvent({eventName:K.FILTER_BY_TYPE,eventAttributes:{filter_by_type:l}})),void 0!==a&&(t.postEvent({eventType:U.FILTER_BY_LEVEL,eventAttributes:[{label:"filter_by_level",data:a}]}),t.trackAnalyticsEvent({eventName:K.FILTER_BY_LEVEL,eventAttributes:{filter_by_level:a}}))},[a,l]),(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(z,{title:"string"==typeof n.options?.title||!1===n.options?.title?n.options.title:e("title")}),(0,Y.jsxs)("div",{className:"\n flex flex-wrap\n justify-around sm:justify-normal\n gap-2 md:gap-6\n mb-5 md:mb-6\n mt-3 md:mt-4\n",children:[(0,Y.jsx)(te,{options:f,icon:m,label:e("headers.type"),allLabel:e("headers.typesFilter"),activeFilter:l,handleFilterChange:e=>d(e)}),(0,Y.jsx)(te,{options:p,icon:g,label:e("headers.levels"),allLabel:e("headers.levelsFilter"),activeFilter:a,handleFilterChange:e=>c(e)})]}),h?(0,Y.jsx)(tt,{schools:o}):(0,Y.jsx)(le,{schools:o}),(0,Y.jsx)(nt,{hideAttribution:n.options?.hideAttribution})]})};l(a.neighborhoodWrap.key);var rt=()=>{const{sdkState:e}=N(),t=R(),o=e.globalOptions?.locale||"en",r=(0,H.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,Y.jsx)(D,{children:(0,Y.jsx)(M,{sdk:"Neighborhood Schools",schema:q,options:e.options,children:(0,Y.jsx)(d,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:h.NEIGHBORHOOD_SCHOOLS,children:(0,Y.jsx)(n,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:a.neighborhoodWrap,meta:{clientId:e.clientId,productName:h.NEIGHBORHOOD_SCHOOLS,productVersion:"1.24.46"},attributes:{location:r,host:e.location,host_url:document.referrer,locale:o,isMobile:t},flags:{isDebugMode:!1},children:(0,Y.jsx)(Z,{children:(0,Y.jsx)(ot,{})})})})})})};export{rt as default};
|
|
2
|
-
//# sourceMappingURL=NeighborhoodSchools-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as t}from"./google-maps-vendor-DvfEEdRU.js";import{a as n,d as o,f as r,g as s,m as i,n as a,o as l,p as c,r as d,s as u,t as h,u as f}from"./sdks-CJeKEoVJ.js";import{t as p}from"./Backpack.es-VkU9yjoN.js";import{t as m}from"./CaretDown.es-nJe-LNlT.js";import{t as g}from"./GraduationCap.es-Bvo9K-N3.js";import{t as x}from"./IconBase.es-CEehl5AX.js";import{r as b,t as v}from"./useSchools-DvVxvlVD.js";import{C as y,D as j,J as _,O as S,T as L,i as E,j as w,k as I,n as N,w as k,x as C}from"./index-DXa_XaD4.js";import{r as T}from"./index.es-Cf2zREaA.js";import{t as O}from"./useGeographies--nd8CDy6.js";import{t as A}from"./useLocation-BH1znnCK.js";import{t as D}from"./Attribution-VAUTsSaN.js";/* empty css */import{t as F}from"./ResizeWrapper-VGCtIrce.js";import{t as M}from"./ValidateOptions-DlSPr2zT.js";import{t as R}from"./useIsMobile-xZV-dkji.js";import{t as V}from"./bundle-mjs-orX75hSI.js";import{t as z}from"./TitleHeader-CV5TUzIR.js";import{t as B}from"./NoDataContent-Cuc_i84P.js";var H=e(t(),1),P=new Map([["bold",H.createElement(H.Fragment,null,H.createElement("path",{d:"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z"}))],["duotone",H.createElement(H.Fragment,null,H.createElement("path",{d:"M232,56V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56Z",opacity:"0.2"}),H.createElement("path",{d:"M205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z"}))],["fill",H.createElement(H.Fragment,null,H.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z"}))],["light",H.createElement(H.Fragment,null,H.createElement("path",{d:"M228.24,76.24l-128,128a6,6,0,0,1-8.48,0l-56-56a6,6,0,0,1,8.48-8.48L96,191.51,219.76,67.76a6,6,0,0,1,8.48,8.48Z"}))],["regular",H.createElement(H.Fragment,null,H.createElement("path",{d:"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"}))],["thin",H.createElement(H.Fragment,null,H.createElement("path",{d:"M226.83,74.83l-128,128a4,4,0,0,1-5.66,0l-56-56a4,4,0,0,1,5.66-5.66L96,194.34,221.17,69.17a4,4,0,1,1,5.66,5.66Z"}))]]),$=H.forwardRef((e,t)=>H.createElement(x,{ref:t,...e,weights:P}));$.displayName="CheckIcon";var U=function(e){return e.SDK_VIEWED="neighborhood-schools-Viewed",e.ATTRIBUTION_CLICKED="LC-Attribution-Clicked",e.SCHOOL_URL_CLICKED="neighborhood-schools-URL-Clicked",e.FILTER_BY_TYPE="neighborhood-schools-Filter-By-Type",e.FILTER_BY_LEVEL="neighborhood-schools-Filter-By-Level",e}({}),K=function(e){return e.SDK_VIEWED="sdk_viewed",e.SCHOOL_URL_CLICKED="neighborhood_schools_url_clicked",e.FILTER_BY_TYPE="neighborhood_schools_filter_by_type",e.FILTER_BY_LEVEL="neighborhood_schools_filter_by_level",e}({});var Y=_(),W=H.createContext({}),G=()=>(0,H.useContext)(W),Z=({children:e})=>{const{sdkState:t}=N(),n=t.globalOptions?.locale||"en",o=u();E(()=>{o.postEvent({eventType:U.SDK_VIEWED}),o.trackAnalyticsEvent({eventName:K.SDK_VIEWED})});const{isLoading:r,data:s}=O({geogID:t.options?.geographyId,location:{lat:t.options?.lat,lng:t.options?.lng}}),{geographyId:i,geography:a}=(0,H.useMemo)(()=>{const e=Object.entries(s||{});return{geographyId:e[0]?.[0],geography:e[0]?.[1]}},[r,s]),l=(0,H.useMemo)(()=>t.options?.geographyId?a?.centroid||{lat:0,lng:0}:{lat:t.options?.lat||0,lng:t.options?.lng||0},[t.options?.geographyId,t.options?.lat,t.options?.lng,a]),{isLoading:c,data:d}=A({lat:l.lat,lng:l.lng}),[h,f]=(0,H.useState)(),[p,m]=(0,H.useState)(),{isLoading:g,filteredSchools:x,schoolTypes:b,schoolLevels:y,hasCategories:j}=function({country:e,filterLevel:t,filterType:n,...o}){const{isLoading:r,data:s}=v({...o,include:["schools"],radius:2e3,limit:30,buffer:250}),{schools:i,filteredSchools:a,schoolTypes:l,schoolLevels:c,hasCategories:d}=(0,H.useMemo)(()=>{const o={schools:void 0,filteredSchools:void 0,schoolTypes:[],schoolLevels:[],hasCategories:!1};if(!s||!s.primary_schools&&!s.high_schools)return o;const r=new Set,i=new Set,a=new Set,l=[...s.primary_schools||[],...s.high_schools||[]],c=[],d=[];for(const s of l){if(r.has(s.name))continue;r.add(s.name),c.push(s),"USA"===e&&(o.hasCategories=o.hasCategories||!!s.is_advanced_placement||!!s.is_charter||!!s.is_magnet);for(const e of s.school_attributes?.types||[])i.add(e);for(const e of s.school_attributes?.levels||[])a.add(e);const l=void 0===t||s.school_attributes?.levels?.includes(t),u=void 0===n||s.school_attributes?.types?.includes(n);l&&u&&d.push(s)}return{schools:c,filteredSchools:d,schoolTypes:[...i],schoolLevels:[...a],hasCategories:o.hasCategories}},[e,t,n,s]);return{isLoading:r,schools:i,filteredSchools:a,schoolTypes:l,schoolLevels:c,hasCategories:d}}({geogId:i,country:d.country,filterLevel:h,filterType:p}),_=(0,H.useMemo)(()=>g||c,[g,c]);(0,H.useEffect)(()=>{m(e=>void 0===e||b.includes(e)?e:void 0)},[b]),(0,H.useEffect)(()=>{f(e=>void 0===e||y.includes(e)?e:void 0)},[y]);const S=(0,H.useMemo)(()=>({isLoading:_,filteredSchools:x,schoolTypes:b,schoolLevels:y,filterType:p,filterLevel:h,setFilterType:m,setFilterLevel:f,hasCategories:j,locale:n,location:d,showSchoolRatings:t.options?.showSchoolRatings}),[_,x,b,y,p,h,n,j,d,t.options?.showSchoolRatings]);return(0,Y.jsx)(W.Provider,{value:S,children:e})},q=f({lat:o().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:o().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:r().optional(),title:i().optional(),hideAttribution:c().optional(),showSchoolRatings:c().optional()}).noUnknown(!0),J=({size:e="medium",children:t,...n})=>(0,Y.jsx)(C,{className:"\n overflow-hidden bg-base-white rounded-sm shadow-md\n z-10 min-w-32\n data-[size=medium]:text-sm\n data-[size=large]:text-base\n","data-size":e,...n,children:(0,Y.jsx)(w,{className:"font-inherit p-0",children:t})}),Q=({variant:e="dark",children:t,...n})=>(0,Y.jsxs)(y,{className:'\n font-sans font-inherit py-1 pr-8 pl-6 outline-none\n relative rounded-sm cursor-default text-zinc-800\n\n data-[highlighted]:[&:not([data-variant="light"])]:bg-primary-100\n data-[highlighted]:[&:not([data-variant="light"])]:text-base-white\n\n // Special color between now and design system\n data-[highlighted]:[&:not([data-variant="dark"])]:bg-primary-10\n data-[highlighted]:[&:not([data-variant="dark"])]:text-zinc-950\n ',"data-variant":e,...n,children:[(0,Y.jsx)(L,{children:t}),(0,Y.jsx)(k,{className:"\n absolute left-0 bottom-0\n inline-flex justify-center items-center\n h-full w-6\n",children:(0,Y.jsx)($,{className:"\n text-base-black\n h-3 w-3\n"})})]}),X=({size:e="medium",children:t,...n})=>(0,Y.jsxs)(I,{className:"\n inline-flex items-center justify-between flex-1\n bg-base-white rounded-lg border\n py-1 pr-2 pl-3 min-w-32\n data-[size=medium]:text-sm data-[size=medium]:h-8\n data-[size=large]:text-base data-[size=large]:h-10\n","data-size":e,...n,children:[t,(0,Y.jsx)(S,{children:(0,Y.jsx)(m,{className:"\n text-base-black\n h-5 w-5\n"})})]}),ee="\n capitalize text-sm font-normal\n py-2 pl-2\n pr-6 sm:pr-36\n",te=({options:e,activeFilter:t,allLabel:n,label:o,icon:r=p,handleFilterChange:s})=>{const i=[{label:n,value:"ALL"},...e],a=t??"ALL";return(0,Y.jsxs)("div",{children:[(0,Y.jsx)("label",{className:"\n ml-2 mb-1\n text-sm font-normal\n","data-testid":`filter-label-${o}`,htmlFor:`filter-select-${o}`,children:o}),e&&(0,Y.jsx)("div",{className:"\n shadow\n rounded-lg\n -outline-offset-2\n",children:(0,Y.jsxs)(j,{value:a,onValueChange:e=>s("ALL"===e?void 0:e),children:[(0,Y.jsxs)(X,{size:"large",id:`filter-select-${o}`,children:[(0,Y.jsx)(r,{className:"\n w-4 h-4 text-stone-500\n"}),(0,Y.jsx)("p",{className:ee,children:i.find(e=>e.value===a)?.label})]}),(0,Y.jsx)(J,{children:i.map(e=>(0,Y.jsx)(Q,{value:e.value,variant:"light",children:(0,Y.jsx)("p",{className:ee,children:e.label})},e.value))})]})})]})},ne='\n text-neutral-600\n text-sm font-bold\n data-[has-link="true"]:text-primary-100\n data-[has-link="true"]:pointer\n data-[has-link="true"]:hover:underline\n',oe=({school:e})=>{const{t:t}=s(["common"]),n=u(),{showSchoolRatings:o}=G();return(0,Y.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[e.url?(0,Y.jsx)("a",{onClick:()=>{n.postEvent({eventType:U.SCHOOL_URL_CLICKED,eventAttributes:[{label:"school_name_clicked",data:e.name},{label:"school_url_clicked",data:e.url}]}),n.trackAnalyticsEvent({eventName:K.SCHOOL_URL_CLICKED,eventAttributes:{school_name:e.name,school_url:e.url}})},className:ne,href:e.url,target:"_blank",rel:"noreferrer","data-has-link":void 0!==e.url,"data-testid":"school-name-with-link",children:e.name}):(0,Y.jsx)("p",{"data-testid":"school-name",className:ne,children:e.name}),o&&e.rating&&(0,Y.jsx)("div",{"data-testid":"school-rating",className:"cursor-pointer",title:t("common:map.marker.schoolAttributes.rating"),children:(0,Y.jsx)(T,{children:e.rating})})]})},re=({school:e})=>(0,Y.jsxs)("div",{className:"pb-4",children:[(0,Y.jsx)(oe,{school:e}),e.school_board_attributes?.name&&(0,Y.jsx)("p",{"data-testid":"school-board",className:"text-xs font-normal text-neutral-600",children:e.school_board_attributes?.name})]}),se="\n flex flex-wrap gap-2\n",ie=({schools:e,headers:t})=>{const{t:n}=s("neighborhoodSchools"),{hasCategories:o}=G();return(0,Y.jsx)(Y.Fragment,{children:e?.map(e=>(0,Y.jsxs)("tr",{className:"\n odd:bg-white even:bg-neutral-50\n [&_td]:px-4 [&_td]:py-3\n",children:[(0,Y.jsx)("td",{children:(0,Y.jsx)(re,{school:e})}),(0,Y.jsx)("td",{children:(0,Y.jsx)("div",{className:se,children:e.school_attributes?.types?.map(t=>(0,Y.jsx)(T,{children:t},`${e.name}-${t}`))})}),-1!==t.indexOf("languages")&&(0,Y.jsx)("td",{children:(0,Y.jsx)("div",{className:se,children:e.school_attributes?.languages?.map(t=>(0,Y.jsx)(T,{variant:"light",children:n("fr"===t?"french":"english")},`${e.name}-${t}`))})}),(0,Y.jsx)("td",{children:(0,Y.jsx)("div",{className:se,children:e.school_attributes?.levels?.map(t=>(0,Y.jsx)(T,{variant:"light",children:t},`${e.name}-${t}`))})}),o&&(0,Y.jsx)("td",{children:(0,Y.jsxs)("div",{className:se,children:[(0,Y.jsx)(T,{isVisible:!!e.is_advanced_placement,children:n("categories.advancedPlacement")}),(0,Y.jsx)(T,{isVisible:!!e.is_charter,children:n("categories.charter")}),(0,Y.jsx)(T,{isVisible:!!e.is_magnet,children:n("categories.magnet")})]})}),(0,Y.jsx)("td",{children:(0,Y.jsx)("p",{className:"\n text-sm font-normal\n text-neutral-600\n",children:b({street:e.address,city:e.city,state:e.province})})})]},`row-${e.name}`))})},ae={CAN:["name","type","languages","levels","address"],USA:["name","type","levels","address"]},le=({schools:e})=>{const{t:t}=s("neighborhoodSchools"),{isLoading:n,hasCategories:o,location:r}=G(),i=(0,H.useMemo)(()=>{if(n)return ae.USA;if("USA"===r?.country&&o){const e=[...ae.USA];return e.includes("category")||e.splice(e.length-1,0,"category"),e}return ae[r.country]},[n,r,o]);return(0,Y.jsxs)("div",{className:"\n overflow-y-scroll\n h-full\n max-h-[70vh]\n border border-neutral-300 rounded-lg\n\n data-[is-loading=true]:h-36\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n ","data-is-loading":n,children:[!n&&(0,Y.jsxs)("table",{className:"\n w-full h-full\n table-auto\n -outline-offset-2\n",children:[(0,Y.jsx)("thead",{children:(0,Y.jsx)("tr",{children:i&&i.map(e=>(0,Y.jsx)("th",{className:"\n p-4\n text-left\n bg-neutral-50\n [&_h2]:text-md\n [&_h2]:font-medium\n",children:(0,Y.jsx)("h2",{children:t(`headers.${e}`)})},e))})}),(0,Y.jsxs)("tbody",{children:[e&&e?.length>0&&(0,Y.jsx)(ie,{schools:e,headers:i}),0===e?.length&&(0,Y.jsx)("div",{className:"m-5",children:(0,Y.jsx)(B,{text:t("noFilteredData")})})]})]}),!n&&!e&&(0,Y.jsx)(B,{text:t("noData")})]})};function ce(e){return function(e){return"[object Object]"===Object.prototype.toString.call(e)}(e)||Array.isArray(e)}function de(e,t){const n=Object.keys(e),o=Object.keys(t);return n.length===o.length&&(JSON.stringify(Object.keys(e.breakpoints||{}))===JSON.stringify(Object.keys(t.breakpoints||{}))&&n.every(n=>{const o=e[n],r=t[n];return"function"==typeof o?`${o}`==`${r}`:ce(o)&&ce(r)?de(o,r):o===r}))}function ue(e){return e.concat().sort((e,t)=>e.name>t.name?1:-1).map(e=>e.options)}function he(e){return"number"==typeof e}function fe(e){return"string"==typeof e}function pe(e){return"boolean"==typeof e}function me(e){return"[object Object]"===Object.prototype.toString.call(e)}function ge(e){return Math.abs(e)}function xe(e){return Math.sign(e)}function be(e,t){return ge(e-t)}function ve(e){return Le(e).map(Number)}function ye(e){return e[je(e)]}function je(e){return Math.max(0,e.length-1)}function _e(e,t){return t===je(e)}function Se(e,t=0){return Array.from(Array(e),(e,n)=>t+n)}function Le(e){return Object.keys(e)}function Ee(e,t){return[e,t].reduce((e,t)=>(Le(t).forEach(n=>{const o=e[n],r=t[n];e[n]=me(o)&&me(r)?Ee(o,r):r}),e),{})}function we(e,t){return void 0!==t.MouseEvent&&e instanceof t.MouseEvent}function Ie(){let e=[];const t={add:function(n,o,r,s={passive:!0}){let i;if("addEventListener"in n)n.addEventListener(o,r,s),i=()=>n.removeEventListener(o,r,s);else{const e=n;e.addListener(r),i=()=>e.removeListener(r)}return e.push(i),t},clear:function(){e=e.filter(e=>e())}};return t}function Ne(e,t,n,o){const r=Ie(),s=1e3/60;let i=null,a=0,l=0;function c(e){if(!l)return;i||(i=e,n(),n());const r=e-i;for(i=e,a+=r;a>=s;)n(),a-=s;o(a/s),l&&(l=t.requestAnimationFrame(c))}function d(){t.cancelAnimationFrame(l),i=null,a=0,l=0}return{init:function(){r.add(e,"visibilitychange",()=>{e.hidden&&(i=null,a=0)})},destroy:function(){d(),r.clear()},start:function(){l||(l=t.requestAnimationFrame(c))},stop:d,update:n,render:o}}function ke(e=0,t=0){const n=ge(e-t);function o(t){return t<e}function r(e){return e>t}function s(e){return o(e)||r(e)}return{length:n,max:t,min:e,constrain:function(n){return s(n)?o(n)?e:t:n},reachedAny:s,reachedMax:r,reachedMin:o,removeOffset:function(e){return n?e-n*Math.ceil((e-t)/n):e}}}function Ce(e,t,n){const{constrain:o}=ke(0,e),r=e+1;let s=i(t);function i(e){return n?ge((r+e)%r):o(e)}function a(){return s}function l(){return Ce(e,a(),n)}const c={get:a,set:function(e){return s=i(e),c},add:function(e){return l().set(a()+e)},clone:l};return c}function Te(e,t,n,o,r,s,i,a,l,c,d,u,h,f,p,m,g,x,b){const{cross:v,direction:y}=e,j=["INPUT","SELECT","TEXTAREA"],_={passive:!1},S=Ie(),L=Ie(),E=ke(50,225).constrain(f.measure(20)),w={mouse:300,touch:400},I={mouse:500,touch:600},N=p?43:25;let k=!1,C=0,T=0,O=!1,A=!1,D=!1,F=!1;function M(e){if(!we(e,o)&&e.touches.length>=2)return R(e);const t=s.readPoint(e),n=s.readPoint(e,v),i=be(t,C),l=be(n,T);if(!A&&!F){if(!e.cancelable)return R(e);if(A=i>l,!A)return R(e)}const d=s.pointerMove(e);i>m&&(D=!0),c.useFriction(.3).useDuration(.75),a.start(),r.add(y(d)),e.preventDefault()}function R(e){const t=d.byDistance(0,!1).index!==u.get(),n=s.pointerUp(e)*(p?I:w)[F?"mouse":"touch"],o=function(e,t){const n=u.add(-1*xe(e)),o=d.byDistance(e,!p).distance;return p||ge(e)<E?o:g&&t?.5*o:d.byIndex(n.get(),0).distance}(y(n),t),r=(a=o,0===(i=n)||0===a||ge(i)<=ge(a)?0:ge(be(ge(i),ge(a))/i));var i,a;const f=N-10*r,m=x+r/50;A=!1,O=!1,L.clear(),c.useDuration(f).useFriction(m),l.distance(o,!p),F=!1,h.emit("pointerUp")}function V(e){D&&(e.stopPropagation(),e.preventDefault(),D=!1)}return{init:function(e){if(!b)return;function a(a){(pe(b)||b(e,a))&&function(e){const a=we(e,o);if(F=a,D=p&&a&&!e.buttons&&k,k=be(r.get(),i.get())>=2,a&&0!==e.button)return;if(function(e){const t=e.nodeName||"";return j.includes(t)}(e.target))return;O=!0,s.pointerDown(e),c.useFriction(0).useDuration(0),r.set(i),function(){const e=F?n:t;L.add(e,"touchmove",M,_).add(e,"touchend",R).add(e,"mousemove",M,_).add(e,"mouseup",R)}(),C=s.readPoint(e),T=s.readPoint(e,v),h.emit("pointerDown")}(a)}const l=t;S.add(l,"dragstart",e=>e.preventDefault(),_).add(l,"touchmove",()=>{},_).add(l,"touchend",()=>{}).add(l,"touchstart",a).add(l,"mousedown",a).add(l,"touchcancel",R).add(l,"contextmenu",R).add(l,"click",V,!0)},destroy:function(){S.clear(),L.clear()},pointerDown:function(){return O}}}function Oe(e,t){let n,o;function r(e){return e.timeStamp}function s(n,o){const r="client"+("x"===(o||e.scroll)?"X":"Y");return(we(n,t)?n:n.touches[0])[r]}return{pointerDown:function(e){return n=e,o=e,s(e)},pointerMove:function(e){const t=s(e)-s(o),i=r(e)-r(n)>170;return o=e,i&&(n=e),t},pointerUp:function(e){if(!n||!o)return 0;const t=s(o)-s(n),i=r(e)-r(n),a=r(e)-r(o)>170,l=t/i;return i&&!a&&ge(l)>.1?l:0},readPoint:s}}function Ae(e,t,n,o,r,s,i){const a=[e].concat(o);let l,c,d=[],u=!1;function h(e){return r.measureSize(i.measure(e))}return{init:function(r){s&&(c=h(e),d=o.map(h),l=new ResizeObserver(n=>{(pe(s)||s(r,n))&&function(n){for(const s of n){if(u)return;const n=s.target===e,i=o.indexOf(s.target),a=n?c:d[i];if(ge(h(n?e:o[i])-a)>=.5){r.reInit(),t.emit("resize");break}}}(n)}),n.requestAnimationFrame(()=>{a.forEach(e=>l.observe(e))}))},destroy:function(){u=!0,l&&l.disconnect()}}}function De(e,t,n,o,r){const s=r.measure(10),i=r.measure(50),a=ke(.1,.99);let l=!1;function c(){return!l&&(!!e.reachedAny(n.get())&&!!e.reachedAny(t.get()))}return{shouldConstrain:c,constrain:function(r){if(!c())return;const l=ge(e[e.reachedMin(t.get())?"min":"max"]-t.get()),d=n.get()-t.get(),u=a.constrain(l/i);n.subtract(d*u),!r&&ge(d)<s&&(n.set(e.constrain(n.get())),o.useDuration(25).useBaseFriction())},toggleActive:function(e){l=!e}}}function Fe(e,t,n,o){const{reachedMin:r,reachedMax:s}=ke(t.min+.1,t.max+.1);return{loop:function(t){if(!function(e){return 1===e?s(n.get()):-1===e&&r(n.get())}(t))return;const i=e*(-1*t);o.forEach(e=>e.add(i))}}}function Me(e,t,n,o,r){const{reachedAny:s,removeOffset:i,constrain:a}=o;function l(e){return e.concat().sort((e,t)=>ge(e)-ge(t))[0]}function c(t,o){const r=[t,t+n,t-n];if(!e)return t;if(!o)return l(r);const s=r.filter(e=>xe(e)===o);return s.length?l(s):ye(r)-n}return{byDistance:function(n,o){const l=r.get()+n,{index:d,distance:u}=function(n){const o=e?i(n):a(n),{index:r}=t.map((e,t)=>({diff:c(e-o,0),index:t})).sort((e,t)=>ge(e.diff)-ge(t.diff))[0];return{index:r,distance:o}}(l),h=!e&&s(l);return!o||h?{index:d,distance:n}:{index:d,distance:n+c(t[d]-u,0)}},byIndex:function(e,n){return{index:e,distance:c(t[e]-r.get(),n)}},shortcut:c}}function Re(e,t,n,o,r,s,i,a){const l={passive:!0,capture:!0};let c=0;function d(e){"Tab"===e.code&&(c=(new Date).getTime())}return{init:function(u){a&&(s.add(document,"keydown",d,!1),t.forEach((t,d)=>{s.add(t,"focus",t=>{(pe(a)||a(u,t))&&function(t){if((new Date).getTime()-c>10)return;i.emit("slideFocusStart"),e.scrollLeft=0;const s=n.findIndex(e=>e.includes(t));he(s)&&(r.useDuration(0),o.index(s,0),i.emit("slideFocus"))}(d)},l)}))}}}function Ve(e){let t=e;function n(e){return he(e)?e:e.get()}return{get:function(){return t},set:function(e){t=n(e)},add:function(e){t+=n(e)},subtract:function(e){t-=n(e)}}}function ze(e,t){const n="x"===e.scroll?function(e){return`translate3d(${e}px,0px,0px)`}:function(e){return`translate3d(0px,${e}px,0px)`},o=t.style;let r=null,s=!1;return{clear:function(){s||(o.transform="",t.getAttribute("style")||t.removeAttribute("style"))},to:function(t){if(s)return;const i=(a=e.direction(t),Math.round(100*a)/100);var a;i!==r&&(o.transform=n(i),r=i)},toggleActive:function(e){s=!e}}}function Be(e,t,n,o,r,s,i,a,l){const c=ve(r),d=ve(r).reverse(),u=function(){const e=i[0];return p(f(d,e),n,!1)}().concat(p(f(c,t-i[0]-1),-n,!0));function h(e,t){return e.reduce((e,t)=>e-r[t],t)}function f(e,t){return e.reduce((e,n)=>h(e,t)>0?e.concat([n]):e,[])}function p(r,i,c){const d=function(e){return s.map((n,r)=>({start:n-o[r]+.5+e,end:n+t-.5+e}))}(i);return r.map(t=>{const o=c?0:-n,r=c?n:0,s=c?"end":"start",i=d[t][s];return{index:t,loopPoint:i,slideLocation:Ve(-1),translate:ze(e,l[t]),target:()=>a.get()>i?o:r}})}return{canLoop:function(){return u.every(({index:e})=>h(c.filter(t=>t!==e),t)<=.1)},clear:function(){u.forEach(e=>e.translate.clear())},loop:function(){u.forEach(e=>{const{target:t,translate:n,slideLocation:o}=e,r=t();r!==o.get()&&(n.to(r),o.set(r))})},loopPoints:u}}function He(e,t,n){let o,r=!1;return{init:function(s){n&&(o=new MutationObserver(e=>{r||(pe(n)||n(s,e))&&function(e){for(const n of e)if("childList"===n.type){s.reInit(),t.emit("slidesChanged");break}}(e)}),o.observe(e,{childList:!0}))},destroy:function(){o&&o.disconnect(),r=!0}}}function Pe(e,t,n,o){const r={};let s,i=null,a=null,l=!1;return{init:function(){s=new IntersectionObserver(e=>{l||(e.forEach(e=>{const n=t.indexOf(e.target);r[n]=e}),i=null,a=null,n.emit("slidesInView"))},{root:e.parentElement,threshold:o}),t.forEach(e=>s.observe(e))},destroy:function(){s&&s.disconnect(),l=!0},get:function(e=!0){if(e&&i)return i;if(!e&&a)return a;const t=function(e){return Le(r).reduce((t,n)=>{const o=parseInt(n),{isIntersecting:s}=r[o];return(e&&s||!e&&!s)&&t.push(o),t},[])}(e);return e&&(i=t),e||(a=t),t}}}function $e(e,t,n,o,r,s,i,a,l){const{startEdge:c,endEdge:d,direction:u}=e,h=he(n);return{groupSlides:function(e){return h?function(e,t){return ve(e).filter(e=>e%t===0).map(n=>e.slice(n,n+t))}(e,n):function(e){return e.length?ve(e).reduce((n,h,f)=>{const p=ye(n)||0,m=0===p,g=h===je(e),x=r[c]-s[p][c],b=r[c]-s[h][d],v=!o&&m?u(i):0,y=ge(b-(!o&&g?u(a):0)-(x+v));return f&&y>t+l&&n.push(h),g&&n.push(e.length),n},[]).map((t,n,o)=>{const r=Math.max(o[n-1]||0);return e.slice(r,t)}):[]}(e)}}}function Ue(e,t,n,o,r,s,i){const{align:a,axis:l,direction:c,startIndex:d,loop:u,duration:h,dragFree:f,dragThreshold:p,inViewThreshold:m,slidesToScroll:g,skipSnaps:x,containScroll:b,watchResize:v,watchSlides:y,watchDrag:j,watchFocus:_}=s,S={measure:function(e){const{offsetTop:t,offsetLeft:n,offsetWidth:o,offsetHeight:r}=e;return{top:t,right:n+o,bottom:t+r,left:n,width:o,height:r}}},L=S.measure(t),E=n.map(S.measure),w=function(e,t){const n="rtl"===t,o="y"===e,r=!o&&n?-1:1;return{scroll:o?"y":"x",cross:o?"x":"y",startEdge:o?"top":n?"right":"left",endEdge:o?"bottom":n?"left":"right",measureSize:function(e){const{height:t,width:n}=e;return o?t:n},direction:function(e){return e*r}}}(l,c),I=w.measureSize(L),N=function(e){return{measure:function(t){return e*(t/100)}}}(I),k=function(e,t){const n={start:function(){return 0},center:function(e){return o(e)/2},end:o};function o(e){return t-e}return{measure:function(o,r){return fe(e)?n[e](o):e(t,o,r)}}}(a,I),C=!u&&!!b,{slideSizes:T,slideSizesWithGaps:O,startGap:A,endGap:D}=function(e,t,n,o,r,s){const{measureSize:i,startEdge:a,endEdge:l}=e,c=n[0]&&r,d=function(){if(!c)return 0;const e=n[0];return ge(t[a]-e[a])}(),u=function(){if(!c)return 0;const e=s.getComputedStyle(ye(o));return parseFloat(e.getPropertyValue(`margin-${l}`))}(),h=n.map(i),f=n.map((e,t,n)=>{const o=!t,r=_e(n,t);return o?h[t]+d:r?h[t]+u:n[t+1][a]-e[a]}).map(ge);return{slideSizes:h,slideSizesWithGaps:f,startGap:d,endGap:u}}(w,L,E,n,u||!!b,r),F=$e(w,I,g,u,L,E,A,D,2),{snaps:M,snapsAligned:R}=function(e,t,n,o,r){const{startEdge:s,endEdge:i}=e,{groupSlides:a}=r,l=a(o).map(e=>ye(e)[i]-e[0][s]).map(ge).map(t.measure),c=o.map(e=>n[s]-e[s]).map(e=>-ge(e)),d=a(c).map(e=>e[0]).map((e,t)=>e+l[t]);return{snaps:c,snapsAligned:d}}(w,k,L,E,F),V=-ye(M)+ye(O),{snapsContained:z,scrollContainLimit:B}=function(e,t,n,o,r){const s=ke(-t+e,0),i=n.map((e,t)=>{const{min:o,max:r}=s,i=s.constrain(e),a=!t,c=_e(n,t);return a?r:c||l(o,i)?o:l(r,i)?r:i}).map(e=>parseFloat(e.toFixed(3))),a=function(){const e=i[0],t=ye(i);return ke(i.lastIndexOf(e),i.indexOf(t)+1)}();function l(e,t){return be(e,t)<=1}return{snapsContained:function(){if(t<=e+r)return[s.max];if("keepSnaps"===o)return i;const{min:n,max:l}=a;return i.slice(n,l)}(),scrollContainLimit:a}}(I,V,R,b,2),H=C?z:R,{limit:P}=function(e,t,n){const o=t[0];return{limit:ke(n?o-e:ye(t),o)}}(V,H,u),$=Ce(je(H),d,u),U=$.clone(),K=ve(n),Y=Ne(o,r,()=>(({dragHandler:e,scrollBody:t,scrollBounds:n,options:{loop:o}})=>{o||n.constrain(e.pointerDown()),t.seek()})(ie),e=>(({scrollBody:e,translate:t,location:n,offsetLocation:o,previousLocation:r,scrollLooper:s,slideLooper:i,dragHandler:a,animation:l,eventHandler:c,scrollBounds:d,options:{loop:u}},h)=>{const f=e.settled(),p=!d.shouldConstrain(),m=u?f:f&&p,g=m&&!a.pointerDown();g&&l.stop();const x=n.get()*h+r.get()*(1-h);o.set(x),u&&(s.loop(e.direction()),i.loop()),t.to(o.get()),g&&c.emit("settle"),m||c.emit("scroll")})(ie,e)),W=H[$.get()],G=Ve(W),Z=Ve(W),q=Ve(W),J=Ve(W),Q=function(e,t,n,o,r,s){let i=0,a=0,l=r,c=s,d=e.get(),u=0;function h(e){return l=e,p}function f(e){return c=e,p}const p={direction:function(){return a},duration:function(){return l},velocity:function(){return i},seek:function(){const t=o.get()-e.get();let r=0;return l?(n.set(e),i+=t/l,i*=c,d+=i,e.add(i),r=d-u):(i=0,n.set(o),e.set(o),r=t),a=xe(r),u=d,p},settled:function(){return ge(o.get()-t.get())<.001},useBaseFriction:function(){return f(s)},useBaseDuration:function(){return h(r)},useFriction:f,useDuration:h};return p}(G,q,Z,J,h,.68),X=Me(u,H,V,P,J),ee=function(e,t,n,o,r,s,i){function a(r){const a=r.distance,l=r.index!==t.get();s.add(a),a&&(o.duration()?e.start():(e.update(),e.render(1),e.update())),l&&(n.set(t.get()),t.set(r.index),i.emit("select"))}return{distance:function(e,t){a(r.byDistance(e,t))},index:function(e,n){const o=t.clone().set(e);a(r.byIndex(o.get(),n))}}}(Y,$,U,Q,X,J,i),te=function(e){const{max:t,length:n}=e;return{get:function(e){return n?(e-t)/-n:0}}}(P),ne=Ie(),oe=Pe(t,n,i,m),{slideRegistry:re}=function(e,t,n,o,r,s){const{groupSlides:i}=r,{min:a,max:l}=o;return{slideRegistry:function(){const o=i(s),r=!e||"keepSnaps"===t;return 1===n.length?[s]:r?o:o.slice(a,l).map((e,t,n)=>{const o=!t,r=_e(n,t);return o?Se(ye(n[0])+1):r?Se(je(s)-ye(n)[0]+1,ye(n)[0]):e})}()}}(C,b,H,B,F,K),se=Re(e,n,re,ee,Q,ne,i,_),ie={ownerDocument:o,ownerWindow:r,eventHandler:i,containerRect:L,slideRects:E,animation:Y,axis:w,dragHandler:Te(w,e,o,r,J,Oe(w,r),G,Y,ee,Q,X,$,i,N,f,p,x,.68,j),eventStore:ne,percentOfView:N,index:$,indexPrevious:U,limit:P,location:G,offsetLocation:q,previousLocation:Z,options:s,resizeHandler:Ae(t,i,r,n,w,v,S),scrollBody:Q,scrollBounds:De(P,q,J,Q,N),scrollLooper:Fe(V,P,q,[G,q,Z,J]),scrollProgress:te,scrollSnapList:H.map(te.get),scrollSnaps:H,scrollTarget:X,scrollTo:ee,slideLooper:Be(w,I,V,T,O,M,H,q,n),slideFocus:se,slidesHandler:He(t,i,y),slidesInView:oe,slideIndexes:K,slideRegistry:re,slidesToScroll:F,target:J,translate:ze(w,t)};return ie}var Ke={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function Ye(e){function t(e,t){return Ee(e,t||{})}return{mergeOptions:t,optionsAtMedia:function(n){const o=n.breakpoints||{};return t(n,Le(o).filter(t=>e.matchMedia(t).matches).map(e=>o[e]).reduce((e,n)=>t(e,n),{}))},optionsMediaQueries:function(t){return t.map(e=>Le(e.breakpoints||{})).reduce((e,t)=>e.concat(t),[]).map(e.matchMedia)}}}function We(e,t,n){const o=e.ownerDocument,r=o.defaultView,s=Ye(r),i=function(e){let t=[];return{init:function(n,o){return t=o.filter(({options:t})=>!1!==e.optionsAtMedia(t).active),t.forEach(t=>t.init(n,e)),o.reduce((e,t)=>Object.assign(e,{[t.name]:t}),{})},destroy:function(){t=t.filter(e=>e.destroy())}}}(s),a=Ie(),l=function(){let e,t={};function n(e){return t[e]||[]}const o={init:function(t){e=t},emit:function(t){return n(t).forEach(n=>n(e,t)),o},off:function(e,r){return t[e]=n(e).filter(e=>e!==r),o},on:function(e,r){return t[e]=n(e).concat([r]),o},clear:function(){t={}}};return o}(),{mergeOptions:c,optionsAtMedia:d,optionsMediaQueries:u}=s,{on:h,off:f,emit:p}=l,m=w;let g,x,b,v,y=!1,j=c(Ke,We.globalOptions),_=c(j),S=[];function L(t){const n=Ue(e,b,v,o,r,t,l);return t.loop&&!n.slideLooper.canLoop()?L(Object.assign({},t,{loop:!1})):n}function E(t,n){y||(j=c(j,t),_=d(j),S=n||S,function(){const{container:t,slides:n}=_;b=(fe(t)?e.querySelector(t):t)||e.children[0];const o=fe(n)?b.querySelectorAll(n):n;v=[].slice.call(o||b.children)}(),g=L(_),u([j,...S.map(({options:e})=>e)]).forEach(e=>a.add(e,"change",w)),_.active&&(g.translate.to(g.location.get()),g.animation.init(),g.slidesInView.init(),g.slideFocus.init(C),g.eventHandler.init(C),g.resizeHandler.init(C),g.slidesHandler.init(C),g.options.loop&&g.slideLooper.loop(),b.offsetParent&&v.length&&g.dragHandler.init(C),x=i.init(C,S)))}function w(e,t){const n=k();I(),E(c({startIndex:n},e),t),l.emit("reInit")}function I(){g.dragHandler.destroy(),g.eventStore.clear(),g.translate.clear(),g.slideLooper.clear(),g.resizeHandler.destroy(),g.slidesHandler.destroy(),g.slidesInView.destroy(),g.animation.destroy(),i.destroy(),a.clear()}function N(e,t,n){_.active&&!y&&(g.scrollBody.useBaseFriction().useDuration(!0===t?0:_.duration),g.scrollTo.index(e,n||0))}function k(){return g.index.get()}const C={canScrollNext:function(){return g.index.add(1).get()!==k()},canScrollPrev:function(){return g.index.add(-1).get()!==k()},containerNode:function(){return b},internalEngine:function(){return g},destroy:function(){y||(y=!0,a.clear(),I(),l.emit("destroy"),l.clear())},off:f,on:h,emit:p,plugins:function(){return x},previousScrollSnap:function(){return g.indexPrevious.get()},reInit:m,rootNode:function(){return e},scrollNext:function(e){N(g.index.add(1).get(),e,-1)},scrollPrev:function(e){N(g.index.add(-1).get(),e,1)},scrollProgress:function(){return g.scrollProgress.get(g.offsetLocation.get())},scrollSnapList:function(){return g.scrollSnapList},scrollTo:N,selectedScrollSnap:k,slideNodes:function(){return v},slidesInView:function(){return g.slidesInView.get()},slidesNotInView:function(){return g.slidesInView.get(!1)}};return E(t,n),setTimeout(()=>l.emit("init"),0),C}function Ge(e={},t=[]){const n=(0,H.useRef)(e),o=(0,H.useRef)(t),[r,s]=(0,H.useState)(),[i,a]=(0,H.useState)(),l=(0,H.useCallback)(()=>{r&&r.reInit(n.current,o.current)},[r]);return(0,H.useEffect)(()=>{de(n.current,e)||(n.current=e,l())},[e,l]),(0,H.useEffect)(()=>{(function(e,t){if(e.length!==t.length)return!1;const n=ue(e),o=ue(t);return n.every((e,t)=>de(e,o[t]))})(o.current,t)||(o.current=t,l())},[t,l]),(0,H.useEffect)(()=>{if("undefined"!=typeof window&&window.document&&window.document.createElement&&i){We.globalOptions=Ge.globalOptions;const e=We(i,n.current,o.current);return s(e),()=>e.destroy()}s(void 0)},[i,s]),[a,r]}We.globalOptions=void 0,Ge.globalOptions=void 0;var Ze=e=>{const{children:t,...n}=e;return(0,Y.jsx)("button",{type:"button",...n,children:t})},qe="\n flex flex-wrap\n mb-4 gap-2\n",Je=({selectedIndex:e,scrollSnaps:t,onDotButtonClick:n})=>(0,Y.jsx)("div",{className:V("embla__dots py-2"),children:t.map((t,o)=>(0,Y.jsx)(Ze,{onClick:()=>n(o),className:V("embla__dot \n bg-zinc-300\n data-[selected=true]:bg-primary-100\n"),"data-selected":o===e},o))}),Qe=({title:e,children:t})=>(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)("p",{className:"\n pt-4 pb-2\n font-medium\n text-sm\n border-t border-neutral-300\n",children:e}),t]}),Xe=({school:e})=>{const{t:t}=s("neighborhoodSchools");return e.is_advanced_placement||e.is_charter||e.is_magnet?(0,Y.jsx)(Qe,{title:t("headers.category"),children:(0,Y.jsxs)("div",{className:"flex flex-wrap mb-4 gap-2",children:[(0,Y.jsx)(T,{isVisible:!!e.is_advanced_placement,children:t("categories.advancedPlacement")}),(0,Y.jsx)(T,{isVisible:!!e.is_charter,children:t("categories.charter")}),(0,Y.jsx)(T,{isVisible:!!e.is_magnet,children:t("categories.magnet")})]})}):null},et=({school:e})=>{const{t:t}=s("neighborhoodSchools");return(0,Y.jsxs)("div",{className:"\n px-6 pt-4 pb-6\n md:px-5 md:pt-6 md:pb-6\n",children:[(0,Y.jsx)(re,{school:e}),(0,Y.jsx)(Qe,{title:t("headers.type"),children:(0,Y.jsx)("div",{className:qe,children:e.school_attributes?.types?.map(t=>(0,Y.jsx)(T,{children:t},`${e.name}-${t}`))})}),(0,Y.jsx)(Qe,{title:t("headers.levels"),children:(0,Y.jsx)("div",{className:qe,children:e.school_attributes?.levels?.map(t=>(0,Y.jsx)(T,{variant:"light",children:t},`${e.name}-${t}`))})}),(0,Y.jsx)(Xe,{school:e}),(0,Y.jsx)(Qe,{title:t("headers.address"),children:(0,Y.jsx)("p",{className:"\n font-normal text-sm\n text-neutral-600 \n mb-4\n",children:b({street:e.address,city:e.city,state:e.province})})})]})},tt=({schools:e})=>{const{t:t}=s("neighborhoodSchools"),{isLoading:n}=G(),[o,r]=Ge(),{selectedIndex:i,scrollSnaps:a,onDotButtonClick:l}=(e=>{const[t,n]=(0,H.useState)(0),[o,r]=(0,H.useState)([]),s=(0,H.useCallback)(t=>{e&&e.scrollTo(t)},[e]),i=(0,H.useCallback)(e=>{r(e.scrollSnapList())},[]),a=(0,H.useCallback)(e=>{n(e.selectedScrollSnap())},[]);return(0,H.useEffect)(()=>{e&&(i(e),a(e),e.on("reInit",i).on("reInit",a).on("select",a))},[e,i,a]),{selectedIndex:t,scrollSnaps:o,onDotButtonClick:s}})(r);return(0,Y.jsx)(Y.Fragment,{children:(0,Y.jsxs)("section",{className:V("embla \n group/schools-list w-full\n\n data-[is-loading=true]:h-36\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n\n"),"data-is-loading":n,children:[!n&&(e&&0!==e.length?(0,Y.jsx)("div",{className:"embla__viewport",ref:o,children:(0,Y.jsx)("div",{className:V("embla__container \n [&>div:nth-child(odd)]:bg-neutral-50\n"),children:e.map(e=>(0,Y.jsx)("div",{className:"embla__slide",children:(0,Y.jsx)(et,{school:e})},e.name))})}):(0,Y.jsx)(B,{text:t("noData")})),(0,Y.jsx)(Je,{selectedIndex:i,scrollSnaps:a,onDotButtonClick:l})]})})},nt=({hideAttribution:e})=>{const{t:t}=s("neighborhoodSchools"),n=u(),{locale:o}=G();return(0,Y.jsxs)("div",{className:"\n mt-4\n md:flex items-center\n bg-base-white\n [&>a]:justify-end\n",children:[(0,Y.jsx)("p",{className:"flex-1 text-xs",children:t("dataDisclaimer")}),(0,Y.jsx)(D,{onClick:()=>{n.postEvent({eventType:U.ATTRIBUTION_CLICKED})},sdkName:"neighborhood-schools",locale:o,isHidden:e})]})},ot=()=>{const{t:e}=s("neighborhoodSchools"),t=u(),{sdkState:n}=N(),{filteredSchools:o,schoolLevels:r,schoolTypes:i,filterLevel:a,filterType:l,setFilterLevel:c,setFilterType:d}=G(),h=R(),f=i.map(e=>({value:e,label:e})),m=r.map(e=>({value:e,label:e}));return(0,H.useEffect)(()=>{void 0!==l&&(t.postEvent({eventType:U.FILTER_BY_TYPE,eventAttributes:[{label:"filter_by_type",data:l}]}),t.trackAnalyticsEvent({eventName:K.FILTER_BY_TYPE,eventAttributes:{filter_by_type:l}})),void 0!==a&&(t.postEvent({eventType:U.FILTER_BY_LEVEL,eventAttributes:[{label:"filter_by_level",data:a}]}),t.trackAnalyticsEvent({eventName:K.FILTER_BY_LEVEL,eventAttributes:{filter_by_level:a}}))},[a,l]),(0,Y.jsxs)("div",{className:"flex flex-col",children:[(0,Y.jsx)(z,{title:"string"==typeof n.options?.title||!1===n.options?.title?n.options.title:e("title")}),(0,Y.jsxs)("div",{className:"\n flex flex-wrap\n justify-around sm:justify-normal\n gap-2 md:gap-6\n mb-5 md:mb-6\n mt-3 md:mt-4\n",children:[(0,Y.jsx)(te,{options:f,icon:p,label:e("headers.type"),allLabel:e("headers.typesFilter"),activeFilter:l,handleFilterChange:e=>d(e)}),(0,Y.jsx)(te,{options:m,icon:g,label:e("headers.levels"),allLabel:e("headers.levelsFilter"),activeFilter:a,handleFilterChange:e=>c(e)})]}),h?(0,Y.jsx)(tt,{schools:o}):(0,Y.jsx)(le,{schools:o}),(0,Y.jsx)(nt,{hideAttribution:n.options?.hideAttribution})]})};l(a.neighborhoodWrap.key);var rt=()=>{const{sdkState:e}=N(),t=R(),o=e.globalOptions?.locale||"en",r=(0,H.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,Y.jsx)(F,{children:(0,Y.jsx)(M,{sdk:"Neighborhood Schools",schema:q,options:e.options,children:(0,Y.jsx)(d,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:h.NEIGHBORHOOD_SCHOOLS,children:(0,Y.jsx)(n,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:a.neighborhoodWrap,meta:{clientId:e.clientId,productName:h.NEIGHBORHOOD_SCHOOLS,productVersion:"1.24.48"},attributes:{location:r,host:e.location,host_url:document.referrer,locale:o,isMobile:t},flags:{isDebugMode:!1},children:(0,Y.jsx)(Z,{children:(0,Y.jsx)(ot,{})})})})})})};export{rt as default};
|
|
2
|
+
//# sourceMappingURL=NeighborhoodSchools-BKGM8wnj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NeighborhoodSchools-BKGM8wnj.js","names":["t","isObject"],"sources":["../../../../node_modules/@phosphor-icons/react/dist/defs/Check.es.js","../../../../node_modules/@phosphor-icons/react/dist/csr/Check.es.js","../../src/sdks/NeighborhoodSchools/types.ts","../../src/sdks/NeighborhoodSchools/hooks/useFilteredSchools/index.ts","../../src/sdks/NeighborhoodSchools/context.tsx","../../src/sdks/NeighborhoodSchools/schema.ts","../../src/sdks/NeighborhoodSchools/components/Filter/Content/styles.ts","../../src/sdks/NeighborhoodSchools/components/Filter/Content/index.tsx","../../src/sdks/NeighborhoodSchools/components/Filter/Item/styles.ts","../../src/sdks/NeighborhoodSchools/components/Filter/Item/index.tsx","../../src/sdks/NeighborhoodSchools/components/Filter/Trigger/styles.ts","../../src/sdks/NeighborhoodSchools/components/Filter/Trigger/index.tsx","../../src/sdks/NeighborhoodSchools/components/Filter/styles.ts","../../src/sdks/NeighborhoodSchools/components/Filter/index.tsx","../../src/sdks/NeighborhoodSchools/components/SchoolsTable/styles.ts","../../src/sdks/NeighborhoodSchools/components/SchoolHeader/SchoolName/styles.ts","../../src/sdks/NeighborhoodSchools/components/SchoolHeader/SchoolName/index.tsx","../../src/sdks/NeighborhoodSchools/components/SchoolHeader/styles.ts","../../src/sdks/NeighborhoodSchools/components/SchoolHeader/index.tsx","../../src/sdks/NeighborhoodSchools/components/SchoolsTable/Body/styles.ts","../../src/sdks/NeighborhoodSchools/components/SchoolsTable/Body/index.tsx","../../src/sdks/NeighborhoodSchools/components/SchoolsTable/index.tsx","../../../../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../../../../node_modules/embla-carousel/esm/embla-carousel.esm.js","../../../../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../../src/sdks/NeighborhoodSchools/components/SchoolsList/EmblaCarouselDotButton.tsx","../../src/sdks/NeighborhoodSchools/components/SchoolsList/styles.ts","../../src/sdks/NeighborhoodSchools/components/SchoolsList/Controls/index.tsx","../../src/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolSection/styles.ts","../../src/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolSection/index.tsx","../../src/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolCategories/styles.ts","../../src/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/SchoolCategories/index.tsx","../../src/sdks/NeighborhoodSchools/components/SchoolsList/SchoolItem/index.tsx","../../src/sdks/NeighborhoodSchools/components/SchoolsList/index.tsx","../../src/sdks/NeighborhoodSchools/components/Footer/styles.ts","../../src/sdks/NeighborhoodSchools/components/Footer/index.tsx","../../src/sdks/NeighborhoodSchools/components/Content/styles.ts","../../src/sdks/NeighborhoodSchools/components/Content/index.tsx","../../src/sdks/NeighborhoodSchools/index.tsx"],"sourcesContent":["import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M232,56V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228.24,76.24l-128,128a6,6,0,0,1-8.48,0l-56-56a6,6,0,0,1,8.48-8.48L96,191.51,219.76,67.76a6,6,0,0,1,8.48,8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M226.83,74.83l-128,128a4,4,0,0,1-5.66,0l-56-56a4,4,0,0,1,5.66-5.66L96,194.34,221.17,69.17a4,4,0,1,1,5.66,5.66Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Check.es.js\";\nconst o = e.forwardRef((c, r) => /* @__PURE__ */ e.createElement(t, { ref: r, ...c, weights: a }));\no.displayName = \"CheckIcon\";\nconst n = o;\nexport {\n n as Check,\n o as CheckIcon\n};\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n title?: boolean | string;\n hideAttribution?: boolean;\n showSchoolRatings?: boolean;\n};\n\nexport type NeighborhoodSchoolsProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport type tableHeaders = Partial<\n \"name\" | \"type\" | \"languages\" | \"levels\" | \"address\" | \"category\"\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-schools-Viewed\",\n ATTRIBUTION_CLICKED = \"LC-Attribution-Clicked\",\n SCHOOL_URL_CLICKED = \"neighborhood-schools-URL-Clicked\",\n FILTER_BY_TYPE = \"neighborhood-schools-Filter-By-Type\",\n FILTER_BY_LEVEL = \"neighborhood-schools-Filter-By-Level\",\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 SCHOOL_URL_CLICKED = \"neighborhood_schools_url_clicked\",\n FILTER_BY_TYPE = \"neighborhood_schools_filter_by_type\",\n FILTER_BY_LEVEL = \"neighborhood_schools_filter_by_level\",\n}\n","import { useMemo } from \"react\";\nimport type { School, Schools } from \"@local-logic/client\";\nimport {\n SchoolLevel,\n SchoolType,\n} from \"@local-logic/client/dist/features/schools\";\n\nimport { SchoolsParams, useSchools } from \"~/features/clientLibrary/useSchools\";\n\ntype UseFilteredSchoolsParams = Omit<SchoolsParams, \"include\"> & {\n country?: string;\n filterLevel?: SchoolLevel;\n filterType?: SchoolType;\n};\n\ntype UseFilteredSchoolsResult = {\n isLoading: boolean;\n schools?: School[];\n filteredSchools?: School[];\n schoolTypes: SchoolType[];\n schoolLevels: SchoolLevel[];\n hasCategories: boolean;\n};\n\nexport function useFilteredSchools({\n country,\n filterLevel,\n filterType,\n ...schoolsParams\n}: UseFilteredSchoolsParams): UseFilteredSchoolsResult {\n const { isLoading, data: schoolsData } = useSchools({\n ...schoolsParams,\n include: [\"schools\" as keyof Schools],\n radius: 2000,\n limit: 30,\n buffer: 250,\n });\n\n const { schools, filteredSchools, schoolTypes, schoolLevels, hasCategories } =\n useMemo(() => {\n const result: Omit<UseFilteredSchoolsResult, \"isLoading\"> = {\n schools: undefined,\n filteredSchools: undefined,\n schoolTypes: [],\n schoolLevels: [],\n hasCategories: false,\n };\n\n if (\n !schoolsData ||\n (!schoolsData.primary_schools && !schoolsData.high_schools)\n ) {\n return result;\n }\n\n const schoolNames = new Set<string>();\n const schoolTypesSet = new Set<SchoolType>();\n const schoolLevelsSet = new Set<SchoolLevel>();\n const mergedSchools = [\n ...(schoolsData.primary_schools || []),\n ...(schoolsData.high_schools || []),\n ];\n const dedupedSchools: School[] = [];\n const visibleSchools: School[] = [];\n\n for (const school of mergedSchools) {\n if (schoolNames.has(school.name)) {\n continue;\n }\n\n schoolNames.add(school.name);\n dedupedSchools.push(school);\n\n if (country === \"USA\") {\n result.hasCategories =\n result.hasCategories ||\n !!school.is_advanced_placement ||\n !!school.is_charter ||\n !!school.is_magnet;\n }\n\n for (const type of school.school_attributes?.types || []) {\n schoolTypesSet.add(type);\n }\n\n for (const level of school.school_attributes?.levels || []) {\n schoolLevelsSet.add(level);\n }\n\n const matchesLevel =\n filterLevel === undefined ||\n school.school_attributes?.levels?.includes(filterLevel);\n const matchesType =\n filterType === undefined ||\n school.school_attributes?.types?.includes(filterType);\n\n if (matchesLevel && matchesType) {\n visibleSchools.push(school);\n }\n }\n\n return {\n schools: dedupedSchools,\n filteredSchools: visibleSchools,\n schoolTypes: [...schoolTypesSet],\n schoolLevels: [...schoolLevelsSet],\n hasCategories: result.hasCategories,\n };\n }, [country, filterLevel, filterType, schoolsData]);\n\n return {\n isLoading,\n schools,\n filteredSchools,\n schoolTypes,\n schoolLevels,\n hasCategories,\n };\n}\n","import React, { useContext, useMemo, useEffect, useState } from \"react\";\n\nimport type { School } from \"@local-logic/client\";\nimport {\n SchoolLevel,\n SchoolType,\n} from \"@local-logic/client/dist/features/schools\";\nimport {\n type NeighborhoodSchoolsProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useFilteredSchools } from \"./hooks/useFilteredSchools\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useLocation } from \"~/hooks/useLocation\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n filteredSchools?: School[];\n schoolTypes: SchoolType[];\n schoolLevels: SchoolLevel[];\n filterType?: SchoolType;\n filterLevel?: SchoolLevel;\n setFilterType: (type?: SchoolType) => void;\n setFilterLevel: (level?: SchoolLevel) => void;\n hasCategories: boolean;\n locale: \"en\" | \"fr\";\n location: {\n country: string;\n state: string;\n };\n showSchoolRatings?: boolean;\n};\n\nconst NeighborhoodSchoolsContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodSchools = () => useContext(NeighborhoodSchoolsContext);\n\nconst NeighborhoodSchoolsProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodSchoolsProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\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 center = useMemo(() => {\n if (!sdkState.options?.geographyId) {\n return {\n lat: sdkState.options?.lat || 0,\n lng: sdkState.options?.lng || 0,\n };\n }\n\n return geography?.centroid || { lat: 0, lng: 0 };\n }, [\n sdkState.options?.geographyId,\n sdkState.options?.lat,\n sdkState.options?.lng,\n geography,\n ]);\n\n const { isLoading: isLocationLoading, data: location } = useLocation({\n lat: center.lat,\n lng: center.lng,\n });\n\n const [filterLevel, setFilterLevel] = useState<SchoolLevel | undefined>();\n const [filterType, setFilterType] = useState<SchoolType | undefined>();\n\n const {\n isLoading: isSchoolsLoading,\n filteredSchools,\n schoolTypes,\n schoolLevels,\n hasCategories,\n } = useFilteredSchools({\n geogId: geographyId,\n country: location.country,\n filterLevel,\n filterType,\n });\n\n const isLoading = useMemo(\n () => isSchoolsLoading || isLocationLoading,\n [isSchoolsLoading, isLocationLoading],\n );\n\n useEffect(() => {\n setFilterType((currentFilterType) =>\n currentFilterType === undefined || schoolTypes.includes(currentFilterType)\n ? currentFilterType\n : undefined,\n );\n }, [schoolTypes]);\n\n useEffect(() => {\n setFilterLevel((currentFilterLevel) =>\n currentFilterLevel === undefined ||\n schoolLevels.includes(currentFilterLevel)\n ? currentFilterLevel\n : undefined,\n );\n }, [schoolLevels]);\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n filteredSchools,\n schoolTypes,\n schoolLevels,\n filterType,\n filterLevel,\n setFilterType,\n setFilterLevel,\n hasCategories,\n locale,\n location,\n showSchoolRatings: sdkState.options?.showSchoolRatings,\n }),\n [\n isLoading,\n filteredSchools,\n schoolTypes,\n schoolLevels,\n filterType,\n filterLevel,\n locale,\n hasCategories,\n location,\n sdkState.options?.showSchoolRatings,\n ],\n );\n\n return (\n <NeighborhoodSchoolsContext.Provider value={contextValue}>\n {children}\n </NeighborhoodSchoolsContext.Provider>\n );\n};\n\nexport { useNeighborhoodSchools, NeighborhoodSchoolsProvider };\n","import { ObjectSchema, number, object, string, boolean, mixed } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n title: mixed<string | boolean>().optional(),\n hideAttribution: boolean().optional(),\n showSchoolRatings: boolean().optional(),\n}).noUnknown(true);\n","export const content = `\n overflow-hidden bg-base-white rounded-sm shadow-md\n z-10 min-w-32\n data-[size=medium]:text-sm\n data-[size=large]:text-base\n`;\n\nexport const viewport = `font-inherit p-0`;\n","import React, { ComponentProps } from \"react\";\nimport * as RadixSelect from \"@radix-ui/react-select\";\n\nimport * as styles from \"./styles\";\n\ntype ContentProps = {\n size?: \"medium\" | \"large\";\n} & ComponentProps<typeof RadixSelect.Content>;\n\nexport const Content = ({\n size = \"medium\",\n children,\n ...props\n}: ContentProps) => (\n <RadixSelect.Content className={styles.content} data-size={size} {...props}>\n <RadixSelect.Viewport className={styles.viewport}>\n {children}\n </RadixSelect.Viewport>\n </RadixSelect.Content>\n);\n","export const item = `\n font-sans font-inherit py-1 pr-8 pl-6 outline-none\n relative rounded-sm cursor-default text-zinc-800\n\n data-[highlighted]:[&:not([data-variant=\"light\"])]:bg-primary-100\n data-[highlighted]:[&:not([data-variant=\"light\"])]:text-base-white\n\n // Special color between now and design system\n data-[highlighted]:[&:not([data-variant=\"dark\"])]:bg-primary-10\n data-[highlighted]:[&:not([data-variant=\"dark\"])]:text-zinc-950\n `;\n\nexport const itemIndicator = `\n absolute left-0 bottom-0\n inline-flex justify-center items-center\n h-full w-6\n`;\n\nexport const check = `\n text-base-black\n h-3 w-3\n`;\n","import React, { ComponentProps } from \"react\";\nimport * as RadixSelect from \"@radix-ui/react-select\";\nimport { CheckIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\n\ntype ItemProps = {\n variant?: \"dark\" | \"light\";\n} & ComponentProps<typeof RadixSelect.Item>;\n\nexport const Item = ({ variant = \"dark\", children, ...props }: ItemProps) => (\n <RadixSelect.Item className={styles.item} data-variant={variant} {...props}>\n <RadixSelect.ItemText>{children}</RadixSelect.ItemText>\n <RadixSelect.ItemIndicator className={styles.itemIndicator}>\n <CheckIcon className={styles.check} />\n </RadixSelect.ItemIndicator>\n </RadixSelect.Item>\n);\n","export const trigger = `\n inline-flex items-center justify-between flex-1\n bg-base-white rounded-lg border\n py-1 pr-2 pl-3 min-w-32\n data-[size=medium]:text-sm data-[size=medium]:h-8\n data-[size=large]:text-base data-[size=large]:h-10\n`;\n\nexport const icon = `\n text-base-black\n h-5 w-5\n`;\n","import React, { ComponentProps } from \"react\";\nimport * as RadixSelect from \"@radix-ui/react-select\";\nimport { CaretDownIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\n\ntype TriggerProps = {\n size?: \"medium\" | \"large\";\n} & ComponentProps<typeof RadixSelect.Trigger>;\n\nexport const Trigger = ({\n size = \"medium\",\n children,\n ...props\n}: TriggerProps) => (\n <RadixSelect.Trigger className={styles.trigger} data-size={size} {...props}>\n {children}\n <RadixSelect.SelectIcon>\n <CaretDownIcon className={styles.icon} />\n </RadixSelect.SelectIcon>\n </RadixSelect.Trigger>\n);\n","export const label = `\n ml-2 mb-1\n text-sm font-normal\n`;\n\nexport const filter = `\n shadow\n rounded-lg\n -outline-offset-2\n`;\n\nexport const item = `\n capitalize text-sm font-normal\n py-2 pl-2\n pr-6 sm:pr-36\n`;\n\nexport const icon = `\n w-4 h-4 text-stone-500\n`;\n","import React from \"react\";\nimport * as RadixSelect from \"@radix-ui/react-select\";\n\nimport { type Icon, BackpackIcon } from \"@phosphor-icons/react\";\nimport { Content } from \"./Content\";\nimport { Item } from \"./Item\";\nimport { Trigger } from \"./Trigger\";\nimport * as styles from \"./styles\";\n\ntype FilterOption = {\n label: string;\n value: string;\n};\n\nexport const Filter = ({\n options,\n activeFilter,\n allLabel,\n label,\n icon: Icon = BackpackIcon,\n handleFilterChange,\n}: {\n options: FilterOption[];\n activeFilter?: string;\n allLabel: string;\n label: string;\n icon?: Icon;\n handleFilterChange: (option?: string) => void;\n}) => {\n const filterOptions = [{ label: allLabel, value: \"ALL\" }, ...options];\n const selectedValue = activeFilter ?? \"ALL\";\n\n return (\n <div>\n <label\n className={styles.label}\n data-testid={`filter-label-${label}`}\n htmlFor={`filter-select-${label}`}\n >\n {label}\n </label>\n {options && (\n <div className={styles.filter}>\n <RadixSelect.Root\n value={selectedValue}\n onValueChange={(value) =>\n handleFilterChange(value === \"ALL\" ? undefined : value)\n }\n >\n <Trigger size=\"large\" id={`filter-select-${label}`}>\n <Icon className={styles.icon} />\n <p className={styles.item}>\n {\n filterOptions.find((option) => option.value === selectedValue)\n ?.label\n }\n </p>\n </Trigger>\n <Content>\n {filterOptions.map((option) => (\n <Item key={option.value} value={option.value} variant=\"light\">\n <p className={styles.item}>{option.label}</p>\n </Item>\n ))}\n </Content>\n </RadixSelect.Root>\n </div>\n )}\n </div>\n );\n};\n","export const container = `\n overflow-y-scroll\n h-full\n max-h-[70vh]\n border border-neutral-300 rounded-lg\n\n data-[is-loading=true]:h-36\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n `;\n\nexport const table = `\n w-full h-full\n table-auto\n -outline-offset-2\n`;\n\nexport const header = `\n p-4\n text-left\n bg-neutral-50\n [&_h2]:text-md\n [&_h2]:font-medium\n`;\n\nexport const blankFilter = `m-5`;\n","export const schoolName = `\n text-neutral-600\n text-sm font-bold\n data-[has-link=\"true\"]:text-primary-100\n data-[has-link=\"true\"]:pointer\n data-[has-link=\"true\"]:hover:underline\n`;\n\nexport const container = `flex flex-wrap items-center gap-2`;\nexport const ratingTag = `cursor-pointer`;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport type { School } from \"@local-logic/client\";\nimport { Tag } from \"@local-logic/design-system\";\nimport * as styles from \"./styles\";\nimport { useTracking } from \"~/tracking\";\n\nimport {\n AnalyticsEvents,\n TrackingPipelineEvents,\n} from \"~/sdks/NeighborhoodSchools/types\";\nimport { useNeighborhoodSchools } from \"~/sdks/NeighborhoodSchools/context\";\n\nexport const SchoolName = ({ school }: { school: School }) => {\n const { t } = useTranslation([\"common\"]);\n const tracking = useTracking();\n const { showSchoolRatings } = useNeighborhoodSchools();\n\n const schoolURLClicked = () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SCHOOL_URL_CLICKED,\n eventAttributes: [\n {\n label: \"school_name_clicked\",\n data: school.name,\n },\n {\n label: \"school_url_clicked\",\n data: school.url,\n },\n ],\n });\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SCHOOL_URL_CLICKED,\n eventAttributes: {\n school_name: school.name,\n school_url: school.url,\n },\n });\n };\n\n return (\n <div className={styles.container}>\n {school.url ? (\n <a\n onClick={schoolURLClicked}\n className={styles.schoolName}\n href={school.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n data-has-link={school.url !== undefined}\n data-testid=\"school-name-with-link\"\n >\n {school.name}\n </a>\n ) : (\n <p data-testid=\"school-name\" className={styles.schoolName}>\n {school.name}\n </p>\n )}\n\n {showSchoolRatings && school.rating && (\n <div\n data-testid=\"school-rating\"\n className={styles.ratingTag}\n title={t(\"common:map.marker.schoolAttributes.rating\")}\n >\n <Tag>{school.rating}</Tag>\n </div>\n )}\n </div>\n );\n};\n","export const container = `pb-4`;\nexport const board = `text-xs font-normal text-neutral-600`;\n","import React from \"react\";\n\nimport type { School } from \"@local-logic/client\";\nimport { SchoolName } from \"./SchoolName\";\nimport * as styles from \"./styles\";\n\nexport const SchoolHeader = ({ school }: { school: School }) => (\n <div className={styles.container}>\n <SchoolName school={school} />\n\n {school.school_board_attributes?.name && (\n <p data-testid=\"school-board\" className={styles.board}>\n {school.school_board_attributes?.name}\n </p>\n )}\n </div>\n);\n","export const rows = `\n odd:bg-white even:bg-neutral-50\n [&_td]:px-4 [&_td]:py-3\n`;\n\nexport const schoolName = `\n text-neutral-600\n text-sm font-bold\n data-[has-link=\"true\"]:text-primary-100\n data-[has-link=\"true\"]:pointer\n data-[has-link=\"true\"]:hover:underline\n`;\n\nexport const smallText = `\n text-xs font-normal\n text-neutral-600\n`;\n\nexport const mediumText = `\n text-sm font-normal\n text-neutral-600\n`;\n\nexport const badges = `\n flex flex-wrap gap-2\n`;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport type { School } from \"@local-logic/client\";\nimport { Tag } from \"@local-logic/design-system\";\n\nimport { SchoolHeader } from \"../../SchoolHeader\";\nimport * as styles from \"./styles\";\nimport { useNeighborhoodSchools } from \"~/sdks/NeighborhoodSchools/context\";\nimport { formatAddress } from \"~/utils/primitives/stringUtils\";\n\nexport const Body = ({\n schools,\n headers,\n}: {\n schools?: School[];\n headers: string[];\n}) => {\n const { t } = useTranslation(\"neighborhoodSchools\");\n const { hasCategories } = useNeighborhoodSchools();\n\n return (\n <>\n {schools?.map((school) => (\n <tr key={`row-${school.name}`} className={styles.rows}>\n <td>\n <SchoolHeader school={school} />\n </td>\n <td>\n <div className={styles.badges}>\n {school.school_attributes?.types?.map((type) => (\n <Tag key={`${school.name}-${type}`}>{type}</Tag>\n ))}\n </div>\n </td>\n {headers.indexOf(\"languages\") !== -1 && (\n <td>\n <div className={styles.badges}>\n {school.school_attributes?.languages?.map((language) => (\n <Tag key={`${school.name}-${language}`} variant=\"light\">\n {language === \"fr\" ? t(\"french\") : t(\"english\")}\n </Tag>\n ))}\n </div>\n </td>\n )}\n <td>\n <div className={styles.badges}>\n {school.school_attributes?.levels?.map((level) => (\n <Tag key={`${school.name}-${level}`} variant=\"light\">\n {level}\n </Tag>\n ))}\n </div>\n </td>\n {hasCategories && (\n <td>\n <div className={styles.badges}>\n <Tag isVisible={!!school.is_advanced_placement}>\n {t(\"categories.advancedPlacement\")}\n </Tag>\n <Tag isVisible={!!school.is_charter}>\n {t(\"categories.charter\")}\n </Tag>\n <Tag isVisible={!!school.is_magnet}>\n {t(\"categories.magnet\")}\n </Tag>\n </div>\n </td>\n )}\n <td>\n <p className={styles.mediumText}>\n {formatAddress({\n street: school.address,\n city: school.city,\n state: school.province,\n })}\n </p>\n </td>\n </tr>\n ))}\n </>\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { School } from \"@local-logic/client\";\nimport * as styles from \"./styles\";\nimport { Body } from \"./Body\";\n\nimport { NoDataContent } from \"~/components/NoDataContent\";\nimport { useNeighborhoodSchools } from \"~/sdks/NeighborhoodSchools/context\";\nimport { tableHeaders } from \"~/sdks/NeighborhoodSchools/types\";\n\nconst baseHeaders: {\n [key: string]: tableHeaders[];\n} = {\n CAN: [\"name\", \"type\", \"languages\", \"levels\", \"address\"],\n USA: [\"name\", \"type\", \"levels\", \"address\"],\n};\n\nexport const SchoolsTable = ({ schools }: { schools?: School[] }) => {\n const { t } = useTranslation(\"neighborhoodSchools\");\n const { isLoading, hasCategories, location } = useNeighborhoodSchools();\n\n const headers = useMemo(() => {\n if (isLoading) {\n // defaulting to USA, to avoid an empty column\n return baseHeaders.USA;\n }\n\n if (location?.country === \"USA\" && hasCategories) {\n const usaHeaders = [...baseHeaders.USA];\n if (!usaHeaders.includes(\"category\")) {\n usaHeaders.splice(usaHeaders.length - 1, 0, \"category\");\n }\n return usaHeaders;\n }\n\n return baseHeaders[location.country];\n }, [isLoading, location, hasCategories]);\n\n return (\n <div className={styles.container} data-is-loading={isLoading}>\n {!isLoading && (\n <table className={styles.table}>\n <thead>\n <tr>\n {headers &&\n headers.map((header) => (\n <th key={header} className={styles.header}>\n <h2>{t(`headers.${header}`)}</h2>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {schools && schools?.length > 0 && (\n <Body schools={schools} headers={headers} />\n )}\n\n {schools?.length === 0 && (\n <div className={styles.blankFilter}>\n <NoDataContent text={t(\"noFilteredData\")} />\n </div>\n )}\n </tbody>\n </table>\n )}\n\n {!isLoading && !schools && <NoDataContent text={t(\"noData\")} />}\n </div>\n );\n};\n","function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\n\nimport type { EmblaCarouselType } from \"embla-carousel\";\n\ntype UseDotButtonType = {\n selectedIndex: number;\n scrollSnaps: number[];\n onDotButtonClick: (index: number) => void;\n};\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([]);\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return;\n emblaApi.scrollTo(index);\n },\n [emblaApi],\n );\n\n const onInit = useCallback((emblaApiInit: EmblaCarouselType) => {\n setScrollSnaps(emblaApiInit.scrollSnapList());\n }, []);\n\n const onSelect = useCallback((emblaApiSelect: EmblaCarouselType) => {\n setSelectedIndex(emblaApiSelect.selectedScrollSnap());\n }, []);\n\n useEffect(() => {\n if (!emblaApi) return;\n\n onInit(emblaApi);\n onSelect(emblaApi);\n emblaApi.on(\"reInit\", onInit).on(\"reInit\", onSelect).on(\"select\", onSelect);\n }, [emblaApi, onInit, onSelect]);\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick,\n };\n};\n\ntype PropType = ComponentPropsWithRef<\"button\">;\n\nexport const DotButton: React.FC<PropType> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button type=\"button\" {...restProps}>\n {children}\n </button>\n );\n};\n","export const section = `\n group/schools-list w-full\n\n data-[is-loading=true]:h-36\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n\n`;\n\nexport const container = `\n [&>div:nth-child(odd)]:bg-neutral-50\n`;\n\nexport const slide = `\n px-6 pt-4 pb-6\n md:px-5 md:pt-6 md:pb-6\n`;\n\nexport const title = `\n pb-4 \n`;\n\nexport const schoolName = `\n text-neutral-600\n text-sm font-bold\n data-[has-link=\"true\"]:text-primary-100\n data-[has-link=\"true\"]:pointer\n`;\n\nexport const board = `\n text-xs font-normal\n text-neutral-600\n`;\n\nexport const address = `\n font-normal text-sm\n text-neutral-600 \n mb-4\n`;\n\nexport const controls = `py-2`;\n\nexport const dot = `\n bg-zinc-300\n data-[selected=true]:bg-primary-100\n`;\n\nexport const badges = `\n flex flex-wrap\n mb-4 gap-2\n`;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { DotButton } from \"../EmblaCarouselDotButton\";\nimport * as styles from \"../styles\";\n\nexport const Controls = ({\n selectedIndex,\n scrollSnaps,\n onDotButtonClick,\n}: {\n selectedIndex: number;\n scrollSnaps: number[];\n onDotButtonClick: (index: number) => void;\n}) => {\n return (\n <div className={twMerge(`embla__dots ${styles.controls}`)}>\n {scrollSnaps.map((_, index) => (\n <DotButton\n key={index}\n onClick={() => onDotButtonClick(index)}\n className={twMerge(`embla__dot ${styles.dot}`)}\n data-selected={index === selectedIndex}\n />\n ))}\n </div>\n );\n};\n","export const header = `\n pt-4 pb-2\n font-medium\n text-sm\n border-t border-neutral-300\n`;\n","import React from \"react\";\nimport * as styles from \"./styles\";\n\nexport const SchoolSection = ({\n title,\n children,\n}: {\n title: string;\n children: React.ReactNode;\n}) => {\n return (\n <>\n <p className={styles.header}>{title}</p>\n {children}\n </>\n );\n};\n","export const categories = `flex flex-wrap mb-4 gap-2`;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { School } from \"@local-logic/client\";\nimport { Tag } from \"@local-logic/design-system\";\nimport { SchoolSection } from \"../SchoolSection\";\nimport * as styles from \"./styles\";\n\nexport const SchoolCategories = ({ school }: { school: School }) => {\n const { t } = useTranslation(\"neighborhoodSchools\");\n\n if (\n !school.is_advanced_placement &&\n !school.is_charter &&\n !school.is_magnet\n ) {\n return null;\n }\n\n return (\n <SchoolSection title={t(\"headers.category\")}>\n <div className={styles.categories}>\n <Tag isVisible={!!school.is_advanced_placement}>\n {t(\"categories.advancedPlacement\")}\n </Tag>\n <Tag isVisible={!!school.is_charter}>{t(\"categories.charter\")}</Tag>\n <Tag isVisible={!!school.is_magnet}>{t(\"categories.magnet\")}</Tag>\n </div>\n </SchoolSection>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { School } from \"@local-logic/client\";\nimport { Tag } from \"@local-logic/design-system\";\nimport { SchoolHeader } from \"../../SchoolHeader\";\nimport * as styles from \"../styles\";\n\nimport { SchoolSection } from \"./SchoolSection\";\nimport { SchoolCategories } from \"./SchoolCategories\";\n\nimport { formatAddress } from \"~/utils/primitives/stringUtils\";\n\nexport const SchoolItem = ({ school }: { school: School }) => {\n const { t } = useTranslation(\"neighborhoodSchools\");\n\n return (\n <div className={styles.slide}>\n <SchoolHeader school={school} />\n\n <SchoolSection title={t(\"headers.type\")}>\n <div className={styles.badges}>\n {school.school_attributes?.types?.map((type) => (\n <Tag key={`${school.name}-${type}`}>{type}</Tag>\n ))}\n </div>\n </SchoolSection>\n\n <SchoolSection title={t(\"headers.levels\")}>\n <div className={styles.badges}>\n {school.school_attributes?.levels?.map((level) => (\n <Tag variant=\"light\" key={`${school.name}-${level}`}>\n {level}\n </Tag>\n ))}\n </div>\n </SchoolSection>\n\n <SchoolCategories school={school} />\n\n <SchoolSection title={t(\"headers.address\")}>\n <p className={styles.address}>\n {formatAddress({\n street: school.address,\n city: school.city,\n state: school.province,\n })}\n </p>\n </SchoolSection>\n </div>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { School } from \"@local-logic/client\";\nimport useEmblaCarousel from \"embla-carousel-react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { useDotButton } from \"./EmblaCarouselDotButton\";\nimport { Controls } from \"./Controls\";\nimport { SchoolItem } from \"./SchoolItem\";\nimport * as styles from \"./styles\";\n\nimport { NoDataContent } from \"~/components/NoDataContent\";\nimport { useNeighborhoodSchools } from \"~/sdks/NeighborhoodSchools/context\";\nimport \"./embla.css\";\n\nexport const SchoolsList = ({ schools }: { schools?: School[] }) => {\n const { t } = useTranslation(\"neighborhoodSchools\");\n const { isLoading } = useNeighborhoodSchools();\n const [emblaRef, emblaApi] = useEmblaCarousel();\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi);\n\n return (\n <>\n <section\n className={twMerge(`embla ${styles.section}`)}\n data-is-loading={isLoading}\n >\n {!isLoading &&\n (!schools || schools.length === 0 ? (\n <NoDataContent text={t(\"noData\")} />\n ) : (\n <div className=\"embla__viewport\" ref={emblaRef}>\n <div className={twMerge(`embla__container ${styles.container}`)}>\n {schools.map((school) => (\n <div className=\"embla__slide\" key={school.name}>\n <SchoolItem school={school} />\n </div>\n ))}\n </div>\n </div>\n ))}\n\n <Controls\n selectedIndex={selectedIndex}\n scrollSnaps={scrollSnaps}\n onDotButtonClick={onDotButtonClick}\n />\n </section>\n </>\n );\n};\n","export const container = `\n mt-4\n md:flex items-center\n bg-base-white\n [&>a]:justify-end\n`;\n\nexport const dataDisclaimer = `flex-1 text-xs`;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport * as styles from \"./styles\";\nimport { useTracking } from \"~/tracking\";\n\nimport { Attribution } from \"~/components/Attribution\";\nimport { TrackingPipelineEvents } from \"~/sdks/NeighborhoodSchools/types\";\nimport { useNeighborhoodSchools } from \"~/sdks/NeighborhoodSchools/context\";\n\nexport const Footer = ({ hideAttribution }: { hideAttribution?: boolean }) => {\n const { t } = useTranslation(\"neighborhoodSchools\");\n const tracking = useTracking();\n const { locale } = useNeighborhoodSchools();\n\n const handleAttributionClicked = () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.ATTRIBUTION_CLICKED,\n });\n };\n\n return (\n <div className={styles.container}>\n <p className={styles.dataDisclaimer}>{t(\"dataDisclaimer\")}</p>\n <Attribution\n onClick={handleAttributionClicked}\n sdkName=\"neighborhood-schools\"\n locale={locale}\n isHidden={hideAttribution}\n />\n </div>\n );\n};\n","export const container = `flex flex-col`;\n\nexport const spinner = `\n flex justify-center items-center \n px-3 pt-4 pb-3 w-full h-full\n`;\n\nexport const noDataContainer = `\n bg-neutral-50 px-3 pt-4 pb-3 rounded-sm box-border\n`;\n\nexport const header = `\n flex justify-between items-center\n`;\n\nexport const filters = `\n flex flex-wrap\n justify-around sm:justify-normal\n gap-2 md:gap-6\n mb-5 md:mb-6\n mt-3 md:mt-4\n`;\n","import React, { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n SchoolLevel,\n SchoolType,\n} from \"@local-logic/client/dist/features/schools\";\nimport { BackpackIcon, GraduationCapIcon } from \"@phosphor-icons/react\";\n\nimport { Filter } from \"../Filter\";\nimport { SchoolsTable } from \"../SchoolsTable\";\n\nimport { SchoolsList } from \"../SchoolsList\";\nimport { Footer } from \"../Footer\";\nimport * as styles from \"./styles\";\nimport { TitleHeader } from \"~/components/TitleHeader\";\nimport { useNeighborhoodSchools } from \"~/sdks/NeighborhoodSchools/context\";\nimport {\n AnalyticsEvents,\n TrackingPipelineEvents,\n NeighborhoodSchoolsProps,\n} from \"~/sdks/NeighborhoodSchools/types\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { useTracking } from \"~/tracking\";\n\nexport const Content = () => {\n const { t } = useTranslation(\"neighborhoodSchools\");\n const tracking = useTracking();\n const { sdkState } = useStateManagerContext<NeighborhoodSchoolsProps>();\n const {\n filteredSchools,\n schoolLevels,\n schoolTypes,\n filterLevel,\n filterType,\n setFilterLevel,\n setFilterType,\n } = useNeighborhoodSchools();\n const isMobile = useIsMobile();\n\n const schoolTypeOptions = schoolTypes.map((type) => ({\n value: type,\n label: type,\n }));\n\n const schoolLevelOptions = schoolLevels.map((level) => ({\n value: level,\n label: level,\n }));\n\n useEffect(() => {\n if (filterType !== undefined) {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.FILTER_BY_TYPE,\n eventAttributes: [\n {\n label: \"filter_by_type\",\n data: filterType,\n },\n ],\n });\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.FILTER_BY_TYPE,\n eventAttributes: {\n filter_by_type: filterType,\n },\n });\n }\n\n if (filterLevel !== undefined) {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.FILTER_BY_LEVEL,\n eventAttributes: [\n {\n label: \"filter_by_level\",\n data: filterLevel,\n },\n ],\n });\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.FILTER_BY_LEVEL,\n eventAttributes: {\n filter_by_level: filterLevel,\n },\n });\n }\n }, [filterLevel, filterType]);\n\n return (\n <div className={styles.container}>\n <TitleHeader\n title={\n typeof sdkState.options?.title === \"string\" ||\n sdkState.options?.title === false\n ? sdkState.options.title\n : t(\"title\")\n }\n />\n <div className={styles.filters}>\n <Filter\n options={schoolTypeOptions}\n icon={BackpackIcon}\n label={t(\"headers.type\")}\n allLabel={t(\"headers.typesFilter\")}\n activeFilter={filterType}\n handleFilterChange={(type) =>\n setFilterType(type as SchoolType | undefined)\n }\n />\n <Filter\n options={schoolLevelOptions}\n icon={GraduationCapIcon}\n label={t(\"headers.levels\")}\n allLabel={t(\"headers.levelsFilter\")}\n activeFilter={filterLevel}\n handleFilterChange={(level) =>\n setFilterLevel(level as SchoolLevel | undefined)\n }\n />\n </div>\n {isMobile ? (\n <SchoolsList schools={filteredSchools} />\n ) : (\n <SchoolsTable schools={filteredSchools} />\n )}\n\n <Footer hideAttribution={sdkState.options?.hideAttribution} />\n </div>\n );\n};\n","import React, { useMemo } from \"react\";\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\nimport type { NeighborhoodSchoolsProps } from \"./types\";\nimport { NeighborhoodSchoolsProvider } from \"./context\";\nimport { schema } from \"./schema\";\nimport { Content } from \"./components/Content\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodSchools = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodSchoolsProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Schools\"\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_SCHOOLS}\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_SCHOOLS,\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 <NeighborhoodSchoolsProvider>\n <Content />\n </NeighborhoodSchoolsProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodSchools;\n"],"x_google_ignoreList":[0,1,22,23,24],"mappings":"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"}
|