@local-logic/sdks-app 1.24.42 → 1.24.43

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 (330) hide show
  1. package/dist/assets/{Attribution-ClwsOk3e.js → Attribution-DnmiY-id.js} +2 -2
  2. package/dist/assets/{Attribution-ClwsOk3e.js.map → Attribution-DnmiY-id.js.map} +1 -1
  3. package/dist/assets/{Attribution-legacy-CtNhDTV1.js → Attribution-legacy-Da4FA00m.js} +2 -2
  4. package/dist/assets/{Attribution-legacy-CtNhDTV1.js.map → Attribution-legacy-Da4FA00m.js.map} +1 -1
  5. package/dist/assets/Cluster-BHQcO6iC-Do1P9Ia2.js +2 -0
  6. package/dist/assets/{Cluster-BHQcO6iC-BLUKMpub.js.map → Cluster-BHQcO6iC-Do1P9Ia2.js.map} +1 -1
  7. package/dist/assets/{Cluster-BHQcO6iC-legacy-CP0b8zks.js → Cluster-BHQcO6iC-legacy-B3k4OIlu.js} +2 -2
  8. package/dist/assets/{Cluster-BHQcO6iC-legacy-CP0b8zks.js.map → Cluster-BHQcO6iC-legacy-B3k4OIlu.js.map} +1 -1
  9. package/dist/assets/{Google-DScXSvYv-6gBja-_g.js → Google-BFAJ84CT-DhLE7SMg.js} +2 -2
  10. package/dist/assets/{Google-DScXSvYv-6gBja-_g.js.map → Google-BFAJ84CT-DhLE7SMg.js.map} +1 -1
  11. package/dist/assets/{Google-DScXSvYv-legacy-Bud-7LK1.js → Google-BFAJ84CT-legacy-BXfoTpXf.js} +2 -2
  12. package/dist/assets/{Google-DScXSvYv-legacy-Bud-7LK1.js.map → Google-BFAJ84CT-legacy-BXfoTpXf.js.map} +1 -1
  13. package/dist/assets/{Google-qvGtRAuh-D3JlAgXq.js → Google-BS41ufih-i8xQrE_C.js} +2 -2
  14. package/dist/assets/{Google-qvGtRAuh-D3JlAgXq.js.map → Google-BS41ufih-i8xQrE_C.js.map} +1 -1
  15. package/dist/assets/{Google-qvGtRAuh-legacy-CMkNx5pn.js → Google-BS41ufih-legacy-BdzBlyLB.js} +2 -2
  16. package/dist/assets/{Google-qvGtRAuh-legacy-CMkNx5pn.js.map → Google-BS41ufih-legacy-BdzBlyLB.js.map} +1 -1
  17. package/dist/assets/Google-CH7a2yx--BBV608XJ.js +2 -0
  18. package/dist/assets/{Google-CH7a2yx--B615NdD8.js.map → Google-CH7a2yx--BBV608XJ.js.map} +1 -1
  19. package/dist/assets/{Google-CH7a2yx--legacy-BUUPS1d_.js → Google-CH7a2yx--legacy-DK3evKRO.js} +2 -2
  20. package/dist/assets/{Google-CH7a2yx--legacy-BUUPS1d_.js.map → Google-CH7a2yx--legacy-DK3evKRO.js.map} +1 -1
  21. package/dist/assets/Google-CXGCn-oJ-5ByomDf2.js +2 -0
  22. package/dist/assets/{Google-CXGCn-oJ-AkqBPqrT.js.map → Google-CXGCn-oJ-5ByomDf2.js.map} +1 -1
  23. package/dist/assets/{Google-CXGCn-oJ-legacy-wLFeZbs8.js → Google-CXGCn-oJ-legacy-DA32c0kh.js} +2 -2
  24. package/dist/assets/{Google-CXGCn-oJ-legacy-wLFeZbs8.js.map → Google-CXGCn-oJ-legacy-DA32c0kh.js.map} +1 -1
  25. package/dist/assets/Google-DbOLrYJn-IeJcma0o.js +2 -0
  26. package/dist/assets/Google-DbOLrYJn-IeJcma0o.js.map +1 -0
  27. package/dist/assets/Google-DbOLrYJn-legacy-gzWCKBCo.js +2 -0
  28. package/dist/assets/Google-DbOLrYJn-legacy-gzWCKBCo.js.map +1 -0
  29. package/dist/assets/{GridGraph-CA6dQSnE.js → GridGraph-C0PP17kA.js} +2 -2
  30. package/dist/assets/{GridGraph-CA6dQSnE.js.map → GridGraph-C0PP17kA.js.map} +1 -1
  31. package/dist/assets/{GridGraph-legacy-C-SnA-yN.js → GridGraph-legacy-B1C-2d1Q.js} +2 -2
  32. package/dist/assets/{GridGraph-legacy-C-SnA-yN.js.map → GridGraph-legacy-B1C-2d1Q.js.map} +1 -1
  33. package/dist/assets/{HouseLine.es-MMviG6cm.js → HouseLine.es-UbY1cmCw.js} +2 -2
  34. package/dist/assets/{HouseLine.es-MMviG6cm.js.map → HouseLine.es-UbY1cmCw.js.map} +1 -1
  35. package/dist/assets/{HouseLine.es-legacy-Cif7XvRo.js → HouseLine.es-legacy-rIusAPcN.js} +2 -2
  36. package/dist/assets/{HouseLine.es-legacy-Cif7XvRo.js.map → HouseLine.es-legacy-rIusAPcN.js.map} +1 -1
  37. package/dist/assets/{IconBase.es-sTzPkmtv.js → IconBase.es-C5evOQSf.js} +1 -1
  38. package/dist/assets/{IconBase.es-sTzPkmtv.js.map → IconBase.es-C5evOQSf.js.map} +1 -1
  39. package/dist/assets/{IconBase.es-legacy-CLUwC2Iu.js → IconBase.es-legacy-jtD2YQt-.js} +1 -1
  40. package/dist/assets/{IconBase.es-legacy-CLUwC2Iu.js.map → IconBase.es-legacy-jtD2YQt-.js.map} +1 -1
  41. package/dist/assets/{LeadCapture-DYBfiSUq.js → LeadCapture-e2fi_VKJ.js} +2 -2
  42. package/dist/assets/{LeadCapture-DYBfiSUq.js.map → LeadCapture-e2fi_VKJ.js.map} +1 -1
  43. package/dist/assets/{LeadCapture-legacy-B2kUL7l2.js → LeadCapture-legacy-wC9F3Dq5.js} +2 -2
  44. package/dist/assets/{LeadCapture-legacy-B2kUL7l2.js.map → LeadCapture-legacy-wC9F3Dq5.js.map} +1 -1
  45. package/dist/assets/{LocalContent-CdwC5dim.js → LocalContent-Bgf0CDoA.js} +2 -2
  46. package/dist/assets/{LocalContent-CdwC5dim.js.map → LocalContent-Bgf0CDoA.js.map} +1 -1
  47. package/dist/assets/{LocalContent-legacy-is3KMNbp.js → LocalContent-legacy-BHBTASYp.js} +2 -2
  48. package/dist/assets/{LocalContent-legacy-is3KMNbp.js.map → LocalContent-legacy-BHBTASYp.js.map} +1 -1
  49. package/dist/assets/{LocalDemographics-CfkSaIaw.js → LocalDemographics-BuWGiqEi.js} +2 -2
  50. package/dist/assets/{LocalDemographics-CfkSaIaw.js.map → LocalDemographics-BuWGiqEi.js.map} +1 -1
  51. package/dist/assets/{LocalDemographics-legacy-jYYfhemY.js → LocalDemographics-legacy-D1k5CRVw.js} +2 -2
  52. package/dist/assets/{LocalDemographics-legacy-jYYfhemY.js.map → LocalDemographics-legacy-D1k5CRVw.js.map} +1 -1
  53. package/dist/assets/{Mapbox-B7oionsm-CxTuYnPt.js → Mapbox-CpLnA607-AeAqR5aH.js} +2 -2
  54. package/dist/assets/{Mapbox-B7oionsm-CxTuYnPt.js.map → Mapbox-CpLnA607-AeAqR5aH.js.map} +1 -1
  55. package/dist/assets/{Mapbox-B7oionsm-legacy-BRIsIA0a.js → Mapbox-CpLnA607-legacy-CZe3Jz0m.js} +2 -2
  56. package/dist/assets/{Mapbox-B7oionsm-legacy-BRIsIA0a.js.map → Mapbox-CpLnA607-legacy-CZe3Jz0m.js.map} +1 -1
  57. package/dist/assets/{Mapbox-DDJ1gHRb-legacy-OengExoB.js → Mapbox-DDJ1gHRb-legacy-NAVECUv-.js} +2 -2
  58. package/dist/assets/{Mapbox-DDJ1gHRb-legacy-OengExoB.js.map → Mapbox-DDJ1gHRb-legacy-NAVECUv-.js.map} +1 -1
  59. package/dist/assets/{Mapbox-DDJ1gHRb-BBMjbLph.js → Mapbox-DDJ1gHRb-rvf9zFJO.js} +2 -2
  60. package/dist/assets/{Mapbox-DDJ1gHRb-BBMjbLph.js.map → Mapbox-DDJ1gHRb-rvf9zFJO.js.map} +1 -1
  61. package/dist/assets/Mapbox-DiD9etYJ-legacy-pThPPnNQ.js +2 -0
  62. package/dist/assets/Mapbox-DiD9etYJ-legacy-pThPPnNQ.js.map +1 -0
  63. package/dist/assets/Mapbox-DiD9etYJ-zR1EkiNp.js +2 -0
  64. package/dist/assets/Mapbox-DiD9etYJ-zR1EkiNp.js.map +1 -0
  65. package/dist/assets/{Mapbox-DtZmt1D_-Bx6ckAkh.js → Mapbox-DtZmt1D_-DHhJhTo8.js} +2 -2
  66. package/dist/assets/{Mapbox-DtZmt1D_-Bx6ckAkh.js.map → Mapbox-DtZmt1D_-DHhJhTo8.js.map} +1 -1
  67. package/dist/assets/{Mapbox-DtZmt1D_-legacy-CjIWGIob.js → Mapbox-DtZmt1D_-legacy-ccCiz3Pd.js} +2 -2
  68. package/dist/assets/{Mapbox-DtZmt1D_-legacy-CjIWGIob.js.map → Mapbox-DtZmt1D_-legacy-ccCiz3Pd.js.map} +1 -1
  69. package/dist/assets/{Mapbox-vp91lH9I-CFYg9mW4.js → Mapbox-u11C3LWs-B_yCTqoV.js} +2 -2
  70. package/dist/assets/{Mapbox-vp91lH9I-CFYg9mW4.js.map → Mapbox-u11C3LWs-B_yCTqoV.js.map} +1 -1
  71. package/dist/assets/{Mapbox-vp91lH9I-legacy-GApHnB0z.js → Mapbox-u11C3LWs-legacy-D90FQvEN.js} +2 -2
  72. package/dist/assets/{Mapbox-vp91lH9I-legacy-GApHnB0z.js.map → Mapbox-u11C3LWs-legacy-D90FQvEN.js.map} +1 -1
  73. package/dist/assets/Maptiler-C0oTROMk-BwaieRuC.js +2 -0
  74. package/dist/assets/Maptiler-C0oTROMk-BwaieRuC.js.map +1 -0
  75. package/dist/assets/Maptiler-C0oTROMk-legacy-Dt8ZGBQ1.js +2 -0
  76. package/dist/assets/Maptiler-C0oTROMk-legacy-Dt8ZGBQ1.js.map +1 -0
  77. package/dist/assets/{Maptiler-DJScKW8p-_Xood8h4.js → Maptiler-DJScKW8p-D7sqoIWz.js} +2 -2
  78. package/dist/assets/{Maptiler-DJScKW8p-_Xood8h4.js.map → Maptiler-DJScKW8p-D7sqoIWz.js.map} +1 -1
  79. package/dist/assets/{Maptiler-DJScKW8p-legacy-BLJl42xt.js → Maptiler-DJScKW8p-legacy-BxKgw8sA.js} +2 -2
  80. package/dist/assets/{Maptiler-DJScKW8p-legacy-BLJl42xt.js.map → Maptiler-DJScKW8p-legacy-BxKgw8sA.js.map} +1 -1
  81. package/dist/assets/{Maptiler-BQliPE7n-B8SIuLJ2.js → Maptiler-DdeFS4iM-CAX4yO3w.js} +2 -2
  82. package/dist/assets/{Maptiler-BQliPE7n-B8SIuLJ2.js.map → Maptiler-DdeFS4iM-CAX4yO3w.js.map} +1 -1
  83. package/dist/assets/{Maptiler-BQliPE7n-legacy-Dbs_BWos.js → Maptiler-DdeFS4iM-legacy-DsI2My96.js} +2 -2
  84. package/dist/assets/{Maptiler-BQliPE7n-legacy-Dbs_BWos.js.map → Maptiler-DdeFS4iM-legacy-DsI2My96.js.map} +1 -1
  85. package/dist/assets/{Maptiler-DqeshLom-DEBJexij.js → Maptiler-DqeshLom-a9LD3O-1.js} +2 -2
  86. package/dist/assets/{Maptiler-DqeshLom-DEBJexij.js.map → Maptiler-DqeshLom-a9LD3O-1.js.map} +1 -1
  87. package/dist/assets/{Maptiler-DqeshLom-legacy-DKFe6w2r.js → Maptiler-DqeshLom-legacy-iao-6Wdy.js} +2 -2
  88. package/dist/assets/{Maptiler-DqeshLom-legacy-DKFe6w2r.js.map → Maptiler-DqeshLom-legacy-iao-6Wdy.js.map} +1 -1
  89. package/dist/assets/{Maptiler-BtYYeJoo-A8qgmLuQ.js → Maptiler-YjlcPccn-BbfdNZAF.js} +2 -2
  90. package/dist/assets/{Maptiler-BtYYeJoo-A8qgmLuQ.js.map → Maptiler-YjlcPccn-BbfdNZAF.js.map} +1 -1
  91. package/dist/assets/{Maptiler-BtYYeJoo-legacy-6p_OzxFA.js → Maptiler-YjlcPccn-legacy-D6AZMug8.js} +2 -2
  92. package/dist/assets/{Maptiler-BtYYeJoo-legacy-6p_OzxFA.js.map → Maptiler-YjlcPccn-legacy-D6AZMug8.js.map} +1 -1
  93. package/dist/assets/{MarkerIcon-Bc3X9WQk-BiE4oWxC.js → MarkerIcon-Bc3X9WQk-ByrgCntx.js} +2 -2
  94. package/dist/assets/{MarkerIcon-Bc3X9WQk-BiE4oWxC.js.map → MarkerIcon-Bc3X9WQk-ByrgCntx.js.map} +1 -1
  95. package/dist/assets/{MarkerIcon-Bc3X9WQk-legacy-D006OcWh.js → MarkerIcon-Bc3X9WQk-legacy-CIGJvvJR.js} +2 -2
  96. package/dist/assets/{MarkerIcon-Bc3X9WQk-legacy-D006OcWh.js.map → MarkerIcon-Bc3X9WQk-legacy-CIGJvvJR.js.map} +1 -1
  97. package/dist/assets/{NeighborhoodCard-CjddOmMg.js → NeighborhoodCard-CQFgsjdH.js} +2 -2
  98. package/dist/assets/{NeighborhoodCard-CjddOmMg.js.map → NeighborhoodCard-CQFgsjdH.js.map} +1 -1
  99. package/dist/assets/{NeighborhoodCard-legacy-BXbEUaCk.js → NeighborhoodCard-legacy-CT-3ylPG.js} +2 -2
  100. package/dist/assets/{NeighborhoodCard-legacy-BXbEUaCk.js.map → NeighborhoodCard-legacy-CT-3ylPG.js.map} +1 -1
  101. package/dist/assets/{NeighborhoodCharacteristics-legacy-N-y878TT.js → NeighborhoodCharacteristics-legacy-CKYaXDfQ.js} +2 -2
  102. package/dist/assets/{NeighborhoodCharacteristics-legacy-N-y878TT.js.map → NeighborhoodCharacteristics-legacy-CKYaXDfQ.js.map} +1 -1
  103. package/dist/assets/{NeighborhoodCharacteristics-rVjVJZhq.js → NeighborhoodCharacteristics-w5WKGZ2K.js} +2 -2
  104. package/dist/assets/{NeighborhoodCharacteristics-rVjVJZhq.js.map → NeighborhoodCharacteristics-w5WKGZ2K.js.map} +1 -1
  105. package/dist/assets/{NeighborhoodDemographics-CS-v8EiF.js → NeighborhoodDemographics-BZrhdeYZ.js} +2 -2
  106. package/dist/assets/{NeighborhoodDemographics-CS-v8EiF.js.map → NeighborhoodDemographics-BZrhdeYZ.js.map} +1 -1
  107. package/dist/assets/{NeighborhoodDemographics-legacy-Dm5pQwht.js → NeighborhoodDemographics-legacy-BHIQ1ER7.js} +2 -2
  108. package/dist/assets/{NeighborhoodDemographics-legacy-Dm5pQwht.js.map → NeighborhoodDemographics-legacy-BHIQ1ER7.js.map} +1 -1
  109. package/dist/assets/{NeighborhoodFeatured-s-u9pUbm.js → NeighborhoodFeatured-DfjxzlxY.js} +2 -2
  110. package/dist/assets/{NeighborhoodFeatured-s-u9pUbm.js.map → NeighborhoodFeatured-DfjxzlxY.js.map} +1 -1
  111. package/dist/assets/{NeighborhoodFeatured-legacy-DFs2mouX.js → NeighborhoodFeatured-legacy-DHTnv4CZ.js} +2 -2
  112. package/dist/assets/{NeighborhoodFeatured-legacy-DFs2mouX.js.map → NeighborhoodFeatured-legacy-DHTnv4CZ.js.map} +1 -1
  113. package/dist/assets/{NeighborhoodHero-BywJZ-xz.js → NeighborhoodHero-DrBKD27P.js} +2 -2
  114. package/dist/assets/{NeighborhoodHero-BywJZ-xz.js.map → NeighborhoodHero-DrBKD27P.js.map} +1 -1
  115. package/dist/assets/{NeighborhoodHero-legacy-DBXy8A9v.js → NeighborhoodHero-legacy-BMCiD7gd.js} +2 -2
  116. package/dist/assets/{NeighborhoodHero-legacy-DBXy8A9v.js.map → NeighborhoodHero-legacy-BMCiD7gd.js.map} +1 -1
  117. package/dist/assets/{NeighborhoodHighlights-C7wjbeds.js → NeighborhoodHighlights-CwoTHUIb.js} +2 -2
  118. package/dist/assets/{NeighborhoodHighlights-C7wjbeds.js.map → NeighborhoodHighlights-CwoTHUIb.js.map} +1 -1
  119. package/dist/assets/{NeighborhoodHighlights-legacy-DuaIiUeU.js → NeighborhoodHighlights-legacy-R316wAs2.js} +2 -2
  120. package/dist/assets/{NeighborhoodHighlights-legacy-DuaIiUeU.js.map → NeighborhoodHighlights-legacy-R316wAs2.js.map} +1 -1
  121. package/dist/assets/{NeighborhoodMap-chAy5ObD.js → NeighborhoodMap-ChZpBdAe.js} +2 -2
  122. package/dist/assets/{NeighborhoodMap-chAy5ObD.js.map → NeighborhoodMap-ChZpBdAe.js.map} +1 -1
  123. package/dist/assets/{NeighborhoodMap-legacy-qKRq45VQ.js → NeighborhoodMap-legacy-D7V_lZQF.js} +2 -2
  124. package/dist/assets/{NeighborhoodMap-legacy-qKRq45VQ.js.map → NeighborhoodMap-legacy-D7V_lZQF.js.map} +1 -1
  125. package/dist/assets/{NeighborhoodMarketTrends-DyzBmnXU.js → NeighborhoodMarketTrends-DpUA8_BA.js} +3 -3
  126. package/dist/assets/{NeighborhoodMarketTrends-DyzBmnXU.js.map → NeighborhoodMarketTrends-DpUA8_BA.js.map} +1 -1
  127. package/dist/assets/{NeighborhoodMarketTrends-legacy-DflW5bwf.js → NeighborhoodMarketTrends-legacy-18rcLpS1.js} +2 -2
  128. package/dist/assets/{NeighborhoodMarketTrends-legacy-DflW5bwf.js.map → NeighborhoodMarketTrends-legacy-18rcLpS1.js.map} +1 -1
  129. package/dist/assets/{NeighborhoodMatch-B0NunmQ1.js → NeighborhoodMatch-BLDNZBRX.js} +2 -2
  130. package/dist/assets/{NeighborhoodMatch-B0NunmQ1.js.map → NeighborhoodMatch-BLDNZBRX.js.map} +1 -1
  131. package/dist/assets/{NeighborhoodMatch-legacy-C9pmkVI0.js → NeighborhoodMatch-legacy-C2QyjRPr.js} +2 -2
  132. package/dist/assets/{NeighborhoodMatch-legacy-C9pmkVI0.js.map → NeighborhoodMatch-legacy-C2QyjRPr.js.map} +1 -1
  133. package/dist/assets/{NeighborhoodPropertyValueDrivers-pcHUQKLk.js → NeighborhoodPropertyValueDrivers-CQoo-TFM.js} +2 -2
  134. package/dist/assets/{NeighborhoodPropertyValueDrivers-pcHUQKLk.js.map → NeighborhoodPropertyValueDrivers-CQoo-TFM.js.map} +1 -1
  135. package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-CSn26WOI.js → NeighborhoodPropertyValueDrivers-legacy-B-3Ld9XX.js} +2 -2
  136. package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-CSn26WOI.js.map → NeighborhoodPropertyValueDrivers-legacy-B-3Ld9XX.js.map} +1 -1
  137. package/dist/assets/{NeighborhoodSchools-mOJqjm1x.js → NeighborhoodSchools-DMKDCbUv.js} +2 -2
  138. package/dist/assets/{NeighborhoodSchools-mOJqjm1x.js.map → NeighborhoodSchools-DMKDCbUv.js.map} +1 -1
  139. package/dist/assets/{NeighborhoodSchools-legacy-DZOdDDpP.js → NeighborhoodSchools-legacy-D_MpmqNV.js} +2 -2
  140. package/dist/assets/{NeighborhoodSchools-legacy-DZOdDDpP.js.map → NeighborhoodSchools-legacy-D_MpmqNV.js.map} +1 -1
  141. package/dist/assets/{NeighborhoodShowcase-DB50zUgk.js → NeighborhoodShowcase-CB3_rfxv.js} +2 -2
  142. package/dist/assets/{NeighborhoodShowcase-DB50zUgk.js.map → NeighborhoodShowcase-CB3_rfxv.js.map} +1 -1
  143. package/dist/assets/{NeighborhoodShowcase-legacy-BkNvt6P2.js → NeighborhoodShowcase-legacy-B8IQbiVz.js} +2 -2
  144. package/dist/assets/{NeighborhoodShowcase-legacy-BkNvt6P2.js.map → NeighborhoodShowcase-legacy-B8IQbiVz.js.map} +1 -1
  145. package/dist/assets/{NoDataContent-DMnLpuKS.js → NoDataContent-CFLl-Rd-.js} +2 -2
  146. package/dist/assets/{NoDataContent-DMnLpuKS.js.map → NoDataContent-CFLl-Rd-.js.map} +1 -1
  147. package/dist/assets/{NoDataContent-legacy-V241YjyB.js → NoDataContent-legacy-aWMMhT9c.js} +2 -2
  148. package/dist/assets/{NoDataContent-legacy-V241YjyB.js.map → NoDataContent-legacy-aWMMhT9c.js.map} +1 -1
  149. package/dist/assets/{ResizeWrapper-DWV5t91u.js → ResizeWrapper-C7vwckhm.js} +2 -2
  150. package/dist/assets/{ResizeWrapper-DWV5t91u.js.map → ResizeWrapper-C7vwckhm.js.map} +1 -1
  151. package/dist/assets/{ResizeWrapper-legacy-DGnrE5zr.js → ResizeWrapper-legacy-WwfLyk1y.js} +2 -2
  152. package/dist/assets/{ResizeWrapper-legacy-DGnrE5zr.js.map → ResizeWrapper-legacy-WwfLyk1y.js.map} +1 -1
  153. package/dist/assets/{ScoreCardList-BFPj6mZA.js → ScoreCardList-PWiDx6Ra.js} +2 -2
  154. package/dist/assets/{ScoreCardList-BFPj6mZA.js.map → ScoreCardList-PWiDx6Ra.js.map} +1 -1
  155. package/dist/assets/{ScoreCardList-legacy-D8n8_vhM.js → ScoreCardList-legacy-BK5dq36c.js} +2 -2
  156. package/dist/assets/{ScoreCardList-legacy-D8n8_vhM.js.map → ScoreCardList-legacy-BK5dq36c.js.map} +1 -1
  157. package/dist/assets/{ScoreIcon-e7HkxsIV.js → ScoreIcon-CsB-usG9.js} +2 -2
  158. package/dist/assets/{ScoreIcon-e7HkxsIV.js.map → ScoreIcon-CsB-usG9.js.map} +1 -1
  159. package/dist/assets/{ScoreIcon-legacy-x5Tn3nV1.js → ScoreIcon-legacy-BwaAs8hW.js} +2 -2
  160. package/dist/assets/{ScoreIcon-legacy-x5Tn3nV1.js.map → ScoreIcon-legacy-BwaAs8hW.js.map} +1 -1
  161. package/dist/assets/{Testing--n5Ro0Ek-C9V56Cfj.js → Testing--n5Ro0Ek-B4Vejacz.js} +2 -2
  162. package/dist/assets/{Testing--n5Ro0Ek-C9V56Cfj.js.map → Testing--n5Ro0Ek-B4Vejacz.js.map} +1 -1
  163. package/dist/assets/{Testing--n5Ro0Ek-legacy-D_AkmmzN.js → Testing--n5Ro0Ek-legacy-Co29YW_f.js} +2 -2
  164. package/dist/assets/{Testing--n5Ro0Ek-legacy-D_AkmmzN.js.map → Testing--n5Ro0Ek-legacy-Co29YW_f.js.map} +1 -1
  165. package/dist/assets/{Testing-BNJwzbRK-BsZQEhVn.js → Testing-BNJwzbRK-hEJFbzQg.js} +2 -2
  166. package/dist/assets/{Testing-BNJwzbRK-BsZQEhVn.js.map → Testing-BNJwzbRK-hEJFbzQg.js.map} +1 -1
  167. package/dist/assets/{Testing-BNJwzbRK-legacy-DWOKVB8F.js → Testing-BNJwzbRK-legacy-B1EdPb3k.js} +2 -2
  168. package/dist/assets/{Testing-BNJwzbRK-legacy-DWOKVB8F.js.map → Testing-BNJwzbRK-legacy-B1EdPb3k.js.map} +1 -1
  169. package/dist/assets/{Testing-CoRLhmNT-D1AEkx8H.js → Testing-CoRLhmNT-Cqyejow7.js} +2 -2
  170. package/dist/assets/{Testing-CoRLhmNT-D1AEkx8H.js.map → Testing-CoRLhmNT-Cqyejow7.js.map} +1 -1
  171. package/dist/assets/{Testing-CoRLhmNT-legacy-C2PTG7qO.js → Testing-CoRLhmNT-legacy-BQpWn7Bu.js} +2 -2
  172. package/dist/assets/{Testing-CoRLhmNT-legacy-C2PTG7qO.js.map → Testing-CoRLhmNT-legacy-BQpWn7Bu.js.map} +1 -1
  173. package/dist/assets/{Testing-DGUeGxdc-ixrV0Uct.js → Testing-DGUeGxdc-g-T4vdVq.js} +2 -2
  174. package/dist/assets/{Testing-DGUeGxdc-ixrV0Uct.js.map → Testing-DGUeGxdc-g-T4vdVq.js.map} +1 -1
  175. package/dist/assets/{Testing-DGUeGxdc-legacy-qdFrcrxK.js → Testing-DGUeGxdc-legacy-GwpDyiTO.js} +2 -2
  176. package/dist/assets/{Testing-DGUeGxdc-legacy-qdFrcrxK.js.map → Testing-DGUeGxdc-legacy-GwpDyiTO.js.map} +1 -1
  177. package/dist/assets/{Testing-DzWAcbhL-6k6EztCf.js → Testing-DzWAcbhL-BJOouF0A.js} +2 -2
  178. package/dist/assets/{Testing-DzWAcbhL-6k6EztCf.js.map → Testing-DzWAcbhL-BJOouF0A.js.map} +1 -1
  179. package/dist/assets/{Testing-DzWAcbhL-legacy-CVi7-xZq.js → Testing-DzWAcbhL-legacy-CYECRHWo.js} +2 -2
  180. package/dist/assets/{Testing-DzWAcbhL-legacy-CVi7-xZq.js.map → Testing-DzWAcbhL-legacy-CYECRHWo.js.map} +1 -1
  181. package/dist/assets/{TitleHeader-mQeQYQpJ.js → TitleHeader-CepE-7Y-.js} +2 -2
  182. package/dist/assets/{TitleHeader-mQeQYQpJ.js.map → TitleHeader-CepE-7Y-.js.map} +1 -1
  183. package/dist/assets/{TitleHeader-legacy-BxGrZ-6z.js → TitleHeader-legacy-UtQZo396.js} +2 -2
  184. package/dist/assets/{TitleHeader-legacy-BxGrZ-6z.js.map → TitleHeader-legacy-UtQZo396.js.map} +1 -1
  185. package/dist/assets/{Trans-C0JSM2OQ.js → Trans-B1zRm9WH.js} +2 -2
  186. package/dist/assets/{Trans-C0JSM2OQ.js.map → Trans-B1zRm9WH.js.map} +1 -1
  187. package/dist/assets/{Trans-legacy-Ce8Vb50C.js → Trans-legacy-B47WOepl.js} +2 -2
  188. package/dist/assets/{Trans-legacy-Ce8Vb50C.js.map → Trans-legacy-B47WOepl.js.map} +1 -1
  189. package/dist/assets/{ValidateOptions-0362goEF.js → ValidateOptions-DsfMKmBQ.js} +2 -2
  190. package/dist/assets/{ValidateOptions-0362goEF.js.map → ValidateOptions-DsfMKmBQ.js.map} +1 -1
  191. package/dist/assets/{ValidateOptions-legacy-DzEh45h5.js → ValidateOptions-legacy-CtRpWaj6.js} +2 -2
  192. package/dist/assets/{ValidateOptions-legacy-DzEh45h5.js.map → ValidateOptions-legacy-CtRpWaj6.js.map} +1 -1
  193. package/dist/assets/constants-BcJ_mS91-kGN6qniT.js +2 -0
  194. package/dist/assets/constants-BcJ_mS91-kGN6qniT.js.map +1 -0
  195. package/dist/assets/constants-BcJ_mS91-legacy-akzQjFeX.js +2 -0
  196. package/dist/assets/constants-BcJ_mS91-legacy-akzQjFeX.js.map +1 -0
  197. package/dist/assets/{context-BrD4AniQ-DZ0ZiGRI.js → context-BrD4AniQ-D7UQulkM.js} +1 -1
  198. package/dist/assets/{context-BrD4AniQ-DZ0ZiGRI.js.map → context-BrD4AniQ-D7UQulkM.js.map} +1 -1
  199. package/dist/assets/{context-BrD4AniQ-legacy-BySS42Wf.js → context-BrD4AniQ-legacy-Ct6QKrhb.js} +1 -1
  200. package/dist/assets/{context-BrD4AniQ-legacy-BySS42Wf.js.map → context-BrD4AniQ-legacy-Ct6QKrhb.js.map} +1 -1
  201. package/dist/assets/{dist-3L6XR49Y.js → dist-DrX-uh0V.js} +2 -2
  202. package/dist/assets/{dist-3L6XR49Y.js.map → dist-DrX-uh0V.js.map} +1 -1
  203. package/dist/assets/{dist-legacy-B55wY-DS.js → dist-legacy-CJvY2ayv.js} +2 -2
  204. package/dist/assets/{dist-legacy-B55wY-DS.js.map → dist-legacy-CJvY2ayv.js.map} +1 -1
  205. package/dist/assets/{esm-Be30MpcN-ls4GMpDI.js → esm-Be30MpcN-C7eJiqee.js} +1 -1
  206. package/dist/assets/{esm-Be30MpcN-ls4GMpDI.js.map → esm-Be30MpcN-C7eJiqee.js.map} +1 -1
  207. package/dist/assets/{esm-Be30MpcN-legacy-D8iPI9WH.js → esm-Be30MpcN-legacy-MIXlHUgH.js} +1 -1
  208. package/dist/assets/{esm-Be30MpcN-legacy-D8iPI9WH.js.map → esm-Be30MpcN-legacy-MIXlHUgH.js.map} +1 -1
  209. package/dist/assets/{getMapProviderConfig-CdGY8cWm.js → getMapProviderConfig-DbC8zRUF.js} +3 -3
  210. package/dist/assets/{getMapProviderConfig-CdGY8cWm.js.map → getMapProviderConfig-DbC8zRUF.js.map} +1 -1
  211. package/dist/assets/{getMapProviderConfig-legacy-wmAHunfq.js → getMapProviderConfig-legacy-CwpYg6Bq.js} +2 -2
  212. package/dist/assets/{getMapProviderConfig-legacy-wmAHunfq.js.map → getMapProviderConfig-legacy-CwpYg6Bq.js.map} +1 -1
  213. package/dist/assets/getPaddedBounds-CbCVe2M3-CYpTak_b.js +2 -0
  214. package/dist/assets/getPaddedBounds-CbCVe2M3-CYpTak_b.js.map +1 -0
  215. package/dist/assets/getPaddedBounds-CbCVe2M3-legacy-1z3vtmVe.js +2 -0
  216. package/dist/assets/getPaddedBounds-CbCVe2M3-legacy-1z3vtmVe.js.map +1 -0
  217. package/dist/assets/{index-CNd7hC6B.js → index-Bi8h_BNl.js} +3 -3
  218. package/dist/assets/index-Bi8h_BNl.js.map +1 -0
  219. package/dist/assets/index-legacy-DF60d_4Z.js +2 -0
  220. package/dist/assets/index-legacy-DF60d_4Z.js.map +1 -0
  221. package/dist/assets/{index.es-CXXRBE7A.js → index.es-BkZlVTZH.js} +2 -2
  222. package/dist/assets/{index.es-CXXRBE7A.js.map → index.es-BkZlVTZH.js.map} +1 -1
  223. package/dist/assets/{index.es-legacy-CAykU5jw.js → index.es-legacy-DdMTxXQK.js} +2 -2
  224. package/dist/assets/{index.es-legacy-CAykU5jw.js.map → index.es-legacy-DdMTxXQK.js.map} +1 -1
  225. package/dist/assets/{mapbox-jb8Zev6T-Dc19y3gY.js → mapbox-jb8Zev6T-DbABbE_7.js} +2 -2
  226. package/dist/assets/{mapbox-jb8Zev6T-Dc19y3gY.js.map → mapbox-jb8Zev6T-DbABbE_7.js.map} +1 -1
  227. package/dist/assets/{mapbox-jb8Zev6T-legacy-BeyVAwDw.js → mapbox-jb8Zev6T-legacy-DkLTUrvZ.js} +2 -2
  228. package/dist/assets/{mapbox-jb8Zev6T-legacy-BeyVAwDw.js.map → mapbox-jb8Zev6T-legacy-DkLTUrvZ.js.map} +1 -1
  229. package/dist/assets/{maplibre-CUYkxr-D-BzuGVu1-.js → maplibre-CUYkxr-D-DPcOY-Lp.js} +2 -2
  230. package/dist/assets/{maplibre-CUYkxr-D-BzuGVu1-.js.map → maplibre-CUYkxr-D-DPcOY-Lp.js.map} +1 -1
  231. package/dist/assets/{maplibre-CUYkxr-D-legacy-9NqXov2x.js → maplibre-CUYkxr-D-legacy-Ct1K6aaN.js} +2 -2
  232. package/dist/assets/{maplibre-CUYkxr-D-legacy-9NqXov2x.js.map → maplibre-CUYkxr-D-legacy-Ct1K6aaN.js.map} +1 -1
  233. package/dist/assets/neighborhood-fallback-CizB5oi9.js.map +1 -1
  234. package/dist/assets/neighborhood-fallback-legacy-Bu1BwGpC.js.map +1 -1
  235. package/dist/assets/{sdks-Bxf4c2j1.js → sdks-CIuvHxGG.js} +2 -2
  236. package/dist/assets/{sdks-Bxf4c2j1.js.map → sdks-CIuvHxGG.js.map} +1 -1
  237. package/dist/assets/{sdks-legacy-DYYmSGi_.js → sdks-legacy-3YngGDux.js} +2 -2
  238. package/dist/assets/{sdks-legacy-DYYmSGi_.js.map → sdks-legacy-3YngGDux.js.map} +1 -1
  239. package/dist/assets/styles-C6SoSE0g-DVodK__e.js +2 -0
  240. package/dist/assets/styles-C6SoSE0g-DVodK__e.js.map +1 -0
  241. package/dist/assets/styles-C6SoSE0g-legacy-DQucoUvA.js +2 -0
  242. package/dist/assets/styles-C6SoSE0g-legacy-DQucoUvA.js.map +1 -0
  243. package/dist/assets/{styles-CJwaJsrY-B7fRLA0K.js → styles-CJwaJsrY-BTp6ht1Q.js} +1 -1
  244. package/dist/assets/{styles-CJwaJsrY-B7fRLA0K.js.map → styles-CJwaJsrY-BTp6ht1Q.js.map} +1 -1
  245. package/dist/assets/{styles-CJwaJsrY-legacy-DpdECtH-.js → styles-CJwaJsrY-legacy-DDFkoq39.js} +1 -1
  246. package/dist/assets/{styles-CJwaJsrY-legacy-DpdECtH-.js.map → styles-CJwaJsrY-legacy-DDFkoq39.js.map} +1 -1
  247. package/dist/assets/{useDemographicsData-BvaNug6u.js → useDemographicsData-Dz3Pu-Ht.js} +2 -2
  248. package/dist/assets/{useDemographicsData-BvaNug6u.js.map → useDemographicsData-Dz3Pu-Ht.js.map} +1 -1
  249. package/dist/assets/{useDemographicsData-legacy-Ce1DyoWD.js → useDemographicsData-legacy-BD0OVn1e.js} +2 -2
  250. package/dist/assets/{useDemographicsData-legacy-Ce1DyoWD.js.map → useDemographicsData-legacy-BD0OVn1e.js.map} +1 -1
  251. package/dist/assets/{useGeographies-PyhHBRG7.js → useGeographies-CtCPN011.js} +2 -2
  252. package/dist/assets/{useGeographies-PyhHBRG7.js.map → useGeographies-CtCPN011.js.map} +1 -1
  253. package/dist/assets/{useGeographies-legacy-D9GtGYxP.js → useGeographies-legacy-BmNvVGxt.js} +2 -2
  254. package/dist/assets/{useGeographies-legacy-D9GtGYxP.js.map → useGeographies-legacy-BmNvVGxt.js.map} +1 -1
  255. package/dist/assets/{useIsMobile-CFx2Xa3X.js → useIsMobile-DqKgF2mC.js} +2 -2
  256. package/dist/assets/{useIsMobile-CFx2Xa3X.js.map → useIsMobile-DqKgF2mC.js.map} +1 -1
  257. package/dist/assets/{useIsMobile-legacy-CAXdJOlD.js → useIsMobile-legacy-jEoaA3sZ.js} +2 -2
  258. package/dist/assets/{useIsMobile-legacy-CAXdJOlD.js.map → useIsMobile-legacy-jEoaA3sZ.js.map} +1 -1
  259. package/dist/assets/{useLocation-CgVyB4mN.js → useLocation-DnI9ftE5.js} +2 -2
  260. package/dist/assets/{useLocation-CgVyB4mN.js.map → useLocation-DnI9ftE5.js.map} +1 -1
  261. package/dist/assets/{useLocation-legacy-CoN_4aWO.js → useLocation-legacy-UNiEBLrQ.js} +2 -2
  262. package/dist/assets/{useLocation-legacy-CoN_4aWO.js.map → useLocation-legacy-UNiEBLrQ.js.map} +1 -1
  263. package/dist/assets/{useProfiles-CleTbooi.js → useProfiles-DKmVxUf9.js} +2 -2
  264. package/dist/assets/{useProfiles-CleTbooi.js.map → useProfiles-DKmVxUf9.js.map} +1 -1
  265. package/dist/assets/{useProfiles-legacy-CLlZc_oV.js → useProfiles-legacy-OVEEk1dZ.js} +2 -2
  266. package/dist/assets/{useProfiles-legacy-CLlZc_oV.js.map → useProfiles-legacy-OVEEk1dZ.js.map} +1 -1
  267. package/dist/assets/{useSchools-CKXVMLym.js → useSchools-BC9vy4Xx.js} +2 -2
  268. package/dist/assets/{useSchools-CKXVMLym.js.map → useSchools-BC9vy4Xx.js.map} +1 -1
  269. package/dist/assets/{useSchools-legacy-BvZM00mn.js → useSchools-legacy-g8-dezaK.js} +2 -2
  270. package/dist/assets/{useSchools-legacy-BvZM00mn.js.map → useSchools-legacy-g8-dezaK.js.map} +1 -1
  271. package/dist/assets/{useScores-BYLlfjJr.js → useScores-BZGEEU4U.js} +2 -2
  272. package/dist/assets/{useScores-BYLlfjJr.js.map → useScores-BZGEEU4U.js.map} +1 -1
  273. package/dist/assets/{useScores-legacy-BtklhLy-.js → useScores-legacy-C9icRMIu.js} +2 -2
  274. package/dist/assets/{useScores-legacy-BtklhLy-.js.map → useScores-legacy-C9icRMIu.js.map} +1 -1
  275. package/dist/assets/utils-DuZH7Cmm-CGFseyIn.js +2 -0
  276. package/dist/assets/utils-DuZH7Cmm-CGFseyIn.js.map +1 -0
  277. package/dist/assets/utils-DuZH7Cmm-legacy-vOQGld7w.js +2 -0
  278. package/dist/assets/utils-DuZH7Cmm-legacy-vOQGld7w.js.map +1 -0
  279. package/dist/index.html +2 -2
  280. package/dist/types/context/stateManager/index.d.ts.map +1 -1
  281. package/dist/types/context/stateManager/index.js +50 -3
  282. package/dist/types/context/stateManager/index.js.map +1 -1
  283. package/dist/types/sdks/NeighborhoodMap/constants.d.ts +1 -1
  284. package/dist/types/sdks/NeighborhoodMap/constants.js +1 -1
  285. package/dist/types/utils/errorTracker/index.d.ts.map +1 -1
  286. package/dist/types/utils/errorTracker/index.js +6 -5
  287. package/dist/types/utils/errorTracker/index.js.map +1 -1
  288. package/dist/types/utils/normalizeLocale/index.d.ts +18 -0
  289. package/dist/types/utils/normalizeLocale/index.d.ts.map +1 -0
  290. package/dist/types/utils/normalizeLocale/index.js +24 -0
  291. package/dist/types/utils/normalizeLocale/index.js.map +1 -0
  292. package/dist/types/utils/normalizeLocale/index.test.d.ts +2 -0
  293. package/dist/types/utils/normalizeLocale/index.test.d.ts.map +1 -0
  294. package/dist/types/utils/normalizeLocale/index.test.js +35 -0
  295. package/dist/types/utils/normalizeLocale/index.test.js.map +1 -0
  296. package/package.json +1 -1
  297. package/dist/assets/Cluster-BHQcO6iC-BLUKMpub.js +0 -2
  298. package/dist/assets/Google-CH7a2yx--B615NdD8.js +0 -2
  299. package/dist/assets/Google-CXGCn-oJ-AkqBPqrT.js +0 -2
  300. package/dist/assets/Google-D1kMMDIv-BsfRv65Q.js +0 -2
  301. package/dist/assets/Google-D1kMMDIv-BsfRv65Q.js.map +0 -1
  302. package/dist/assets/Google-D1kMMDIv-legacy-VjXA4xrw.js +0 -2
  303. package/dist/assets/Google-D1kMMDIv-legacy-VjXA4xrw.js.map +0 -1
  304. package/dist/assets/Mapbox-CIislOVu-DF1r9xj3.js +0 -2
  305. package/dist/assets/Mapbox-CIislOVu-DF1r9xj3.js.map +0 -1
  306. package/dist/assets/Mapbox-CIislOVu-legacy-BL-N58pQ.js +0 -2
  307. package/dist/assets/Mapbox-CIislOVu-legacy-BL-N58pQ.js.map +0 -1
  308. package/dist/assets/Maptiler-Cy2r6w4G-SVyBwt0g.js +0 -2
  309. package/dist/assets/Maptiler-Cy2r6w4G-SVyBwt0g.js.map +0 -1
  310. package/dist/assets/Maptiler-Cy2r6w4G-legacy-Bhbgroyv.js +0 -2
  311. package/dist/assets/Maptiler-Cy2r6w4G-legacy-Bhbgroyv.js.map +0 -1
  312. package/dist/assets/constants-DOpa8YMW-CAHGepUD.js +0 -2
  313. package/dist/assets/constants-DOpa8YMW-CAHGepUD.js.map +0 -1
  314. package/dist/assets/constants-DOpa8YMW-legacy-TnabVEaS.js +0 -2
  315. package/dist/assets/constants-DOpa8YMW-legacy-TnabVEaS.js.map +0 -1
  316. package/dist/assets/esm-k7KI3vER-DWALg7MX.js +0 -2
  317. package/dist/assets/esm-k7KI3vER-DWALg7MX.js.map +0 -1
  318. package/dist/assets/esm-k7KI3vER-legacy-DjAkR8OT.js +0 -2
  319. package/dist/assets/esm-k7KI3vER-legacy-DjAkR8OT.js.map +0 -1
  320. package/dist/assets/index-CNd7hC6B.js.map +0 -1
  321. package/dist/assets/index-legacy-C3WMF-is.js +0 -2
  322. package/dist/assets/index-legacy-C3WMF-is.js.map +0 -1
  323. package/dist/assets/styles-hx5_Dz4D-CjeaMkGu.js +0 -2
  324. package/dist/assets/styles-hx5_Dz4D-CjeaMkGu.js.map +0 -1
  325. package/dist/assets/styles-hx5_Dz4D-legacy-CNN4CNPX.js +0 -2
  326. package/dist/assets/styles-hx5_Dz4D-legacy-CNN4CNPX.js.map +0 -1
  327. package/dist/assets/utils-CjIvvA5e-DRv4kcQu.js +0 -2
  328. package/dist/assets/utils-CjIvvA5e-DRv4kcQu.js.map +0 -1
  329. package/dist/assets/utils-CjIvvA5e-legacy-BArgSH63.js +0 -2
  330. package/dist/assets/utils-CjIvvA5e-legacy-BArgSH63.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodFeatured-s-u9pUbm.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":"2jBAOA,EAAA,yLCWA,IAAY,EAAL,SAAA,UACL,EAAA,WAAa,+BACb,EAAA,0BAA4B,qCAC5B,EAAA,mCAAqC,wDAHhC,KAQK,EAAL,SAAA,UACL,EAAA,WAAa,aACb,EAAA,0BAA4B,qCAC5B,EAAA,mCAAqC,wDAHhC,WCND,EAAA,EAAoC,cACxC,CAAA,GAKI,EAAA,EACJ,eAIA,MAAM,SAAE,GAAa,IACf,EAAW,IAEjB,EAAA,KACE,EAAS,UAAU,CACjB,UAAW,EAAuB,aAGpC,EAAS,oBAAoB,CAC3B,UAAW,EAAgB,eAI/B,MAAM,KAAE,EAAA,UAAM,EAAA,UAAW,GF/B3B,UAAA,WAAA,yEAoDE,OAAA,EAAA,0OA9BM,GAAA,CAAA,IAAA,KAAA,SAAA,EAAA,QAAA,OAAA,KAIA,GAAA,EAAA,QAAA,IAAA,MAAA,IAAA,MAAA,8BAAA,EAAA,UAIA,OAAA,EAAA,0NAmBA,MAFA,EAAA,iBAAA,GAEA,8BElBiC,CAAyB,CAC9D,WAAY,EAAS,eAAe,aAGtC,IAAK,EAAS,eAAe,WAC3B,MAAM,IAAI,MAAM,4CAGlB,OACE,EAAA,EAAA,KAAC,EAA4B,SAA7B,CACE,MAAO,CACL,YACA,YACA,cAAe,GAGhB,cExCM,EAAA,KACX,MAAM,EAAE,GAAM,EAAe,wBACvB,EAAW,KACX,SAAE,GAAa,IACf,EAAoB,EAAS,SAAS,yBAAsB,EAC5D,EAAY,EAAS,SAAS,iBAAmB,KAEjD,cAAE,EAAA,UAAe,EAAA,UAAW,IFH9B,EAAA,EAAA,YAA2C,GEIzC,EACJ,EAAS,SAAS,kCAA+B,EAEnD,IAAK,GAAe,UAAiD,IAArC,GAAe,WAAW,OACxD,OAAO,KAGT,MAmBM,EAAA,CACH,EAA4B,IAAA,KAC3B,EAAS,UAAU,CACjB,UAAW,EAAuB,0BAClC,gBAAiB,CACf,CACE,MAAO,SACP,KAAM,EAAa,QAErB,CACE,MAAO,OACP,KAAM,EAAa,MAErB,CACE,MAAO,QACP,KAAM,MAKZ,EAAS,oBAAoB,CAC3B,UAAW,EAAgB,0BAC3B,gBAAiB,CACf,UAAW,EAAa,OACxB,QAAS,EAAa,KACtB,SAAU,MAKlB,OACE,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SACI,GAKA,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,GACC,EAAA,EAAA,MAAC,MAAD,CAAK,UDhFQ,uBCgFb,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UD/EK,mFC+EuB,kBAAiB,WAC/C,GAAe,WACd,EAAA,EAAA,KAAC,MAAD,CACE,QAAS,EACP,GAAe,SACf,sBAGF,EAAA,EAAA,KAAC,EAAD,CAEE,YAAA,EACA,aAAc,GAAe,SAC7B,KACE,GACA,EACE,EACA,GAAe,SACf,IARC,GAAe,SAAS,aAgBrC,EAAA,EAAA,KAAC,MAAD,CAAK,UDvHM,kGCwHR,GAAe,WAAW,IAAA,CAAK,EAAc,KAC5C,EAAA,EAAA,KAAC,MAAD,CACE,UDnHA,oGCqHA,kBAAiB,EACjB,QAAS,EACP,EACA,YAAY,EAAQ,eAGtB,EAAA,EAAA,KAAC,EAAD,CACgB,eACd,KACE,GACA,EACE,EACA,EACA,MAdD,EAAa,WAsBvB,IACC,EAAA,EAAA,KAAC,IAAD,CACE,QAhHV,KACJ,EAAS,UAAU,CACjB,UAAW,EAAuB,mCAClC,gBAAiB,CACf,CACE,MAAO,aACP,KAAM,EAAS,eAAe,eAKpC,EAAS,oBAAoB,CAC3B,UAAW,EAAgB,mCAC3B,gBAAiB,CACf,cAAe,EAAS,eAAe,eAmG7B,UDhII,iNCiIJ,KAAM,EACN,OAAO,UACP,IAAI,sBAEH,EAAE,kCAKT,EAAA,EAAA,KAAC,MAAD,CAAK,UD7HS,iFC8HZ,EAAA,EAAA,KAAC,EAAD,CACE,QAAQ,SACL,IACH,WAAY,CACV,WACE,EAAA,EAAA,KAAC,IAAD,CACE,OAAO,SACP,IAAI,sBACJ,KAAA,sDAGJ,MAAM,EAAA,EAAA,KAAC,SAAD,CAAA,WAnFhB,EAAA,EAAA,KAAC,MAAD,CAAK,UDvDiB,4DCwDpB,EAAA,EAAA,KAAC,EAAD,CAAgB,OAAA,SCrFb,EAAgC,EAAO,CAGlD,IAAK,IAAS,WACd,IAAK,IAAS,WACd,YAAa,IAAS,WACtB,mBAAoB,IAAS,WAC7B,gBAAiB,IAAS,OAAO,GAAG,WACpC,4BAA6B,IAAS,aACrC,WAAU,GCIb,EAAoB,EAAmB,qBAAqB,KAE5D,IAAM,EAAA,KACJ,MAAM,SAAE,GAAa,IACf,EAAW,IACX,EAAS,EAAS,eAAe,QAAU,KAE3C,GAAA,EAAA,EAAA,SAAA,IACA,EAAS,SAAS,YACb,CACL,YAAa,EAAS,SAAS,aAI5B,CACL,IAAK,EAAS,SAAS,IACvB,IAAK,EAAS,SAAS,KAExB,CACD,EAAS,SAAS,IAClB,EAAS,SAAS,IAClB,EAAS,SAAS,cAGpB,OACE,EAAA,EAAA,KAAC,EAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CACE,IAAI,wBACI,SACR,QAAS,EAAS,kBAElB,EAAA,EAAA,KAAC,EAAD,CACE,YAAa,EAAS,eAAe,aAAa,IAClD,OAAQ,EAAS,OACjB,WAAY,EAAS,eAAe,WACpC,OAAQ,EAAS,eAAe,OAChC,QAAS,EAAa,gCAEtB,EAAA,EAAA,KAAC,EAAD,CACE,yBAA0B,CACxB,OAAQ,EAAS,QAAU,IAE7B,kBAAmB,EAAmB,qBACtC,KAAM,CACJ,SAAU,EAAS,SACnB,YAAa,EAAa,sBAC1B,eAAA,WAEF,WAAY,CACV,WACA,KAAM,EAAS,SACf,SAAU,SAAS,SACnB,SACA,YAEF,MAAO,CACL,aACE,aAGJ,EAAA,EAAA,KAAC,EAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CAAA"}
1
+ {"version":3,"file":"NeighborhoodFeatured-DfjxzlxY.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-Ce8Vb50C.js","./sdks-legacy-DYYmSGi_.js","./index-legacy-C3WMF-is.js","./ResizeWrapper-legacy-DGnrE5zr.js","./ValidateOptions-legacy-DzEh45h5.js","./useIsMobile-legacy-CAXdJOlD.js","./old-tailwind-legacy-CEPpMJ8m.js","./NeighborhoodCard-legacy-BXbEUaCk.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,w,H,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.d,r=e.f,d=e.g,s=e.h,u=e.n,c=e.o,g=e.r,h=e.s,v=e.t,p=e.u},function(e){f=e.B,b=e._t,m=e.q,x=e.r,E=e.t},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=m(),w=C.createContext({}),H=()=>(0,C.useContext)(w),K=({children:e})=>{var o,n;const{sdkState:l}=E(),t=h();x(()=>{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}=E(),l=R[(null===(o=n.globalOptions)||void 0===o||null===(o=o.environment)||void 0===o?void 0:o.api)||"prod"];return s({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 b.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)(w.Provider,{value:{isFetched:a,isLoading:r,neighborhoods:i},children:e})},L=()=>{var e,o,n,l,i;const{t:a}=d("neighborhoodFeatured"),r=h(),{sdkState:s}=E(),u=(null===(e=s.options)||void 0===e?void 0:e.exploreShowcaseURL)||void 0,c=(null===(o=s.options)||void 0===o?void 0:o.urlSchemaSpacer)||"-",{neighborhoods:g,isFetched:v,isLoading:p}=H(),b=(null===(n=s.options)||void 0===n?void 0:n.singleNeighborhoodURLSchema)||void 0;if((null==g||!g.featured)&&0===(null==g||null===(l=g.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:g?(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==g?void 0:g.featured)&&(0,S.jsx)("div",{onClick:m(null==g?void 0:g.featured,"featured"),children:(0,S.jsx)(j,{isFeatured:!0,neighborhood:null==g?void 0:g.featured,href:b&&_(b,null==g?void 0:g.featured,c)},null==g?void 0:g.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==g||null===(i=g.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=s.globalOptions)||void 0===e?void 0:e.externalId}]}),r.trackAnalyticsEvent({eventName:k.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,eventAttributes:{ll_externalID:null===(o=s.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:a().optional(),lng:a().optional(),geographyId:r().optional(),exploreShowcaseURL:r().optional(),urlSchemaSpacer:r().length(1).optional(),singleNeighborhoodURLSchema:r().optional()}).noUnknown(!0),c(u.neighborhoodFeatured.key),e("default",()=>{var e,o,n,l,t,a,r;const{sdkState:d}=E(),s=I(),c=(null===(e=d.globalOptions)||void 0===e?void 0:e.locale)||"en",h=(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)(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===(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:u.neighborhoodFeatured,meta:{clientId:d.clientId,productName:v.NEIGHBORHOOD_FEATURED,productVersion:"1.24.42"},attributes:{location:h,host:d.location,host_url:document.referrer,locale:c,isMobile:s},flags:{isDebugMode:!1},children:(0,S.jsx)(K,{children:(0,S.jsx)(L,{})})})})})})})}}});
2
- //# sourceMappingURL=NeighborhoodFeatured-legacy-DFs2mouX.js.map
1
+ System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./Trans-legacy-B47WOepl.js","./sdks-legacy-3YngGDux.js","./index-legacy-DF60d_4Z.js","./ResizeWrapper-legacy-WwfLyk1y.js","./ValidateOptions-legacy-CtRpWaj6.js","./useIsMobile-legacy-jEoaA3sZ.js","./old-tailwind-legacy-CEPpMJ8m.js","./NeighborhoodCard-legacy-CT-3ylPG.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,w,H,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.d,r=e.f,d=e.g,s=e.h,u=e.n,c=e.o,g=e.r,h=e.s,v=e.t,p=e.u},function(e){f=e.B,b=e._t,m=e.q,x=e.r,E=e.t},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=m(),w=C.createContext({}),H=()=>(0,C.useContext)(w),K=({children:e})=>{var o,n;const{sdkState:l}=E(),t=h();x(()=>{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}=E(),l=R[(null===(o=n.globalOptions)||void 0===o||null===(o=o.environment)||void 0===o?void 0:o.api)||"prod"];return s({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 b.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)(w.Provider,{value:{isFetched:a,isLoading:r,neighborhoods:i},children:e})},L=()=>{var e,o,n,l,i;const{t:a}=d("neighborhoodFeatured"),r=h(),{sdkState:s}=E(),u=(null===(e=s.options)||void 0===e?void 0:e.exploreShowcaseURL)||void 0,c=(null===(o=s.options)||void 0===o?void 0:o.urlSchemaSpacer)||"-",{neighborhoods:g,isFetched:v,isLoading:p}=H(),b=(null===(n=s.options)||void 0===n?void 0:n.singleNeighborhoodURLSchema)||void 0;if((null==g||!g.featured)&&0===(null==g||null===(l=g.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:g?(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==g?void 0:g.featured)&&(0,S.jsx)("div",{onClick:m(null==g?void 0:g.featured,"featured"),children:(0,S.jsx)(j,{isFeatured:!0,neighborhood:null==g?void 0:g.featured,href:b&&_(b,null==g?void 0:g.featured,c)},null==g?void 0:g.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==g||null===(i=g.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=s.globalOptions)||void 0===e?void 0:e.externalId}]}),r.trackAnalyticsEvent({eventName:k.EXPLORE_MORE_NEIGHBORHOODS_CLICKED,eventAttributes:{ll_externalID:null===(o=s.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:a().optional(),lng:a().optional(),geographyId:r().optional(),exploreShowcaseURL:r().optional(),urlSchemaSpacer:r().length(1).optional(),singleNeighborhoodURLSchema:r().optional()}).noUnknown(!0),c(u.neighborhoodFeatured.key),e("default",()=>{var e,o,n,l,t,a,r;const{sdkState:d}=E(),s=I(),c=(null===(e=d.globalOptions)||void 0===e?void 0:e.locale)||"en",h=(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)(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===(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:u.neighborhoodFeatured,meta:{clientId:d.clientId,productName:v.NEIGHBORHOOD_FEATURED,productVersion:"1.24.43"},attributes:{location:h,host:d.location,host_url:document.referrer,locale:c,isMobile:s},flags:{isDebugMode:!1},children:(0,S.jsx)(K,{children:(0,S.jsx)(L,{})})})})})})})}}});
2
+ //# sourceMappingURL=NeighborhoodFeatured-legacy-DHTnv4CZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodFeatured-legacy-DFs2mouX.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-DHTnv4CZ.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,d as o,f as s,g as n,n as l,o as i,r,s as p,t as d,u as g}from"./sdks-Bxf4c2j1.js";import{t as m}from"./MapPin.es-DUGzA8QJ.js";import{q as c,r as u,t as h}from"./index-CNd7hC6B.js";import{t as x}from"./useGeographies-PyhHBRG7.js";/* empty css */import{t as b}from"./ResizeWrapper-DWV5t91u.js";import{t as f}from"./ValidateOptions-0362goEF.js";import{t as y}from"./useIsMobile-CFx2Xa3X.js";import{t as j}from"./useProfiles-CleTbooi.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=p(),s=y();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:r}=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||r,[n,r]),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}=n("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:o().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:o().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:s().optional(),image:s().optional()}).noUnknown(!0);i(l.neighborhoodWrap.key);var S=()=>{const{sdkState:e}=h(),a=y(),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)(f,{sdk:"Neighborhood Hero",schema:H,options:e.options,children:(0,E.jsx)(r,{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:l.neighborhoodWrap,meta:{clientId:e.clientId,productName:d.NEIGHBORHOOD_HERO,productVersion:"1.24.42"},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-BywJZ-xz.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,d as o,f as s,g as n,n as l,o as i,r,s as p,t as d,u as g}from"./sdks-CIuvHxGG.js";import{t as m}from"./MapPin.es-DUGzA8QJ.js";import{q as c,r as u,t as h}from"./index-Bi8h_BNl.js";import{t as x}from"./useGeographies-CtCPN011.js";/* empty css */import{t as b}from"./ResizeWrapper-C7vwckhm.js";import{t as f}from"./ValidateOptions-DsfMKmBQ.js";import{t as y}from"./useIsMobile-DqKgF2mC.js";import{t as j}from"./useProfiles-DKmVxUf9.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=p(),s=y();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:r}=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||r,[n,r]),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}=n("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:o().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:o().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:s().optional(),image:s().optional()}).noUnknown(!0);i(l.neighborhoodWrap.key);var S=()=>{const{sdkState:e}=h(),a=y(),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)(f,{sdk:"Neighborhood Hero",schema:H,options:e.options,children:(0,E.jsx)(r,{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:l.neighborhoodWrap,meta:{clientId:e.clientId,productName:d.NEIGHBORHOOD_HERO,productVersion:"1.24.43"},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-DrBKD27P.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodHero-BywJZ-xz.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__$oUiuAXR7gZMKRQU56HW2w__\"","export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","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-DrBKD27P.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-DYYmSGi_.js","./MapPin.es-legacy-BLTd1wBx.js","./index-legacy-C3WMF-is.js","./useGeographies-legacy-D9GtGYxP.js","./globals-legacy-BkBmZmLf.js","./ResizeWrapper-legacy-DGnrE5zr.js","./ValidateOptions-legacy-DzEh45h5.js","./useIsMobile-legacy-CAXdJOlD.js","./useProfiles-legacy-CLlZc_oV.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.d,i=e.f,s=e.g,d=e.n,r=e.o,u=e.r,g=e.s,c=e.t,p=e.u},function(e){v=e.t},function(e){m=e.q,h=e.r,x=e.t},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,u,c;const{sdkState:p}=x(),v=(null===(o=p.globalOptions)||void 0===o?void 0:o.locale)||"en",m=g(),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===(u=p.options)||void 0===u?void 0:u.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}=s("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:t().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:t().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:i().optional(),image:i().optional()}).noUnknown(!0),r(d.neighborhoodWrap.key),e("default",()=>{var e,o,l,n,t,i,s;const{sdkState:r}=x(),g=j(),p=(null===(e=r.globalOptions)||void 0===e?void 0:e.locale)||"en",v=(0,I.useMemo)(()=>{var e,o,l,n;return null!==(e=r.options)&&void 0!==e&&e.geographyId?{geographyId:null===(o=r.options)||void 0===o?void 0:o.geographyId}:{lat:null===(l=r.options)||void 0===l?void 0:l.lat,lng:null===(n=r.options)||void 0===n?void 0:n.lng}},[null===(o=r.options)||void 0===o?void 0:o.lat,null===(l=r.options)||void 0===l?void 0:l.lng,null===(n=r.options)||void 0===n?void 0:n.geographyId]);return(0,_.jsx)(y,{children:(0,_.jsx)(f,{sdk:"Neighborhood Hero",schema:K,options:r.options,children:(0,_.jsx)(u,{environment:null===(t=r.globalOptions)||void 0===t||null===(t=t.environment)||void 0===t?void 0:t.api,apiKey:r.apiKey,appearance:null===(i=r.globalOptions)||void 0===i?void 0:i.appearance,locale:null===(s=r.globalOptions)||void 0===s?void 0:s.locale,product:c.NEIGHBORHOOD_HERO,children:(0,_.jsx)(a,{trackingPipelineSettings:{apiKey:r.apiKey||""},analyticsSettings:d.neighborhoodWrap,meta:{clientId:r.clientId,productName:c.NEIGHBORHOOD_HERO,productVersion:"1.24.42"},attributes:{location:v,host:r.location,host_url:document.referrer,locale:p,isMobile:g},flags:{isDebugMode:!1},children:(0,_.jsx)(M,{children:(0,_.jsx)(H,{})})})})})})})}}});
2
- //# sourceMappingURL=NeighborhoodHero-legacy-DBXy8A9v.js.map
1
+ System.register(["./rolldown-runtime-legacy-Djb2rrqm.js","./google-maps-vendor-legacy-CPuMOKGq.js","./sdks-legacy-3YngGDux.js","./MapPin.es-legacy-BLTd1wBx.js","./index-legacy-DF60d_4Z.js","./useGeographies-legacy-BmNvVGxt.js","./globals-legacy-BkBmZmLf.js","./ResizeWrapper-legacy-WwfLyk1y.js","./ValidateOptions-legacy-CtRpWaj6.js","./useIsMobile-legacy-jEoaA3sZ.js","./useProfiles-legacy-OVEEk1dZ.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.d,i=e.f,s=e.g,d=e.n,r=e.o,u=e.r,g=e.s,c=e.t,p=e.u},function(e){v=e.t},function(e){m=e.q,h=e.r,x=e.t},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,u,c;const{sdkState:p}=x(),v=(null===(o=p.globalOptions)||void 0===o?void 0:o.locale)||"en",m=g(),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===(u=p.options)||void 0===u?void 0:u.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}=s("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:t().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:t().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:i().optional(),image:i().optional()}).noUnknown(!0),r(d.neighborhoodWrap.key),e("default",()=>{var e,o,l,n,t,i,s;const{sdkState:r}=x(),g=j(),p=(null===(e=r.globalOptions)||void 0===e?void 0:e.locale)||"en",v=(0,I.useMemo)(()=>{var e,o,l,n;return null!==(e=r.options)&&void 0!==e&&e.geographyId?{geographyId:null===(o=r.options)||void 0===o?void 0:o.geographyId}:{lat:null===(l=r.options)||void 0===l?void 0:l.lat,lng:null===(n=r.options)||void 0===n?void 0:n.lng}},[null===(o=r.options)||void 0===o?void 0:o.lat,null===(l=r.options)||void 0===l?void 0:l.lng,null===(n=r.options)||void 0===n?void 0:n.geographyId]);return(0,_.jsx)(y,{children:(0,_.jsx)(f,{sdk:"Neighborhood Hero",schema:K,options:r.options,children:(0,_.jsx)(u,{environment:null===(t=r.globalOptions)||void 0===t||null===(t=t.environment)||void 0===t?void 0:t.api,apiKey:r.apiKey,appearance:null===(i=r.globalOptions)||void 0===i?void 0:i.appearance,locale:null===(s=r.globalOptions)||void 0===s?void 0:s.locale,product:c.NEIGHBORHOOD_HERO,children:(0,_.jsx)(a,{trackingPipelineSettings:{apiKey:r.apiKey||""},analyticsSettings:d.neighborhoodWrap,meta:{clientId:r.clientId,productName:c.NEIGHBORHOOD_HERO,productVersion:"1.24.43"},attributes:{location:v,host:r.location,host_url:document.referrer,locale:p,isMobile:g},flags:{isDebugMode:!1},children:(0,_.jsx)(M,{children:(0,_.jsx)(H,{})})})})})})})}}});
2
+ //# sourceMappingURL=NeighborhoodHero-legacy-BMCiD7gd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodHero-legacy-DBXy8A9v.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-BMCiD7gd.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
- import{a as e}from"./rolldown-runtime-C_ttsnZz.js";import{l as a}from"./google-maps-vendor-DvfEEdRU.js";import{a as t,d as i,f as o,g as n,m as r,n as s,o as l,r as g,s as d,t as h,u as p}from"./sdks-Bxf4c2j1.js";import{t as m}from"./ScoreIcon-e7HkxsIV.js";import{t as c}from"./IconBase.es-CEehl5AX.js";import{q as u,r as f,t as x}from"./index-CNd7hC6B.js";import{t as y}from"./useGeographies-PyhHBRG7.js";/* empty css */import{t as v}from"./ResizeWrapper-DWV5t91u.js";import{t as M}from"./ValidateOptions-0362goEF.js";import{t as Z}from"./useIsMobile-CFx2Xa3X.js";import{t as j}from"./useScores-BYLlfjJr.js";import{t as b}from"./TitleHeader-mQeQYQpJ.js";import{t as H}from"./NoDataContent-DMnLpuKS.js";var I=e(a(),1),A=new Map([["bold",I.createElement(I.Fragment,null,I.createElement("path",{d:"M140,32V64a12,12,0,0,1-24,0V32a12,12,0,0,1,24,0Zm84,84H192a12,12,0,0,0,0,24h32a12,12,0,0,0,0-24Zm-42.26,48.77a12,12,0,1,0-17,17l22.63,22.63a12,12,0,0,0,17-17ZM128,180a12,12,0,0,0-12,12v32a12,12,0,0,0,24,0V192A12,12,0,0,0,128,180ZM74.26,164.77,51.63,187.4a12,12,0,0,0,17,17l22.63-22.63a12,12,0,1,0-17-17ZM76,128a12,12,0,0,0-12-12H32a12,12,0,0,0,0,24H64A12,12,0,0,0,76,128ZM68.6,51.63a12,12,0,1,0-17,17L74.26,91.23a12,12,0,0,0,17-17Z"}))],["duotone",I.createElement(I.Fragment,null,I.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),I.createElement("path",{d:"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z"}))],["fill",I.createElement(I.Fragment,null,I.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM48,136a8,8,0,0,1,0-16H72a8,8,0,0,1,0,16Zm46.06,37.25-17,17a8,8,0,0,1-11.32-11.32l17-17a8,8,0,0,1,11.31,11.31Zm0-79.19a8,8,0,0,1-11.31,0l-17-17A8,8,0,0,1,77.09,65.77l17,17A8,8,0,0,1,94.06,94.06ZM136,208a8,8,0,0,1-16,0V184a8,8,0,0,1,16,0Zm0-136a8,8,0,0,1-16,0V48a8,8,0,0,1,16,0Zm54.23,118.23a8,8,0,0,1-11.32,0l-17-17a8,8,0,0,1,11.31-11.31l17,17A8,8,0,0,1,190.23,190.23ZM208,136H184a8,8,0,0,1,0-16h24a8,8,0,0,1,0,16Z"}))],["light",I.createElement(I.Fragment,null,I.createElement("path",{d:"M134,32V64a6,6,0,0,1-12,0V32a6,6,0,0,1,12,0Zm90,90H192a6,6,0,0,0,0,12h32a6,6,0,0,0,0-12Zm-46.5,47A6,6,0,0,0,169,177.5l22.63,22.62a6,6,0,0,0,8.48-8.48ZM128,186a6,6,0,0,0-6,6v32a6,6,0,0,0,12,0V192A6,6,0,0,0,128,186ZM78.5,169,55.88,191.64a6,6,0,1,0,8.48,8.48L87,177.5A6,6,0,1,0,78.5,169ZM70,128a6,6,0,0,0-6-6H32a6,6,0,0,0,0,12H64A6,6,0,0,0,70,128ZM64.36,55.88a6,6,0,0,0-8.48,8.48L78.5,87A6,6,0,1,0,87,78.5Z"}))],["regular",I.createElement(I.Fragment,null,I.createElement("path",{d:"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z"}))],["thin",I.createElement(I.Fragment,null,I.createElement("path",{d:"M132,32V64a4,4,0,0,1-8,0V32a4,4,0,0,1,8,0Zm92,92H192a4,4,0,0,0,0,8h32a4,4,0,0,0,0-8Zm-47.92,46.43a4,4,0,1,0-5.65,5.65l22.62,22.63a4,4,0,0,0,5.66-5.66ZM128,188a4,4,0,0,0-4,4v32a4,4,0,0,0,8,0V192A4,4,0,0,0,128,188ZM79.92,170.43,57.29,193.05A4,4,0,0,0,63,198.71l22.62-22.63a4,4,0,1,0-5.65-5.65ZM68,128a4,4,0,0,0-4-4H32a4,4,0,0,0,0,8H64A4,4,0,0,0,68,128ZM63,57.29A4,4,0,0,0,57.29,63L79.92,85.57a4,4,0,1,0,5.65-5.65Z"}))]]),E=I.forwardRef((e,a)=>I.createElement(c,{ref:a,...e,weights:A}));E.displayName="SpinnerGapIcon";var V=function(e){return e.SDK_VIEWED="neighborhood-highlights-Viewed",e}({}),w=function(e){return e.SDK_VIEWED="sdk_viewed",e}({}),N={transport:["pedestrian_friendly","car_friendly","transit_friendly","cycling_friendly"],services:["groceries","shopping","restaurants","cafes"],character:["quiet","parks","vibrant","nightlife"]},L=[...N.transport,...N.services,...N.character],D=u(),O=I.createContext({}),S=()=>(0,I.useContext)(O),_=({children:e})=>{const{sdkState:a}=x(),t=d();f(()=>{t.postEvent({eventType:V.SDK_VIEWED}),t.trackAnalyticsEvent({eventName:w.SDK_VIEWED})});const{isLoading:i,data:o}=y({location:{lat:void 0===a.options?.geographyId?a.options?.lat:void 0,lng:void 0===a.options?.geographyId?a.options?.lng:void 0},externalId:a?.globalOptions?.externalId}),{data:n,isFetching:r}=j({geographyId:(0,I.useMemo)(()=>void 0!==a.options?.geographyId?a.options.geographyId:Object.keys(o||{})[0],[a.options?.geographyId,o]),location:{},include:L}),s=(0,I.useMemo)(()=>i||r,[i,r]),l=(0,I.useMemo)(()=>({isLoading:s,title:a.options?.title,scores:n?.geographies[0]?.scores}),[s,n,a.options?.title]);return(0,D.jsx)(O.Provider,{value:l,children:e})},k="\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";function F({isLoading:e=!1,score:a}){return(0,D.jsx)("div",{className:"\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 ",children:(0,D.jsxs)("div",{className:"rounded-full bg-gray-25 w-12 h-12 border-2 border-base-white flex items-center justify-center",children:[e&&(0,D.jsx)(E,{className:k}),!e&&a&&(0,D.jsx)(m,{score:a,className:k})]})})}function G({score:e}){const{t:a}=n(["neighborhoodHighlights","common"]);return(0,D.jsxs)("div",{"data-testid":`highlight-content-${e}`,className:"\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",children:[(0,D.jsx)("p",{"data-testid":"highlight-title",className:"\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",children:(0,D.jsx)("span",{children:a("highlight.title")})}),(0,D.jsx)("p",{"data-testid":"highlight-pill",className:"\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",children:e&&a(`common:scores.${e}.title`)})]})}var K=({isLoading:e=!1,score:a})=>(0,D.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":e,"data-score":a,children:[(0,D.jsx)(F,{isLoading:e,score:a}),(0,D.jsx)(G,{score:a})]});function W(){const{t:e}=n("neighborhoodHighlights"),{isLoading:a,scores:t}=S(),i=(0,I.useMemo)(()=>a||!t?[]:function(e){const a=[];return void 0===e||L.map(a=>({scoreName:a,value:Math.round(10*Number(e[a]?.value))/10*2})).filter(e=>e.value>7).sort((e,a)=>e.value<a.value?1:-1).slice(0,3).map(e=>a.push(e.scoreName)),a}(t),[t,a]);return a||0!==i.length?(0,D.jsx)("div",{"data-testid":"highlights-container",className:"flex flex-col gap-4 w-full lg:flex-row",children:(a?[1,2,3]:i).map((e,t)=>(0,D.jsx)(K,{isLoading:a,score:"number"!=typeof e?e:void 0},t))}):(0,D.jsx)(H,{text:e("noData")})}function q(){const{t:e}=n("neighborhoodHighlights"),{title:a}=S();return(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(b,{title:"string"==typeof a||!1===a?a:e("title")}),(0,D.jsx)(W,{})]})}var R=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:o().optional(),title:r().optional()}).noUnknown(!0);l(s.neighborhoodWrap.key);var T=()=>{const{sdkState:e}=x(),a=Z(),i=e.globalOptions?.locale||"en",o=(0,I.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,D.jsx)(v,{children:(0,D.jsx)(M,{sdk:"Neighborhood Highlights",schema:R,options:e.options,children:(0,D.jsx)(g,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:h.NEIGHBORHOOD_HIGHLIGHTS,children:(0,D.jsx)(t,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:s.neighborhoodWrap,meta:{clientId:e.clientId,productName:h.NEIGHBORHOOD_HIGHLIGHTS,productVersion:"1.24.42"},attributes:{location:o,host:e.location,host_url:document.referrer,locale:i,isMobile:a},flags:{isDebugMode:!1},children:(0,D.jsx)(_,{children:(0,D.jsx)(q,{})})})})})})};export{T as default};
2
- //# sourceMappingURL=NeighborhoodHighlights-C7wjbeds.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,d as i,f as o,g as n,m as r,n as s,o as l,r as g,s as d,t as h,u as p}from"./sdks-CIuvHxGG.js";import{t as m}from"./ScoreIcon-CsB-usG9.js";import{t as c}from"./IconBase.es-CEehl5AX.js";import{q as u,r as f,t as x}from"./index-Bi8h_BNl.js";import{t as y}from"./useGeographies-CtCPN011.js";/* empty css */import{t as v}from"./ResizeWrapper-C7vwckhm.js";import{t as M}from"./ValidateOptions-DsfMKmBQ.js";import{t as Z}from"./useIsMobile-DqKgF2mC.js";import{t as j}from"./useScores-BZGEEU4U.js";import{t as b}from"./TitleHeader-CepE-7Y-.js";import{t as H}from"./NoDataContent-CFLl-Rd-.js";var I=e(a(),1),A=new Map([["bold",I.createElement(I.Fragment,null,I.createElement("path",{d:"M140,32V64a12,12,0,0,1-24,0V32a12,12,0,0,1,24,0Zm84,84H192a12,12,0,0,0,0,24h32a12,12,0,0,0,0-24Zm-42.26,48.77a12,12,0,1,0-17,17l22.63,22.63a12,12,0,0,0,17-17ZM128,180a12,12,0,0,0-12,12v32a12,12,0,0,0,24,0V192A12,12,0,0,0,128,180ZM74.26,164.77,51.63,187.4a12,12,0,0,0,17,17l22.63-22.63a12,12,0,1,0-17-17ZM76,128a12,12,0,0,0-12-12H32a12,12,0,0,0,0,24H64A12,12,0,0,0,76,128ZM68.6,51.63a12,12,0,1,0-17,17L74.26,91.23a12,12,0,0,0,17-17Z"}))],["duotone",I.createElement(I.Fragment,null,I.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),I.createElement("path",{d:"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z"}))],["fill",I.createElement(I.Fragment,null,I.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM48,136a8,8,0,0,1,0-16H72a8,8,0,0,1,0,16Zm46.06,37.25-17,17a8,8,0,0,1-11.32-11.32l17-17a8,8,0,0,1,11.31,11.31Zm0-79.19a8,8,0,0,1-11.31,0l-17-17A8,8,0,0,1,77.09,65.77l17,17A8,8,0,0,1,94.06,94.06ZM136,208a8,8,0,0,1-16,0V184a8,8,0,0,1,16,0Zm0-136a8,8,0,0,1-16,0V48a8,8,0,0,1,16,0Zm54.23,118.23a8,8,0,0,1-11.32,0l-17-17a8,8,0,0,1,11.31-11.31l17,17A8,8,0,0,1,190.23,190.23ZM208,136H184a8,8,0,0,1,0-16h24a8,8,0,0,1,0,16Z"}))],["light",I.createElement(I.Fragment,null,I.createElement("path",{d:"M134,32V64a6,6,0,0,1-12,0V32a6,6,0,0,1,12,0Zm90,90H192a6,6,0,0,0,0,12h32a6,6,0,0,0,0-12Zm-46.5,47A6,6,0,0,0,169,177.5l22.63,22.62a6,6,0,0,0,8.48-8.48ZM128,186a6,6,0,0,0-6,6v32a6,6,0,0,0,12,0V192A6,6,0,0,0,128,186ZM78.5,169,55.88,191.64a6,6,0,1,0,8.48,8.48L87,177.5A6,6,0,1,0,78.5,169ZM70,128a6,6,0,0,0-6-6H32a6,6,0,0,0,0,12H64A6,6,0,0,0,70,128ZM64.36,55.88a6,6,0,0,0-8.48,8.48L78.5,87A6,6,0,1,0,87,78.5Z"}))],["regular",I.createElement(I.Fragment,null,I.createElement("path",{d:"M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm88,88H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z"}))],["thin",I.createElement(I.Fragment,null,I.createElement("path",{d:"M132,32V64a4,4,0,0,1-8,0V32a4,4,0,0,1,8,0Zm92,92H192a4,4,0,0,0,0,8h32a4,4,0,0,0,0-8Zm-47.92,46.43a4,4,0,1,0-5.65,5.65l22.62,22.63a4,4,0,0,0,5.66-5.66ZM128,188a4,4,0,0,0-4,4v32a4,4,0,0,0,8,0V192A4,4,0,0,0,128,188ZM79.92,170.43,57.29,193.05A4,4,0,0,0,63,198.71l22.62-22.63a4,4,0,1,0-5.65-5.65ZM68,128a4,4,0,0,0-4-4H32a4,4,0,0,0,0,8H64A4,4,0,0,0,68,128ZM63,57.29A4,4,0,0,0,57.29,63L79.92,85.57a4,4,0,1,0,5.65-5.65Z"}))]]),E=I.forwardRef((e,a)=>I.createElement(c,{ref:a,...e,weights:A}));E.displayName="SpinnerGapIcon";var V=function(e){return e.SDK_VIEWED="neighborhood-highlights-Viewed",e}({}),w=function(e){return e.SDK_VIEWED="sdk_viewed",e}({}),N={transport:["pedestrian_friendly","car_friendly","transit_friendly","cycling_friendly"],services:["groceries","shopping","restaurants","cafes"],character:["quiet","parks","vibrant","nightlife"]},L=[...N.transport,...N.services,...N.character],D=u(),O=I.createContext({}),S=()=>(0,I.useContext)(O),_=({children:e})=>{const{sdkState:a}=x(),t=d();f(()=>{t.postEvent({eventType:V.SDK_VIEWED}),t.trackAnalyticsEvent({eventName:w.SDK_VIEWED})});const{isLoading:i,data:o}=y({location:{lat:void 0===a.options?.geographyId?a.options?.lat:void 0,lng:void 0===a.options?.geographyId?a.options?.lng:void 0},externalId:a?.globalOptions?.externalId}),{data:n,isFetching:r}=j({geographyId:(0,I.useMemo)(()=>void 0!==a.options?.geographyId?a.options.geographyId:Object.keys(o||{})[0],[a.options?.geographyId,o]),location:{},include:L}),s=(0,I.useMemo)(()=>i||r,[i,r]),l=(0,I.useMemo)(()=>({isLoading:s,title:a.options?.title,scores:n?.geographies[0]?.scores}),[s,n,a.options?.title]);return(0,D.jsx)(O.Provider,{value:l,children:e})},k="\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";function F({isLoading:e=!1,score:a}){return(0,D.jsx)("div",{className:"\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 ",children:(0,D.jsxs)("div",{className:"rounded-full bg-gray-25 w-12 h-12 border-2 border-base-white flex items-center justify-center",children:[e&&(0,D.jsx)(E,{className:k}),!e&&a&&(0,D.jsx)(m,{score:a,className:k})]})})}function G({score:e}){const{t:a}=n(["neighborhoodHighlights","common"]);return(0,D.jsxs)("div",{"data-testid":`highlight-content-${e}`,className:"\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",children:[(0,D.jsx)("p",{"data-testid":"highlight-title",className:"\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",children:(0,D.jsx)("span",{children:a("highlight.title")})}),(0,D.jsx)("p",{"data-testid":"highlight-pill",className:"\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",children:e&&a(`common:scores.${e}.title`)})]})}var K=({isLoading:e=!1,score:a})=>(0,D.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":e,"data-score":a,children:[(0,D.jsx)(F,{isLoading:e,score:a}),(0,D.jsx)(G,{score:a})]});function W(){const{t:e}=n("neighborhoodHighlights"),{isLoading:a,scores:t}=S(),i=(0,I.useMemo)(()=>a||!t?[]:function(e){const a=[];return void 0===e||L.map(a=>({scoreName:a,value:Math.round(10*Number(e[a]?.value))/10*2})).filter(e=>e.value>7).sort((e,a)=>e.value<a.value?1:-1).slice(0,3).map(e=>a.push(e.scoreName)),a}(t),[t,a]);return a||0!==i.length?(0,D.jsx)("div",{"data-testid":"highlights-container",className:"flex flex-col gap-4 w-full lg:flex-row",children:(a?[1,2,3]:i).map((e,t)=>(0,D.jsx)(K,{isLoading:a,score:"number"!=typeof e?e:void 0},t))}):(0,D.jsx)(H,{text:e("noData")})}function q(){const{t:e}=n("neighborhoodHighlights"),{title:a}=S();return(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(b,{title:"string"==typeof a||!1===a?a:e("title")}),(0,D.jsx)(W,{})]})}var R=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:o().optional(),title:r().optional()}).noUnknown(!0);l(s.neighborhoodWrap.key);var T=()=>{const{sdkState:e}=x(),a=Z(),i=e.globalOptions?.locale||"en",o=(0,I.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,D.jsx)(v,{children:(0,D.jsx)(M,{sdk:"Neighborhood Highlights",schema:R,options:e.options,children:(0,D.jsx)(g,{environment:e.globalOptions?.environment?.api,apiKey:e.apiKey,appearance:e.globalOptions?.appearance,locale:e.globalOptions?.locale,product:h.NEIGHBORHOOD_HIGHLIGHTS,children:(0,D.jsx)(t,{trackingPipelineSettings:{apiKey:e.apiKey||""},analyticsSettings:s.neighborhoodWrap,meta:{clientId:e.clientId,productName:h.NEIGHBORHOOD_HIGHLIGHTS,productVersion:"1.24.43"},attributes:{location:o,host:e.location,host_url:document.referrer,locale:i,isMobile:a},flags:{isDebugMode:!1},children:(0,D.jsx)(_,{children:(0,D.jsx)(q,{})})})})})})};export{T as default};
2
+ //# sourceMappingURL=NeighborhoodHighlights-CwoTHUIb.js.map