@local-logic/sdks-app 1.24.55 → 1.24.57

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.
Files changed (340) hide show
  1. package/dist/assets/{Attribution-kw125yRW.js → Attribution-BOTbUbV6.js} +2 -2
  2. package/dist/assets/{Attribution-kw125yRW.js.map → Attribution-BOTbUbV6.js.map} +1 -1
  3. package/dist/assets/{Attribution-legacy-Chi4675H.js → Attribution-legacy-BnsWo3_b.js} +2 -2
  4. package/dist/assets/{Attribution-legacy-Chi4675H.js.map → Attribution-legacy-BnsWo3_b.js.map} +1 -1
  5. package/dist/assets/{Cluster-BHQcO6iC-CebPxFZj.js → Cluster-BHQcO6iC-cJd-7JrI.js} +2 -2
  6. package/dist/assets/{Cluster-BHQcO6iC-CebPxFZj.js.map → Cluster-BHQcO6iC-cJd-7JrI.js.map} +1 -1
  7. package/dist/assets/{Cluster-BHQcO6iC-legacy-Du0M2J6Q.js → Cluster-BHQcO6iC-legacy-B40gvWyN.js} +2 -2
  8. package/dist/assets/{Cluster-BHQcO6iC-legacy-Du0M2J6Q.js.map → Cluster-BHQcO6iC-legacy-B40gvWyN.js.map} +1 -1
  9. package/dist/assets/{Google-BFAJ84CT-BYUDq3Rn.js → Google-BFAJ84CT-VGtAtn96.js} +2 -2
  10. package/dist/assets/{Google-BFAJ84CT-BYUDq3Rn.js.map → Google-BFAJ84CT-VGtAtn96.js.map} +1 -1
  11. package/dist/assets/{Google-BFAJ84CT-legacy-C-p2r3Dr.js → Google-BFAJ84CT-legacy-DL0LtChw.js} +2 -2
  12. package/dist/assets/{Google-BFAJ84CT-legacy-C-p2r3Dr.js.map → Google-BFAJ84CT-legacy-DL0LtChw.js.map} +1 -1
  13. package/dist/assets/{Google-BS41ufih-D9AZqNEh.js → Google-BS41ufih-BMoGkZPd.js} +2 -2
  14. package/dist/assets/{Google-BS41ufih-D9AZqNEh.js.map → Google-BS41ufih-BMoGkZPd.js.map} +1 -1
  15. package/dist/assets/{Google-BS41ufih-legacy-BVmSzd63.js → Google-BS41ufih-legacy-DCato3ot.js} +2 -2
  16. package/dist/assets/{Google-BS41ufih-legacy-BVmSzd63.js.map → Google-BS41ufih-legacy-DCato3ot.js.map} +1 -1
  17. package/dist/assets/Google-BXqDFxzx-CUVrFk6n.js +2 -0
  18. package/dist/assets/Google-BXqDFxzx-CUVrFk6n.js.map +1 -0
  19. package/dist/assets/Google-BXqDFxzx-legacy-DiOyHfjt.js +2 -0
  20. package/dist/assets/Google-BXqDFxzx-legacy-DiOyHfjt.js.map +1 -0
  21. package/dist/assets/Google-CH7a2yx--BkJitjCf.js +2 -0
  22. package/dist/assets/{Google-CH7a2yx--Cn8Y8O80.js.map → Google-CH7a2yx--BkJitjCf.js.map} +1 -1
  23. package/dist/assets/Google-CH7a2yx--legacy-DsVpqcxI.js +2 -0
  24. package/dist/assets/{Google-CH7a2yx--legacy-DM1UNBoi.js.map → Google-CH7a2yx--legacy-DsVpqcxI.js.map} +1 -1
  25. package/dist/assets/{Google-DbOLrYJn-legacy-BRnfvM8x.js → Google-DbOLrYJn-legacy-Z1yVkgHW.js} +2 -2
  26. package/dist/assets/{Google-DbOLrYJn-legacy-BRnfvM8x.js.map → Google-DbOLrYJn-legacy-Z1yVkgHW.js.map} +1 -1
  27. package/dist/assets/{Google-DbOLrYJn-B0DksMt_.js → Google-DbOLrYJn-pbJx5yPo.js} +2 -2
  28. package/dist/assets/{Google-DbOLrYJn-B0DksMt_.js.map → Google-DbOLrYJn-pbJx5yPo.js.map} +1 -1
  29. package/dist/assets/{GridGraph-_o1JnUxh.js → GridGraph-BaPU6Jcw.js} +2 -2
  30. package/dist/assets/{GridGraph-_o1JnUxh.js.map → GridGraph-BaPU6Jcw.js.map} +1 -1
  31. package/dist/assets/{GridGraph-legacy-Cbh3J_fT.js → GridGraph-legacy-DdRjhzPL.js} +2 -2
  32. package/dist/assets/{GridGraph-legacy-Cbh3J_fT.js.map → GridGraph-legacy-DdRjhzPL.js.map} +1 -1
  33. package/dist/assets/{HouseLine.es-Bvs4CLDM.js → HouseLine.es-CQ6gPUgj.js} +2 -2
  34. package/dist/assets/{HouseLine.es-Bvs4CLDM.js.map → HouseLine.es-CQ6gPUgj.js.map} +1 -1
  35. package/dist/assets/{HouseLine.es-legacy-Bgym8-AE.js → HouseLine.es-legacy-B2U5VLTm.js} +2 -2
  36. package/dist/assets/{HouseLine.es-legacy-Bgym8-AE.js.map → HouseLine.es-legacy-B2U5VLTm.js.map} +1 -1
  37. package/dist/assets/{IconBase.es-CokBORYs.js → IconBase.es-Dzpvkx2C.js} +1 -1
  38. package/dist/assets/{IconBase.es-CokBORYs.js.map → IconBase.es-Dzpvkx2C.js.map} +1 -1
  39. package/dist/assets/{IconBase.es-legacy-D9dtjGQP.js → IconBase.es-legacy-PI0KZNJh.js} +1 -1
  40. package/dist/assets/{IconBase.es-legacy-D9dtjGQP.js.map → IconBase.es-legacy-PI0KZNJh.js.map} +1 -1
  41. package/dist/assets/{LeadCapture-OHuG-_-X.js → LeadCapture-CxWL_R3z.js} +2 -2
  42. package/dist/assets/{LeadCapture-OHuG-_-X.js.map → LeadCapture-CxWL_R3z.js.map} +1 -1
  43. package/dist/assets/{LeadCapture-legacy-D2LNKZFz.js → LeadCapture-legacy-D8AtHKg6.js} +2 -2
  44. package/dist/assets/{LeadCapture-legacy-D2LNKZFz.js.map → LeadCapture-legacy-D8AtHKg6.js.map} +1 -1
  45. package/dist/assets/{LocalContent-Th91ikte.js → LocalContent-D-mjOirc.js} +2 -2
  46. package/dist/assets/{LocalContent-Th91ikte.js.map → LocalContent-D-mjOirc.js.map} +1 -1
  47. package/dist/assets/LocalContent-legacy-Cdc3bSqg.js +2 -0
  48. package/dist/assets/{LocalContent-legacy-Dn8xkYe1.js.map → LocalContent-legacy-Cdc3bSqg.js.map} +1 -1
  49. package/dist/assets/{LocalDemographics-BoFc5tV3.js → LocalDemographics-B7wtZEYf.js} +2 -2
  50. package/dist/assets/{LocalDemographics-BoFc5tV3.js.map → LocalDemographics-B7wtZEYf.js.map} +1 -1
  51. package/dist/assets/{LocalDemographics-legacy-CWB9XMw_.js → LocalDemographics-legacy-Bvhiizm_.js} +2 -2
  52. package/dist/assets/{LocalDemographics-legacy-CWB9XMw_.js.map → LocalDemographics-legacy-Bvhiizm_.js.map} +1 -1
  53. package/dist/assets/Mapbox-C3JAafJ_-C2kqHx3p.js +2 -0
  54. package/dist/assets/Mapbox-C3JAafJ_-C2kqHx3p.js.map +1 -0
  55. package/dist/assets/Mapbox-C3JAafJ_-legacy-CPUIb7pa.js +2 -0
  56. package/dist/assets/Mapbox-C3JAafJ_-legacy-CPUIb7pa.js.map +1 -0
  57. package/dist/assets/{Mapbox-CpLnA607-C8WLdGzJ.js → Mapbox-CpLnA607-BpMR2b1P.js} +2 -2
  58. package/dist/assets/{Mapbox-CpLnA607-C8WLdGzJ.js.map → Mapbox-CpLnA607-BpMR2b1P.js.map} +1 -1
  59. package/dist/assets/{Mapbox-CpLnA607-legacy-CGRbZKvE.js → Mapbox-CpLnA607-legacy-FYXkK7xG.js} +2 -2
  60. package/dist/assets/{Mapbox-CpLnA607-legacy-CGRbZKvE.js.map → Mapbox-CpLnA607-legacy-FYXkK7xG.js.map} +1 -1
  61. package/dist/assets/Mapbox-DtZmt1D_-jMsntWC-.js +2 -0
  62. package/dist/assets/{Mapbox-DtZmt1D_-Bl4KegHk.js.map → Mapbox-DtZmt1D_-jMsntWC-.js.map} +1 -1
  63. package/dist/assets/Mapbox-DtZmt1D_-legacy-5c9e-5Lx.js +2 -0
  64. package/dist/assets/{Mapbox-DtZmt1D_-legacy-CL4jFUY4.js.map → Mapbox-DtZmt1D_-legacy-5c9e-5Lx.js.map} +1 -1
  65. package/dist/assets/{Mapbox-spw-ix-j-ByvfOXcz.js → Mapbox-spw-ix-j-DI3aq-7z.js} +2 -2
  66. package/dist/assets/{Mapbox-spw-ix-j-ByvfOXcz.js.map → Mapbox-spw-ix-j-DI3aq-7z.js.map} +1 -1
  67. package/dist/assets/{Mapbox-spw-ix-j-legacy-BdKN6y0O.js → Mapbox-spw-ix-j-legacy-dLQsNuR5.js} +2 -2
  68. package/dist/assets/{Mapbox-spw-ix-j-legacy-BdKN6y0O.js.map → Mapbox-spw-ix-j-legacy-dLQsNuR5.js.map} +1 -1
  69. package/dist/assets/{Mapbox-u11C3LWs-ou3xo84X.js → Mapbox-u11C3LWs-DiIixCCP.js} +2 -2
  70. package/dist/assets/{Mapbox-u11C3LWs-ou3xo84X.js.map → Mapbox-u11C3LWs-DiIixCCP.js.map} +1 -1
  71. package/dist/assets/{Mapbox-u11C3LWs-legacy-ChNDofS-.js → Mapbox-u11C3LWs-legacy-fFO2kSCJ.js} +2 -2
  72. package/dist/assets/{Mapbox-u11C3LWs-legacy-ChNDofS-.js.map → Mapbox-u11C3LWs-legacy-fFO2kSCJ.js.map} +1 -1
  73. package/dist/assets/Maptiler-DJScKW8p-Dek21atY.js +2 -0
  74. package/dist/assets/{Maptiler-DJScKW8p-D6EXhR9t.js.map → Maptiler-DJScKW8p-Dek21atY.js.map} +1 -1
  75. package/dist/assets/Maptiler-DJScKW8p-legacy-4PmhuFjm.js +2 -0
  76. package/dist/assets/{Maptiler-DJScKW8p-legacy-Bwixwxpw.js.map → Maptiler-DJScKW8p-legacy-4PmhuFjm.js.map} +1 -1
  77. package/dist/assets/{Maptiler-DdeFS4iM-CGZ09RjZ.js → Maptiler-DdeFS4iM-DX1A_pcS.js} +2 -2
  78. package/dist/assets/{Maptiler-DdeFS4iM-CGZ09RjZ.js.map → Maptiler-DdeFS4iM-DX1A_pcS.js.map} +1 -1
  79. package/dist/assets/{Maptiler-DdeFS4iM-legacy-QtRpj8xP.js → Maptiler-DdeFS4iM-legacy-bkCc7JZ5.js} +2 -2
  80. package/dist/assets/{Maptiler-DdeFS4iM-legacy-QtRpj8xP.js.map → Maptiler-DdeFS4iM-legacy-bkCc7JZ5.js.map} +1 -1
  81. package/dist/assets/Maptiler-DjXf_65v-DqYynnIU.js +2 -0
  82. package/dist/assets/Maptiler-DjXf_65v-DqYynnIU.js.map +1 -0
  83. package/dist/assets/Maptiler-DjXf_65v-legacy-DS5XmRij.js +2 -0
  84. package/dist/assets/Maptiler-DjXf_65v-legacy-DS5XmRij.js.map +1 -0
  85. package/dist/assets/{Maptiler-DsqJbPDD-CAQM6_gR.js → Maptiler-DsqJbPDD-Drjwtp_f.js} +2 -2
  86. package/dist/assets/{Maptiler-DsqJbPDD-CAQM6_gR.js.map → Maptiler-DsqJbPDD-Drjwtp_f.js.map} +1 -1
  87. package/dist/assets/{Maptiler-DsqJbPDD-legacy-IZOEEMY7.js → Maptiler-DsqJbPDD-legacy-Ca9kVjmM.js} +2 -2
  88. package/dist/assets/{Maptiler-DsqJbPDD-legacy-IZOEEMY7.js.map → Maptiler-DsqJbPDD-legacy-Ca9kVjmM.js.map} +1 -1
  89. package/dist/assets/{Maptiler-YjlcPccn-D1uiJCxO.js → Maptiler-YjlcPccn-BudEXQZX.js} +2 -2
  90. package/dist/assets/{Maptiler-YjlcPccn-D1uiJCxO.js.map → Maptiler-YjlcPccn-BudEXQZX.js.map} +1 -1
  91. package/dist/assets/{Maptiler-YjlcPccn-legacy-DrnTx-fy.js → Maptiler-YjlcPccn-legacy-B4Lnj3rh.js} +2 -2
  92. package/dist/assets/{Maptiler-YjlcPccn-legacy-DrnTx-fy.js.map → Maptiler-YjlcPccn-legacy-B4Lnj3rh.js.map} +1 -1
  93. package/dist/assets/{MarkerIcon-Bc3X9WQk-CAeRswLc.js → MarkerIcon-Bc3X9WQk-B-Tu48U7.js} +2 -2
  94. package/dist/assets/{MarkerIcon-Bc3X9WQk-CAeRswLc.js.map → MarkerIcon-Bc3X9WQk-B-Tu48U7.js.map} +1 -1
  95. package/dist/assets/{MarkerIcon-Bc3X9WQk-legacy-hujJwn_h.js → MarkerIcon-Bc3X9WQk-legacy-BL9mH4Fp.js} +2 -2
  96. package/dist/assets/{MarkerIcon-Bc3X9WQk-legacy-hujJwn_h.js.map → MarkerIcon-Bc3X9WQk-legacy-BL9mH4Fp.js.map} +1 -1
  97. package/dist/assets/{NeighborhoodCard-BHMcB4dQ.js → NeighborhoodCard-BowoJ4dG.js} +2 -2
  98. package/dist/assets/{NeighborhoodCard-BHMcB4dQ.js.map → NeighborhoodCard-BowoJ4dG.js.map} +1 -1
  99. package/dist/assets/{NeighborhoodCard-legacy-BNd6CJpc.js → NeighborhoodCard-legacy-C987Bfru.js} +2 -2
  100. package/dist/assets/{NeighborhoodCard-legacy-BNd6CJpc.js.map → NeighborhoodCard-legacy-C987Bfru.js.map} +1 -1
  101. package/dist/assets/{NeighborhoodCharacteristics-x7BCbeSG.js → NeighborhoodCharacteristics-D_NR1YUn.js} +2 -2
  102. package/dist/assets/{NeighborhoodCharacteristics-x7BCbeSG.js.map → NeighborhoodCharacteristics-D_NR1YUn.js.map} +1 -1
  103. package/dist/assets/{NeighborhoodCharacteristics-legacy-DV4yD_wP.js → NeighborhoodCharacteristics-legacy-BeDgfsZ5.js} +2 -2
  104. package/dist/assets/{NeighborhoodCharacteristics-legacy-DV4yD_wP.js.map → NeighborhoodCharacteristics-legacy-BeDgfsZ5.js.map} +1 -1
  105. package/dist/assets/{NeighborhoodDemographics-B3rv4k_B.js → NeighborhoodDemographics-DvSOnjn4.js} +2 -2
  106. package/dist/assets/{NeighborhoodDemographics-B3rv4k_B.js.map → NeighborhoodDemographics-DvSOnjn4.js.map} +1 -1
  107. package/dist/assets/{NeighborhoodDemographics-legacy-itJX5Mgc.js → NeighborhoodDemographics-legacy-BjkcoJVi.js} +2 -2
  108. package/dist/assets/{NeighborhoodDemographics-legacy-itJX5Mgc.js.map → NeighborhoodDemographics-legacy-BjkcoJVi.js.map} +1 -1
  109. package/dist/assets/{NeighborhoodFeatured-CW84mNx9.js → NeighborhoodFeatured-DsjFOHMv.js} +2 -2
  110. package/dist/assets/{NeighborhoodFeatured-CW84mNx9.js.map → NeighborhoodFeatured-DsjFOHMv.js.map} +1 -1
  111. package/dist/assets/{NeighborhoodFeatured-legacy-DhNugi04.js → NeighborhoodFeatured-legacy-F3RdAelk.js} +2 -2
  112. package/dist/assets/{NeighborhoodFeatured-legacy-DhNugi04.js.map → NeighborhoodFeatured-legacy-F3RdAelk.js.map} +1 -1
  113. package/dist/assets/{NeighborhoodHero-DADIHl6H.js → NeighborhoodHero-D4aRwf3B.js} +2 -2
  114. package/dist/assets/{NeighborhoodHero-DADIHl6H.js.map → NeighborhoodHero-D4aRwf3B.js.map} +1 -1
  115. package/dist/assets/{NeighborhoodHero-legacy-CkHlzf9Z.js → NeighborhoodHero-legacy-BpoqM_Oa.js} +2 -2
  116. package/dist/assets/{NeighborhoodHero-legacy-CkHlzf9Z.js.map → NeighborhoodHero-legacy-BpoqM_Oa.js.map} +1 -1
  117. package/dist/assets/{NeighborhoodHighlights-legacy-C_jXd4U5.js → NeighborhoodHighlights-legacy-Jwm-KEn2.js} +2 -2
  118. package/dist/assets/{NeighborhoodHighlights-legacy-C_jXd4U5.js.map → NeighborhoodHighlights-legacy-Jwm-KEn2.js.map} +1 -1
  119. package/dist/assets/{NeighborhoodHighlights-D19WC2mx.js → NeighborhoodHighlights-vQUEwmeZ.js} +2 -2
  120. package/dist/assets/{NeighborhoodHighlights-D19WC2mx.js.map → NeighborhoodHighlights-vQUEwmeZ.js.map} +1 -1
  121. package/dist/assets/{NeighborhoodMap-BsNsYKro.js → NeighborhoodMap-CBK-3l8v.js} +2 -2
  122. package/dist/assets/{NeighborhoodMap-BsNsYKro.js.map → NeighborhoodMap-CBK-3l8v.js.map} +1 -1
  123. package/dist/assets/{NeighborhoodMap-legacy-DYqn9nZ7.js → NeighborhoodMap-legacy-CT0DxTIn.js} +2 -2
  124. package/dist/assets/{NeighborhoodMap-legacy-DYqn9nZ7.js.map → NeighborhoodMap-legacy-CT0DxTIn.js.map} +1 -1
  125. package/dist/assets/{NeighborhoodMarketTrends-BN9hbHm9.js → NeighborhoodMarketTrends-DHjJ1tqv.js} +3 -3
  126. package/dist/assets/{NeighborhoodMarketTrends-BN9hbHm9.js.map → NeighborhoodMarketTrends-DHjJ1tqv.js.map} +1 -1
  127. package/dist/assets/{NeighborhoodMarketTrends-legacy-BJkauwYD.js → NeighborhoodMarketTrends-legacy-CFjoy0Wb.js} +2 -2
  128. package/dist/assets/{NeighborhoodMarketTrends-legacy-BJkauwYD.js.map → NeighborhoodMarketTrends-legacy-CFjoy0Wb.js.map} +1 -1
  129. package/dist/assets/{NeighborhoodMatch-CoRo5HAb.js → NeighborhoodMatch-BRjNjbp3.js} +2 -2
  130. package/dist/assets/{NeighborhoodMatch-CoRo5HAb.js.map → NeighborhoodMatch-BRjNjbp3.js.map} +1 -1
  131. package/dist/assets/{NeighborhoodMatch-legacy-Cdcs7Jtp.js → NeighborhoodMatch-legacy-DgFc0xk6.js} +2 -2
  132. package/dist/assets/{NeighborhoodMatch-legacy-Cdcs7Jtp.js.map → NeighborhoodMatch-legacy-DgFc0xk6.js.map} +1 -1
  133. package/dist/assets/{NeighborhoodPropertyValueDrivers-B_lDfBFc.js → NeighborhoodPropertyValueDrivers-CdJ05150.js} +2 -2
  134. package/dist/assets/{NeighborhoodPropertyValueDrivers-B_lDfBFc.js.map → NeighborhoodPropertyValueDrivers-CdJ05150.js.map} +1 -1
  135. package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-TJNQuhau.js → NeighborhoodPropertyValueDrivers-legacy-BLZ8XMAG.js} +2 -2
  136. package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-TJNQuhau.js.map → NeighborhoodPropertyValueDrivers-legacy-BLZ8XMAG.js.map} +1 -1
  137. package/dist/assets/{NeighborhoodSchools-COVdlDmI.js → NeighborhoodSchools-Ndot67p9.js} +2 -2
  138. package/dist/assets/{NeighborhoodSchools-COVdlDmI.js.map → NeighborhoodSchools-Ndot67p9.js.map} +1 -1
  139. package/dist/assets/{NeighborhoodSchools-legacy-CC_o4gDE.js → NeighborhoodSchools-legacy-Chh5SMNx.js} +2 -2
  140. package/dist/assets/{NeighborhoodSchools-legacy-CC_o4gDE.js.map → NeighborhoodSchools-legacy-Chh5SMNx.js.map} +1 -1
  141. package/dist/assets/{NeighborhoodShowcase-BEYsGLqf.js → NeighborhoodShowcase-CAUm0P5M.js} +2 -2
  142. package/dist/assets/{NeighborhoodShowcase-BEYsGLqf.js.map → NeighborhoodShowcase-CAUm0P5M.js.map} +1 -1
  143. package/dist/assets/{NeighborhoodShowcase-legacy-DjbPOhlY.js → NeighborhoodShowcase-legacy-BRlXHlqi.js} +2 -2
  144. package/dist/assets/{NeighborhoodShowcase-legacy-DjbPOhlY.js.map → NeighborhoodShowcase-legacy-BRlXHlqi.js.map} +1 -1
  145. package/dist/assets/{NoDataContent-Ct6cseKS.js → NoDataContent-C9ChXKAi.js} +2 -2
  146. package/dist/assets/{NoDataContent-Ct6cseKS.js.map → NoDataContent-C9ChXKAi.js.map} +1 -1
  147. package/dist/assets/{NoDataContent-legacy-C6bZD_ML.js → NoDataContent-legacy-CYUS1j-5.js} +2 -2
  148. package/dist/assets/{NoDataContent-legacy-C6bZD_ML.js.map → NoDataContent-legacy-CYUS1j-5.js.map} +1 -1
  149. package/dist/assets/{ResizeWrapper-CxzTXRsZ.js → ResizeWrapper-BeFwcKDz.js} +2 -2
  150. package/dist/assets/{ResizeWrapper-CxzTXRsZ.js.map → ResizeWrapper-BeFwcKDz.js.map} +1 -1
  151. package/dist/assets/{ResizeWrapper-legacy-Cnj-xOLf.js → ResizeWrapper-legacy-DEHV95wF.js} +2 -2
  152. package/dist/assets/{ResizeWrapper-legacy-Cnj-xOLf.js.map → ResizeWrapper-legacy-DEHV95wF.js.map} +1 -1
  153. package/dist/assets/{ScoreCardList-C2UIFw9G.js → ScoreCardList-DQBM2ohm.js} +2 -2
  154. package/dist/assets/{ScoreCardList-C2UIFw9G.js.map → ScoreCardList-DQBM2ohm.js.map} +1 -1
  155. package/dist/assets/{ScoreCardList-legacy-D5rhovz4.js → ScoreCardList-legacy-kIYSqUkJ.js} +2 -2
  156. package/dist/assets/{ScoreCardList-legacy-D5rhovz4.js.map → ScoreCardList-legacy-kIYSqUkJ.js.map} +1 -1
  157. package/dist/assets/{ScoreIcon-legacy-iLznJMpz.js → ScoreIcon-legacy-DTiGYooC.js} +2 -2
  158. package/dist/assets/{ScoreIcon-legacy-iLznJMpz.js.map → ScoreIcon-legacy-DTiGYooC.js.map} +1 -1
  159. package/dist/assets/{ScoreIcon-Bpp4EF8q.js → ScoreIcon-wicFwO1x.js} +2 -2
  160. package/dist/assets/{ScoreIcon-Bpp4EF8q.js.map → ScoreIcon-wicFwO1x.js.map} +1 -1
  161. package/dist/assets/{Testing-BNJwzbRK-CNg1O9DZ.js → Testing-BNJwzbRK-D5rbJDTc.js} +2 -2
  162. package/dist/assets/{Testing-BNJwzbRK-CNg1O9DZ.js.map → Testing-BNJwzbRK-D5rbJDTc.js.map} +1 -1
  163. package/dist/assets/{Testing-BNJwzbRK-legacy-CHlUAxxR.js → Testing-BNJwzbRK-legacy-kUkUPtwJ.js} +2 -2
  164. package/dist/assets/{Testing-BNJwzbRK-legacy-CHlUAxxR.js.map → Testing-BNJwzbRK-legacy-kUkUPtwJ.js.map} +1 -1
  165. package/dist/assets/Testing-CiiWZSBw-DU4dwY9q.js +2 -0
  166. package/dist/assets/Testing-CiiWZSBw-DU4dwY9q.js.map +1 -0
  167. package/dist/assets/Testing-CiiWZSBw-legacy-Df4mQmEJ.js +2 -0
  168. package/dist/assets/Testing-CiiWZSBw-legacy-Df4mQmEJ.js.map +1 -0
  169. package/dist/assets/{Testing-CoRLhmNT-CZbxquD7.js → Testing-CoRLhmNT-DAoK7NOZ.js} +2 -2
  170. package/dist/assets/{Testing-CoRLhmNT-CZbxquD7.js.map → Testing-CoRLhmNT-DAoK7NOZ.js.map} +1 -1
  171. package/dist/assets/{Testing-CoRLhmNT-legacy-B5x3S7nT.js → Testing-CoRLhmNT-legacy-CHB_znXM.js} +2 -2
  172. package/dist/assets/{Testing-CoRLhmNT-legacy-B5x3S7nT.js.map → Testing-CoRLhmNT-legacy-CHB_znXM.js.map} +1 -1
  173. package/dist/assets/{Testing-DGUeGxdc-borOpe6x.js → Testing-DGUeGxdc-CPtN0q1E.js} +2 -2
  174. package/dist/assets/{Testing-DGUeGxdc-borOpe6x.js.map → Testing-DGUeGxdc-CPtN0q1E.js.map} +1 -1
  175. package/dist/assets/{Testing-DGUeGxdc-legacy-CW1DFsnU.js → Testing-DGUeGxdc-legacy-D0EDpce8.js} +2 -2
  176. package/dist/assets/{Testing-DGUeGxdc-legacy-CW1DFsnU.js.map → Testing-DGUeGxdc-legacy-D0EDpce8.js.map} +1 -1
  177. package/dist/assets/{Testing-DzWAcbhL-B4HmQQAb.js → Testing-DzWAcbhL-DEqu1oWp.js} +2 -2
  178. package/dist/assets/{Testing-DzWAcbhL-B4HmQQAb.js.map → Testing-DzWAcbhL-DEqu1oWp.js.map} +1 -1
  179. package/dist/assets/{Testing-DzWAcbhL-legacy-Bxr9W4nv.js → Testing-DzWAcbhL-legacy--n6c4amH.js} +2 -2
  180. package/dist/assets/{Testing-DzWAcbhL-legacy-Bxr9W4nv.js.map → Testing-DzWAcbhL-legacy--n6c4amH.js.map} +1 -1
  181. package/dist/assets/{TitleHeader-DcqFVLw0.js → TitleHeader-DQ9VuIEH.js} +2 -2
  182. package/dist/assets/{TitleHeader-DcqFVLw0.js.map → TitleHeader-DQ9VuIEH.js.map} +1 -1
  183. package/dist/assets/{TitleHeader-legacy-BPZzovWy.js → TitleHeader-legacy-DN1FBcsk.js} +2 -2
  184. package/dist/assets/{TitleHeader-legacy-BPZzovWy.js.map → TitleHeader-legacy-DN1FBcsk.js.map} +1 -1
  185. package/dist/assets/{Trans-BiiDiriP.js → Trans-D79pYQlQ.js} +2 -2
  186. package/dist/assets/{Trans-BiiDiriP.js.map → Trans-D79pYQlQ.js.map} +1 -1
  187. package/dist/assets/{Trans-legacy-CrR8QHJy.js → Trans-legacy-Bze6cEjx.js} +2 -2
  188. package/dist/assets/{Trans-legacy-CrR8QHJy.js.map → Trans-legacy-Bze6cEjx.js.map} +1 -1
  189. package/dist/assets/{ValidateOptions-Bi7oExtq.js → ValidateOptions-DMMKaCkH.js} +2 -2
  190. package/dist/assets/{ValidateOptions-Bi7oExtq.js.map → ValidateOptions-DMMKaCkH.js.map} +1 -1
  191. package/dist/assets/{ValidateOptions-legacy-DNVt370k.js → ValidateOptions-legacy-BKn8Z0iI.js} +2 -2
  192. package/dist/assets/{ValidateOptions-legacy-DNVt370k.js.map → ValidateOptions-legacy-BKn8Z0iI.js.map} +1 -1
  193. package/dist/assets/{dist-B9e9e0gS.js → dist-DulEP_1K.js} +2 -2
  194. package/dist/assets/{dist-B9e9e0gS.js.map → dist-DulEP_1K.js.map} +1 -1
  195. package/dist/assets/{dist-legacy-CHceR0tu.js → dist-legacy-DzfAfk89.js} +2 -2
  196. package/dist/assets/{dist-legacy-CHceR0tu.js.map → dist-legacy-DzfAfk89.js.map} +1 -1
  197. package/dist/assets/{getMapProviderConfig-DshfQt_F.js → getMapProviderConfig-B4Q24S5F.js} +3 -3
  198. package/dist/assets/getMapProviderConfig-B4Q24S5F.js.map +1 -0
  199. package/dist/assets/getMapProviderConfig-Djjas7OB.css +1 -0
  200. package/dist/assets/getMapProviderConfig-legacy-BX0LDQVX.js +2 -0
  201. package/dist/assets/getMapProviderConfig-legacy-BX0LDQVX.js.map +1 -0
  202. package/dist/assets/index-BAtTWqDt.js +3 -0
  203. package/dist/assets/index-BAtTWqDt.js.map +1 -0
  204. package/dist/assets/{index-legacy-DmO1-JVm.js → index-legacy-BLXZlVDd.js} +2 -2
  205. package/dist/assets/index-legacy-BLXZlVDd.js.map +1 -0
  206. package/dist/assets/{index.es-CoIP10OR.js → index.es-DtOj94Wj.js} +2 -2
  207. package/dist/assets/{index.es-CoIP10OR.js.map → index.es-DtOj94Wj.js.map} +1 -1
  208. package/dist/assets/{index.es-legacy-CwO7r-Dt.js → index.es-legacy-Bu1JLUty.js} +2 -2
  209. package/dist/assets/{index.es-legacy-CwO7r-Dt.js.map → index.es-legacy-Bu1JLUty.js.map} +1 -1
  210. package/dist/assets/{mapbox-jb8Zev6T-CRa8nPW8.js → mapbox-jb8Zev6T-BXN7werw.js} +2 -2
  211. package/dist/assets/{mapbox-jb8Zev6T-CRa8nPW8.js.map → mapbox-jb8Zev6T-BXN7werw.js.map} +1 -1
  212. package/dist/assets/{mapbox-jb8Zev6T-legacy-BHd691KT.js → mapbox-jb8Zev6T-legacy-C7wM7MiM.js} +2 -2
  213. package/dist/assets/{mapbox-jb8Zev6T-legacy-BHd691KT.js.map → mapbox-jb8Zev6T-legacy-C7wM7MiM.js.map} +1 -1
  214. package/dist/assets/{maplibre-CUYkxr-D-Bd2zI-jg.js → maplibre-CUYkxr-D-DGpsTNMt.js} +2 -2
  215. package/dist/assets/{maplibre-CUYkxr-D-Bd2zI-jg.js.map → maplibre-CUYkxr-D-DGpsTNMt.js.map} +1 -1
  216. package/dist/assets/{maplibre-CUYkxr-D-legacy-DtZmB5qu.js → maplibre-CUYkxr-D-legacy-FWuvgVxO.js} +2 -2
  217. package/dist/assets/{maplibre-CUYkxr-D-legacy-DtZmB5qu.js.map → maplibre-CUYkxr-D-legacy-FWuvgVxO.js.map} +1 -1
  218. package/dist/assets/neighborhood-fallback-CI_Ro8Y3.js.map +1 -1
  219. package/dist/assets/neighborhood-fallback-legacy-BVguI_1R.js.map +1 -1
  220. package/dist/assets/{sdks-CuW4Djod.js → sdks-DcRRcCep.js} +2 -2
  221. package/dist/assets/{sdks-CuW4Djod.js.map → sdks-DcRRcCep.js.map} +1 -1
  222. package/dist/assets/{sdks-legacy-CWRbdzCl.js → sdks-legacy-D5at0_ei.js} +2 -2
  223. package/dist/assets/{sdks-legacy-CWRbdzCl.js.map → sdks-legacy-D5at0_ei.js.map} +1 -1
  224. package/dist/assets/{styles-CJwaJsrY-BlHuktb3.js → styles-CJwaJsrY-Cm-fKzxg.js} +1 -1
  225. package/dist/assets/{styles-CJwaJsrY-BlHuktb3.js.map → styles-CJwaJsrY-Cm-fKzxg.js.map} +1 -1
  226. package/dist/assets/{styles-CJwaJsrY-legacy-B9jzJTiB.js → styles-CJwaJsrY-legacy-CGYmVvib.js} +1 -1
  227. package/dist/assets/{styles-CJwaJsrY-legacy-B9jzJTiB.js.map → styles-CJwaJsrY-legacy-CGYmVvib.js.map} +1 -1
  228. package/dist/assets/{useDemographicsData-y8UgvH09.js → useDemographicsData-CgIHvbGH.js} +2 -2
  229. package/dist/assets/{useDemographicsData-y8UgvH09.js.map → useDemographicsData-CgIHvbGH.js.map} +1 -1
  230. package/dist/assets/{useDemographicsData-legacy-BydgmVxf.js → useDemographicsData-legacy-B51K5za3.js} +2 -2
  231. package/dist/assets/{useDemographicsData-legacy-BydgmVxf.js.map → useDemographicsData-legacy-B51K5za3.js.map} +1 -1
  232. package/dist/assets/{useGeographies-CTn6gk-Q.js → useGeographies-Z4JLiIdq.js} +2 -2
  233. package/dist/assets/{useGeographies-CTn6gk-Q.js.map → useGeographies-Z4JLiIdq.js.map} +1 -1
  234. package/dist/assets/{useGeographies-legacy-BG5-avO1.js → useGeographies-legacy-DEpCDAXO.js} +2 -2
  235. package/dist/assets/{useGeographies-legacy-BG5-avO1.js.map → useGeographies-legacy-DEpCDAXO.js.map} +1 -1
  236. package/dist/assets/{useIsMobile-CFbJXB5u.js → useIsMobile-DJC_oIhB.js} +2 -2
  237. package/dist/assets/{useIsMobile-CFbJXB5u.js.map → useIsMobile-DJC_oIhB.js.map} +1 -1
  238. package/dist/assets/{useIsMobile-legacy-DTVBSpF3.js → useIsMobile-legacy-DLBT_3bY.js} +2 -2
  239. package/dist/assets/{useIsMobile-legacy-DTVBSpF3.js.map → useIsMobile-legacy-DLBT_3bY.js.map} +1 -1
  240. package/dist/assets/{useLocation-DdJbm9TZ.js → useLocation-BuAdp_NV.js} +2 -2
  241. package/dist/assets/{useLocation-DdJbm9TZ.js.map → useLocation-BuAdp_NV.js.map} +1 -1
  242. package/dist/assets/{useLocation-legacy-Bt1WPwut.js → useLocation-legacy-XJXyUBTr.js} +2 -2
  243. package/dist/assets/{useLocation-legacy-Bt1WPwut.js.map → useLocation-legacy-XJXyUBTr.js.map} +1 -1
  244. package/dist/assets/{useProfiles-DrK6LfKa.js → useProfiles-C20ly8bQ.js} +2 -2
  245. package/dist/assets/{useProfiles-DrK6LfKa.js.map → useProfiles-C20ly8bQ.js.map} +1 -1
  246. package/dist/assets/{useProfiles-legacy-Cg-yR2CE.js → useProfiles-legacy-BssC6Fnx.js} +2 -2
  247. package/dist/assets/{useProfiles-legacy-Cg-yR2CE.js.map → useProfiles-legacy-BssC6Fnx.js.map} +1 -1
  248. package/dist/assets/{useSchools-wtdyLGlp.js → useSchools-EfWXGolK.js} +2 -2
  249. package/dist/assets/{useSchools-wtdyLGlp.js.map → useSchools-EfWXGolK.js.map} +1 -1
  250. package/dist/assets/{useSchools-legacy-DwyAxe2p.js → useSchools-legacy-C7rOWqjM.js} +2 -2
  251. package/dist/assets/{useSchools-legacy-DwyAxe2p.js.map → useSchools-legacy-C7rOWqjM.js.map} +1 -1
  252. package/dist/assets/{useScores-CnapwN0c.js → useScores-HENXqF7M.js} +2 -2
  253. package/dist/assets/{useScores-CnapwN0c.js.map → useScores-HENXqF7M.js.map} +1 -1
  254. package/dist/assets/{useScores-legacy-DE5QSjbJ.js → useScores-legacy-DURMcuDU.js} +2 -2
  255. package/dist/assets/{useScores-legacy-DE5QSjbJ.js.map → useScores-legacy-DURMcuDU.js.map} +1 -1
  256. package/dist/index.html +2 -2
  257. package/dist/types/components/DemographicsTextCard/index.js +1 -1
  258. package/dist/types/components/DemographicsTextCard/index.js.map +1 -1
  259. package/dist/types/components/DemographicsTextCard/index.test.d.ts +2 -0
  260. package/dist/types/components/DemographicsTextCard/index.test.d.ts.map +1 -0
  261. package/dist/types/components/DemographicsTextCard/index.test.js +26 -0
  262. package/dist/types/components/DemographicsTextCard/index.test.js.map +1 -0
  263. package/dist/types/components/deprecated/components/Chart/Root/BarChart/index.js +1 -1
  264. package/dist/types/components/deprecated/components/Chart/Root/BarChart/index.js.map +1 -1
  265. package/dist/types/components/deprecated/components/Text/index.d.ts +1 -0
  266. package/dist/types/components/deprecated/components/Text/index.d.ts.map +1 -1
  267. package/dist/types/components/deprecated/components/Text/index.js +2 -2
  268. package/dist/types/components/deprecated/components/Text/index.js.map +1 -1
  269. package/dist/types/components/map/ClusterPopupContent/index.test.js +17 -0
  270. package/dist/types/components/map/ClusterPopupContent/index.test.js.map +1 -1
  271. package/dist/types/components/map/POIPopupContent/index.test.d.ts +2 -0
  272. package/dist/types/components/map/POIPopupContent/index.test.d.ts.map +1 -0
  273. package/dist/types/components/map/POIPopupContent/index.test.js +45 -0
  274. package/dist/types/components/map/POIPopupContent/index.test.js.map +1 -0
  275. package/dist/types/components/map/PopupContent/Header/index.d.ts.map +1 -1
  276. package/dist/types/components/map/PopupContent/Header/index.js +6 -1
  277. package/dist/types/components/map/PopupContent/Header/index.js.map +1 -1
  278. package/dist/types/components/map/PopupContent/Header/index.test.js +14 -0
  279. package/dist/types/components/map/PopupContent/Header/index.test.js.map +1 -1
  280. package/dist/types/components/map/PopupContent/index.test.d.ts +2 -0
  281. package/dist/types/components/map/PopupContent/index.test.d.ts.map +1 -0
  282. package/dist/types/components/map/PopupContent/index.test.js +23 -0
  283. package/dist/types/components/map/PopupContent/index.test.js.map +1 -0
  284. package/dist/types/i18n/en/localContent.d.ts +1 -0
  285. package/dist/types/i18n/en/localContent.d.ts.map +1 -1
  286. package/dist/types/i18n/en/localContent.js +1 -0
  287. package/dist/types/i18n/en/localContent.js.map +1 -1
  288. package/dist/types/i18n/fr/localContent.d.ts +1 -0
  289. package/dist/types/i18n/fr/localContent.d.ts.map +1 -1
  290. package/dist/types/i18n/fr/localContent.js +1 -0
  291. package/dist/types/i18n/fr/localContent.js.map +1 -1
  292. package/dist/types/i18n/index.d.ts +1 -0
  293. package/dist/types/i18n/index.d.ts.map +1 -1
  294. package/dist/types/sdks/LocalContent/components/CommuteCalculator/Root/Form/Select/index.d.ts.map +1 -1
  295. package/dist/types/sdks/LocalContent/components/CommuteCalculator/Root/Form/Select/index.js +1 -1
  296. package/dist/types/sdks/LocalContent/components/CommuteCalculator/Root/Form/Select/index.js.map +1 -1
  297. package/dist/types/sdks/LocalContent/components/CommuteCalculator/Root/Form/Select/index.test.d.ts +2 -0
  298. package/dist/types/sdks/LocalContent/components/CommuteCalculator/Root/Form/Select/index.test.d.ts.map +1 -0
  299. package/dist/types/sdks/LocalContent/components/CommuteCalculator/Root/Form/Select/index.test.js +26 -0
  300. package/dist/types/sdks/LocalContent/components/CommuteCalculator/Root/Form/Select/index.test.js.map +1 -0
  301. package/dist/types/sdks/LocalContent/components/Sidebar/Root/Header/index.d.ts.map +1 -1
  302. package/dist/types/sdks/LocalContent/components/Sidebar/Root/Header/index.js +2 -2
  303. package/dist/types/sdks/LocalContent/components/Sidebar/Root/Header/index.js.map +1 -1
  304. package/dist/types/sdks/LocalContent/components/Sidebar/Root/Header/index.test.js +23 -0
  305. package/dist/types/sdks/LocalContent/components/Sidebar/Root/Header/index.test.js.map +1 -1
  306. package/dist/types/sdks/LocalContent/components/Sidebar/Root/context.d.ts +1 -0
  307. package/dist/types/sdks/LocalContent/components/Sidebar/Root/context.d.ts.map +1 -1
  308. package/dist/types/sdks/LocalContent/components/Sidebar/Root/context.js +4 -2
  309. package/dist/types/sdks/LocalContent/components/Sidebar/Root/context.js.map +1 -1
  310. package/package.json +1 -1
  311. package/dist/assets/Google-CH7a2yx--Cn8Y8O80.js +0 -2
  312. package/dist/assets/Google-CH7a2yx--legacy-DM1UNBoi.js +0 -2
  313. package/dist/assets/Google-CXGCn-oJ-DVH6KUqZ.js +0 -2
  314. package/dist/assets/Google-CXGCn-oJ-DVH6KUqZ.js.map +0 -1
  315. package/dist/assets/Google-CXGCn-oJ-legacy-BahBoExF.js +0 -2
  316. package/dist/assets/Google-CXGCn-oJ-legacy-BahBoExF.js.map +0 -1
  317. package/dist/assets/LocalContent-legacy-Dn8xkYe1.js +0 -2
  318. package/dist/assets/Mapbox-DDJ1gHRb-CoVu4X50.js +0 -2
  319. package/dist/assets/Mapbox-DDJ1gHRb-CoVu4X50.js.map +0 -1
  320. package/dist/assets/Mapbox-DDJ1gHRb-legacy-BPzC_BxB.js +0 -2
  321. package/dist/assets/Mapbox-DDJ1gHRb-legacy-BPzC_BxB.js.map +0 -1
  322. package/dist/assets/Mapbox-DtZmt1D_-Bl4KegHk.js +0 -2
  323. package/dist/assets/Mapbox-DtZmt1D_-legacy-CL4jFUY4.js +0 -2
  324. package/dist/assets/Maptiler-DJScKW8p-D6EXhR9t.js +0 -2
  325. package/dist/assets/Maptiler-DJScKW8p-legacy-Bwixwxpw.js +0 -2
  326. package/dist/assets/Maptiler-DqeshLom-CXaXHA2F.js +0 -2
  327. package/dist/assets/Maptiler-DqeshLom-CXaXHA2F.js.map +0 -1
  328. package/dist/assets/Maptiler-DqeshLom-legacy-Cpos6yik.js +0 -2
  329. package/dist/assets/Maptiler-DqeshLom-legacy-Cpos6yik.js.map +0 -1
  330. package/dist/assets/Testing--n5Ro0Ek-EG8KLikO.js +0 -2
  331. package/dist/assets/Testing--n5Ro0Ek-EG8KLikO.js.map +0 -1
  332. package/dist/assets/Testing--n5Ro0Ek-legacy-CLVqeABo.js +0 -2
  333. package/dist/assets/Testing--n5Ro0Ek-legacy-CLVqeABo.js.map +0 -1
  334. package/dist/assets/getMapProviderConfig-Dg2c_6rt.css +0 -1
  335. package/dist/assets/getMapProviderConfig-DshfQt_F.js.map +0 -1
  336. package/dist/assets/getMapProviderConfig-legacy-BvkFz-sz.js +0 -2
  337. package/dist/assets/getMapProviderConfig-legacy-BvkFz-sz.js.map +0 -1
  338. package/dist/assets/index-D95PGgh0.js +0 -3
  339. package/dist/assets/index-D95PGgh0.js.map +0 -1
  340. package/dist/assets/index-legacy-DmO1-JVm.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodFeatured-CW84mNx9.js","names":[],"sources":["../../src/sdks/NeighborhoodFeatured/hooks/useFavoriteNeighborhoods.ts","../../src/sdks/NeighborhoodFeatured/types.ts","../../src/sdks/NeighborhoodFeatured/context.tsx","../../src/sdks/NeighborhoodFeatured/components/Content/styles.ts","../../src/sdks/NeighborhoodFeatured/components/Content/index.tsx","../../src/sdks/NeighborhoodFeatured/schema.ts","../../src/sdks/NeighborhoodFeatured/index.tsx"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { NeighborhoodFeaturedProps } from \"../types\";\nimport errorTracker from \"~/utils/errorTracker\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { ApiNeighborhood } from \"~/types/neighborhoods\";\nimport { transformNeighborhood } from \"~/utils/transformNeighborhood\";\n\nconst ENVIRONMENTS = {\n dev: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n qa: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n prod: \"https://api.locallogic.co/neighborhood-management-v1\",\n};\n\nexport function useFavoriteNeighborhoods({\n externalId,\n}: {\n externalId?: string;\n}) {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const baseURL =\n ENVIRONMENTS[sdkState.globalOptions?.environment?.api || \"prod\"];\n\n const fetchMyNeighborhoods = () =>\n fetch(\n `${baseURL}/sdk/favorite-neighborhoods/${externalId}?include=configurations`,\n {\n headers: {\n Accept: \"application/json\",\n Authorization: sdkState.apiKey as string,\n \"x-ll-sdk-name\": \"neighborhood-featured\",\n },\n method: \"GET\",\n },\n )\n .then((response) => {\n if ([204, 404].includes(response.status)) {\n return null;\n }\n\n if (response.status >= 300) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n return response.json();\n })\n .then((response) => ({\n featured: transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n response.featured,\n response.configurations[response.featured?.geog_id],\n ),\n favorites: response.favorites?.map((neighborhood: ApiNeighborhood) =>\n transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n neighborhood,\n response.configurations[neighborhood?.geog_id],\n ),\n ),\n }))\n .catch((error) => {\n errorTracker.captureException(error);\n\n throw error;\n });\n\n return useQuery({\n queryKey: [\"myNeighborhoods\"],\n queryFn: fetchMyNeighborhoods,\n enabled: !!externalId && !!sdkState.apiKey,\n });\n}\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n exploreShowcaseURL?: string;\n urlSchemaSpacer?: string;\n singleNeighborhoodURLSchema?: string;\n};\n\nexport type NeighborhoodFeaturedProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-featured-Viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood-featured-Card-Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood-featured-Explore-Neighborhoods-Clicked\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood_featured_Card_Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood_featured_Explore_Neighborhoods_Clicked\",\n}\n","import React, { useContext } from \"react\";\nimport { useFavoriteNeighborhoods } from \"./hooks/useFavoriteNeighborhoods\";\nimport {\n type NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { FavoriteNeighborhoods } from \"~/types/neighborhoods\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n isFetched: boolean;\n neighborhoods?: FavoriteNeighborhoods;\n};\n\nconst NeighborhoodFeaturedContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodFeatured = () => useContext(NeighborhoodFeaturedContext);\n\nconst NeighborhoodFeaturedProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const tracking = useTracking();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { data, isFetched, isLoading } = useFavoriteNeighborhoods({\n externalId: sdkState.globalOptions?.externalId,\n });\n\n if (!sdkState.globalOptions?.externalId) {\n throw new Error(\"externalId is required to launch the SDK\");\n }\n\n return (\n <NeighborhoodFeaturedContext.Provider\n value={{\n isFetched,\n isLoading,\n neighborhoods: data,\n }}\n >\n {children}\n </NeighborhoodFeaturedContext.Provider>\n );\n};\n\nexport { useNeighborhoodFeatured, NeighborhoodFeaturedProvider };\n","export const favorites = ` \n place-items-center my-4\n flex justify-between gap-4\n\n flex-col md:flex-row\n`;\n\nexport const card = `\n flex-1 w-full\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const container = `w-full py-2`;\n\nexport const featured = `\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const button = `\n border border-gray-200 rounded-md\n text-ll-primary py-3 px-6\n text-center\n w-96 mx-auto max-w-full block\n\n hover:border-ll-primary\n hover:text-ll-primary\n\n duration-100 transition-colors\n`;\n\nexport const loadingContent = `w-full h-full flex justify-center align-cennter`;\nexport const blankState = `w-full h-full bg-ll-surface py-6 px-5 rounded-md text-ll-placeholder`;\n","import React from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { LoadingSpinner } from \"~/components/deprecated\";\nimport { useTracking } from \"~/tracking\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useNeighborhoodFeatured } from \"~/sdks/NeighborhoodFeatured/context\";\nimport { Neighborhood } from \"~/types/neighborhoods\";\nimport {\n AnalyticsEvents,\n NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n} from \"~/sdks/NeighborhoodFeatured/types\";\n\nimport { getNeighborhoodURLFromSchema } from \"~/utils/formatters/neighborhoodURLSchema\";\n\nimport { NeighborhoodCard } from \"~/components/NeighborhoodCard\";\n\nexport const Content = () => {\n const { t } = useTranslation(\"neighborhoodFeatured\");\n const tracking = useTracking();\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const exploreGatewayURL = sdkState.options?.exploreShowcaseURL || undefined;\n const urlSpacer = sdkState.options?.urlSchemaSpacer || \"-\";\n\n const { neighborhoods, isFetched, isLoading } = useNeighborhoodFeatured();\n const singleNeighborhoodURLSchema =\n sdkState.options?.singleNeighborhoodURLSchema || undefined;\n\n if (!neighborhoods?.featured && neighborhoods?.favorites?.length === 0) {\n return null;\n }\n\n const handleExploreGateway = () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: [\n {\n label: \"externalId\",\n data: sdkState.globalOptions?.externalId,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: {\n ll_externalID: sdkState.globalOptions?.externalId,\n },\n });\n };\n\n const handleNeighborhoodCardClick =\n (neighborhood: Neighborhood, label: string) => () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: [\n {\n label: \"geogID\",\n data: neighborhood.geogId,\n },\n {\n label: \"name\",\n data: neighborhood.name,\n },\n {\n label: \"label\",\n data: label,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: {\n ll_geogID: neighborhood.geogId,\n ll_name: neighborhood.name,\n ll_label: label,\n },\n });\n };\n\n return (\n <>\n {!isFetched ? (\n <div className={styles.loadingContent}>\n <LoadingSpinner image />\n </div>\n ) : (\n <>\n {neighborhoods ? (\n <div className={styles.container}>\n <div className={styles.featured} data-is-loading={isLoading}>\n {neighborhoods?.featured && (\n <div\n onClick={handleNeighborhoodCardClick(\n neighborhoods?.featured,\n \"featured\",\n )}\n >\n <NeighborhoodCard\n key={neighborhoods?.featured.geogId}\n isFeatured\n neighborhood={neighborhoods?.featured}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhoods?.featured,\n urlSpacer,\n )\n }\n />\n </div>\n )}\n </div>\n\n <div className={styles.favorites}>\n {neighborhoods?.favorites?.map((neighborhood, index) => (\n <div\n className={styles.card}\n key={neighborhood.geogId}\n data-is-loading={isLoading}\n onClick={handleNeighborhoodCardClick(\n neighborhood,\n `favorite_${index + 1}`,\n )}\n >\n <NeighborhoodCard\n neighborhood={neighborhood}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhood,\n urlSpacer,\n )\n }\n />\n </div>\n ))}\n </div>\n\n {exploreGatewayURL && (\n <a\n onClick={handleExploreGateway}\n className={styles.button}\n href={exploreGatewayURL}\n target=\"_parent\"\n rel=\"noreferrer\"\n >\n {t(`exploreMoreNeighborhoods`)}\n </a>\n )}\n </div>\n ) : (\n <div className={styles.blankState}>\n <Trans\n i18nKey=\"noData\"\n t={t}\n components={{\n LinkToHub: (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={import.meta.env.VITE_NEIGHBORHOOD_MANAGEMENT_URL}\n />\n ),\n bold: <strong />,\n }}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n // We don't need lat/lng/geographyId for the NeighborhoodFeatured SDK\n // But we need to keep it due to how the SDK library is currently implemented\n lat: number().optional(),\n lng: number().optional(),\n geographyId: string().optional(),\n exploreShowcaseURL: string().optional(),\n urlSchemaSpacer: string().length(1).optional(),\n singleNeighborhoodURLSchema: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport \"~/assets/styles/old-tailwind.css\";\nimport type { NeighborhoodFeaturedProps } from \"./types\";\nimport { NeighborhoodFeaturedProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodFeatured.key);\n\nconst NeighborhoodFeatured = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Featured\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_FEATURED}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodFeatured}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_FEATURED,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodFeaturedProvider>\n <Content />\n </NeighborhoodFeaturedProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodFeatured;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NeighborhoodFeatured-DsjFOHMv.js","names":[],"sources":["../../src/sdks/NeighborhoodFeatured/hooks/useFavoriteNeighborhoods.ts","../../src/sdks/NeighborhoodFeatured/types.ts","../../src/sdks/NeighborhoodFeatured/context.tsx","../../src/sdks/NeighborhoodFeatured/components/Content/styles.ts","../../src/sdks/NeighborhoodFeatured/components/Content/index.tsx","../../src/sdks/NeighborhoodFeatured/schema.ts","../../src/sdks/NeighborhoodFeatured/index.tsx"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { NeighborhoodFeaturedProps } from \"../types\";\nimport errorTracker from \"~/utils/errorTracker\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { ApiNeighborhood } from \"~/types/neighborhoods\";\nimport { transformNeighborhood } from \"~/utils/transformNeighborhood\";\n\nconst ENVIRONMENTS = {\n dev: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n qa: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n prod: \"https://api.locallogic.co/neighborhood-management-v1\",\n};\n\nexport function useFavoriteNeighborhoods({\n externalId,\n}: {\n externalId?: string;\n}) {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const baseURL =\n ENVIRONMENTS[sdkState.globalOptions?.environment?.api || \"prod\"];\n\n const fetchMyNeighborhoods = () =>\n fetch(\n `${baseURL}/sdk/favorite-neighborhoods/${externalId}?include=configurations`,\n {\n headers: {\n Accept: \"application/json\",\n Authorization: sdkState.apiKey as string,\n \"x-ll-sdk-name\": \"neighborhood-featured\",\n },\n method: \"GET\",\n },\n )\n .then((response) => {\n if ([204, 404].includes(response.status)) {\n return null;\n }\n\n if (response.status >= 300) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n return response.json();\n })\n .then((response) => ({\n featured: transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n response.featured,\n response.configurations[response.featured?.geog_id],\n ),\n favorites: response.favorites?.map((neighborhood: ApiNeighborhood) =>\n transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n neighborhood,\n response.configurations[neighborhood?.geog_id],\n ),\n ),\n }))\n .catch((error) => {\n errorTracker.captureException(error);\n\n throw error;\n });\n\n return useQuery({\n queryKey: [\"myNeighborhoods\"],\n queryFn: fetchMyNeighborhoods,\n enabled: !!externalId && !!sdkState.apiKey,\n });\n}\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n exploreShowcaseURL?: string;\n urlSchemaSpacer?: string;\n singleNeighborhoodURLSchema?: string;\n};\n\nexport type NeighborhoodFeaturedProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-featured-Viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood-featured-Card-Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood-featured-Explore-Neighborhoods-Clicked\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood_featured_Card_Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood_featured_Explore_Neighborhoods_Clicked\",\n}\n","import React, { useContext } from \"react\";\nimport { useFavoriteNeighborhoods } from \"./hooks/useFavoriteNeighborhoods\";\nimport {\n type NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { FavoriteNeighborhoods } from \"~/types/neighborhoods\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n isFetched: boolean;\n neighborhoods?: FavoriteNeighborhoods;\n};\n\nconst NeighborhoodFeaturedContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodFeatured = () => useContext(NeighborhoodFeaturedContext);\n\nconst NeighborhoodFeaturedProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const tracking = useTracking();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { data, isFetched, isLoading } = useFavoriteNeighborhoods({\n externalId: sdkState.globalOptions?.externalId,\n });\n\n if (!sdkState.globalOptions?.externalId) {\n throw new Error(\"externalId is required to launch the SDK\");\n }\n\n return (\n <NeighborhoodFeaturedContext.Provider\n value={{\n isFetched,\n isLoading,\n neighborhoods: data,\n }}\n >\n {children}\n </NeighborhoodFeaturedContext.Provider>\n );\n};\n\nexport { useNeighborhoodFeatured, NeighborhoodFeaturedProvider };\n","export const favorites = ` \n place-items-center my-4\n flex justify-between gap-4\n\n flex-col md:flex-row\n`;\n\nexport const card = `\n flex-1 w-full\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const container = `w-full py-2`;\n\nexport const featured = `\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const button = `\n border border-gray-200 rounded-md\n text-ll-primary py-3 px-6\n text-center\n w-96 mx-auto max-w-full block\n\n hover:border-ll-primary\n hover:text-ll-primary\n\n duration-100 transition-colors\n`;\n\nexport const loadingContent = `w-full h-full flex justify-center align-cennter`;\nexport const blankState = `w-full h-full bg-ll-surface py-6 px-5 rounded-md text-ll-placeholder`;\n","import React from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { LoadingSpinner } from \"~/components/deprecated\";\nimport { useTracking } from \"~/tracking\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useNeighborhoodFeatured } from \"~/sdks/NeighborhoodFeatured/context\";\nimport { Neighborhood } from \"~/types/neighborhoods\";\nimport {\n AnalyticsEvents,\n NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n} from \"~/sdks/NeighborhoodFeatured/types\";\n\nimport { getNeighborhoodURLFromSchema } from \"~/utils/formatters/neighborhoodURLSchema\";\n\nimport { NeighborhoodCard } from \"~/components/NeighborhoodCard\";\n\nexport const Content = () => {\n const { t } = useTranslation(\"neighborhoodFeatured\");\n const tracking = useTracking();\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const exploreGatewayURL = sdkState.options?.exploreShowcaseURL || undefined;\n const urlSpacer = sdkState.options?.urlSchemaSpacer || \"-\";\n\n const { neighborhoods, isFetched, isLoading } = useNeighborhoodFeatured();\n const singleNeighborhoodURLSchema =\n sdkState.options?.singleNeighborhoodURLSchema || undefined;\n\n if (!neighborhoods?.featured && neighborhoods?.favorites?.length === 0) {\n return null;\n }\n\n const handleExploreGateway = () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: [\n {\n label: \"externalId\",\n data: sdkState.globalOptions?.externalId,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: {\n ll_externalID: sdkState.globalOptions?.externalId,\n },\n });\n };\n\n const handleNeighborhoodCardClick =\n (neighborhood: Neighborhood, label: string) => () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: [\n {\n label: \"geogID\",\n data: neighborhood.geogId,\n },\n {\n label: \"name\",\n data: neighborhood.name,\n },\n {\n label: \"label\",\n data: label,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: {\n ll_geogID: neighborhood.geogId,\n ll_name: neighborhood.name,\n ll_label: label,\n },\n });\n };\n\n return (\n <>\n {!isFetched ? (\n <div className={styles.loadingContent}>\n <LoadingSpinner image />\n </div>\n ) : (\n <>\n {neighborhoods ? (\n <div className={styles.container}>\n <div className={styles.featured} data-is-loading={isLoading}>\n {neighborhoods?.featured && (\n <div\n onClick={handleNeighborhoodCardClick(\n neighborhoods?.featured,\n \"featured\",\n )}\n >\n <NeighborhoodCard\n key={neighborhoods?.featured.geogId}\n isFeatured\n neighborhood={neighborhoods?.featured}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhoods?.featured,\n urlSpacer,\n )\n }\n />\n </div>\n )}\n </div>\n\n <div className={styles.favorites}>\n {neighborhoods?.favorites?.map((neighborhood, index) => (\n <div\n className={styles.card}\n key={neighborhood.geogId}\n data-is-loading={isLoading}\n onClick={handleNeighborhoodCardClick(\n neighborhood,\n `favorite_${index + 1}`,\n )}\n >\n <NeighborhoodCard\n neighborhood={neighborhood}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhood,\n urlSpacer,\n )\n }\n />\n </div>\n ))}\n </div>\n\n {exploreGatewayURL && (\n <a\n onClick={handleExploreGateway}\n className={styles.button}\n href={exploreGatewayURL}\n target=\"_parent\"\n rel=\"noreferrer\"\n >\n {t(`exploreMoreNeighborhoods`)}\n </a>\n )}\n </div>\n ) : (\n <div className={styles.blankState}>\n <Trans\n i18nKey=\"noData\"\n t={t}\n components={{\n LinkToHub: (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={import.meta.env.VITE_NEIGHBORHOOD_MANAGEMENT_URL}\n />\n ),\n bold: <strong />,\n }}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n // We don't need lat/lng/geographyId for the NeighborhoodFeatured SDK\n // But we need to keep it due to how the SDK library is currently implemented\n lat: number().optional(),\n lng: number().optional(),\n geographyId: string().optional(),\n exploreShowcaseURL: string().optional(),\n urlSchemaSpacer: string().length(1).optional(),\n singleNeighborhoodURLSchema: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport \"~/assets/styles/old-tailwind.css\";\nimport type { NeighborhoodFeaturedProps } from \"./types\";\nimport { NeighborhoodFeaturedProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodFeatured.key);\n\nconst NeighborhoodFeatured = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Featured\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_FEATURED}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodFeatured}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_FEATURED,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodFeaturedProvider>\n <Content />\n </NeighborhoodFeaturedProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodFeatured;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./Trans-legacy-CrR8QHJy.js","./sdks-legacy-CWRbdzCl.js","./index-legacy-DmO1-JVm.js","./ResizeWrapper-legacy-Cnj-xOLf.js","./ValidateOptions-legacy-DNVt370k.js","./useIsMobile-legacy-DTVBSpF3.js","./old-tailwind-legacy-BjeU0bHJ.js","./NeighborhoodCard-legacy-BNd6CJpc.js"],function(e,o){var n,l,t,i,a,r,d,s,u,c,g,h,v,p,f,b,m,x,E,O,y,I,_,D,j,C,R,N,k,S,H,w,K,L,A;return{setters:[function(e){n=e.a},function(e){l=e.l},function(e){t=e.t},function(e){i=e.a,a=e.c,r=e.d,d=e.f,s=e.g,u=e.h,c=e.n,g=e.o,h=e.r,v=e.t,p=e.u},function(e){f=e.H,b=e.Y,m=e.i,x=e.n,E=e.yt},function(e){O=e.t},function(e){y=e.t},function(e){I=e.t},function(e){},function(e){_=e.n,D=e.r,j=e.t}],execute:function(){C=n(l(),1),R={dev:"https://api-qa.locallogic.co/neighborhood-management-v1",qa:"https://api-qa.locallogic.co/neighborhood-management-v1",prod:"https://api.locallogic.co/neighborhood-management-v1"},N=function(e){return e.SDK_VIEWED="neighborhood-featured-Viewed",e.NEIGHBORHOOD_CARD_CLICKED="neighborhood-featured-Card-Clicked",e.EXPLORE_MORE_NEIGHBORHOODS_CLICKED="neighborhood-featured-Explore-Neighborhoods-Clicked",e}({}),k=function(e){return e.SDK_VIEWED="sdk_viewed",e.NEIGHBORHOOD_CARD_CLICKED="neighborhood_featured_Card_Clicked",e.EXPLORE_MORE_NEIGHBORHOODS_CLICKED="neighborhood_featured_Explore_Neighborhoods_Clicked",e}({}),S=b(),H=C.createContext({}),w=()=>(0,C.useContext)(H),K=({children:e})=>{var o,n;const{sdkState:l}=x(),t=g();m(()=>{t.postEvent({eventType:N.SDK_VIEWED}),t.trackAnalyticsEvent({eventName:k.SDK_VIEWED})});const{data:i,isFetched:a,isLoading:r}=function({externalId:e}){var o;const{sdkState:n}=x(),l=R[(null===(o=n.globalOptions)||void 0===o||null===(o=o.environment)||void 0===o?void 0:o.api)||"prod"];return u({queryKey:["myNeighborhoods"],queryFn:()=>fetch(`${l}/sdk/favorite-neighborhoods/${e}?include=configurations`,{headers:{Accept:"application/json",Authorization:n.apiKey,"x-ll-sdk-name":"neighborhood-featured"},method:"GET"}).then(e=>{if([204,404].includes(e.status))return null;if(e.status>=300)throw new Error(`Request failed with status ${e.status}`);return e.json()}).then(e=>{var o,l,t;return{featured:D((null===(o=n.globalOptions)||void 0===o?void 0:o.locale)||"en",e.featured,e.configurations[null===(l=e.featured)||void 0===l?void 0:l.geog_id]),favorites:null===(t=e.favorites)||void 0===t?void 0:t.map(o=>{var l;return D((null===(l=n.globalOptions)||void 0===l?void 0:l.locale)||"en",o,e.configurations[null==o?void 0:o.geog_id])})}}).catch(e=>{throw E.captureException(e),e}),enabled:!!e&&!!n.apiKey})}({externalId:null===(o=l.globalOptions)||void 0===o?void 0:o.externalId});if(null===(n=l.globalOptions)||void 0===n||!n.externalId)throw new Error("externalId is required to launch the SDK");return(0,S.jsx)(H.Provider,{value:{isFetched:a,isLoading:r,neighborhoods:i},children:e})},L=()=>{var e,o,n,l,i;const{t:a}=s("neighborhoodFeatured"),r=g(),{sdkState:d}=x(),u=(null===(e=d.options)||void 0===e?void 0:e.exploreShowcaseURL)||void 0,c=(null===(o=d.options)||void 0===o?void 0:o.urlSchemaSpacer)||"-",{neighborhoods:h,isFetched:v,isLoading:p}=w(),b=(null===(n=d.options)||void 0===n?void 0:n.singleNeighborhoodURLSchema)||void 0;if((null==h||!h.featured)&&0===(null==h||null===(l=h.favorites)||void 0===l?void 0:l.length))return null;const m=(e,o)=>()=>{r.postEvent({eventType:N.NEIGHBORHOOD_CARD_CLICKED,eventAttributes:[{label:"geogID",data:e.geogId},{label:"name",data:e.name},{label:"label",data:o}]}),r.trackAnalyticsEvent({eventName:k.NEIGHBORHOOD_CARD_CLICKED,eventAttributes:{ll_geogID:e.geogId,ll_name:e.name,ll_label:o}})};return(0,S.jsx)(S.Fragment,{children:v?(0,S.jsx)(S.Fragment,{children:h?(0,S.jsxs)("div",{className:"w-full py-2",children:[(0,S.jsx)("div",{className:"\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n","data-is-loading":p,children:(null==h?void 0:h.featured)&&(0,S.jsx)("div",{onClick:m(null==h?void 0:h.featured,"featured"),children:(0,S.jsx)(j,{isFeatured:!0,neighborhood:null==h?void 0:h.featured,href:b&&_(b,null==h?void 0:h.featured,c)},null==h?void 0:h.featured.geogId)})}),(0,S.jsx)("div",{className:" \n place-items-center my-4\n flex justify-between gap-4\n\n flex-col md:flex-row\n",children:null==h||null===(i=h.favorites)||void 0===i?void 0:i.map((e,o)=>(0,S.jsx)("div",{className:"\n flex-1 w-full\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n","data-is-loading":p,onClick:m(e,`favorite_${o+1}`),children:(0,S.jsx)(j,{neighborhood:e,href:b&&_(b,e,c)})},e.geogId))}),u&&(0,S.jsx)("a",{onClick:()=>{var e,o;r.postEvent({eventType:N.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,eventAttributes:[{label:"externalId",data:null===(e=d.globalOptions)||void 0===e?void 0:e.externalId}]}),r.trackAnalyticsEvent({eventName:k.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,eventAttributes:{ll_externalID:null===(o=d.globalOptions)||void 0===o?void 0:o.externalId}})},className:"\n border border-gray-200 rounded-md\n text-ll-primary py-3 px-6\n text-center\n w-96 mx-auto max-w-full block\n\n hover:border-ll-primary\n hover:text-ll-primary\n\n duration-100 transition-colors\n",href:u,target:"_parent",rel:"noreferrer",children:a("exploreMoreNeighborhoods")})]}):(0,S.jsx)("div",{className:"w-full h-full bg-ll-surface py-6 px-5 rounded-md text-ll-placeholder",children:(0,S.jsx)(t,{i18nKey:"noData",t:a,components:{LinkToHub:(0,S.jsx)("a",{target:"_blank",rel:"noopener noreferrer",href:"https://hub.locallogic.co/neighborhood-management"}),bold:(0,S.jsx)("strong",{})}})})}):(0,S.jsx)("div",{className:"w-full h-full flex justify-center align-cennter",children:(0,S.jsx)(f,{image:!0})})})},A=p({lat:r().optional(),lng:r().optional(),geographyId:d().optional(),exploreShowcaseURL:d().optional(),urlSchemaSpacer:d().length(1).optional(),singleNeighborhoodURLSchema:d().optional()}).noUnknown(!0),a(c.neighborhoodFeatured.key),e("default",()=>{var e,o,n,l,t,a,r;const{sdkState:d}=x(),s=I(),u=(null===(e=d.globalOptions)||void 0===e?void 0:e.locale)||"en",g=(0,C.useMemo)(()=>{var e,o,n,l;return null!==(e=d.options)&&void 0!==e&&e.geographyId?{geographyId:null===(o=d.options)||void 0===o?void 0:o.geographyId}:{lat:null===(n=d.options)||void 0===n?void 0:n.lat,lng:null===(l=d.options)||void 0===l?void 0:l.lng}},[null===(o=d.options)||void 0===o?void 0:o.lat,null===(n=d.options)||void 0===n?void 0:n.lng,null===(l=d.options)||void 0===l?void 0:l.geographyId]);return(0,S.jsx)(O,{children:(0,S.jsx)(y,{sdk:"Neighborhood Featured",schema:A,options:d.options,children:(0,S.jsx)(h,{environment:null===(t=d.globalOptions)||void 0===t||null===(t=t.environment)||void 0===t?void 0:t.api,apiKey:d.apiKey,appearance:null===(a=d.globalOptions)||void 0===a?void 0:a.appearance,locale:null===(r=d.globalOptions)||void 0===r?void 0:r.locale,product:v.NEIGHBORHOOD_FEATURED,children:(0,S.jsx)(i,{trackingPipelineSettings:{apiKey:d.apiKey||""},analyticsSettings:c.neighborhoodFeatured,meta:{clientId:d.clientId,productName:v.NEIGHBORHOOD_FEATURED,productVersion:"1.24.55"},attributes:{location:g,host:d.location,host_url:document.referrer,locale:u,isMobile:s},flags:{isDebugMode:!1},children:(0,S.jsx)(K,{children:(0,S.jsx)(L,{})})})})})})})}}});
2
- //# sourceMappingURL=NeighborhoodFeatured-legacy-DhNugi04.js.map
1
+ System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./Trans-legacy-Bze6cEjx.js","./sdks-legacy-D5at0_ei.js","./index-legacy-BLXZlVDd.js","./ResizeWrapper-legacy-DEHV95wF.js","./ValidateOptions-legacy-BKn8Z0iI.js","./useIsMobile-legacy-DLBT_3bY.js","./old-tailwind-legacy-BjeU0bHJ.js","./NeighborhoodCard-legacy-C987Bfru.js"],function(e,o){var n,l,t,i,a,r,d,s,u,c,g,h,v,p,f,b,m,x,E,O,y,I,_,D,j,C,R,N,k,S,H,w,K,L,A;return{setters:[function(e){n=e.a},function(e){l=e.l},function(e){t=e.t},function(e){i=e.a,a=e.c,r=e.d,d=e.f,s=e.g,u=e.h,c=e.n,g=e.o,h=e.r,v=e.t,p=e.u},function(e){f=e.H,b=e.Y,m=e.i,x=e.n,E=e.yt},function(e){O=e.t},function(e){y=e.t},function(e){I=e.t},function(e){},function(e){_=e.n,D=e.r,j=e.t}],execute:function(){C=n(l(),1),R={dev:"https://api-qa.locallogic.co/neighborhood-management-v1",qa:"https://api-qa.locallogic.co/neighborhood-management-v1",prod:"https://api.locallogic.co/neighborhood-management-v1"},N=function(e){return e.SDK_VIEWED="neighborhood-featured-Viewed",e.NEIGHBORHOOD_CARD_CLICKED="neighborhood-featured-Card-Clicked",e.EXPLORE_MORE_NEIGHBORHOODS_CLICKED="neighborhood-featured-Explore-Neighborhoods-Clicked",e}({}),k=function(e){return e.SDK_VIEWED="sdk_viewed",e.NEIGHBORHOOD_CARD_CLICKED="neighborhood_featured_Card_Clicked",e.EXPLORE_MORE_NEIGHBORHOODS_CLICKED="neighborhood_featured_Explore_Neighborhoods_Clicked",e}({}),S=b(),H=C.createContext({}),w=()=>(0,C.useContext)(H),K=({children:e})=>{var o,n;const{sdkState:l}=x(),t=g();m(()=>{t.postEvent({eventType:N.SDK_VIEWED}),t.trackAnalyticsEvent({eventName:k.SDK_VIEWED})});const{data:i,isFetched:a,isLoading:r}=function({externalId:e}){var o;const{sdkState:n}=x(),l=R[(null===(o=n.globalOptions)||void 0===o||null===(o=o.environment)||void 0===o?void 0:o.api)||"prod"];return u({queryKey:["myNeighborhoods"],queryFn:()=>fetch(`${l}/sdk/favorite-neighborhoods/${e}?include=configurations`,{headers:{Accept:"application/json",Authorization:n.apiKey,"x-ll-sdk-name":"neighborhood-featured"},method:"GET"}).then(e=>{if([204,404].includes(e.status))return null;if(e.status>=300)throw new Error(`Request failed with status ${e.status}`);return e.json()}).then(e=>{var o,l,t;return{featured:D((null===(o=n.globalOptions)||void 0===o?void 0:o.locale)||"en",e.featured,e.configurations[null===(l=e.featured)||void 0===l?void 0:l.geog_id]),favorites:null===(t=e.favorites)||void 0===t?void 0:t.map(o=>{var l;return D((null===(l=n.globalOptions)||void 0===l?void 0:l.locale)||"en",o,e.configurations[null==o?void 0:o.geog_id])})}}).catch(e=>{throw E.captureException(e),e}),enabled:!!e&&!!n.apiKey})}({externalId:null===(o=l.globalOptions)||void 0===o?void 0:o.externalId});if(null===(n=l.globalOptions)||void 0===n||!n.externalId)throw new Error("externalId is required to launch the SDK");return(0,S.jsx)(H.Provider,{value:{isFetched:a,isLoading:r,neighborhoods:i},children:e})},L=()=>{var e,o,n,l,i;const{t:a}=s("neighborhoodFeatured"),r=g(),{sdkState:d}=x(),u=(null===(e=d.options)||void 0===e?void 0:e.exploreShowcaseURL)||void 0,c=(null===(o=d.options)||void 0===o?void 0:o.urlSchemaSpacer)||"-",{neighborhoods:h,isFetched:v,isLoading:p}=w(),b=(null===(n=d.options)||void 0===n?void 0:n.singleNeighborhoodURLSchema)||void 0;if((null==h||!h.featured)&&0===(null==h||null===(l=h.favorites)||void 0===l?void 0:l.length))return null;const m=(e,o)=>()=>{r.postEvent({eventType:N.NEIGHBORHOOD_CARD_CLICKED,eventAttributes:[{label:"geogID",data:e.geogId},{label:"name",data:e.name},{label:"label",data:o}]}),r.trackAnalyticsEvent({eventName:k.NEIGHBORHOOD_CARD_CLICKED,eventAttributes:{ll_geogID:e.geogId,ll_name:e.name,ll_label:o}})};return(0,S.jsx)(S.Fragment,{children:v?(0,S.jsx)(S.Fragment,{children:h?(0,S.jsxs)("div",{className:"w-full py-2",children:[(0,S.jsx)("div",{className:"\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n","data-is-loading":p,children:(null==h?void 0:h.featured)&&(0,S.jsx)("div",{onClick:m(null==h?void 0:h.featured,"featured"),children:(0,S.jsx)(j,{isFeatured:!0,neighborhood:null==h?void 0:h.featured,href:b&&_(b,null==h?void 0:h.featured,c)},null==h?void 0:h.featured.geogId)})}),(0,S.jsx)("div",{className:" \n place-items-center my-4\n flex justify-between gap-4\n\n flex-col md:flex-row\n",children:null==h||null===(i=h.favorites)||void 0===i?void 0:i.map((e,o)=>(0,S.jsx)("div",{className:"\n flex-1 w-full\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n","data-is-loading":p,onClick:m(e,`favorite_${o+1}`),children:(0,S.jsx)(j,{neighborhood:e,href:b&&_(b,e,c)})},e.geogId))}),u&&(0,S.jsx)("a",{onClick:()=>{var e,o;r.postEvent({eventType:N.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,eventAttributes:[{label:"externalId",data:null===(e=d.globalOptions)||void 0===e?void 0:e.externalId}]}),r.trackAnalyticsEvent({eventName:k.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,eventAttributes:{ll_externalID:null===(o=d.globalOptions)||void 0===o?void 0:o.externalId}})},className:"\n border border-gray-200 rounded-md\n text-ll-primary py-3 px-6\n text-center\n w-96 mx-auto max-w-full block\n\n hover:border-ll-primary\n hover:text-ll-primary\n\n duration-100 transition-colors\n",href:u,target:"_parent",rel:"noreferrer",children:a("exploreMoreNeighborhoods")})]}):(0,S.jsx)("div",{className:"w-full h-full bg-ll-surface py-6 px-5 rounded-md text-ll-placeholder",children:(0,S.jsx)(t,{i18nKey:"noData",t:a,components:{LinkToHub:(0,S.jsx)("a",{target:"_blank",rel:"noopener noreferrer",href:"https://hub.locallogic.co/neighborhood-management"}),bold:(0,S.jsx)("strong",{})}})})}):(0,S.jsx)("div",{className:"w-full h-full flex justify-center align-cennter",children:(0,S.jsx)(f,{image:!0})})})},A=p({lat:r().optional(),lng:r().optional(),geographyId:d().optional(),exploreShowcaseURL:d().optional(),urlSchemaSpacer:d().length(1).optional(),singleNeighborhoodURLSchema:d().optional()}).noUnknown(!0),a(c.neighborhoodFeatured.key),e("default",()=>{var e,o,n,l,t,a,r;const{sdkState:d}=x(),s=I(),u=(null===(e=d.globalOptions)||void 0===e?void 0:e.locale)||"en",g=(0,C.useMemo)(()=>{var e,o,n,l;return null!==(e=d.options)&&void 0!==e&&e.geographyId?{geographyId:null===(o=d.options)||void 0===o?void 0:o.geographyId}:{lat:null===(n=d.options)||void 0===n?void 0:n.lat,lng:null===(l=d.options)||void 0===l?void 0:l.lng}},[null===(o=d.options)||void 0===o?void 0:o.lat,null===(n=d.options)||void 0===n?void 0:n.lng,null===(l=d.options)||void 0===l?void 0:l.geographyId]);return(0,S.jsx)(O,{children:(0,S.jsx)(y,{sdk:"Neighborhood Featured",schema:A,options:d.options,children:(0,S.jsx)(h,{environment:null===(t=d.globalOptions)||void 0===t||null===(t=t.environment)||void 0===t?void 0:t.api,apiKey:d.apiKey,appearance:null===(a=d.globalOptions)||void 0===a?void 0:a.appearance,locale:null===(r=d.globalOptions)||void 0===r?void 0:r.locale,product:v.NEIGHBORHOOD_FEATURED,children:(0,S.jsx)(i,{trackingPipelineSettings:{apiKey:d.apiKey||""},analyticsSettings:c.neighborhoodFeatured,meta:{clientId:d.clientId,productName:v.NEIGHBORHOOD_FEATURED,productVersion:"1.24.57"},attributes:{location:g,host:d.location,host_url:document.referrer,locale:u,isMobile:s},flags:{isDebugMode:!1},children:(0,S.jsx)(K,{children:(0,S.jsx)(L,{})})})})})})})}}});
2
+ //# sourceMappingURL=NeighborhoodFeatured-legacy-F3RdAelk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodFeatured-legacy-DhNugi04.js","names":[],"sources":["../../src/sdks/NeighborhoodFeatured/hooks/useFavoriteNeighborhoods.ts","../../src/sdks/NeighborhoodFeatured/types.ts","../../src/sdks/NeighborhoodFeatured/context.tsx","../../src/sdks/NeighborhoodFeatured/components/Content/styles.ts","../../src/sdks/NeighborhoodFeatured/components/Content/index.tsx","../../src/sdks/NeighborhoodFeatured/schema.ts","../../src/sdks/NeighborhoodFeatured/index.tsx"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { NeighborhoodFeaturedProps } from \"../types\";\nimport errorTracker from \"~/utils/errorTracker\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { ApiNeighborhood } from \"~/types/neighborhoods\";\nimport { transformNeighborhood } from \"~/utils/transformNeighborhood\";\n\nconst ENVIRONMENTS = {\n dev: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n qa: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n prod: \"https://api.locallogic.co/neighborhood-management-v1\",\n};\n\nexport function useFavoriteNeighborhoods({\n externalId,\n}: {\n externalId?: string;\n}) {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const baseURL =\n ENVIRONMENTS[sdkState.globalOptions?.environment?.api || \"prod\"];\n\n const fetchMyNeighborhoods = () =>\n fetch(\n `${baseURL}/sdk/favorite-neighborhoods/${externalId}?include=configurations`,\n {\n headers: {\n Accept: \"application/json\",\n Authorization: sdkState.apiKey as string,\n \"x-ll-sdk-name\": \"neighborhood-featured\",\n },\n method: \"GET\",\n },\n )\n .then((response) => {\n if ([204, 404].includes(response.status)) {\n return null;\n }\n\n if (response.status >= 300) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n return response.json();\n })\n .then((response) => ({\n featured: transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n response.featured,\n response.configurations[response.featured?.geog_id],\n ),\n favorites: response.favorites?.map((neighborhood: ApiNeighborhood) =>\n transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n neighborhood,\n response.configurations[neighborhood?.geog_id],\n ),\n ),\n }))\n .catch((error) => {\n errorTracker.captureException(error);\n\n throw error;\n });\n\n return useQuery({\n queryKey: [\"myNeighborhoods\"],\n queryFn: fetchMyNeighborhoods,\n enabled: !!externalId && !!sdkState.apiKey,\n });\n}\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n exploreShowcaseURL?: string;\n urlSchemaSpacer?: string;\n singleNeighborhoodURLSchema?: string;\n};\n\nexport type NeighborhoodFeaturedProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-featured-Viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood-featured-Card-Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood-featured-Explore-Neighborhoods-Clicked\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood_featured_Card_Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood_featured_Explore_Neighborhoods_Clicked\",\n}\n","import React, { useContext } from \"react\";\nimport { useFavoriteNeighborhoods } from \"./hooks/useFavoriteNeighborhoods\";\nimport {\n type NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { FavoriteNeighborhoods } from \"~/types/neighborhoods\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n isFetched: boolean;\n neighborhoods?: FavoriteNeighborhoods;\n};\n\nconst NeighborhoodFeaturedContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodFeatured = () => useContext(NeighborhoodFeaturedContext);\n\nconst NeighborhoodFeaturedProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const tracking = useTracking();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { data, isFetched, isLoading } = useFavoriteNeighborhoods({\n externalId: sdkState.globalOptions?.externalId,\n });\n\n if (!sdkState.globalOptions?.externalId) {\n throw new Error(\"externalId is required to launch the SDK\");\n }\n\n return (\n <NeighborhoodFeaturedContext.Provider\n value={{\n isFetched,\n isLoading,\n neighborhoods: data,\n }}\n >\n {children}\n </NeighborhoodFeaturedContext.Provider>\n );\n};\n\nexport { useNeighborhoodFeatured, NeighborhoodFeaturedProvider };\n","export const favorites = ` \n place-items-center my-4\n flex justify-between gap-4\n\n flex-col md:flex-row\n`;\n\nexport const card = `\n flex-1 w-full\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const container = `w-full py-2`;\n\nexport const featured = `\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const button = `\n border border-gray-200 rounded-md\n text-ll-primary py-3 px-6\n text-center\n w-96 mx-auto max-w-full block\n\n hover:border-ll-primary\n hover:text-ll-primary\n\n duration-100 transition-colors\n`;\n\nexport const loadingContent = `w-full h-full flex justify-center align-cennter`;\nexport const blankState = `w-full h-full bg-ll-surface py-6 px-5 rounded-md text-ll-placeholder`;\n","import React from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { LoadingSpinner } from \"~/components/deprecated\";\nimport { useTracking } from \"~/tracking\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useNeighborhoodFeatured } from \"~/sdks/NeighborhoodFeatured/context\";\nimport { Neighborhood } from \"~/types/neighborhoods\";\nimport {\n AnalyticsEvents,\n NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n} from \"~/sdks/NeighborhoodFeatured/types\";\n\nimport { getNeighborhoodURLFromSchema } from \"~/utils/formatters/neighborhoodURLSchema\";\n\nimport { NeighborhoodCard } from \"~/components/NeighborhoodCard\";\n\nexport const Content = () => {\n const { t } = useTranslation(\"neighborhoodFeatured\");\n const tracking = useTracking();\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const exploreGatewayURL = sdkState.options?.exploreShowcaseURL || undefined;\n const urlSpacer = sdkState.options?.urlSchemaSpacer || \"-\";\n\n const { neighborhoods, isFetched, isLoading } = useNeighborhoodFeatured();\n const singleNeighborhoodURLSchema =\n sdkState.options?.singleNeighborhoodURLSchema || undefined;\n\n if (!neighborhoods?.featured && neighborhoods?.favorites?.length === 0) {\n return null;\n }\n\n const handleExploreGateway = () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: [\n {\n label: \"externalId\",\n data: sdkState.globalOptions?.externalId,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: {\n ll_externalID: sdkState.globalOptions?.externalId,\n },\n });\n };\n\n const handleNeighborhoodCardClick =\n (neighborhood: Neighborhood, label: string) => () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: [\n {\n label: \"geogID\",\n data: neighborhood.geogId,\n },\n {\n label: \"name\",\n data: neighborhood.name,\n },\n {\n label: \"label\",\n data: label,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: {\n ll_geogID: neighborhood.geogId,\n ll_name: neighborhood.name,\n ll_label: label,\n },\n });\n };\n\n return (\n <>\n {!isFetched ? (\n <div className={styles.loadingContent}>\n <LoadingSpinner image />\n </div>\n ) : (\n <>\n {neighborhoods ? (\n <div className={styles.container}>\n <div className={styles.featured} data-is-loading={isLoading}>\n {neighborhoods?.featured && (\n <div\n onClick={handleNeighborhoodCardClick(\n neighborhoods?.featured,\n \"featured\",\n )}\n >\n <NeighborhoodCard\n key={neighborhoods?.featured.geogId}\n isFeatured\n neighborhood={neighborhoods?.featured}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhoods?.featured,\n urlSpacer,\n )\n }\n />\n </div>\n )}\n </div>\n\n <div className={styles.favorites}>\n {neighborhoods?.favorites?.map((neighborhood, index) => (\n <div\n className={styles.card}\n key={neighborhood.geogId}\n data-is-loading={isLoading}\n onClick={handleNeighborhoodCardClick(\n neighborhood,\n `favorite_${index + 1}`,\n )}\n >\n <NeighborhoodCard\n neighborhood={neighborhood}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhood,\n urlSpacer,\n )\n }\n />\n </div>\n ))}\n </div>\n\n {exploreGatewayURL && (\n <a\n onClick={handleExploreGateway}\n className={styles.button}\n href={exploreGatewayURL}\n target=\"_parent\"\n rel=\"noreferrer\"\n >\n {t(`exploreMoreNeighborhoods`)}\n </a>\n )}\n </div>\n ) : (\n <div className={styles.blankState}>\n <Trans\n i18nKey=\"noData\"\n t={t}\n components={{\n LinkToHub: (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={import.meta.env.VITE_NEIGHBORHOOD_MANAGEMENT_URL}\n />\n ),\n bold: <strong />,\n }}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n // We don't need lat/lng/geographyId for the NeighborhoodFeatured SDK\n // But we need to keep it due to how the SDK library is currently implemented\n lat: number().optional(),\n lng: number().optional(),\n geographyId: string().optional(),\n exploreShowcaseURL: string().optional(),\n urlSchemaSpacer: string().length(1).optional(),\n singleNeighborhoodURLSchema: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport \"~/assets/styles/old-tailwind.css\";\nimport type { NeighborhoodFeaturedProps } from \"./types\";\nimport { NeighborhoodFeaturedProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodFeatured.key);\n\nconst NeighborhoodFeatured = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Featured\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_FEATURED}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodFeatured}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_FEATURED,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodFeaturedProvider>\n <Content />\n </NeighborhoodFeaturedProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodFeatured;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NeighborhoodFeatured-legacy-F3RdAelk.js","names":[],"sources":["../../src/sdks/NeighborhoodFeatured/hooks/useFavoriteNeighborhoods.ts","../../src/sdks/NeighborhoodFeatured/types.ts","../../src/sdks/NeighborhoodFeatured/context.tsx","../../src/sdks/NeighborhoodFeatured/components/Content/styles.ts","../../src/sdks/NeighborhoodFeatured/components/Content/index.tsx","../../src/sdks/NeighborhoodFeatured/schema.ts","../../src/sdks/NeighborhoodFeatured/index.tsx"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { NeighborhoodFeaturedProps } from \"../types\";\nimport errorTracker from \"~/utils/errorTracker\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { ApiNeighborhood } from \"~/types/neighborhoods\";\nimport { transformNeighborhood } from \"~/utils/transformNeighborhood\";\n\nconst ENVIRONMENTS = {\n dev: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n qa: \"https://api-qa.locallogic.co/neighborhood-management-v1\",\n prod: \"https://api.locallogic.co/neighborhood-management-v1\",\n};\n\nexport function useFavoriteNeighborhoods({\n externalId,\n}: {\n externalId?: string;\n}) {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const baseURL =\n ENVIRONMENTS[sdkState.globalOptions?.environment?.api || \"prod\"];\n\n const fetchMyNeighborhoods = () =>\n fetch(\n `${baseURL}/sdk/favorite-neighborhoods/${externalId}?include=configurations`,\n {\n headers: {\n Accept: \"application/json\",\n Authorization: sdkState.apiKey as string,\n \"x-ll-sdk-name\": \"neighborhood-featured\",\n },\n method: \"GET\",\n },\n )\n .then((response) => {\n if ([204, 404].includes(response.status)) {\n return null;\n }\n\n if (response.status >= 300) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n return response.json();\n })\n .then((response) => ({\n featured: transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n response.featured,\n response.configurations[response.featured?.geog_id],\n ),\n favorites: response.favorites?.map((neighborhood: ApiNeighborhood) =>\n transformNeighborhood(\n sdkState.globalOptions?.locale || \"en\",\n neighborhood,\n response.configurations[neighborhood?.geog_id],\n ),\n ),\n }))\n .catch((error) => {\n errorTracker.captureException(error);\n\n throw error;\n });\n\n return useQuery({\n queryKey: [\"myNeighborhoods\"],\n queryFn: fetchMyNeighborhoods,\n enabled: !!externalId && !!sdkState.apiKey,\n });\n}\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n exploreShowcaseURL?: string;\n urlSchemaSpacer?: string;\n singleNeighborhoodURLSchema?: string;\n};\n\nexport type NeighborhoodFeaturedProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-featured-Viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood-featured-Card-Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood-featured-Explore-Neighborhoods-Clicked\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n NEIGHBORHOOD_CARD_CLICKED = \"neighborhood_featured_Card_Clicked\",\n EXPLORE_MORE_NEIGHBORHOODS_CLICKED = \"neighborhood_featured_Explore_Neighborhoods_Clicked\",\n}\n","import React, { useContext } from \"react\";\nimport { useFavoriteNeighborhoods } from \"./hooks/useFavoriteNeighborhoods\";\nimport {\n type NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport type { FavoriteNeighborhoods } from \"~/types/neighborhoods\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n isFetched: boolean;\n neighborhoods?: FavoriteNeighborhoods;\n};\n\nconst NeighborhoodFeaturedContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodFeatured = () => useContext(NeighborhoodFeaturedContext);\n\nconst NeighborhoodFeaturedProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const tracking = useTracking();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { data, isFetched, isLoading } = useFavoriteNeighborhoods({\n externalId: sdkState.globalOptions?.externalId,\n });\n\n if (!sdkState.globalOptions?.externalId) {\n throw new Error(\"externalId is required to launch the SDK\");\n }\n\n return (\n <NeighborhoodFeaturedContext.Provider\n value={{\n isFetched,\n isLoading,\n neighborhoods: data,\n }}\n >\n {children}\n </NeighborhoodFeaturedContext.Provider>\n );\n};\n\nexport { useNeighborhoodFeatured, NeighborhoodFeaturedProvider };\n","export const favorites = ` \n place-items-center my-4\n flex justify-between gap-4\n\n flex-col md:flex-row\n`;\n\nexport const card = `\n flex-1 w-full\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const container = `w-full py-2`;\n\nexport const featured = `\n data-[is-loading=true]:bg-gray-200\n data-[is-loading=true]:animate-pulse\n`;\n\nexport const button = `\n border border-gray-200 rounded-md\n text-ll-primary py-3 px-6\n text-center\n w-96 mx-auto max-w-full block\n\n hover:border-ll-primary\n hover:text-ll-primary\n\n duration-100 transition-colors\n`;\n\nexport const loadingContent = `w-full h-full flex justify-center align-cennter`;\nexport const blankState = `w-full h-full bg-ll-surface py-6 px-5 rounded-md text-ll-placeholder`;\n","import React from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { LoadingSpinner } from \"~/components/deprecated\";\nimport { useTracking } from \"~/tracking\";\n\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useNeighborhoodFeatured } from \"~/sdks/NeighborhoodFeatured/context\";\nimport { Neighborhood } from \"~/types/neighborhoods\";\nimport {\n AnalyticsEvents,\n NeighborhoodFeaturedProps,\n TrackingPipelineEvents,\n} from \"~/sdks/NeighborhoodFeatured/types\";\n\nimport { getNeighborhoodURLFromSchema } from \"~/utils/formatters/neighborhoodURLSchema\";\n\nimport { NeighborhoodCard } from \"~/components/NeighborhoodCard\";\n\nexport const Content = () => {\n const { t } = useTranslation(\"neighborhoodFeatured\");\n const tracking = useTracking();\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const exploreGatewayURL = sdkState.options?.exploreShowcaseURL || undefined;\n const urlSpacer = sdkState.options?.urlSchemaSpacer || \"-\";\n\n const { neighborhoods, isFetched, isLoading } = useNeighborhoodFeatured();\n const singleNeighborhoodURLSchema =\n sdkState.options?.singleNeighborhoodURLSchema || undefined;\n\n if (!neighborhoods?.featured && neighborhoods?.favorites?.length === 0) {\n return null;\n }\n\n const handleExploreGateway = () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: [\n {\n label: \"externalId\",\n data: sdkState.globalOptions?.externalId,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,\n eventAttributes: {\n ll_externalID: sdkState.globalOptions?.externalId,\n },\n });\n };\n\n const handleNeighborhoodCardClick =\n (neighborhood: Neighborhood, label: string) => () => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: [\n {\n label: \"geogID\",\n data: neighborhood.geogId,\n },\n {\n label: \"name\",\n data: neighborhood.name,\n },\n {\n label: \"label\",\n data: label,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.NEIGHBORHOOD_CARD_CLICKED,\n eventAttributes: {\n ll_geogID: neighborhood.geogId,\n ll_name: neighborhood.name,\n ll_label: label,\n },\n });\n };\n\n return (\n <>\n {!isFetched ? (\n <div className={styles.loadingContent}>\n <LoadingSpinner image />\n </div>\n ) : (\n <>\n {neighborhoods ? (\n <div className={styles.container}>\n <div className={styles.featured} data-is-loading={isLoading}>\n {neighborhoods?.featured && (\n <div\n onClick={handleNeighborhoodCardClick(\n neighborhoods?.featured,\n \"featured\",\n )}\n >\n <NeighborhoodCard\n key={neighborhoods?.featured.geogId}\n isFeatured\n neighborhood={neighborhoods?.featured}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhoods?.featured,\n urlSpacer,\n )\n }\n />\n </div>\n )}\n </div>\n\n <div className={styles.favorites}>\n {neighborhoods?.favorites?.map((neighborhood, index) => (\n <div\n className={styles.card}\n key={neighborhood.geogId}\n data-is-loading={isLoading}\n onClick={handleNeighborhoodCardClick(\n neighborhood,\n `favorite_${index + 1}`,\n )}\n >\n <NeighborhoodCard\n neighborhood={neighborhood}\n href={\n singleNeighborhoodURLSchema &&\n getNeighborhoodURLFromSchema(\n singleNeighborhoodURLSchema,\n neighborhood,\n urlSpacer,\n )\n }\n />\n </div>\n ))}\n </div>\n\n {exploreGatewayURL && (\n <a\n onClick={handleExploreGateway}\n className={styles.button}\n href={exploreGatewayURL}\n target=\"_parent\"\n rel=\"noreferrer\"\n >\n {t(`exploreMoreNeighborhoods`)}\n </a>\n )}\n </div>\n ) : (\n <div className={styles.blankState}>\n <Trans\n i18nKey=\"noData\"\n t={t}\n components={{\n LinkToHub: (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={import.meta.env.VITE_NEIGHBORHOOD_MANAGEMENT_URL}\n />\n ),\n bold: <strong />,\n }}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n // We don't need lat/lng/geographyId for the NeighborhoodFeatured SDK\n // But we need to keep it due to how the SDK library is currently implemented\n lat: number().optional(),\n lng: number().optional(),\n geographyId: string().optional(),\n exploreShowcaseURL: string().optional(),\n urlSchemaSpacer: string().length(1).optional(),\n singleNeighborhoodURLSchema: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport \"~/assets/styles/old-tailwind.css\";\nimport type { NeighborhoodFeaturedProps } from \"./types\";\nimport { NeighborhoodFeaturedProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodFeatured.key);\n\nconst NeighborhoodFeatured = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodFeaturedProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Featured\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_FEATURED}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodFeatured}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_FEATURED,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodFeaturedProvider>\n <Content />\n </NeighborhoodFeaturedProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodFeatured;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as a}from"./google-maps-vendor-DvfEEdRU.js";import{a as t,c as o,d as s,f as n,g as l,n as i,o as r,r as p,t as d,u as g}from"./sdks-CuW4Djod.js";import{t as m}from"./MapPin.es-CeIIzhD6.js";import{Y as c,i as u,n as h}from"./index-D95PGgh0.js";import{t as x}from"./useGeographies-CTn6gk-Q.js";/* empty css */import{t as b}from"./ResizeWrapper-CxzTXRsZ.js";import{t as y}from"./ValidateOptions-Bi7oExtq.js";import{t as f}from"./useIsMobile-CFbJXB5u.js";import{t as j}from"./useProfiles-DrK6LfKa.js";var k=e(a(),1),v=function(e){return e.SDK_VIEWED="neighborhood-hero-Viewed",e}({}),I=function(e){return e.SDK_VIEWED="sdk_viewed",e}({}),E=c(),O=k.createContext({}),_=()=>(0,k.useContext)(O),w=({children:e})=>{const{sdkState:a}=h(),t=a.globalOptions?.locale||"en",o=r(),s=f();u(()=>{o.postEvent({eventType:v.SDK_VIEWED}),o.trackAnalyticsEvent({eventName:I.SDK_VIEWED})});const{isLoading:n,data:l}=x({geogID:a.options?.geographyId,location:{lat:a.options?.lat,lng:a.options?.lng},externalId:a?.globalOptions?.externalId}),{data:i,isFetching:p}=j({geogID:a.options?.geographyId,location:{lat:a.options?.lat,lng:a.options?.lng},externalId:a?.globalOptions?.externalId}),d=(0,k.useMemo)(()=>Object.values(l||{})[0],[n,l]),g=(0,k.useMemo)(()=>n||p,[n,p]),m=(0,k.useMemo)(()=>{const e=(a.options?.image||"").toLocaleLowerCase();return"hide"===e?null:"string"==typeof d?.image_url&&d?.image_url.length>0?d.image_url:"string"==typeof a.options?.image&&"nofallback"!==e&&"http"===e.substring(0,4)?a.options.image:"nofallback"===e?null:s?"/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg":"/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"},[d?.image_url,a?.options?.image,s]),c=(0,k.useMemo)(()=>({isLoading:g,locale:t,geography:d,isFallbackImage:null!==m&&["/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg","/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"].includes(m),neighborhoodImage:m,neighborhoodSummary:i?.profiles.summary}),[g,t,d,m,i?.profiles?.summary,a]);return(0,E.jsx)(O.Provider,{value:c,children:e})},D=()=>{const{isLoading:e,locale:a,geography:t,neighborhoodImage:o,isFallbackImage:s}=_(),n=(0,k.useMemo)(()=>o?{backgroundImage:`url("${o}")`}:{},[o]);return e?null:(0,E.jsx)("div",{"data-testid":"header-container",className:"\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n",style:n,"data-has-image":null!==o,"data-use-backdrop":!s&&null!==o,children:(0,E.jsxs)("div",{className:"\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n",children:[(0,E.jsx)(m,{className:"\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n"}),(0,E.jsx)("h1",{"data-testid":"micro-location",className:"\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n",children:t?.name?.[a]}),void 0!==t&&t?.level<30&&void 0!==t.city&&(0,E.jsx)("div",{"data-testid":"macro-location",className:"\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n",children:t?.city?.[a]})]})})},M=()=>{const{t:e}=l("neighborhoodHero"),{neighborhoodSummary:a,geography:t}=_();return a?(0,E.jsxs)("div",{className:"px-6 pt-6 pb-px lg:p-6 bg-gray-150/40","data-testid":"summary-container",children:[(0,E.jsx)("h2",{className:"\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n","data-testid":"summary-title",children:e("summaryTitle",{context:t&&t.level>=30?"area":void 0})}),(0,E.jsx)("p",{className:"\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n","data-testid":"summary-description",children:a})]}):null},N=()=>(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(D,{}),(0,E.jsx)(M,{})]}),H=g({lat:s().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:s().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:n().optional(),image:n().optional()}).noUnknown(!0);o(i.neighborhoodWrap.key);var S=()=>{const{sdkState:e}=h(),a=f(),o=e.globalOptions?.locale||"en",s=(0,k.useMemo)(()=>e.options?.geographyId?{geographyId:e.options?.geographyId}:{lat:e.options?.lat,lng:e.options?.lng},[e.options?.lat,e.options?.lng,e.options?.geographyId]);return(0,E.jsx)(b,{children:(0,E.jsx)(y,{sdk:"Neighborhood Hero",schema:H,options:e.options,children:(0,E.jsx)(p,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:d.NEIGHBORHOOD_HERO,children:(0,E.jsx)(t,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:i.neighborhoodWrap,meta:{clientId:e.clientId,productName:d.NEIGHBORHOOD_HERO,productVersion:"1.24.55"},attributes:{location:s,host:e.location,host_url:document.referrer,locale:o,isMobile:a},flags:{isDebugMode:!1},children:(0,E.jsx)(w,{children:(0,E.jsx)(N,{})})})})})})};export{S as default};
2
- //# sourceMappingURL=NeighborhoodHero-DADIHl6H.js.map
1
+ import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as a}from"./google-maps-vendor-DvfEEdRU.js";import{a as t,c as o,d as s,f as n,g as l,n as i,o as r,r as p,t as d,u as g}from"./sdks-DcRRcCep.js";import{t as m}from"./MapPin.es-CeIIzhD6.js";import{Y as c,i as u,n as h}from"./index-BAtTWqDt.js";import{t as x}from"./useGeographies-Z4JLiIdq.js";/* empty css */import{t as b}from"./ResizeWrapper-BeFwcKDz.js";import{t as y}from"./ValidateOptions-DMMKaCkH.js";import{t as f}from"./useIsMobile-DJC_oIhB.js";import{t as j}from"./useProfiles-C20ly8bQ.js";var k=e(a(),1),v=function(e){return e.SDK_VIEWED="neighborhood-hero-Viewed",e}({}),I=function(e){return e.SDK_VIEWED="sdk_viewed",e}({}),E=c(),O=k.createContext({}),_=()=>(0,k.useContext)(O),w=({children:e})=>{const{sdkState:a}=h(),t=a.globalOptions?.locale||"en",o=r(),s=f();u(()=>{o.postEvent({eventType:v.SDK_VIEWED}),o.trackAnalyticsEvent({eventName:I.SDK_VIEWED})});const{isLoading:n,data:l}=x({geogID:a.options?.geographyId,location:{lat:a.options?.lat,lng:a.options?.lng},externalId:a?.globalOptions?.externalId}),{data:i,isFetching:p}=j({geogID:a.options?.geographyId,location:{lat:a.options?.lat,lng:a.options?.lng},externalId:a?.globalOptions?.externalId}),d=(0,k.useMemo)(()=>Object.values(l||{})[0],[n,l]),g=(0,k.useMemo)(()=>n||p,[n,p]),m=(0,k.useMemo)(()=>{const e=(a.options?.image||"").toLocaleLowerCase();return"hide"===e?null:"string"==typeof d?.image_url&&d?.image_url.length>0?d.image_url:"string"==typeof a.options?.image&&"nofallback"!==e&&"http"===e.substring(0,4)?a.options.image:"nofallback"===e?null:s?"/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg":"/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"},[d?.image_url,a?.options?.image,s]),c=(0,k.useMemo)(()=>({isLoading:g,locale:t,geography:d,isFallbackImage:null!==m&&["/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg","/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"].includes(m),neighborhoodImage:m,neighborhoodSummary:i?.profiles.summary}),[g,t,d,m,i?.profiles?.summary,a]);return(0,E.jsx)(O.Provider,{value:c,children:e})},D=()=>{const{isLoading:e,locale:a,geography:t,neighborhoodImage:o,isFallbackImage:s}=_(),n=(0,k.useMemo)(()=>o?{backgroundImage:`url("${o}")`}:{},[o]);return e?null:(0,E.jsx)("div",{"data-testid":"header-container",className:"\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n",style:n,"data-has-image":null!==o,"data-use-backdrop":!s&&null!==o,children:(0,E.jsxs)("div",{className:"\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n",children:[(0,E.jsx)(m,{className:"\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n"}),(0,E.jsx)("h1",{"data-testid":"micro-location",className:"\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n",children:t?.name?.[a]}),void 0!==t&&t?.level<30&&void 0!==t.city&&(0,E.jsx)("div",{"data-testid":"macro-location",className:"\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n",children:t?.city?.[a]})]})})},M=()=>{const{t:e}=l("neighborhoodHero"),{neighborhoodSummary:a,geography:t}=_();return a?(0,E.jsxs)("div",{className:"px-6 pt-6 pb-px lg:p-6 bg-gray-150/40","data-testid":"summary-container",children:[(0,E.jsx)("h2",{className:"\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n","data-testid":"summary-title",children:e("summaryTitle",{context:t&&t.level>=30?"area":void 0})}),(0,E.jsx)("p",{className:"\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n","data-testid":"summary-description",children:a})]}):null},N=()=>(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(D,{}),(0,E.jsx)(M,{})]}),H=g({lat:s().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:s().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:n().optional(),image:n().optional()}).noUnknown(!0);o(i.neighborhoodWrap.key);var S=()=>{const{sdkState:e}=h(),a=f(),o=e.globalOptions?.locale||"en",s=(0,k.useMemo)(()=>e.options?.geographyId?{geographyId:e.options?.geographyId}:{lat:e.options?.lat,lng:e.options?.lng},[e.options?.lat,e.options?.lng,e.options?.geographyId]);return(0,E.jsx)(b,{children:(0,E.jsx)(y,{sdk:"Neighborhood Hero",schema:H,options:e.options,children:(0,E.jsx)(p,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:d.NEIGHBORHOOD_HERO,children:(0,E.jsx)(t,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:i.neighborhoodWrap,meta:{clientId:e.clientId,productName:d.NEIGHBORHOOD_HERO,productVersion:"1.24.57"},attributes:{location:s,host:e.location,host_url:document.referrer,locale:o,isMobile:a},flags:{isDebugMode:!1},children:(0,E.jsx)(w,{children:(0,E.jsx)(N,{})})})})})})};export{S as default};
2
+ //# sourceMappingURL=NeighborhoodHero-D4aRwf3B.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodHero-DADIHl6H.js","names":[],"sources":["../../src/sdks/NeighborhoodHero/assets/images/desktop_fallback.jpg","../../src/sdks/NeighborhoodHero/assets/images/mobile_fallback.jpg","../../src/sdks/NeighborhoodHero/types.ts","../../src/sdks/NeighborhoodHero/context.tsx","../../src/sdks/NeighborhoodHero/components/Header/styles.ts","../../src/sdks/NeighborhoodHero/components/Header/index.tsx","../../src/sdks/NeighborhoodHero/components/Summary/styles.ts","../../src/sdks/NeighborhoodHero/components/Summary/index.tsx","../../src/sdks/NeighborhoodHero/components/Content/index.tsx","../../src/sdks/NeighborhoodHero/schema.ts","../../src/sdks/NeighborhoodHero/index.tsx"],"sourcesContent":["export default \"__VITE_ASSET__U2YZxvNlcnuoWcGKwa9Wsw__\"","export default \"__VITE_ASSET__cLZLOsSELI_GmwKcVOKKRw__\"","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n image?: string;\n};\n\nexport type NeighborhoodHeroProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-hero-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import React, { useContext, useMemo } from \"react\";\nimport type { Geography } from \"@local-logic/client\";\nimport DesktopFallback from \"./assets/images/desktop_fallback.jpg\";\nimport MobileFallback from \"./assets/images/mobile_fallback.jpg\";\nimport {\n type NeighborhoodHeroProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\n\ninterface Location {\n label?: string;\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n isLoading: boolean;\n locale: \"en\" | \"fr\";\n geography?: Geography;\n neighborhoodImage: string | null;\n isFallbackImage: boolean;\n neighborhoodSummary?: string;\n};\n\nconst NeighborhoodHeroContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodHero = () => useContext(NeighborhoodHeroContext);\n\nconst NeighborhoodHeroProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const isMobile = useIsMobile();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n });\n\n const geography = useMemo(() => {\n const geographiesArray = Object.values(geographyData || {});\n\n return geographiesArray[0];\n }, [isGeographyLoading, geographyData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching,\n [isGeographyLoading, isProfilesFetching],\n );\n\n const neighborhoodImage = useMemo(() => {\n const lowercaseOptionsImageValue = (\n sdkState.options?.image || \"\"\n ).toLocaleLowerCase();\n\n // Always hide the image if the option is set to \"hide\"\n if (lowercaseOptionsImageValue === \"hide\") {\n return null;\n }\n\n // If the geography has an image, use it by default\n if (\n typeof geography?.image_url === \"string\" &&\n geography?.image_url.length > 0\n ) {\n return geography.image_url as string;\n }\n\n // If the image option is set to a string, use it as the image (unless the string is \"noFallback\" which is obviuosly not an image)\n if (\n typeof sdkState.options?.image === \"string\" &&\n lowercaseOptionsImageValue !== \"nofallback\" &&\n lowercaseOptionsImageValue.substring(0, 4) === \"http\"\n ) {\n return sdkState.options.image;\n }\n\n // No fallback image\n if (lowercaseOptionsImageValue === \"nofallback\") {\n return null;\n }\n\n // Fallback image based on the device\n return isMobile ? MobileFallback : DesktopFallback;\n }, [geography?.image_url, sdkState?.options?.image, isMobile]);\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n locale,\n geography,\n isFallbackImage:\n neighborhoodImage !== null &&\n [MobileFallback, DesktopFallback].includes(neighborhoodImage),\n neighborhoodImage,\n neighborhoodSummary: profilesData?.profiles.summary,\n }),\n [\n isLoading,\n locale,\n geography,\n neighborhoodImage,\n profilesData?.profiles?.summary,\n sdkState,\n ],\n );\n\n return (\n <NeighborhoodHeroContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHeroContext.Provider>\n );\n};\n\nexport { useNeighborhoodHero, NeighborhoodHeroProvider, type Location };\n","export const container = `\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n`;\n\nexport const gradientContainer = `\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n`;\n\nexport const icon = `\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n`;\n\nexport const microLocation = `\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n`;\n\nexport const macroLocation = `\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n`;\n","import React, { useMemo } from \"react\";\n\nimport { MapPinIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Header = () => {\n const { isLoading, locale, geography, neighborhoodImage, isFallbackImage } =\n useNeighborhoodHero();\n\n const style = useMemo(() => {\n if (!neighborhoodImage) {\n return {};\n }\n\n return {\n backgroundImage: `url(\"${neighborhoodImage}\")`,\n };\n }, [neighborhoodImage]);\n\n if (isLoading) {\n return null;\n }\n\n return (\n <div\n data-testid=\"header-container\"\n className={styles.container}\n style={style}\n data-has-image={neighborhoodImage !== null}\n data-use-backdrop={!isFallbackImage && neighborhoodImage !== null}\n >\n <div className={styles.gradientContainer}>\n <MapPinIcon className={styles.icon} />\n <h1 data-testid=\"micro-location\" className={styles.microLocation}>\n {geography?.name?.[locale]}\n </h1>\n {typeof geography !== \"undefined\" &&\n geography?.level < 30 &&\n typeof geography.city !== \"undefined\" && (\n <div data-testid=\"macro-location\" className={styles.macroLocation}>\n {geography?.city?.[locale]}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const container = `px-6 pt-6 pb-px lg:p-6 bg-gray-150/40`;\n\nexport const title = `\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n`;\n\nexport const text = `\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n`;\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Summary = () => {\n const { t } = useTranslation(\"neighborhoodHero\");\n const { neighborhoodSummary, geography } = useNeighborhoodHero();\n\n if (!neighborhoodSummary) {\n return null;\n }\n\n return (\n <div className={styles.container} data-testid=\"summary-container\">\n <h2 className={styles.title} data-testid=\"summary-title\">\n {t(\"summaryTitle\", {\n context: geography && geography.level >= 30 ? \"area\" : undefined,\n })}\n </h2>\n <p className={styles.text} data-testid=\"summary-description\">\n {neighborhoodSummary}\n </p>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Header } from \"../Header\";\nimport { Summary } from \"../Summary\";\n\nexport const Content = () => (\n <>\n <Header />\n <Summary />\n </>\n);\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n image: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport type { NeighborhoodHeroProps } from \"./types\";\nimport { NeighborhoodHeroProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHero = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Hero\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HERO}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HERO,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHeroProvider>\n <Content />\n </NeighborhoodHeroProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHero;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NeighborhoodHero-D4aRwf3B.js","names":[],"sources":["../../src/sdks/NeighborhoodHero/assets/images/desktop_fallback.jpg","../../src/sdks/NeighborhoodHero/assets/images/mobile_fallback.jpg","../../src/sdks/NeighborhoodHero/types.ts","../../src/sdks/NeighborhoodHero/context.tsx","../../src/sdks/NeighborhoodHero/components/Header/styles.ts","../../src/sdks/NeighborhoodHero/components/Header/index.tsx","../../src/sdks/NeighborhoodHero/components/Summary/styles.ts","../../src/sdks/NeighborhoodHero/components/Summary/index.tsx","../../src/sdks/NeighborhoodHero/components/Content/index.tsx","../../src/sdks/NeighborhoodHero/schema.ts","../../src/sdks/NeighborhoodHero/index.tsx"],"sourcesContent":["export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","export default \"__VITE_ASSET__DUq8YoikZLXEejpNZ1KQvg__\"","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n image?: string;\n};\n\nexport type NeighborhoodHeroProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-hero-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import React, { useContext, useMemo } from \"react\";\nimport type { Geography } from \"@local-logic/client\";\nimport DesktopFallback from \"./assets/images/desktop_fallback.jpg\";\nimport MobileFallback from \"./assets/images/mobile_fallback.jpg\";\nimport {\n type NeighborhoodHeroProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\n\ninterface Location {\n label?: string;\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n isLoading: boolean;\n locale: \"en\" | \"fr\";\n geography?: Geography;\n neighborhoodImage: string | null;\n isFallbackImage: boolean;\n neighborhoodSummary?: string;\n};\n\nconst NeighborhoodHeroContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodHero = () => useContext(NeighborhoodHeroContext);\n\nconst NeighborhoodHeroProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const isMobile = useIsMobile();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n });\n\n const geography = useMemo(() => {\n const geographiesArray = Object.values(geographyData || {});\n\n return geographiesArray[0];\n }, [isGeographyLoading, geographyData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching,\n [isGeographyLoading, isProfilesFetching],\n );\n\n const neighborhoodImage = useMemo(() => {\n const lowercaseOptionsImageValue = (\n sdkState.options?.image || \"\"\n ).toLocaleLowerCase();\n\n // Always hide the image if the option is set to \"hide\"\n if (lowercaseOptionsImageValue === \"hide\") {\n return null;\n }\n\n // If the geography has an image, use it by default\n if (\n typeof geography?.image_url === \"string\" &&\n geography?.image_url.length > 0\n ) {\n return geography.image_url as string;\n }\n\n // If the image option is set to a string, use it as the image (unless the string is \"noFallback\" which is obviuosly not an image)\n if (\n typeof sdkState.options?.image === \"string\" &&\n lowercaseOptionsImageValue !== \"nofallback\" &&\n lowercaseOptionsImageValue.substring(0, 4) === \"http\"\n ) {\n return sdkState.options.image;\n }\n\n // No fallback image\n if (lowercaseOptionsImageValue === \"nofallback\") {\n return null;\n }\n\n // Fallback image based on the device\n return isMobile ? MobileFallback : DesktopFallback;\n }, [geography?.image_url, sdkState?.options?.image, isMobile]);\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n locale,\n geography,\n isFallbackImage:\n neighborhoodImage !== null &&\n [MobileFallback, DesktopFallback].includes(neighborhoodImage),\n neighborhoodImage,\n neighborhoodSummary: profilesData?.profiles.summary,\n }),\n [\n isLoading,\n locale,\n geography,\n neighborhoodImage,\n profilesData?.profiles?.summary,\n sdkState,\n ],\n );\n\n return (\n <NeighborhoodHeroContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHeroContext.Provider>\n );\n};\n\nexport { useNeighborhoodHero, NeighborhoodHeroProvider, type Location };\n","export const container = `\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n`;\n\nexport const gradientContainer = `\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n`;\n\nexport const icon = `\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n`;\n\nexport const microLocation = `\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n`;\n\nexport const macroLocation = `\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n`;\n","import React, { useMemo } from \"react\";\n\nimport { MapPinIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Header = () => {\n const { isLoading, locale, geography, neighborhoodImage, isFallbackImage } =\n useNeighborhoodHero();\n\n const style = useMemo(() => {\n if (!neighborhoodImage) {\n return {};\n }\n\n return {\n backgroundImage: `url(\"${neighborhoodImage}\")`,\n };\n }, [neighborhoodImage]);\n\n if (isLoading) {\n return null;\n }\n\n return (\n <div\n data-testid=\"header-container\"\n className={styles.container}\n style={style}\n data-has-image={neighborhoodImage !== null}\n data-use-backdrop={!isFallbackImage && neighborhoodImage !== null}\n >\n <div className={styles.gradientContainer}>\n <MapPinIcon className={styles.icon} />\n <h1 data-testid=\"micro-location\" className={styles.microLocation}>\n {geography?.name?.[locale]}\n </h1>\n {typeof geography !== \"undefined\" &&\n geography?.level < 30 &&\n typeof geography.city !== \"undefined\" && (\n <div data-testid=\"macro-location\" className={styles.macroLocation}>\n {geography?.city?.[locale]}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const container = `px-6 pt-6 pb-px lg:p-6 bg-gray-150/40`;\n\nexport const title = `\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n`;\n\nexport const text = `\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n`;\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Summary = () => {\n const { t } = useTranslation(\"neighborhoodHero\");\n const { neighborhoodSummary, geography } = useNeighborhoodHero();\n\n if (!neighborhoodSummary) {\n return null;\n }\n\n return (\n <div className={styles.container} data-testid=\"summary-container\">\n <h2 className={styles.title} data-testid=\"summary-title\">\n {t(\"summaryTitle\", {\n context: geography && geography.level >= 30 ? \"area\" : undefined,\n })}\n </h2>\n <p className={styles.text} data-testid=\"summary-description\">\n {neighborhoodSummary}\n </p>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Header } from \"../Header\";\nimport { Summary } from \"../Summary\";\n\nexport const Content = () => (\n <>\n <Header />\n <Summary />\n </>\n);\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n image: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport type { NeighborhoodHeroProps } from \"./types\";\nimport { NeighborhoodHeroProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHero = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Hero\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HERO}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HERO,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHeroProvider>\n <Content />\n </NeighborhoodHeroProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHero;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./sdks-legacy-CWRbdzCl.js","./MapPin.es-legacy-1txsfaDD.js","./index-legacy-DmO1-JVm.js","./useGeographies-legacy-BG5-avO1.js","./globals-legacy-DrNe10l0.js","./ResizeWrapper-legacy-Cnj-xOLf.js","./ValidateOptions-legacy-DNVt370k.js","./useIsMobile-legacy-DTVBSpF3.js","./useProfiles-legacy-Cg-yR2CE.js"],function(e,o){var l,n,a,t,i,s,d,r,u,g,c,p,v,m,h,x,b,y,f,j,k,I,E,O,_,w,D,M,N,S,H,K;return{setters:[function(e){l=e.a},function(e){n=e.l},function(e){a=e.a,t=e.c,i=e.d,s=e.f,d=e.g,r=e.n,u=e.o,g=e.r,c=e.t,p=e.u},function(e){v=e.t},function(e){m=e.Y,h=e.i,x=e.n},function(e){b=e.t},function(e){},function(e){y=e.t},function(e){f=e.t},function(e){j=e.t},function(e){k=e.t}],execute:function(){I=l(n(),1),E=function(e){return e.SDK_VIEWED="neighborhood-hero-Viewed",e}({}),O=function(e){return e.SDK_VIEWED="sdk_viewed",e}({}),_=m(),w=I.createContext({}),D=()=>(0,I.useContext)(w),M=({children:e})=>{var o,l,n,a,t,i,s,d,r,g,c;const{sdkState:p}=x(),v=(null===(o=p.globalOptions)||void 0===o?void 0:o.locale)||"en",m=u(),y=j();h(()=>{m.postEvent({eventType:E.SDK_VIEWED}),m.trackAnalyticsEvent({eventName:O.SDK_VIEWED})});const{isLoading:f,data:D}=b({geogID:null===(l=p.options)||void 0===l?void 0:l.geographyId,location:{lat:null===(n=p.options)||void 0===n?void 0:n.lat,lng:null===(a=p.options)||void 0===a?void 0:a.lng},externalId:null==p||null===(t=p.globalOptions)||void 0===t?void 0:t.externalId}),{data:M,isFetching:N}=k({geogID:null===(i=p.options)||void 0===i?void 0:i.geographyId,location:{lat:null===(s=p.options)||void 0===s?void 0:s.lat,lng:null===(d=p.options)||void 0===d?void 0:d.lng},externalId:null==p||null===(r=p.globalOptions)||void 0===r?void 0:r.externalId}),S=(0,I.useMemo)(()=>Object.values(D||{})[0],[f,D]),H=(0,I.useMemo)(()=>f||N,[f,N]),K=(0,I.useMemo)(()=>{var e,o;const l=((null===(e=p.options)||void 0===e?void 0:e.image)||"").toLocaleLowerCase();return"hide"===l?null:"string"==typeof(null==S?void 0:S.image_url)&&(null==S?void 0:S.image_url.length)>0?S.image_url:"string"==typeof(null===(o=p.options)||void 0===o?void 0:o.image)&&"nofallback"!==l&&"http"===l.substring(0,4)?p.options.image:"nofallback"===l?null:y?"/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg":"/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"},[null==S?void 0:S.image_url,null==p||null===(g=p.options)||void 0===g?void 0:g.image,y]),V=(0,I.useMemo)(()=>({isLoading:H,locale:v,geography:S,isFallbackImage:null!==K&&["/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg","/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"].includes(K),neighborhoodImage:K,neighborhoodSummary:null==M?void 0:M.profiles.summary}),[H,v,S,K,null==M||null===(c=M.profiles)||void 0===c?void 0:c.summary,p]);return(0,_.jsx)(w.Provider,{value:V,children:e})},N=()=>{var e,o;const{isLoading:l,locale:n,geography:a,neighborhoodImage:t,isFallbackImage:i}=D(),s=(0,I.useMemo)(()=>t?{backgroundImage:`url("${t}")`}:{},[t]);return l?null:(0,_.jsx)("div",{"data-testid":"header-container",className:"\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n",style:s,"data-has-image":null!==t,"data-use-backdrop":!i&&null!==t,children:(0,_.jsxs)("div",{className:"\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n",children:[(0,_.jsx)(v,{className:"\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n"}),(0,_.jsx)("h1",{"data-testid":"micro-location",className:"\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n",children:null==a||null===(e=a.name)||void 0===e?void 0:e[n]}),void 0!==a&&(null==a?void 0:a.level)<30&&void 0!==a.city&&(0,_.jsx)("div",{"data-testid":"macro-location",className:"\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n",children:null==a||null===(o=a.city)||void 0===o?void 0:o[n]})]})})},S=()=>{const{t:e}=d("neighborhoodHero"),{neighborhoodSummary:o,geography:l}=D();return o?(0,_.jsxs)("div",{className:"px-6 pt-6 pb-px lg:p-6 bg-gray-150/40","data-testid":"summary-container",children:[(0,_.jsx)("h2",{className:"\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n","data-testid":"summary-title",children:e("summaryTitle",{context:l&&l.level>=30?"area":void 0})}),(0,_.jsx)("p",{className:"\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n","data-testid":"summary-description",children:o})]}):null},H=()=>(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(N,{}),(0,_.jsx)(S,{})]}),K=p({lat:i().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:i().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:s().optional(),image:s().optional()}).noUnknown(!0),t(r.neighborhoodWrap.key),e("default",()=>{var e,o,l,n,t,i,s;const{sdkState:d}=x(),u=j(),p=(null===(e=d.globalOptions)||void 0===e?void 0:e.locale)||"en",v=(0,I.useMemo)(()=>{var e,o,l,n;return null!==(e=d.options)&&void 0!==e&&e.geographyId?{geographyId:null===(o=d.options)||void 0===o?void 0:o.geographyId}:{lat:null===(l=d.options)||void 0===l?void 0:l.lat,lng:null===(n=d.options)||void 0===n?void 0:n.lng}},[null===(o=d.options)||void 0===o?void 0:o.lat,null===(l=d.options)||void 0===l?void 0:l.lng,null===(n=d.options)||void 0===n?void 0:n.geographyId]);return(0,_.jsx)(y,{children:(0,_.jsx)(f,{sdk:"Neighborhood Hero",schema:K,options:d.options,children:(0,_.jsx)(g,{environment:null===(t=d.globalOptions)||void 0===t||null===(t=t.environment)||void 0===t?void 0:t.api,apiKey:d.apiKey,appearance:null===(i=d.globalOptions)||void 0===i?void 0:i.appearance,locale:null===(s=d.globalOptions)||void 0===s?void 0:s.locale,product:c.NEIGHBORHOOD_HERO,children:(0,_.jsx)(a,{trackingPipelineSettings:{apiKey:d.apiKey||""},analyticsSettings:r.neighborhoodWrap,meta:{clientId:d.clientId,productName:c.NEIGHBORHOOD_HERO,productVersion:"1.24.55"},attributes:{location:v,host:d.location,host_url:document.referrer,locale:p,isMobile:u},flags:{isDebugMode:!1},children:(0,_.jsx)(M,{children:(0,_.jsx)(H,{})})})})})})})}}});
2
- //# sourceMappingURL=NeighborhoodHero-legacy-CkHlzf9Z.js.map
1
+ System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./sdks-legacy-D5at0_ei.js","./MapPin.es-legacy-1txsfaDD.js","./index-legacy-BLXZlVDd.js","./useGeographies-legacy-DEpCDAXO.js","./globals-legacy-DrNe10l0.js","./ResizeWrapper-legacy-DEHV95wF.js","./ValidateOptions-legacy-BKn8Z0iI.js","./useIsMobile-legacy-DLBT_3bY.js","./useProfiles-legacy-BssC6Fnx.js"],function(e,o){var l,n,a,t,i,s,d,r,u,g,c,p,v,m,h,x,b,y,f,j,k,I,E,O,_,w,D,M,N,S,H,K;return{setters:[function(e){l=e.a},function(e){n=e.l},function(e){a=e.a,t=e.c,i=e.d,s=e.f,d=e.g,r=e.n,u=e.o,g=e.r,c=e.t,p=e.u},function(e){v=e.t},function(e){m=e.Y,h=e.i,x=e.n},function(e){b=e.t},function(e){},function(e){y=e.t},function(e){f=e.t},function(e){j=e.t},function(e){k=e.t}],execute:function(){I=l(n(),1),E=function(e){return e.SDK_VIEWED="neighborhood-hero-Viewed",e}({}),O=function(e){return e.SDK_VIEWED="sdk_viewed",e}({}),_=m(),w=I.createContext({}),D=()=>(0,I.useContext)(w),M=({children:e})=>{var o,l,n,a,t,i,s,d,r,g,c;const{sdkState:p}=x(),v=(null===(o=p.globalOptions)||void 0===o?void 0:o.locale)||"en",m=u(),y=j();h(()=>{m.postEvent({eventType:E.SDK_VIEWED}),m.trackAnalyticsEvent({eventName:O.SDK_VIEWED})});const{isLoading:f,data:D}=b({geogID:null===(l=p.options)||void 0===l?void 0:l.geographyId,location:{lat:null===(n=p.options)||void 0===n?void 0:n.lat,lng:null===(a=p.options)||void 0===a?void 0:a.lng},externalId:null==p||null===(t=p.globalOptions)||void 0===t?void 0:t.externalId}),{data:M,isFetching:N}=k({geogID:null===(i=p.options)||void 0===i?void 0:i.geographyId,location:{lat:null===(s=p.options)||void 0===s?void 0:s.lat,lng:null===(d=p.options)||void 0===d?void 0:d.lng},externalId:null==p||null===(r=p.globalOptions)||void 0===r?void 0:r.externalId}),S=(0,I.useMemo)(()=>Object.values(D||{})[0],[f,D]),H=(0,I.useMemo)(()=>f||N,[f,N]),K=(0,I.useMemo)(()=>{var e,o;const l=((null===(e=p.options)||void 0===e?void 0:e.image)||"").toLocaleLowerCase();return"hide"===l?null:"string"==typeof(null==S?void 0:S.image_url)&&(null==S?void 0:S.image_url.length)>0?S.image_url:"string"==typeof(null===(o=p.options)||void 0===o?void 0:o.image)&&"nofallback"!==l&&"http"===l.substring(0,4)?p.options.image:"nofallback"===l?null:y?"/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg":"/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"},[null==S?void 0:S.image_url,null==p||null===(g=p.options)||void 0===g?void 0:g.image,y]),V=(0,I.useMemo)(()=>({isLoading:H,locale:v,geography:S,isFallbackImage:null!==K&&["/sdks-app/v1/assets/mobile_fallback-DExTxyjy.jpg","/sdks-app/v1/assets/desktop_fallback-Hx4IEAqY.jpg"].includes(K),neighborhoodImage:K,neighborhoodSummary:null==M?void 0:M.profiles.summary}),[H,v,S,K,null==M||null===(c=M.profiles)||void 0===c?void 0:c.summary,p]);return(0,_.jsx)(w.Provider,{value:V,children:e})},N=()=>{var e,o;const{isLoading:l,locale:n,geography:a,neighborhoodImage:t,isFallbackImage:i}=D(),s=(0,I.useMemo)(()=>t?{backgroundImage:`url("${t}")`}:{},[t]);return l?null:(0,_.jsx)("div",{"data-testid":"header-container",className:"\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n",style:s,"data-has-image":null!==t,"data-use-backdrop":!i&&null!==t,children:(0,_.jsxs)("div",{className:"\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n",children:[(0,_.jsx)(v,{className:"\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n"}),(0,_.jsx)("h1",{"data-testid":"micro-location",className:"\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n",children:null==a||null===(e=a.name)||void 0===e?void 0:e[n]}),void 0!==a&&(null==a?void 0:a.level)<30&&void 0!==a.city&&(0,_.jsx)("div",{"data-testid":"macro-location",className:"\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n",children:null==a||null===(o=a.city)||void 0===o?void 0:o[n]})]})})},S=()=>{const{t:e}=d("neighborhoodHero"),{neighborhoodSummary:o,geography:l}=D();return o?(0,_.jsxs)("div",{className:"px-6 pt-6 pb-px lg:p-6 bg-gray-150/40","data-testid":"summary-container",children:[(0,_.jsx)("h2",{className:"\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n","data-testid":"summary-title",children:e("summaryTitle",{context:l&&l.level>=30?"area":void 0})}),(0,_.jsx)("p",{className:"\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n","data-testid":"summary-description",children:o})]}):null},H=()=>(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(N,{}),(0,_.jsx)(S,{})]}),K=p({lat:i().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:i().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:s().optional(),image:s().optional()}).noUnknown(!0),t(r.neighborhoodWrap.key),e("default",()=>{var e,o,l,n,t,i,s;const{sdkState:d}=x(),u=j(),p=(null===(e=d.globalOptions)||void 0===e?void 0:e.locale)||"en",v=(0,I.useMemo)(()=>{var e,o,l,n;return null!==(e=d.options)&&void 0!==e&&e.geographyId?{geographyId:null===(o=d.options)||void 0===o?void 0:o.geographyId}:{lat:null===(l=d.options)||void 0===l?void 0:l.lat,lng:null===(n=d.options)||void 0===n?void 0:n.lng}},[null===(o=d.options)||void 0===o?void 0:o.lat,null===(l=d.options)||void 0===l?void 0:l.lng,null===(n=d.options)||void 0===n?void 0:n.geographyId]);return(0,_.jsx)(y,{children:(0,_.jsx)(f,{sdk:"Neighborhood Hero",schema:K,options:d.options,children:(0,_.jsx)(g,{environment:null===(t=d.globalOptions)||void 0===t||null===(t=t.environment)||void 0===t?void 0:t.api,apiKey:d.apiKey,appearance:null===(i=d.globalOptions)||void 0===i?void 0:i.appearance,locale:null===(s=d.globalOptions)||void 0===s?void 0:s.locale,product:c.NEIGHBORHOOD_HERO,children:(0,_.jsx)(a,{trackingPipelineSettings:{apiKey:d.apiKey||""},analyticsSettings:r.neighborhoodWrap,meta:{clientId:d.clientId,productName:c.NEIGHBORHOOD_HERO,productVersion:"1.24.57"},attributes:{location:v,host:d.location,host_url:document.referrer,locale:p,isMobile:u},flags:{isDebugMode:!1},children:(0,_.jsx)(M,{children:(0,_.jsx)(H,{})})})})})})})}}});
2
+ //# sourceMappingURL=NeighborhoodHero-legacy-BpoqM_Oa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodHero-legacy-CkHlzf9Z.js","names":[],"sources":["../../src/sdks/NeighborhoodHero/assets/images/desktop_fallback.jpg","../../src/sdks/NeighborhoodHero/assets/images/mobile_fallback.jpg","../../src/sdks/NeighborhoodHero/types.ts","../../src/sdks/NeighborhoodHero/context.tsx","../../src/sdks/NeighborhoodHero/components/Header/styles.ts","../../src/sdks/NeighborhoodHero/components/Header/index.tsx","../../src/sdks/NeighborhoodHero/components/Summary/styles.ts","../../src/sdks/NeighborhoodHero/components/Summary/index.tsx","../../src/sdks/NeighborhoodHero/components/Content/index.tsx","../../src/sdks/NeighborhoodHero/schema.ts","../../src/sdks/NeighborhoodHero/index.tsx"],"sourcesContent":["export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","export default \"__VITE_ASSET__DUq8YoikZLXEejpNZ1KQvg__\"","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n image?: string;\n};\n\nexport type NeighborhoodHeroProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-hero-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import React, { useContext, useMemo } from \"react\";\nimport type { Geography } from \"@local-logic/client\";\nimport DesktopFallback from \"./assets/images/desktop_fallback.jpg\";\nimport MobileFallback from \"./assets/images/mobile_fallback.jpg\";\nimport {\n type NeighborhoodHeroProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\n\ninterface Location {\n label?: string;\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n isLoading: boolean;\n locale: \"en\" | \"fr\";\n geography?: Geography;\n neighborhoodImage: string | null;\n isFallbackImage: boolean;\n neighborhoodSummary?: string;\n};\n\nconst NeighborhoodHeroContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodHero = () => useContext(NeighborhoodHeroContext);\n\nconst NeighborhoodHeroProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const isMobile = useIsMobile();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n });\n\n const geography = useMemo(() => {\n const geographiesArray = Object.values(geographyData || {});\n\n return geographiesArray[0];\n }, [isGeographyLoading, geographyData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching,\n [isGeographyLoading, isProfilesFetching],\n );\n\n const neighborhoodImage = useMemo(() => {\n const lowercaseOptionsImageValue = (\n sdkState.options?.image || \"\"\n ).toLocaleLowerCase();\n\n // Always hide the image if the option is set to \"hide\"\n if (lowercaseOptionsImageValue === \"hide\") {\n return null;\n }\n\n // If the geography has an image, use it by default\n if (\n typeof geography?.image_url === \"string\" &&\n geography?.image_url.length > 0\n ) {\n return geography.image_url as string;\n }\n\n // If the image option is set to a string, use it as the image (unless the string is \"noFallback\" which is obviuosly not an image)\n if (\n typeof sdkState.options?.image === \"string\" &&\n lowercaseOptionsImageValue !== \"nofallback\" &&\n lowercaseOptionsImageValue.substring(0, 4) === \"http\"\n ) {\n return sdkState.options.image;\n }\n\n // No fallback image\n if (lowercaseOptionsImageValue === \"nofallback\") {\n return null;\n }\n\n // Fallback image based on the device\n return isMobile ? MobileFallback : DesktopFallback;\n }, [geography?.image_url, sdkState?.options?.image, isMobile]);\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n locale,\n geography,\n isFallbackImage:\n neighborhoodImage !== null &&\n [MobileFallback, DesktopFallback].includes(neighborhoodImage),\n neighborhoodImage,\n neighborhoodSummary: profilesData?.profiles.summary,\n }),\n [\n isLoading,\n locale,\n geography,\n neighborhoodImage,\n profilesData?.profiles?.summary,\n sdkState,\n ],\n );\n\n return (\n <NeighborhoodHeroContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHeroContext.Provider>\n );\n};\n\nexport { useNeighborhoodHero, NeighborhoodHeroProvider, type Location };\n","export const container = `\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n`;\n\nexport const gradientContainer = `\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n`;\n\nexport const icon = `\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n`;\n\nexport const microLocation = `\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n`;\n\nexport const macroLocation = `\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n`;\n","import React, { useMemo } from \"react\";\n\nimport { MapPinIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Header = () => {\n const { isLoading, locale, geography, neighborhoodImage, isFallbackImage } =\n useNeighborhoodHero();\n\n const style = useMemo(() => {\n if (!neighborhoodImage) {\n return {};\n }\n\n return {\n backgroundImage: `url(\"${neighborhoodImage}\")`,\n };\n }, [neighborhoodImage]);\n\n if (isLoading) {\n return null;\n }\n\n return (\n <div\n data-testid=\"header-container\"\n className={styles.container}\n style={style}\n data-has-image={neighborhoodImage !== null}\n data-use-backdrop={!isFallbackImage && neighborhoodImage !== null}\n >\n <div className={styles.gradientContainer}>\n <MapPinIcon className={styles.icon} />\n <h1 data-testid=\"micro-location\" className={styles.microLocation}>\n {geography?.name?.[locale]}\n </h1>\n {typeof geography !== \"undefined\" &&\n geography?.level < 30 &&\n typeof geography.city !== \"undefined\" && (\n <div data-testid=\"macro-location\" className={styles.macroLocation}>\n {geography?.city?.[locale]}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const container = `px-6 pt-6 pb-px lg:p-6 bg-gray-150/40`;\n\nexport const title = `\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n`;\n\nexport const text = `\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n`;\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Summary = () => {\n const { t } = useTranslation(\"neighborhoodHero\");\n const { neighborhoodSummary, geography } = useNeighborhoodHero();\n\n if (!neighborhoodSummary) {\n return null;\n }\n\n return (\n <div className={styles.container} data-testid=\"summary-container\">\n <h2 className={styles.title} data-testid=\"summary-title\">\n {t(\"summaryTitle\", {\n context: geography && geography.level >= 30 ? \"area\" : undefined,\n })}\n </h2>\n <p className={styles.text} data-testid=\"summary-description\">\n {neighborhoodSummary}\n </p>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Header } from \"../Header\";\nimport { Summary } from \"../Summary\";\n\nexport const Content = () => (\n <>\n <Header />\n <Summary />\n </>\n);\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n image: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport type { NeighborhoodHeroProps } from \"./types\";\nimport { NeighborhoodHeroProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHero = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Hero\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HERO}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HERO,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHeroProvider>\n <Content />\n </NeighborhoodHeroProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHero;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NeighborhoodHero-legacy-BpoqM_Oa.js","names":[],"sources":["../../src/sdks/NeighborhoodHero/assets/images/desktop_fallback.jpg","../../src/sdks/NeighborhoodHero/assets/images/mobile_fallback.jpg","../../src/sdks/NeighborhoodHero/types.ts","../../src/sdks/NeighborhoodHero/context.tsx","../../src/sdks/NeighborhoodHero/components/Header/styles.ts","../../src/sdks/NeighborhoodHero/components/Header/index.tsx","../../src/sdks/NeighborhoodHero/components/Summary/styles.ts","../../src/sdks/NeighborhoodHero/components/Summary/index.tsx","../../src/sdks/NeighborhoodHero/components/Content/index.tsx","../../src/sdks/NeighborhoodHero/schema.ts","../../src/sdks/NeighborhoodHero/index.tsx"],"sourcesContent":["export default \"__VITE_ASSET__DUq8YoikZLXEejpNZ1KQvg__\"","export default \"__VITE_ASSET__$oUiuAXR7gZMKRQU56HW2w__\"","import { SDKOptions } from \"~/types/options\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n image?: string;\n};\n\nexport type NeighborhoodHeroProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-hero-Viewed\",\n}\n\n// Why are these named differently?\n// https://docs.mixpanel.com/docs/data-structure/events-and-properties#name-events-and-properties-consistently\nexport enum AnalyticsEvents {\n SDK_VIEWED = \"sdk_viewed\",\n}\n","import React, { useContext, useMemo } from \"react\";\nimport type { Geography } from \"@local-logic/client\";\nimport DesktopFallback from \"./assets/images/desktop_fallback.jpg\";\nimport MobileFallback from \"./assets/images/mobile_fallback.jpg\";\nimport {\n type NeighborhoodHeroProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\n\ninterface Location {\n label?: string;\n lat: number;\n lng: number;\n}\n\nexport type DefaultContext = {\n isLoading: boolean;\n locale: \"en\" | \"fr\";\n geography?: Geography;\n neighborhoodImage: string | null;\n isFallbackImage: boolean;\n neighborhoodSummary?: string;\n};\n\nconst NeighborhoodHeroContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\n\nconst useNeighborhoodHero = () => useContext(NeighborhoodHeroContext);\n\nconst NeighborhoodHeroProvider = ({\n children,\n}: {\n children: React.JSX.Element;\n}) => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\n const tracking = useTracking();\n const isMobile = useIsMobile();\n\n useEffectOnce(() => {\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SDK_VIEWED,\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SDK_VIEWED,\n });\n });\n\n const { isLoading: isGeographyLoading, data: geographyData } = useGeographies(\n {\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: sdkState.options?.geographyId,\n location: {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n },\n externalId: sdkState?.globalOptions?.externalId,\n });\n\n const geography = useMemo(() => {\n const geographiesArray = Object.values(geographyData || {});\n\n return geographiesArray[0];\n }, [isGeographyLoading, geographyData]);\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching,\n [isGeographyLoading, isProfilesFetching],\n );\n\n const neighborhoodImage = useMemo(() => {\n const lowercaseOptionsImageValue = (\n sdkState.options?.image || \"\"\n ).toLocaleLowerCase();\n\n // Always hide the image if the option is set to \"hide\"\n if (lowercaseOptionsImageValue === \"hide\") {\n return null;\n }\n\n // If the geography has an image, use it by default\n if (\n typeof geography?.image_url === \"string\" &&\n geography?.image_url.length > 0\n ) {\n return geography.image_url as string;\n }\n\n // If the image option is set to a string, use it as the image (unless the string is \"noFallback\" which is obviuosly not an image)\n if (\n typeof sdkState.options?.image === \"string\" &&\n lowercaseOptionsImageValue !== \"nofallback\" &&\n lowercaseOptionsImageValue.substring(0, 4) === \"http\"\n ) {\n return sdkState.options.image;\n }\n\n // No fallback image\n if (lowercaseOptionsImageValue === \"nofallback\") {\n return null;\n }\n\n // Fallback image based on the device\n return isMobile ? MobileFallback : DesktopFallback;\n }, [geography?.image_url, sdkState?.options?.image, isMobile]);\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n locale,\n geography,\n isFallbackImage:\n neighborhoodImage !== null &&\n [MobileFallback, DesktopFallback].includes(neighborhoodImage),\n neighborhoodImage,\n neighborhoodSummary: profilesData?.profiles.summary,\n }),\n [\n isLoading,\n locale,\n geography,\n neighborhoodImage,\n profilesData?.profiles?.summary,\n sdkState,\n ],\n );\n\n return (\n <NeighborhoodHeroContext.Provider value={contextValue}>\n {children}\n </NeighborhoodHeroContext.Provider>\n );\n};\n\nexport { useNeighborhoodHero, NeighborhoodHeroProvider, type Location };\n","export const container = `\n h-72 w-full\n bg-cover bg-no-repeat bg-center\n group\n`;\n\nexport const gradientContainer = `\n h-full w-full px-6 pt-6 pb-px lg:p-6\n flex flex-col gap-6 text-center justify-center\n\n group-data-[has-image=false]:text-left\n group-data-[use-backdrop=true]:bg-base-black/30\n`;\n\nexport const icon = `\n w-12 h-12 text-base-white mx-auto\n\n group-data-[use-backdrop=false]:text-primary-100\n group-data-[has-image=false]:mx-0\n`;\n\nexport const microLocation = `\n text-base-white text-4xl md:text-5xl font-bold\n group-data-[use-backdrop=false]:text-primary-100\n`;\n\nexport const macroLocation = `\n text-base-white text-2xl md:text-4xl -mt-3\n group-data-[use-backdrop=false]:text-primary-100\n`;\n","import React, { useMemo } from \"react\";\n\nimport { MapPinIcon } from \"@phosphor-icons/react\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Header = () => {\n const { isLoading, locale, geography, neighborhoodImage, isFallbackImage } =\n useNeighborhoodHero();\n\n const style = useMemo(() => {\n if (!neighborhoodImage) {\n return {};\n }\n\n return {\n backgroundImage: `url(\"${neighborhoodImage}\")`,\n };\n }, [neighborhoodImage]);\n\n if (isLoading) {\n return null;\n }\n\n return (\n <div\n data-testid=\"header-container\"\n className={styles.container}\n style={style}\n data-has-image={neighborhoodImage !== null}\n data-use-backdrop={!isFallbackImage && neighborhoodImage !== null}\n >\n <div className={styles.gradientContainer}>\n <MapPinIcon className={styles.icon} />\n <h1 data-testid=\"micro-location\" className={styles.microLocation}>\n {geography?.name?.[locale]}\n </h1>\n {typeof geography !== \"undefined\" &&\n geography?.level < 30 &&\n typeof geography.city !== \"undefined\" && (\n <div data-testid=\"macro-location\" className={styles.macroLocation}>\n {geography?.city?.[locale]}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const container = `px-6 pt-6 pb-px lg:p-6 bg-gray-150/40`;\n\nexport const title = `\n text-primary-100 text-2xl font-semibold leading-7\n mb-2 lg:mb-2.5\n`;\n\nexport const text = `\n text-base-black font-normal\n leading-5 lg:leading-6\n text-sm lg:text-lg\n`;\n","import React from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport * as styles from \"./styles\";\nimport { useNeighborhoodHero } from \"~/sdks/NeighborhoodHero/context\";\n\nexport const Summary = () => {\n const { t } = useTranslation(\"neighborhoodHero\");\n const { neighborhoodSummary, geography } = useNeighborhoodHero();\n\n if (!neighborhoodSummary) {\n return null;\n }\n\n return (\n <div className={styles.container} data-testid=\"summary-container\">\n <h2 className={styles.title} data-testid=\"summary-title\">\n {t(\"summaryTitle\", {\n context: geography && geography.level >= 30 ? \"area\" : undefined,\n })}\n </h2>\n <p className={styles.text} data-testid=\"summary-description\">\n {neighborhoodSummary}\n </p>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Header } from \"../Header\";\nimport { Summary } from \"../Summary\";\n\nexport const Content = () => (\n <>\n <Header />\n <Summary />\n </>\n);\n","import { ObjectSchema, number, object, string } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n image: string().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport type { NeighborhoodHeroProps } from \"./types\";\nimport { NeighborhoodHeroProvider } from \"./context\";\nimport { Content } from \"./components/Content\";\nimport { schema } from \"./schema\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\nimport ResizeWrapper from \"~/components/ResizeWrapper\";\nimport { ValidateOptions } from \"~/components/ValidateOptions\";\nimport { LocalLogicProvider } from \"~/context/LocalLogicProvider\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport useIsMobile from \"~/hooks/useIsMobile\";\nimport { ProductNames } from \"~/types\";\nimport { ANALYTICS_SETTINGS } from \"~/constants/analytics\";\n\ninitializeAnalytics(ANALYTICS_SETTINGS.neighborhoodWrap.key);\n\nconst NeighborhoodHero = () => {\n const { sdkState } = useStateManagerContext<NeighborhoodHeroProps>();\n const isMobile = useIsMobile();\n const locale = sdkState.globalOptions?.locale || \"en\";\n\n const location = useMemo(() => {\n if (sdkState.options?.geographyId) {\n return {\n geographyId: sdkState.options?.geographyId,\n };\n }\n\n return {\n lat: sdkState.options?.lat,\n lng: sdkState.options?.lng,\n };\n }, [\n sdkState.options?.lat,\n sdkState.options?.lng,\n sdkState.options?.geographyId,\n ]);\n\n return (\n <ResizeWrapper>\n <ValidateOptions\n sdk=\"Neighborhood Hero\"\n schema={schema}\n options={sdkState.options!}\n >\n <LocalLogicProvider\n environment={sdkState.globalOptions?.environment?.api}\n apiKey={sdkState.apiKey}\n appearance={sdkState.globalOptions?.appearance}\n locale={sdkState.globalOptions?.locale}\n product={ProductNames.NEIGHBORHOOD_HERO}\n >\n <TrackingProvider\n trackingPipelineSettings={{\n apiKey: sdkState.apiKey || \"\",\n }}\n analyticsSettings={ANALYTICS_SETTINGS.neighborhoodWrap}\n meta={{\n clientId: sdkState.clientId,\n productName: ProductNames.NEIGHBORHOOD_HERO,\n productVersion: FULL_APP_VERSION,\n }}\n attributes={{\n location,\n host: sdkState.location,\n host_url: document.referrer,\n locale,\n isMobile,\n }}\n flags={{\n isDebugMode:\n import.meta.env.VITE_TRACKING_PIPELINE_DEBUG === \"true\",\n }}\n >\n <NeighborhoodHeroProvider>\n <Content />\n </NeighborhoodHeroProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodHero;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./sdks-legacy-CWRbdzCl.js","./ScoreIcon-legacy-iLznJMpz.js","./SpinnerGap.es-legacy-36N4tZZX.js","./index-legacy-DmO1-JVm.js","./useGeographies-legacy-BG5-avO1.js","./globals-legacy-DrNe10l0.js","./ResizeWrapper-legacy-Cnj-xOLf.js","./ValidateOptions-legacy-DNVt370k.js","./useIsMobile-legacy-DTVBSpF3.js","./useScores-legacy-DE5QSjbJ.js","./TitleHeader-legacy-BPZzovWy.js","./NoDataContent-legacy-C6bZD_ML.js"],function(i,e){var t,o,n,a,l,s,r,d,g,u,h,c,p,v,m,y,f,x,j,b,I,w,N,H,S,D,M,O,k,E,_,L,G,K,V,W,T,q,C,R,B,F,P;function $({isLoading:i=!1,score:e}){return(0,_.jsx)("div",{className:V,children:(0,_.jsxs)("div",{className:W,children:[i&&(0,_.jsx)(m,{className:T}),!i&&e&&(0,_.jsx)(v,{score:e,className:T})]})})}function z({score:i}){const{t:e}=r(["neighborhoodHighlights","common"]);return(0,_.jsxs)("div",{"data-testid":`highlight-content-${i}`,className:q,children:[(0,_.jsx)("p",{"data-testid":"highlight-title",className:C,children:(0,_.jsx)("span",{children:e("highlight.title")})}),(0,_.jsx)("p",{"data-testid":"highlight-pill",className:R,children:i&&e(`common:scores.${i}.title`)})]})}function A(){const{t:i}=r("neighborhoodHighlights"),{isLoading:e,scores:t}=G(),o=(0,D.useMemo)(()=>e||!t?[]:function(i){const e=[];return void 0===i||E.map(e=>{var t;return{scoreName:e,value:Math.round(10*Number(null===(t=i[e])||void 0===t?void 0:t.value))/10*2}}).filter(i=>i.value>7).sort((i,e)=>i.value<e.value?1:-1).slice(0,3).map(i=>e.push(i.scoreName)),e}(t),[t,e]);return e||0!==o.length?(0,_.jsx)("div",{"data-testid":"highlights-container",className:F,children:(e?[1,2,3]:o).map((i,t)=>(0,_.jsx)(B,{isLoading:e,score:"number"!=typeof i?i:void 0},t))}):(0,_.jsx)(S,{text:i("noData")})}function U(){const{t:i}=r("neighborhoodHighlights"),{title:e}=G();return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(H,{title:"string"==typeof e||!1===e?e:i("title")}),(0,_.jsx)(A,{})]})}return{setters:[function(i){t=i.a},function(i){o=i.l},function(i){n=i.a,a=i.c,l=i.d,s=i.f,r=i.g,d=i.m,g=i.n,u=i.o,h=i.r,c=i.t,p=i.u},function(i){v=i.t},function(i){m=i.t},function(i){y=i.Y,f=i.i,x=i.n},function(i){j=i.t},function(i){},function(i){b=i.t},function(i){I=i.t},function(i){w=i.t},function(i){N=i.t},function(i){H=i.t},function(i){S=i.t}],execute:function(){D=t(o(),1),M=function(i){return i.SDK_VIEWED="neighborhood-highlights-Viewed",i}({}),O=function(i){return i.SDK_VIEWED="sdk_viewed",i}({}),E=[...(k={transport:["pedestrian_friendly","car_friendly","transit_friendly","cycling_friendly"],services:["groceries","shopping","restaurants","cafes"],character:["quiet","parks","vibrant","nightlife"]}).transport,...k.services,...k.character],_=y(),L=D.createContext({}),G=()=>(0,D.useContext)(L),K=({children:i})=>{var e,t,o,n,a,l,s;const{sdkState:r}=x(),d=u();f(()=>{d.postEvent({eventType:M.SDK_VIEWED}),d.trackAnalyticsEvent({eventName:O.SDK_VIEWED})});const{isLoading:g,data:h}=j({location:{lat:void 0===(null===(e=r.options)||void 0===e?void 0:e.geographyId)?null===(t=r.options)||void 0===t?void 0:t.lat:void 0,lng:void 0===(null===(o=r.options)||void 0===o?void 0:o.geographyId)?null===(n=r.options)||void 0===n?void 0:n.lng:void 0},externalId:null==r||null===(a=r.globalOptions)||void 0===a?void 0:a.externalId}),{data:c,isFetching:p}=N({geographyId:(0,D.useMemo)(()=>{var i;return void 0!==(null===(i=r.options)||void 0===i?void 0:i.geographyId)?r.options.geographyId:Object.keys(h||{})[0]},[null===(l=r.options)||void 0===l?void 0:l.geographyId,h]),location:{},include:E}),v=(0,D.useMemo)(()=>g||p,[g,p]),m=(0,D.useMemo)(()=>{var i,e;return{isLoading:v,title:null===(i=r.options)||void 0===i?void 0:i.title,scores:null==c||null===(e=c.geographies[0])||void 0===e?void 0:e.scores}},[v,c,null===(s=r.options)||void 0===s?void 0:s.title]);return(0,_.jsx)(L.Provider,{value:m,children:i})},V="\n rounded-full bg-primary-100 w-16 h-16 flex items-center justify-center\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n\n ",W="rounded-full bg-gray-25 w-12 h-12 border-2 border-base-white flex items-center justify-center",T="\n text-primary-100 w-7 h-7\n \n group-data-[is-loading=true]/highlight-item:text-gray-200\n group-data-[is-loading=true]/highlight-item:animate-spin\n",q="\n group-data-[is-loading=true]/highlight-item:flex\n group-data-[is-loading=true]/highlight-item:flex-col\n group-data-[is-loading=true]/highlight-item:grow\n",C="\n text-md mb-1\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:w-full\n group-data-[is-loading=true]/highlight-item:h-2\n\n group-data-[is-loading=true]/highlight-item:[&>span]:hidden\n",R="\n text-sm leading-4 font-bold bg-primary-100 text-base-white py-1 px-2 inline rounded\n \n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:animate-pulse\n group-data-[is-loading=true]/highlight-item:w-28\n group-data-[is-loading=true]/highlight-item:h-7\n",B=({isLoading:i=!1,score:e})=>(0,_.jsxs)("div",{"data-testid":"item",className:"group/highlight-item bg-gray-25 px-5 py-4 flex w-80 items-center gap-x-4 rounded-xl","data-is-loading":i,"data-score":e,children:[(0,_.jsx)($,{isLoading:i,score:e}),(0,_.jsx)(z,{score:e})]}),F="flex flex-col gap-4 w-full lg:flex-row",P=p({lat:l().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:i=>"string"==typeof i,then:i=>i.optional(),otherwise:i=>i.required()}),lng:l().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:i=>"string"==typeof i,then:i=>i.optional(),otherwise:i=>i.required()}),geographyId:s().optional(),title:d().optional()}).noUnknown(!0),a(g.neighborhoodWrap.key),i("default",()=>{var i,e,t,o,a,l,s;const{sdkState:r}=x(),d=w(),u=(null===(i=r.globalOptions)||void 0===i?void 0:i.locale)||"en",p=(0,D.useMemo)(()=>{var i,e,t,o;return null!==(i=r.options)&&void 0!==i&&i.geographyId?{geographyId:null===(e=r.options)||void 0===e?void 0:e.geographyId}:{lat:null===(t=r.options)||void 0===t?void 0:t.lat,lng:null===(o=r.options)||void 0===o?void 0:o.lng}},[null===(e=r.options)||void 0===e?void 0:e.lat,null===(t=r.options)||void 0===t?void 0:t.lng,null===(o=r.options)||void 0===o?void 0:o.geographyId]);return(0,_.jsx)(b,{children:(0,_.jsx)(I,{sdk:"Neighborhood Highlights",schema:P,options:r.options,children:(0,_.jsx)(h,{environment:null===(a=r.globalOptions)||void 0===a||null===(a=a.environment)||void 0===a?void 0:a.api,apiKey:r.apiKey,appearance:null===(l=r.globalOptions)||void 0===l?void 0:l.appearance,locale:null===(s=r.globalOptions)||void 0===s?void 0:s.locale,product:c.NEIGHBORHOOD_HIGHLIGHTS,children:(0,_.jsx)(n,{trackingPipelineSettings:{apiKey:r.apiKey||""},analyticsSettings:g.neighborhoodWrap,meta:{clientId:r.clientId,productName:c.NEIGHBORHOOD_HIGHLIGHTS,productVersion:"1.24.55"},attributes:{location:p,host:r.location,host_url:document.referrer,locale:u,isMobile:d},flags:{isDebugMode:!1},children:(0,_.jsx)(K,{children:(0,_.jsx)(U,{})})})})})})})}}});
2
- //# sourceMappingURL=NeighborhoodHighlights-legacy-C_jXd4U5.js.map
1
+ System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./sdks-legacy-D5at0_ei.js","./ScoreIcon-legacy-DTiGYooC.js","./SpinnerGap.es-legacy-36N4tZZX.js","./index-legacy-BLXZlVDd.js","./useGeographies-legacy-DEpCDAXO.js","./globals-legacy-DrNe10l0.js","./ResizeWrapper-legacy-DEHV95wF.js","./ValidateOptions-legacy-BKn8Z0iI.js","./useIsMobile-legacy-DLBT_3bY.js","./useScores-legacy-DURMcuDU.js","./TitleHeader-legacy-DN1FBcsk.js","./NoDataContent-legacy-CYUS1j-5.js"],function(i,e){var t,o,n,a,l,s,r,d,g,u,h,c,p,v,m,y,f,x,j,b,I,w,N,H,S,D,M,O,k,E,_,L,G,K,V,W,T,q,C,R,B,F,P;function $({isLoading:i=!1,score:e}){return(0,_.jsx)("div",{className:V,children:(0,_.jsxs)("div",{className:W,children:[i&&(0,_.jsx)(m,{className:T}),!i&&e&&(0,_.jsx)(v,{score:e,className:T})]})})}function z({score:i}){const{t:e}=r(["neighborhoodHighlights","common"]);return(0,_.jsxs)("div",{"data-testid":`highlight-content-${i}`,className:q,children:[(0,_.jsx)("p",{"data-testid":"highlight-title",className:C,children:(0,_.jsx)("span",{children:e("highlight.title")})}),(0,_.jsx)("p",{"data-testid":"highlight-pill",className:R,children:i&&e(`common:scores.${i}.title`)})]})}function A(){const{t:i}=r("neighborhoodHighlights"),{isLoading:e,scores:t}=G(),o=(0,D.useMemo)(()=>e||!t?[]:function(i){const e=[];return void 0===i||E.map(e=>{var t;return{scoreName:e,value:Math.round(10*Number(null===(t=i[e])||void 0===t?void 0:t.value))/10*2}}).filter(i=>i.value>7).sort((i,e)=>i.value<e.value?1:-1).slice(0,3).map(i=>e.push(i.scoreName)),e}(t),[t,e]);return e||0!==o.length?(0,_.jsx)("div",{"data-testid":"highlights-container",className:F,children:(e?[1,2,3]:o).map((i,t)=>(0,_.jsx)(B,{isLoading:e,score:"number"!=typeof i?i:void 0},t))}):(0,_.jsx)(S,{text:i("noData")})}function U(){const{t:i}=r("neighborhoodHighlights"),{title:e}=G();return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(H,{title:"string"==typeof e||!1===e?e:i("title")}),(0,_.jsx)(A,{})]})}return{setters:[function(i){t=i.a},function(i){o=i.l},function(i){n=i.a,a=i.c,l=i.d,s=i.f,r=i.g,d=i.m,g=i.n,u=i.o,h=i.r,c=i.t,p=i.u},function(i){v=i.t},function(i){m=i.t},function(i){y=i.Y,f=i.i,x=i.n},function(i){j=i.t},function(i){},function(i){b=i.t},function(i){I=i.t},function(i){w=i.t},function(i){N=i.t},function(i){H=i.t},function(i){S=i.t}],execute:function(){D=t(o(),1),M=function(i){return i.SDK_VIEWED="neighborhood-highlights-Viewed",i}({}),O=function(i){return i.SDK_VIEWED="sdk_viewed",i}({}),E=[...(k={transport:["pedestrian_friendly","car_friendly","transit_friendly","cycling_friendly"],services:["groceries","shopping","restaurants","cafes"],character:["quiet","parks","vibrant","nightlife"]}).transport,...k.services,...k.character],_=y(),L=D.createContext({}),G=()=>(0,D.useContext)(L),K=({children:i})=>{var e,t,o,n,a,l,s;const{sdkState:r}=x(),d=u();f(()=>{d.postEvent({eventType:M.SDK_VIEWED}),d.trackAnalyticsEvent({eventName:O.SDK_VIEWED})});const{isLoading:g,data:h}=j({location:{lat:void 0===(null===(e=r.options)||void 0===e?void 0:e.geographyId)?null===(t=r.options)||void 0===t?void 0:t.lat:void 0,lng:void 0===(null===(o=r.options)||void 0===o?void 0:o.geographyId)?null===(n=r.options)||void 0===n?void 0:n.lng:void 0},externalId:null==r||null===(a=r.globalOptions)||void 0===a?void 0:a.externalId}),{data:c,isFetching:p}=N({geographyId:(0,D.useMemo)(()=>{var i;return void 0!==(null===(i=r.options)||void 0===i?void 0:i.geographyId)?r.options.geographyId:Object.keys(h||{})[0]},[null===(l=r.options)||void 0===l?void 0:l.geographyId,h]),location:{},include:E}),v=(0,D.useMemo)(()=>g||p,[g,p]),m=(0,D.useMemo)(()=>{var i,e;return{isLoading:v,title:null===(i=r.options)||void 0===i?void 0:i.title,scores:null==c||null===(e=c.geographies[0])||void 0===e?void 0:e.scores}},[v,c,null===(s=r.options)||void 0===s?void 0:s.title]);return(0,_.jsx)(L.Provider,{value:m,children:i})},V="\n rounded-full bg-primary-100 w-16 h-16 flex items-center justify-center\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n\n ",W="rounded-full bg-gray-25 w-12 h-12 border-2 border-base-white flex items-center justify-center",T="\n text-primary-100 w-7 h-7\n \n group-data-[is-loading=true]/highlight-item:text-gray-200\n group-data-[is-loading=true]/highlight-item:animate-spin\n",q="\n group-data-[is-loading=true]/highlight-item:flex\n group-data-[is-loading=true]/highlight-item:flex-col\n group-data-[is-loading=true]/highlight-item:grow\n",C="\n text-md mb-1\n\n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:w-full\n group-data-[is-loading=true]/highlight-item:h-2\n\n group-data-[is-loading=true]/highlight-item:[&>span]:hidden\n",R="\n text-sm leading-4 font-bold bg-primary-100 text-base-white py-1 px-2 inline rounded\n \n group-data-[is-loading=true]/highlight-item:bg-gray-200\n group-data-[is-loading=true]/highlight-item:animate-pulse\n group-data-[is-loading=true]/highlight-item:w-28\n group-data-[is-loading=true]/highlight-item:h-7\n",B=({isLoading:i=!1,score:e})=>(0,_.jsxs)("div",{"data-testid":"item",className:"group/highlight-item bg-gray-25 px-5 py-4 flex w-80 items-center gap-x-4 rounded-xl","data-is-loading":i,"data-score":e,children:[(0,_.jsx)($,{isLoading:i,score:e}),(0,_.jsx)(z,{score:e})]}),F="flex flex-col gap-4 w-full lg:flex-row",P=p({lat:l().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:i=>"string"==typeof i,then:i=>i.optional(),otherwise:i=>i.required()}),lng:l().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:i=>"string"==typeof i,then:i=>i.optional(),otherwise:i=>i.required()}),geographyId:s().optional(),title:d().optional()}).noUnknown(!0),a(g.neighborhoodWrap.key),i("default",()=>{var i,e,t,o,a,l,s;const{sdkState:r}=x(),d=w(),u=(null===(i=r.globalOptions)||void 0===i?void 0:i.locale)||"en",p=(0,D.useMemo)(()=>{var i,e,t,o;return null!==(i=r.options)&&void 0!==i&&i.geographyId?{geographyId:null===(e=r.options)||void 0===e?void 0:e.geographyId}:{lat:null===(t=r.options)||void 0===t?void 0:t.lat,lng:null===(o=r.options)||void 0===o?void 0:o.lng}},[null===(e=r.options)||void 0===e?void 0:e.lat,null===(t=r.options)||void 0===t?void 0:t.lng,null===(o=r.options)||void 0===o?void 0:o.geographyId]);return(0,_.jsx)(b,{children:(0,_.jsx)(I,{sdk:"Neighborhood Highlights",schema:P,options:r.options,children:(0,_.jsx)(h,{environment:null===(a=r.globalOptions)||void 0===a||null===(a=a.environment)||void 0===a?void 0:a.api,apiKey:r.apiKey,appearance:null===(l=r.globalOptions)||void 0===l?void 0:l.appearance,locale:null===(s=r.globalOptions)||void 0===s?void 0:s.locale,product:c.NEIGHBORHOOD_HIGHLIGHTS,children:(0,_.jsx)(n,{trackingPipelineSettings:{apiKey:r.apiKey||""},analyticsSettings:g.neighborhoodWrap,meta:{clientId:r.clientId,productName:c.NEIGHBORHOOD_HIGHLIGHTS,productVersion:"1.24.57"},attributes:{location:p,host:r.location,host_url:document.referrer,locale:u,isMobile:d},flags:{isDebugMode:!1},children:(0,_.jsx)(K,{children:(0,_.jsx)(U,{})})})})})})})}}});
2
+ //# sourceMappingURL=NeighborhoodHighlights-legacy-Jwm-KEn2.js.map