@local-logic/sdks-app 1.24.65 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/dist/assets/{Attribution-WqAVcFf4.js → Attribution-CUXwGQ1J.js} +2 -2
  2. package/dist/assets/{Attribution-WqAVcFf4.js.map → Attribution-CUXwGQ1J.js.map} +1 -1
  3. package/dist/assets/{Attribution-legacy-CZRg2xtq.js → Attribution-legacy-BHwwqaVL.js} +2 -2
  4. package/dist/assets/{Attribution-legacy-CZRg2xtq.js.map → Attribution-legacy-BHwwqaVL.js.map} +1 -1
  5. package/dist/assets/{Cluster-DtK-bXwa-legacy-BM2nAsO3.js → Cluster-DtK-bXwa-legacy-Df-qaEE4.js} +2 -2
  6. package/dist/assets/{Cluster-DtK-bXwa-legacy-BM2nAsO3.js.map → Cluster-DtK-bXwa-legacy-Df-qaEE4.js.map} +1 -1
  7. package/dist/assets/{Cluster-DtK-bXwa-xBcc5Wcr.js → Cluster-DtK-bXwa-tdNdDFEn.js} +2 -2
  8. package/dist/assets/{Cluster-DtK-bXwa-xBcc5Wcr.js.map → Cluster-DtK-bXwa-tdNdDFEn.js.map} +1 -1
  9. package/dist/assets/{Google-BWu1zjvH-D6-Gkisg.js → Google-BWu1zjvH-7kETuMcQ.js} +2 -2
  10. package/dist/assets/{Google-BWu1zjvH-D6-Gkisg.js.map → Google-BWu1zjvH-7kETuMcQ.js.map} +1 -1
  11. package/dist/assets/{Google-BWu1zjvH-legacy-B55jbgM4.js → Google-BWu1zjvH-legacy-DyuPcONb.js} +2 -2
  12. package/dist/assets/{Google-BWu1zjvH-legacy-B55jbgM4.js.map → Google-BWu1zjvH-legacy-DyuPcONb.js.map} +1 -1
  13. package/dist/assets/{Google-CWJnNepc--n_AS7Xv.js → Google-CWJnNepc-Diak4buL.js} +2 -2
  14. package/dist/assets/{Google-CWJnNepc--n_AS7Xv.js.map → Google-CWJnNepc-Diak4buL.js.map} +1 -1
  15. package/dist/assets/{Google-CWJnNepc-legacy-B5xAFaAy.js → Google-CWJnNepc-legacy-Dm-kDgsn.js} +2 -2
  16. package/dist/assets/{Google-CWJnNepc-legacy-B5xAFaAy.js.map → Google-CWJnNepc-legacy-Dm-kDgsn.js.map} +1 -1
  17. package/dist/assets/{Google-CxfcrB_--legacy-DMVhlEwb.js → Google-CxfcrB_--legacy-MibdUZx-.js} +2 -2
  18. package/dist/assets/{Google-CxfcrB_--legacy-DMVhlEwb.js.map → Google-CxfcrB_--legacy-MibdUZx-.js.map} +1 -1
  19. package/dist/assets/{Google-CxfcrB_--Dm6mI0xL.js → Google-CxfcrB_--xOvNga8x.js} +2 -2
  20. package/dist/assets/{Google-CxfcrB_--Dm6mI0xL.js.map → Google-CxfcrB_--xOvNga8x.js.map} +1 -1
  21. package/dist/assets/{Google-DJVjCEDp-DLT08LHH.js → Google-DJVjCEDp-IPBzAnum.js} +2 -2
  22. package/dist/assets/{Google-DJVjCEDp-DLT08LHH.js.map → Google-DJVjCEDp-IPBzAnum.js.map} +1 -1
  23. package/dist/assets/{Google-DJVjCEDp-legacy-CX-gmQYg.js → Google-DJVjCEDp-legacy-B5Y13TX3.js} +2 -2
  24. package/dist/assets/{Google-DJVjCEDp-legacy-CX-gmQYg.js.map → Google-DJVjCEDp-legacy-B5Y13TX3.js.map} +1 -1
  25. package/dist/assets/{Google-dS9cvzKP-DsufHCWB.js → Google-dS9cvzKP-BE2X0tIf.js} +2 -2
  26. package/dist/assets/{Google-dS9cvzKP-DsufHCWB.js.map → Google-dS9cvzKP-BE2X0tIf.js.map} +1 -1
  27. package/dist/assets/{Google-dS9cvzKP-legacy-DpnzKrq2.js → Google-dS9cvzKP-legacy-55YxYzsA.js} +2 -2
  28. package/dist/assets/{Google-dS9cvzKP-legacy-DpnzKrq2.js.map → Google-dS9cvzKP-legacy-55YxYzsA.js.map} +1 -1
  29. package/dist/assets/{GridGraph-DoMBR-zc.js → GridGraph-DoIXQCjF.js} +2 -2
  30. package/dist/assets/{GridGraph-DoMBR-zc.js.map → GridGraph-DoIXQCjF.js.map} +1 -1
  31. package/dist/assets/{GridGraph-legacy-wcw3Xsv1.js → GridGraph-legacy-ClR9KV5p.js} +2 -2
  32. package/dist/assets/{GridGraph-legacy-wcw3Xsv1.js.map → GridGraph-legacy-ClR9KV5p.js.map} +1 -1
  33. package/dist/assets/{LeadCapture-BChrm7jZ.js → LeadCapture-BNqMqKPU.js} +2 -2
  34. package/dist/assets/{LeadCapture-BChrm7jZ.js.map → LeadCapture-BNqMqKPU.js.map} +1 -1
  35. package/dist/assets/{LeadCapture-legacy-Bp18__H7.js → LeadCapture-legacy-CWiD-zqE.js} +2 -2
  36. package/dist/assets/{LeadCapture-legacy-Bp18__H7.js.map → LeadCapture-legacy-CWiD-zqE.js.map} +1 -1
  37. package/dist/assets/{LocalContent-DfDE8a6m.js → LocalContent-BkN1iLgY.js} +2 -2
  38. package/dist/assets/{LocalContent-DfDE8a6m.js.map → LocalContent-BkN1iLgY.js.map} +1 -1
  39. package/dist/assets/{LocalContent-legacy-CbC4zHXr.js → LocalContent-legacy-DQV0bDZr.js} +2 -2
  40. package/dist/assets/{LocalContent-legacy-CbC4zHXr.js.map → LocalContent-legacy-DQV0bDZr.js.map} +1 -1
  41. package/dist/assets/{LocalDemographics-legacy-KphugBXo.js → LocalDemographics-legacy-BGSCwuXC.js} +2 -2
  42. package/dist/assets/{LocalDemographics-legacy-KphugBXo.js.map → LocalDemographics-legacy-BGSCwuXC.js.map} +1 -1
  43. package/dist/assets/{LocalDemographics-B0FoSqUG.js → LocalDemographics-oyV6-uMH.js} +2 -2
  44. package/dist/assets/{LocalDemographics-B0FoSqUG.js.map → LocalDemographics-oyV6-uMH.js.map} +1 -1
  45. package/dist/assets/{Mapbox-B9pa-75a-DqMgbPKZ.js → Mapbox-B9pa-75a-Mu6SCCcO.js} +2 -2
  46. package/dist/assets/{Mapbox-B9pa-75a-DqMgbPKZ.js.map → Mapbox-B9pa-75a-Mu6SCCcO.js.map} +1 -1
  47. package/dist/assets/{Mapbox-B9pa-75a-legacy-BZNbt29I.js → Mapbox-B9pa-75a-legacy-oHRMBwlz.js} +2 -2
  48. package/dist/assets/{Mapbox-B9pa-75a-legacy-BZNbt29I.js.map → Mapbox-B9pa-75a-legacy-oHRMBwlz.js.map} +1 -1
  49. package/dist/assets/{Mapbox-BpJHQDi--B3iPnnhl.js → Mapbox-BpJHQDi--fpQ7rycQ.js} +2 -2
  50. package/dist/assets/{Mapbox-BpJHQDi--B3iPnnhl.js.map → Mapbox-BpJHQDi--fpQ7rycQ.js.map} +1 -1
  51. package/dist/assets/{Mapbox-BpJHQDi--legacy-Dc3nHh68.js → Mapbox-BpJHQDi--legacy-B-XEQhTg.js} +2 -2
  52. package/dist/assets/{Mapbox-BpJHQDi--legacy-Dc3nHh68.js.map → Mapbox-BpJHQDi--legacy-B-XEQhTg.js.map} +1 -1
  53. package/dist/assets/{Mapbox-BtxA3en8-legacy-W_SEiuh4.js → Mapbox-BtxA3en8-legacy-BDW_QXt8.js} +2 -2
  54. package/dist/assets/{Mapbox-BtxA3en8-legacy-W_SEiuh4.js.map → Mapbox-BtxA3en8-legacy-BDW_QXt8.js.map} +1 -1
  55. package/dist/assets/{Mapbox-BtxA3en8-CUy50TN7.js → Mapbox-BtxA3en8-mt59xOWa.js} +2 -2
  56. package/dist/assets/{Mapbox-BtxA3en8-CUy50TN7.js.map → Mapbox-BtxA3en8-mt59xOWa.js.map} +1 -1
  57. package/dist/assets/{Mapbox-CDUr5XKG-BB6075Va.js → Mapbox-CDUr5XKG-Cw2WZwjO.js} +2 -2
  58. package/dist/assets/{Mapbox-CDUr5XKG-BB6075Va.js.map → Mapbox-CDUr5XKG-Cw2WZwjO.js.map} +1 -1
  59. package/dist/assets/{Mapbox-CDUr5XKG-legacy-irpdi8fD.js → Mapbox-CDUr5XKG-legacy-CrA0lr7q.js} +2 -2
  60. package/dist/assets/{Mapbox-CDUr5XKG-legacy-irpdi8fD.js.map → Mapbox-CDUr5XKG-legacy-CrA0lr7q.js.map} +1 -1
  61. package/dist/assets/{Mapbox-DwSofiet-C2743JRV.js → Mapbox-DwSofiet-D9fQcbet.js} +2 -2
  62. package/dist/assets/{Mapbox-DwSofiet-C2743JRV.js.map → Mapbox-DwSofiet-D9fQcbet.js.map} +1 -1
  63. package/dist/assets/{Mapbox-DwSofiet-legacy-CWDGbtkF.js → Mapbox-DwSofiet-legacy-B_n98J-f.js} +2 -2
  64. package/dist/assets/{Mapbox-DwSofiet-legacy-CWDGbtkF.js.map → Mapbox-DwSofiet-legacy-B_n98J-f.js.map} +1 -1
  65. package/dist/assets/{Maptiler-CYFdJNvN-B1AyicNq.js → Maptiler-CYFdJNvN-BOIW1DRj.js} +2 -2
  66. package/dist/assets/{Maptiler-CYFdJNvN-B1AyicNq.js.map → Maptiler-CYFdJNvN-BOIW1DRj.js.map} +1 -1
  67. package/dist/assets/{Maptiler-CYFdJNvN-legacy-C03mDa24.js → Maptiler-CYFdJNvN-legacy-DaVeeAW_.js} +2 -2
  68. package/dist/assets/{Maptiler-CYFdJNvN-legacy-C03mDa24.js.map → Maptiler-CYFdJNvN-legacy-DaVeeAW_.js.map} +1 -1
  69. package/dist/assets/{Maptiler-Ce0L0Kac-Bk8J53ab.js → Maptiler-Ce0L0Kac-C0QBCQj_.js} +2 -2
  70. package/dist/assets/{Maptiler-Ce0L0Kac-Bk8J53ab.js.map → Maptiler-Ce0L0Kac-C0QBCQj_.js.map} +1 -1
  71. package/dist/assets/{Maptiler-Ce0L0Kac-legacy-Cpl39Y9p.js → Maptiler-Ce0L0Kac-legacy-Bg_z1W1q.js} +2 -2
  72. package/dist/assets/{Maptiler-Ce0L0Kac-legacy-Cpl39Y9p.js.map → Maptiler-Ce0L0Kac-legacy-Bg_z1W1q.js.map} +1 -1
  73. package/dist/assets/{Maptiler-CkoZpE04-BojR3Uld.js → Maptiler-CkoZpE04-CGa-MoE2.js} +2 -2
  74. package/dist/assets/{Maptiler-CkoZpE04-BojR3Uld.js.map → Maptiler-CkoZpE04-CGa-MoE2.js.map} +1 -1
  75. package/dist/assets/{Maptiler-CkoZpE04-legacy-D9I4mWbi.js → Maptiler-CkoZpE04-legacy-BTiD7zl7.js} +2 -2
  76. package/dist/assets/{Maptiler-CkoZpE04-legacy-D9I4mWbi.js.map → Maptiler-CkoZpE04-legacy-BTiD7zl7.js.map} +1 -1
  77. package/dist/assets/{Maptiler-CyB_-uzB-DL4hI3Us.js → Maptiler-CyB_-uzB-DLX_n2jU.js} +2 -2
  78. package/dist/assets/{Maptiler-CyB_-uzB-DL4hI3Us.js.map → Maptiler-CyB_-uzB-DLX_n2jU.js.map} +1 -1
  79. package/dist/assets/{Maptiler-CyB_-uzB-legacy-CImIzPc-.js → Maptiler-CyB_-uzB-legacy-Dq9asuPT.js} +2 -2
  80. package/dist/assets/{Maptiler-CyB_-uzB-legacy-CImIzPc-.js.map → Maptiler-CyB_-uzB-legacy-Dq9asuPT.js.map} +1 -1
  81. package/dist/assets/{Maptiler-DsgKmpne-C0Q3IRjD.js → Maptiler-DsgKmpne-CfP11fz9.js} +2 -2
  82. package/dist/assets/{Maptiler-DsgKmpne-C0Q3IRjD.js.map → Maptiler-DsgKmpne-CfP11fz9.js.map} +1 -1
  83. package/dist/assets/{Maptiler-DsgKmpne-legacy-m2VgqB2H.js → Maptiler-DsgKmpne-legacy-CGBmsCz9.js} +2 -2
  84. package/dist/assets/{Maptiler-DsgKmpne-legacy-m2VgqB2H.js.map → Maptiler-DsgKmpne-legacy-CGBmsCz9.js.map} +1 -1
  85. package/dist/assets/{MarkerIcon-Drkpm3bl-SOq3C2M8.js → MarkerIcon-Drkpm3bl-D3-9sE3p.js} +2 -2
  86. package/dist/assets/{MarkerIcon-Drkpm3bl-SOq3C2M8.js.map → MarkerIcon-Drkpm3bl-D3-9sE3p.js.map} +1 -1
  87. package/dist/assets/{MarkerIcon-Drkpm3bl-legacy-Pr3PVQOF.js → MarkerIcon-Drkpm3bl-legacy--eQ8ldVm.js} +2 -2
  88. package/dist/assets/{MarkerIcon-Drkpm3bl-legacy-Pr3PVQOF.js.map → MarkerIcon-Drkpm3bl-legacy--eQ8ldVm.js.map} +1 -1
  89. package/dist/assets/{NeighborhoodCard-BMMeuDq1.js → NeighborhoodCard-BbsQyDyL.js} +2 -2
  90. package/dist/assets/{NeighborhoodCard-BMMeuDq1.js.map → NeighborhoodCard-BbsQyDyL.js.map} +1 -1
  91. package/dist/assets/{NeighborhoodCard-legacy-iFrR-F6M.js → NeighborhoodCard-legacy-C7H259NL.js} +2 -2
  92. package/dist/assets/{NeighborhoodCard-legacy-iFrR-F6M.js.map → NeighborhoodCard-legacy-C7H259NL.js.map} +1 -1
  93. package/dist/assets/{NeighborhoodCharacteristics-CX2zxhSJ.js → NeighborhoodCharacteristics-BXAWE_Yr.js} +2 -2
  94. package/dist/assets/{NeighborhoodCharacteristics-CX2zxhSJ.js.map → NeighborhoodCharacteristics-BXAWE_Yr.js.map} +1 -1
  95. package/dist/assets/{NeighborhoodCharacteristics-legacy-2J2zsQBh.js → NeighborhoodCharacteristics-legacy-qOhWab8U.js} +2 -2
  96. package/dist/assets/{NeighborhoodCharacteristics-legacy-2J2zsQBh.js.map → NeighborhoodCharacteristics-legacy-qOhWab8U.js.map} +1 -1
  97. package/dist/assets/{NeighborhoodDemographics-CHSrL_pE.js → NeighborhoodDemographics-BckV-fh5.js} +2 -2
  98. package/dist/assets/{NeighborhoodDemographics-CHSrL_pE.js.map → NeighborhoodDemographics-BckV-fh5.js.map} +1 -1
  99. package/dist/assets/{NeighborhoodDemographics-legacy-BBZLXCYb.js → NeighborhoodDemographics-legacy-lMTE4mul.js} +2 -2
  100. package/dist/assets/{NeighborhoodDemographics-legacy-BBZLXCYb.js.map → NeighborhoodDemographics-legacy-lMTE4mul.js.map} +1 -1
  101. package/dist/assets/{NeighborhoodFeatured-B5KAxVo_.js → NeighborhoodFeatured-BmoD9P_D.js} +2 -2
  102. package/dist/assets/{NeighborhoodFeatured-B5KAxVo_.js.map → NeighborhoodFeatured-BmoD9P_D.js.map} +1 -1
  103. package/dist/assets/{NeighborhoodFeatured-legacy--bCKhxiI.js → NeighborhoodFeatured-legacy-CqIwxl9G.js} +2 -2
  104. package/dist/assets/{NeighborhoodFeatured-legacy--bCKhxiI.js.map → NeighborhoodFeatured-legacy-CqIwxl9G.js.map} +1 -1
  105. package/dist/assets/{NeighborhoodHero-C_1mXlr3.js → NeighborhoodHero-Bv5VihH-.js} +2 -2
  106. package/dist/assets/{NeighborhoodHero-C_1mXlr3.js.map → NeighborhoodHero-Bv5VihH-.js.map} +1 -1
  107. package/dist/assets/{NeighborhoodHero-legacy-BZYi5fC3.js → NeighborhoodHero-legacy-CUECyttR.js} +2 -2
  108. package/dist/assets/{NeighborhoodHero-legacy-BZYi5fC3.js.map → NeighborhoodHero-legacy-CUECyttR.js.map} +1 -1
  109. package/dist/assets/{NeighborhoodHighlights-npuDYWm-.js → NeighborhoodHighlights-BIz0hvb3.js} +2 -2
  110. package/dist/assets/{NeighborhoodHighlights-npuDYWm-.js.map → NeighborhoodHighlights-BIz0hvb3.js.map} +1 -1
  111. package/dist/assets/{NeighborhoodHighlights-legacy-BElhduG4.js → NeighborhoodHighlights-legacy-Dw8oNzJk.js} +2 -2
  112. package/dist/assets/{NeighborhoodHighlights-legacy-BElhduG4.js.map → NeighborhoodHighlights-legacy-Dw8oNzJk.js.map} +1 -1
  113. package/dist/assets/{NeighborhoodMap-DTIk4UJb.js → NeighborhoodMap-DGZzObNH.js} +2 -2
  114. package/dist/assets/{NeighborhoodMap-DTIk4UJb.js.map → NeighborhoodMap-DGZzObNH.js.map} +1 -1
  115. package/dist/assets/{NeighborhoodMap-legacy-2JbG9XBi.js → NeighborhoodMap-legacy-B2jA9frj.js} +2 -2
  116. package/dist/assets/{NeighborhoodMap-legacy-2JbG9XBi.js.map → NeighborhoodMap-legacy-B2jA9frj.js.map} +1 -1
  117. package/dist/assets/{NeighborhoodMarketTrends-at4L-PT7.js → NeighborhoodMarketTrends-DUxRgP1q.js} +3 -3
  118. package/dist/assets/{NeighborhoodMarketTrends-at4L-PT7.js.map → NeighborhoodMarketTrends-DUxRgP1q.js.map} +1 -1
  119. package/dist/assets/{NeighborhoodMarketTrends-legacy-DVYaKAVN.js → NeighborhoodMarketTrends-legacy-DPc2C4aT.js} +2 -2
  120. package/dist/assets/{NeighborhoodMarketTrends-legacy-DVYaKAVN.js.map → NeighborhoodMarketTrends-legacy-DPc2C4aT.js.map} +1 -1
  121. package/dist/assets/{NeighborhoodMatch-pArwA2Uu.js → NeighborhoodMatch-BW1MPWLo.js} +2 -2
  122. package/dist/assets/{NeighborhoodMatch-pArwA2Uu.js.map → NeighborhoodMatch-BW1MPWLo.js.map} +1 -1
  123. package/dist/assets/{NeighborhoodMatch-legacy-Bnjs8Qcn.js → NeighborhoodMatch-legacy-DkXrqfhC.js} +2 -2
  124. package/dist/assets/{NeighborhoodMatch-legacy-Bnjs8Qcn.js.map → NeighborhoodMatch-legacy-DkXrqfhC.js.map} +1 -1
  125. package/dist/assets/{NeighborhoodPropertyValueDrivers-CSlEwRIt.js → NeighborhoodPropertyValueDrivers-BtBv0wb7.js} +2 -2
  126. package/dist/assets/{NeighborhoodPropertyValueDrivers-CSlEwRIt.js.map → NeighborhoodPropertyValueDrivers-BtBv0wb7.js.map} +1 -1
  127. package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-I2XMZg__.js → NeighborhoodPropertyValueDrivers-legacy-BJuSxrVc.js} +2 -2
  128. package/dist/assets/{NeighborhoodPropertyValueDrivers-legacy-I2XMZg__.js.map → NeighborhoodPropertyValueDrivers-legacy-BJuSxrVc.js.map} +1 -1
  129. package/dist/assets/{NeighborhoodSchools-BsHk_jqd.js → NeighborhoodSchools-BZ66o_Gh.js} +2 -2
  130. package/dist/assets/{NeighborhoodSchools-BsHk_jqd.js.map → NeighborhoodSchools-BZ66o_Gh.js.map} +1 -1
  131. package/dist/assets/{NeighborhoodSchools-legacy-Mjn5R_mx.js → NeighborhoodSchools-legacy-Bc58c80Y.js} +2 -2
  132. package/dist/assets/{NeighborhoodSchools-legacy-Mjn5R_mx.js.map → NeighborhoodSchools-legacy-Bc58c80Y.js.map} +1 -1
  133. package/dist/assets/{NeighborhoodShowcase-qX4IDeNp.js → NeighborhoodShowcase-Dg1tIkbn.js} +2 -2
  134. package/dist/assets/{NeighborhoodShowcase-qX4IDeNp.js.map → NeighborhoodShowcase-Dg1tIkbn.js.map} +1 -1
  135. package/dist/assets/{NeighborhoodShowcase-legacy-DQZQfReW.js → NeighborhoodShowcase-legacy-CoSTp16i.js} +2 -2
  136. package/dist/assets/{NeighborhoodShowcase-legacy-DQZQfReW.js.map → NeighborhoodShowcase-legacy-CoSTp16i.js.map} +1 -1
  137. package/dist/assets/{NoDataContent-scqbLzmG.js → NoDataContent-CLEOr0tN.js} +2 -2
  138. package/dist/assets/{NoDataContent-scqbLzmG.js.map → NoDataContent-CLEOr0tN.js.map} +1 -1
  139. package/dist/assets/{NoDataContent-legacy-Dt-Fmme7.js → NoDataContent-legacy-CSjG4pMx.js} +2 -2
  140. package/dist/assets/{NoDataContent-legacy-Dt-Fmme7.js.map → NoDataContent-legacy-CSjG4pMx.js.map} +1 -1
  141. package/dist/assets/{ResizeWrapper-CoWkpS6t.js → ResizeWrapper-CacQc137.js} +2 -2
  142. package/dist/assets/{ResizeWrapper-CoWkpS6t.js.map → ResizeWrapper-CacQc137.js.map} +1 -1
  143. package/dist/assets/{ResizeWrapper-legacy-dNB7wg4R.js → ResizeWrapper-legacy-Bq7weNwm.js} +2 -2
  144. package/dist/assets/{ResizeWrapper-legacy-dNB7wg4R.js.map → ResizeWrapper-legacy-Bq7weNwm.js.map} +1 -1
  145. package/dist/assets/{ScoreCardList-B2AnINHe.js → ScoreCardList-ByN2xpqN.js} +2 -2
  146. package/dist/assets/{ScoreCardList-B2AnINHe.js.map → ScoreCardList-ByN2xpqN.js.map} +1 -1
  147. package/dist/assets/{ScoreCardList-legacy-Caqgt45w.js → ScoreCardList-legacy-DL0dIYtn.js} +2 -2
  148. package/dist/assets/{ScoreCardList-legacy-Caqgt45w.js.map → ScoreCardList-legacy-DL0dIYtn.js.map} +1 -1
  149. package/dist/assets/{ScoreIcon-DGty1swf.js → ScoreIcon-C8SDoqRb.js} +2 -2
  150. package/dist/assets/{ScoreIcon-DGty1swf.js.map → ScoreIcon-C8SDoqRb.js.map} +1 -1
  151. package/dist/assets/{ScoreIcon-legacy-CFr0rGfR.js → ScoreIcon-legacy-DeeA6c3d.js} +2 -2
  152. package/dist/assets/{ScoreIcon-legacy-CFr0rGfR.js.map → ScoreIcon-legacy-DeeA6c3d.js.map} +1 -1
  153. package/dist/assets/{Testing-BQ7AFsvh-Dad79Au3.js → Testing-BQ7AFsvh-C64BDPGH.js} +2 -2
  154. package/dist/assets/{Testing-BQ7AFsvh-Dad79Au3.js.map → Testing-BQ7AFsvh-C64BDPGH.js.map} +1 -1
  155. package/dist/assets/{Testing-BQ7AFsvh-legacy-CSvYtw_E.js → Testing-BQ7AFsvh-legacy-DglzmwFN.js} +2 -2
  156. package/dist/assets/{Testing-BQ7AFsvh-legacy-CSvYtw_E.js.map → Testing-BQ7AFsvh-legacy-DglzmwFN.js.map} +1 -1
  157. package/dist/assets/{Testing-CZDor_UM-DDuitVO1.js → Testing-CZDor_UM-DzK0KC-I.js} +2 -2
  158. package/dist/assets/{Testing-CZDor_UM-DDuitVO1.js.map → Testing-CZDor_UM-DzK0KC-I.js.map} +1 -1
  159. package/dist/assets/{Testing-CZDor_UM-legacy-CFevlGP3.js → Testing-CZDor_UM-legacy-Cc5jS1TO.js} +2 -2
  160. package/dist/assets/{Testing-CZDor_UM-legacy-CFevlGP3.js.map → Testing-CZDor_UM-legacy-Cc5jS1TO.js.map} +1 -1
  161. package/dist/assets/{Testing-CxwUbSxG-CD3fsBYh.js → Testing-CxwUbSxG-B5AMQcKI.js} +2 -2
  162. package/dist/assets/{Testing-CxwUbSxG-CD3fsBYh.js.map → Testing-CxwUbSxG-B5AMQcKI.js.map} +1 -1
  163. package/dist/assets/{Testing-CxwUbSxG-legacy-BEVnAXjX.js → Testing-CxwUbSxG-legacy-BiXBuWxN.js} +2 -2
  164. package/dist/assets/{Testing-CxwUbSxG-legacy-BEVnAXjX.js.map → Testing-CxwUbSxG-legacy-BiXBuWxN.js.map} +1 -1
  165. package/dist/assets/{Testing-vfABKYEg-DA1P9rcG.js → Testing-vfABKYEg-CaIxJQwf.js} +2 -2
  166. package/dist/assets/{Testing-vfABKYEg-DA1P9rcG.js.map → Testing-vfABKYEg-CaIxJQwf.js.map} +1 -1
  167. package/dist/assets/{Testing-vfABKYEg-legacy-BtSxwbJW.js → Testing-vfABKYEg-legacy-DP5MFU2J.js} +2 -2
  168. package/dist/assets/{Testing-vfABKYEg-legacy-BtSxwbJW.js.map → Testing-vfABKYEg-legacy-DP5MFU2J.js.map} +1 -1
  169. package/dist/assets/{Testing-wan6urXy-Bg4sYs7c.js → Testing-wan6urXy-7l16xZjm.js} +2 -2
  170. package/dist/assets/{Testing-wan6urXy-Bg4sYs7c.js.map → Testing-wan6urXy-7l16xZjm.js.map} +1 -1
  171. package/dist/assets/{Testing-wan6urXy-legacy-BbL_74Gq.js → Testing-wan6urXy-legacy-C-8TofFN.js} +2 -2
  172. package/dist/assets/{Testing-wan6urXy-legacy-BbL_74Gq.js.map → Testing-wan6urXy-legacy-C-8TofFN.js.map} +1 -1
  173. package/dist/assets/{TitleHeader-BlWv-Vn5.js → TitleHeader-Bg-iB4qi.js} +2 -2
  174. package/dist/assets/{TitleHeader-BlWv-Vn5.js.map → TitleHeader-Bg-iB4qi.js.map} +1 -1
  175. package/dist/assets/{TitleHeader-legacy-C3IaKPzC.js → TitleHeader-legacy-OyxHyZJv.js} +2 -2
  176. package/dist/assets/{TitleHeader-legacy-C3IaKPzC.js.map → TitleHeader-legacy-OyxHyZJv.js.map} +1 -1
  177. package/dist/assets/{Trans-CYxIxTBf.js → Trans-D9IPXQBZ.js} +2 -2
  178. package/dist/assets/{Trans-CYxIxTBf.js.map → Trans-D9IPXQBZ.js.map} +1 -1
  179. package/dist/assets/{Trans-legacy-BW24uumM.js → Trans-legacy-NUMpKf4g.js} +2 -2
  180. package/dist/assets/{Trans-legacy-BW24uumM.js.map → Trans-legacy-NUMpKf4g.js.map} +1 -1
  181. package/dist/assets/{ValidateOptions-C00hJqCN.js → ValidateOptions-CHpsZ-kR.js} +2 -2
  182. package/dist/assets/{ValidateOptions-C00hJqCN.js.map → ValidateOptions-CHpsZ-kR.js.map} +1 -1
  183. package/dist/assets/{ValidateOptions-legacy-DQF5TYHw.js → ValidateOptions-legacy-Dsep8qdV.js} +2 -2
  184. package/dist/assets/{ValidateOptions-legacy-DQF5TYHw.js.map → ValidateOptions-legacy-Dsep8qdV.js.map} +1 -1
  185. package/dist/assets/{dist-BhLmWB7-.js → dist-LjV2lD3w.js} +2 -2
  186. package/dist/assets/{dist-BhLmWB7-.js.map → dist-LjV2lD3w.js.map} +1 -1
  187. package/dist/assets/{dist-legacy-DiyEMMmk.js → dist-legacy-DoPwJP1x.js} +2 -2
  188. package/dist/assets/{dist-legacy-DiyEMMmk.js.map → dist-legacy-DoPwJP1x.js.map} +1 -1
  189. package/dist/assets/{getMapProviderConfig-BTXXPYl6.js → getMapProviderConfig-C0wqaxwl.js} +3 -3
  190. package/dist/assets/{getMapProviderConfig-BTXXPYl6.js.map → getMapProviderConfig-C0wqaxwl.js.map} +1 -1
  191. package/dist/assets/{getMapProviderConfig-legacy-BflZAmBt.js → getMapProviderConfig-legacy-Bq44j1zG.js} +2 -2
  192. package/dist/assets/{getMapProviderConfig-legacy-BflZAmBt.js.map → getMapProviderConfig-legacy-Bq44j1zG.js.map} +1 -1
  193. package/dist/assets/{getPaddedBounds-FpsQymJC-DyBASi-q.js → getPaddedBounds-FpsQymJC-BKh4ocDK.js} +2 -2
  194. package/dist/assets/{getPaddedBounds-FpsQymJC-DyBASi-q.js.map → getPaddedBounds-FpsQymJC-BKh4ocDK.js.map} +1 -1
  195. package/dist/assets/{getPaddedBounds-FpsQymJC-legacy-CcVw9K1A.js → getPaddedBounds-FpsQymJC-legacy-BffTg2N1.js} +2 -2
  196. package/dist/assets/{getPaddedBounds-FpsQymJC-legacy-CcVw9K1A.js.map → getPaddedBounds-FpsQymJC-legacy-BffTg2N1.js.map} +1 -1
  197. package/dist/assets/globals-Bo3rWV-h.css +1 -0
  198. package/dist/assets/globals-legacy-BHUBCckM.js +1 -0
  199. package/dist/assets/index-DuYul3n8.js +3 -0
  200. package/dist/assets/index-DuYul3n8.js.map +1 -0
  201. package/dist/assets/index-legacy-A0tsrrZt.js +2 -0
  202. package/dist/assets/index-legacy-A0tsrrZt.js.map +1 -0
  203. package/dist/assets/{index.es-ZoI1FSEA.js → index.es-C1Gm4nra.js} +2 -2
  204. package/dist/assets/{index.es-ZoI1FSEA.js.map → index.es-C1Gm4nra.js.map} +1 -1
  205. package/dist/assets/{index.es-legacy-DkmSd2Jr.js → index.es-legacy-DzobqkKH.js} +2 -2
  206. package/dist/assets/{index.es-legacy-DkmSd2Jr.js.map → index.es-legacy-DzobqkKH.js.map} +1 -1
  207. package/dist/assets/{mapbox-BiIB2Zbq-BeMYbC0c.js → mapbox-BiIB2Zbq-UeXogaFk.js} +2 -2
  208. package/dist/assets/{mapbox-BiIB2Zbq-BeMYbC0c.js.map → mapbox-BiIB2Zbq-UeXogaFk.js.map} +1 -1
  209. package/dist/assets/{mapbox-BiIB2Zbq-legacy-DMJfvwWV.js → mapbox-BiIB2Zbq-legacy-5zKVSMtD.js} +2 -2
  210. package/dist/assets/{mapbox-BiIB2Zbq-legacy-DMJfvwWV.js.map → mapbox-BiIB2Zbq-legacy-5zKVSMtD.js.map} +1 -1
  211. package/dist/assets/{maplibre-Cx0I-z8h-D7cnsqP-.js → maplibre-Cx0I-z8h-B0gv6DfU.js} +2 -2
  212. package/dist/assets/{maplibre-Cx0I-z8h-D7cnsqP-.js.map → maplibre-Cx0I-z8h-B0gv6DfU.js.map} +1 -1
  213. package/dist/assets/{maplibre-Cx0I-z8h-legacy-DR-mbMzx.js → maplibre-Cx0I-z8h-legacy-BG8HUyDf.js} +2 -2
  214. package/dist/assets/{maplibre-Cx0I-z8h-legacy-DR-mbMzx.js.map → maplibre-Cx0I-z8h-legacy-BG8HUyDf.js.map} +1 -1
  215. package/dist/assets/neighborhood-fallback-Bx8UkjEB.js.map +1 -1
  216. package/dist/assets/neighborhood-fallback-legacy-BjzkGm-m.js.map +1 -1
  217. package/dist/assets/{polyfills-legacy-KV91PI-U.js → polyfills-legacy-DWbaINOF.js} +2 -2
  218. package/dist/assets/polyfills-legacy-DWbaINOF.js.map +1 -0
  219. package/dist/assets/{sdks-CylBh5qd.js → sdks-C6AQk2vE.js} +2 -2
  220. package/dist/assets/{sdks-CylBh5qd.js.map → sdks-C6AQk2vE.js.map} +1 -1
  221. package/dist/assets/{sdks-legacy-eEWqNDw9.js → sdks-legacy-BMudUPgz.js} +2 -2
  222. package/dist/assets/{sdks-legacy-eEWqNDw9.js.map → sdks-legacy-BMudUPgz.js.map} +1 -1
  223. package/dist/assets/{styles-DCI3UJny-D5gfaFag.js → styles-DCI3UJny-BwUIG3fK.js} +2 -2
  224. package/dist/assets/{styles-DCI3UJny-D5gfaFag.js.map → styles-DCI3UJny-BwUIG3fK.js.map} +1 -1
  225. package/dist/assets/{styles-DCI3UJny-legacy-B65fXxj8.js → styles-DCI3UJny-legacy-C8yK-_bL.js} +2 -2
  226. package/dist/assets/{styles-DCI3UJny-legacy-B65fXxj8.js.map → styles-DCI3UJny-legacy-C8yK-_bL.js.map} +1 -1
  227. package/dist/assets/{styles-DMA_7NV0-1MHnrNSZ.js → styles-DMA_7NV0-D56ka4_Y.js} +2 -2
  228. package/dist/assets/{styles-DMA_7NV0-1MHnrNSZ.js.map → styles-DMA_7NV0-D56ka4_Y.js.map} +1 -1
  229. package/dist/assets/{styles-DMA_7NV0-legacy-BsSMfe-6.js → styles-DMA_7NV0-legacy-CBhXzFvt.js} +2 -2
  230. package/dist/assets/{styles-DMA_7NV0-legacy-BsSMfe-6.js.map → styles-DMA_7NV0-legacy-CBhXzFvt.js.map} +1 -1
  231. package/dist/assets/{useDemographicsData-DdwPh1al.js → useDemographicsData-BCiAVUly.js} +2 -2
  232. package/dist/assets/{useDemographicsData-DdwPh1al.js.map → useDemographicsData-BCiAVUly.js.map} +1 -1
  233. package/dist/assets/{useDemographicsData-legacy-CbztLovJ.js → useDemographicsData-legacy-DUgfQmjN.js} +2 -2
  234. package/dist/assets/{useDemographicsData-legacy-CbztLovJ.js.map → useDemographicsData-legacy-DUgfQmjN.js.map} +1 -1
  235. package/dist/assets/{useGeographies-CYqI3icF.js → useGeographies-D0Og6wGn.js} +2 -2
  236. package/dist/assets/{useGeographies-CYqI3icF.js.map → useGeographies-D0Og6wGn.js.map} +1 -1
  237. package/dist/assets/{useGeographies-legacy-CYCHt3Zt.js → useGeographies-legacy-CzZb8wbH.js} +2 -2
  238. package/dist/assets/{useGeographies-legacy-CYCHt3Zt.js.map → useGeographies-legacy-CzZb8wbH.js.map} +1 -1
  239. package/dist/assets/{useIsMobile-Bz4RXQtS.js → useIsMobile-DFRT0gA-.js} +2 -2
  240. package/dist/assets/{useIsMobile-Bz4RXQtS.js.map → useIsMobile-DFRT0gA-.js.map} +1 -1
  241. package/dist/assets/{useIsMobile-legacy-DfzhaV7o.js → useIsMobile-legacy-DmiaVB7P.js} +2 -2
  242. package/dist/assets/{useIsMobile-legacy-DfzhaV7o.js.map → useIsMobile-legacy-DmiaVB7P.js.map} +1 -1
  243. package/dist/assets/{useLocation-yHkA-hA5.js → useLocation-iMAOqyBM.js} +2 -2
  244. package/dist/assets/{useLocation-yHkA-hA5.js.map → useLocation-iMAOqyBM.js.map} +1 -1
  245. package/dist/assets/{useLocation-legacy-DllAtcuN.js → useLocation-legacy-Df4ZfKNB.js} +2 -2
  246. package/dist/assets/{useLocation-legacy-DllAtcuN.js.map → useLocation-legacy-Df4ZfKNB.js.map} +1 -1
  247. package/dist/assets/{useProfiles-NWzdipyr.js → useProfiles-Cy-BsR-B.js} +2 -2
  248. package/dist/assets/{useProfiles-NWzdipyr.js.map → useProfiles-Cy-BsR-B.js.map} +1 -1
  249. package/dist/assets/{useProfiles-legacy-D2vMNSmu.js → useProfiles-legacy-D_7Zq231.js} +2 -2
  250. package/dist/assets/{useProfiles-legacy-D2vMNSmu.js.map → useProfiles-legacy-D_7Zq231.js.map} +1 -1
  251. package/dist/assets/{useSchools-Dj65KKyc.js → useSchools-CDRcjANc.js} +2 -2
  252. package/dist/assets/{useSchools-Dj65KKyc.js.map → useSchools-CDRcjANc.js.map} +1 -1
  253. package/dist/assets/{useSchools-legacy-BxcCUrBy.js → useSchools-legacy-WeSe4BEl.js} +2 -2
  254. package/dist/assets/{useSchools-legacy-BxcCUrBy.js.map → useSchools-legacy-WeSe4BEl.js.map} +1 -1
  255. package/dist/assets/{useScores-_OWkYR2Y.js → useScores-_UGpgNYY.js} +2 -2
  256. package/dist/assets/{useScores-_OWkYR2Y.js.map → useScores-_UGpgNYY.js.map} +1 -1
  257. package/dist/assets/{useScores-legacy-BDgM6HNV.js → useScores-legacy-BDhM4zGM.js} +2 -2
  258. package/dist/assets/{useScores-legacy-BDgM6HNV.js.map → useScores-legacy-BDhM4zGM.js.map} +1 -1
  259. package/dist/assets/{utils-CV8G-gCd-BJ0ms7Ic.js → utils-CV8G-gCd-BfqAiww7.js} +2 -2
  260. package/dist/assets/{utils-CV8G-gCd-BJ0ms7Ic.js.map → utils-CV8G-gCd-BfqAiww7.js.map} +1 -1
  261. package/dist/assets/{utils-CV8G-gCd-legacy-CyvVi-ac.js → utils-CV8G-gCd-legacy-BrofeRF5.js} +2 -2
  262. package/dist/assets/{utils-CV8G-gCd-legacy-CyvVi-ac.js.map → utils-CV8G-gCd-legacy-BrofeRF5.js.map} +1 -1
  263. package/dist/index.html +3 -3
  264. package/dist/types/main.js +3 -0
  265. package/dist/types/main.js.map +1 -1
  266. package/dist/types/utils/recoverCssPreload/index.d.ts +2 -0
  267. package/dist/types/utils/recoverCssPreload/index.d.ts.map +1 -0
  268. package/dist/types/utils/recoverCssPreload/index.js +96 -0
  269. package/dist/types/utils/recoverCssPreload/index.js.map +1 -0
  270. package/dist/types/utils/recoverCssPreload/index.test.d.ts +2 -0
  271. package/dist/types/utils/recoverCssPreload/index.test.d.ts.map +1 -0
  272. package/dist/types/utils/recoverCssPreload/index.test.js +111 -0
  273. package/dist/types/utils/recoverCssPreload/index.test.js.map +1 -0
  274. package/package.json +1 -1
  275. package/dist/assets/globals-CqxFv-_n.css +0 -1
  276. package/dist/assets/globals-legacy-Dv3_O5ef.js +0 -1
  277. package/dist/assets/index-DxqnJfnT.js +0 -3
  278. package/dist/assets/index-DxqnJfnT.js.map +0 -1
  279. package/dist/assets/index-legacy-DeNa5JFf.js +0 -2
  280. package/dist/assets/index-legacy-DeNa5JFf.js.map +0 -1
  281. package/dist/assets/polyfills-legacy-KV91PI-U.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodCharacteristics-CX2zxhSJ.js","names":[],"sources":["../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/context.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Title/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Title/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Description/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Description/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/Content/styles.ts","../../src/sdks/NeighborhoodCharacteristics/types.ts","../../src/sdks/NeighborhoodCharacteristics/constants.ts","../../src/sdks/NeighborhoodCharacteristics/context.tsx","../../src/sdks/NeighborhoodCharacteristics/components/Content/index.tsx","../../src/sdks/NeighborhoodCharacteristics/schema.ts","../../src/sdks/NeighborhoodCharacteristics/index.tsx"],"sourcesContent":["export const wrapper = `group/score-section text-gray-400`;\n","import React, { useContext } from \"react\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n children?: React.ReactNode;\n};\n\nconst RootElementContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useRootElement = () => useContext(RootElementContext);\n\nconst RootElementContextProvider = ({\n isLoading,\n children,\n}: DefaultContext) => {\n return (\n <RootElementContext.Provider\n value={{\n isLoading,\n }}\n >\n {children}\n </RootElementContext.Provider>\n );\n};\n\nexport { useRootElement, RootElementContextProvider };\n","export const title = `\n font-bold leading-6 mb-2\n`;\n","import React from \"react\";\n\nimport * as styles from \"./styles\";\n\nexport const Title = ({ children }: { children: React.ReactNode }) => (\n <h3 data-testid=\"title\" className={styles.title}>\n {children}\n </h3>\n);\n","export const description = `\n text-sm leading-5 mb-6\n \n data-[empty=true]:p-5\n data-[empty=true]:rounded\n data-[empty=true]:bg-gray-100\n \n group-data-[is-loading=true]/score-section:h-32\n group-data-[is-loading=true]/score-section:bg-gray-200\n group-data-[is-loading=true]/score-section:animate-pulse\n`;\n","import React, { useMemo } from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { useRootElement } from \"../context\";\n\nimport * as styles from \"./styles\";\n\nexport const Description = ({ children }: { children?: string }) => {\n const { t } = useTranslation(\"neighborhoodCharacteristics\");\n const { isLoading } = useRootElement();\n\n const description = useMemo(() => children || t(\"noData\"), [children]);\n\n return (\n <p\n data-testid=\"description\"\n className={styles.description}\n data-empty={!children}\n >\n {!isLoading && description}\n </p>\n );\n};\n","import React from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\n\nimport * as styles from \"./styles\";\nimport { RootElementContextProvider } from \"./context\";\n\nexport const Root = ({\n isLoading = false,\n className,\n children,\n ...rest\n}: {\n isLoading?: boolean;\n className?: string;\n children: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>) => (\n <RootElementContextProvider isLoading={isLoading}>\n <div\n data-testid=\"score-section-root\"\n className={twMerge(styles.wrapper, className)}\n data-is-loading={isLoading}\n {...rest}\n >\n {children}\n </div>\n </RootElementContextProvider>\n);\n\n// Export children\nexport { Title } from \"./Title\";\nexport { Description } from \"./Description\";\n","export const content = `grid gap-x-6 lg:grid-flow-col auto-cols-fr mb-8`;\n\nexport const root = `mb-9 lg:mb-0`;\nexport const mobileView = `lg:hidden`;\nexport const desktopView = `hidden lg:grid`;\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Section = \"transport\" | \"services\" | \"character\";\n\nexport type Score =\n | \"pedestrian_friendly\"\n | \"car_friendly\"\n | \"transit_friendly\"\n | \"cycling_friendly\"\n | \"groceries\"\n | \"shopping\"\n | \"restaurants\"\n | \"cafes\"\n | \"quiet\"\n | \"parks\"\n | \"vibrant\"\n | \"nightlife\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n title?: boolean | string;\n hideAttribution?: boolean;\n};\n\nexport type NeighborhoodCharacteristicsProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-characteristics-Viewed\",\n SCORE_CLICKED = \"neighborhood-characteristics-Score-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 SCORE_CLICKED = \"score_clicked\",\n}\n","import { type Score } from \"./types\";\n\nexport const sectionScores = {\n transport: [\n \"pedestrian_friendly\",\n \"car_friendly\",\n \"transit_friendly\",\n \"cycling_friendly\",\n ] as Score[],\n services: [\"groceries\", \"shopping\", \"restaurants\", \"cafes\"] as Score[],\n character: [\"quiet\", \"parks\", \"vibrant\", \"nightlife\"] as Score[],\n};\n\nexport const includeScores = [\n ...sectionScores.transport,\n ...sectionScores.services,\n ...sectionScores.character,\n];\n","import { type Profiles, type Scores } from \"@local-logic/client\";\nimport React, { useContext, useMemo } from \"react\";\nimport {\n type NeighborhoodCharacteristicsProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { includeScores } from \"./constants\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\nimport { useScores } from \"~/features/clientLibrary/useScores\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n title: NeighborhoodCharacteristicsProps[\"options\"][\"title\"];\n profilesData?: Profiles;\n scores?: Scores[\"location\"];\n locale: \"en\" | \"fr\";\n hideAttribution?: boolean;\n};\n\nconst NeighborhoodCharacteristicsContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useNeighborhoodCharacteristics = () =>\n useContext(NeighborhoodCharacteristicsContext);\n\nconst NeighborhoodCharacteristicsProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const tracking = useTracking();\n const { sdkState } =\n useStateManagerContext<NeighborhoodCharacteristicsProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\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 location: {\n lat:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lat\n : undefined,\n lng:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lng\n : undefined,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const geographyId = useMemo(() => {\n if (typeof sdkState.options?.geographyId !== \"undefined\") {\n return sdkState.options.geographyId;\n }\n\n return Object.keys(geographyData || {})[0];\n }, [sdkState.options?.geographyId, geographyData]);\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: geographyId,\n externalId: sdkState.globalOptions?.externalId,\n });\n const { data: scoresData, isFetching: isScoresFetching } = useScores({\n geographyId,\n location: {},\n include: includeScores,\n });\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching || isScoresFetching,\n [isGeographyLoading, isProfilesFetching, isScoresFetching],\n );\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n title: sdkState.options?.title,\n profilesData,\n scores: scoresData?.geographies[0]?.scores,\n locale,\n hideAttribution: sdkState.options?.hideAttribution,\n }),\n [\n isLoading,\n sdkState.options?.title,\n profilesData,\n scoresData,\n locale,\n sdkState.options?.hideAttribution,\n ],\n );\n\n return (\n <NeighborhoodCharacteristicsContext.Provider value={contextValue}>\n {children}\n </NeighborhoodCharacteristicsContext.Provider>\n );\n};\n\nexport { useNeighborhoodCharacteristics, NeighborhoodCharacteristicsProvider };\n","import React, { useState, useEffect } from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\nimport { useTranslation } from \"react-i18next\";\nimport * as ScoreSection from \"../ScoreSection\";\nimport * as styles from \"./styles\";\nimport { useResponsiveBreakpoints } from \"~/hooks/useResponsiveBreakpoints\";\nimport { useTracking } from \"~/tracking\";\nimport { useNeighborhoodCharacteristics } from \"~/sdks/NeighborhoodCharacteristics/context\";\n\nimport { TitleHeader } from \"~/components/TitleHeader\";\nimport { Attribution } from \"~/components/Attribution\";\nimport * as ScoreCardList from \"~/components/ScoreCardList\";\n\nimport {\n type Section,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodCharacteristics/types\";\n\nimport { sectionScores } from \"~/sdks/NeighborhoodCharacteristics/constants\";\n\ntype ScoreSectionType = {\n title: string;\n description: string;\n scores: ScoreCardList.CardProps[];\n};\n\nexport function Content() {\n const { t } = useTranslation([\"neighborhoodCharacteristics\", \"common\"]);\n const { lg: isDesktop } = useResponsiveBreakpoints();\n const tracking = useTracking();\n\n const { title, profilesData, scores, isLoading, locale, hideAttribution } =\n useNeighborhoodCharacteristics();\n\n const [scoreGroups, setScoreGroups] = useState<{\n [key in Section]: ScoreSectionType;\n }>({\n transport: {\n title: t(\"sections.transport.title\"),\n description: \"\",\n scores: [],\n },\n services: {\n title: t(\"sections.services.title\"),\n description: \"\",\n scores: [],\n },\n character: {\n title: t(\"sections.character.title\"),\n description: \"\",\n scores: [],\n },\n });\n\n useEffect(() => {\n const newScoreGroups = { ...scoreGroups };\n\n if (scores) {\n Object.keys(newScoreGroups).forEach((sectionKey) => {\n newScoreGroups[sectionKey as Section].description =\n profilesData?.profiles[sectionKey as Section] || \"\";\n\n newScoreGroups[sectionKey as Section].scores = sectionScores[\n sectionKey as Section\n ]\n .map((value) => ({\n title: t(`common:scores.${value}.title`),\n scoreKey: value,\n value: Number(scores[value]?.value),\n description: scores[value]?.text || \"\",\n }))\n .filter((score) => score.value > 0)\n .sort((a, b) => (a.value < b.value ? 1 : -1));\n });\n }\n\n setScoreGroups(newScoreGroups);\n }, [profilesData, scores]);\n\n const handleOnScoreClick =\n (category: string) => (score: string, isActive: boolean) => {\n const scoreState = isActive ? \"enabled\" : \"disabled\";\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SCORE_CLICKED,\n eventAttributes: [\n {\n label: \"category\",\n data: category,\n },\n {\n label: \"score\",\n data: score,\n },\n {\n label: \"state\",\n data: scoreState,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SCORE_CLICKED,\n eventAttributes: {\n ll_category: category,\n ll_score: score,\n ll_score_state: scoreState,\n },\n });\n };\n\n return (\n <>\n <TitleHeader\n title={\n typeof title === \"string\" || title === false ? title : t(\"title\")\n }\n />\n\n <div className={styles.content}>\n {Object.entries(scoreGroups).map(([key, value]) => (\n <ScoreSection.Root\n key={`score-section-1-${key}`}\n className={styles.root}\n isLoading={isLoading}\n data-testid=\"score-section-root-header\"\n >\n <ScoreSection.Title>{value.title}</ScoreSection.Title>\n <ScoreSection.Description>\n {value.description}\n </ScoreSection.Description>\n {!isDesktop && (\n <div className={styles.mobileView}>\n <ScoreCardList.Root>\n {value.scores.map((score) => (\n <ScoreCardList.Card\n key={`score-section-mobile-${key}-${score.scoreKey}`}\n title={score.title}\n scoreKey={score.scoreKey}\n value={score.value}\n description={score.description}\n onClick={handleOnScoreClick(key)}\n />\n ))}\n </ScoreCardList.Root>\n </div>\n )}\n </ScoreSection.Root>\n ))}\n </div>\n\n {isDesktop && (\n <div className={twMerge(styles.content, styles.desktopView)}>\n {Object.entries(scoreGroups).map(([key, value]) => (\n <ScoreSection.Root\n key={`score-section-2-${key}`}\n isLoading={isLoading}\n data-testid=\"score-section-root-desktop\"\n >\n <ScoreCardList.Root>\n {value.scores.map((score) => (\n <ScoreCardList.Card\n key={`score-section-desktop-${key}-${score.scoreKey}`}\n title={score.title}\n scoreKey={score.scoreKey}\n value={score.value}\n description={score.description}\n onClick={handleOnScoreClick(key)}\n />\n ))}\n </ScoreCardList.Root>\n </ScoreSection.Root>\n ))}\n </div>\n )}\n\n <Attribution\n sdkName=\"neighborhood-characteristics\"\n locale={locale}\n isHidden={hideAttribution}\n />\n </>\n );\n}\n","import { number, object, ObjectSchema, string, mixed, boolean } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n title: mixed<string | boolean>().optional(),\n hideAttribution: boolean().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport { Content } from \"./components/Content\";\nimport { NeighborhoodCharacteristicsProvider } from \"./context\";\nimport { schema } from \"./schema\";\nimport { NeighborhoodCharacteristicsProps } from \"./types\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport 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 NeighborhoodCharacteristics = () => {\n const { sdkState } =\n useStateManagerContext<NeighborhoodCharacteristicsProps>();\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 Characteristics\"\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_CHARACTERISTICS}\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_CHARACTERISTICS,\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 <NeighborhoodCharacteristicsProvider>\n <Content />\n </NeighborhoodCharacteristicsProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodCharacteristics;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NeighborhoodCharacteristics-BXAWE_Yr.js","names":[],"sources":["../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/context.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Title/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Title/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Description/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Description/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/Content/styles.ts","../../src/sdks/NeighborhoodCharacteristics/types.ts","../../src/sdks/NeighborhoodCharacteristics/constants.ts","../../src/sdks/NeighborhoodCharacteristics/context.tsx","../../src/sdks/NeighborhoodCharacteristics/components/Content/index.tsx","../../src/sdks/NeighborhoodCharacteristics/schema.ts","../../src/sdks/NeighborhoodCharacteristics/index.tsx"],"sourcesContent":["export const wrapper = `group/score-section text-gray-400`;\n","import React, { useContext } from \"react\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n children?: React.ReactNode;\n};\n\nconst RootElementContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useRootElement = () => useContext(RootElementContext);\n\nconst RootElementContextProvider = ({\n isLoading,\n children,\n}: DefaultContext) => {\n return (\n <RootElementContext.Provider\n value={{\n isLoading,\n }}\n >\n {children}\n </RootElementContext.Provider>\n );\n};\n\nexport { useRootElement, RootElementContextProvider };\n","export const title = `\n font-bold leading-6 mb-2\n`;\n","import React from \"react\";\n\nimport * as styles from \"./styles\";\n\nexport const Title = ({ children }: { children: React.ReactNode }) => (\n <h3 data-testid=\"title\" className={styles.title}>\n {children}\n </h3>\n);\n","export const description = `\n text-sm leading-5 mb-6\n \n data-[empty=true]:p-5\n data-[empty=true]:rounded\n data-[empty=true]:bg-gray-100\n \n group-data-[is-loading=true]/score-section:h-32\n group-data-[is-loading=true]/score-section:bg-gray-200\n group-data-[is-loading=true]/score-section:animate-pulse\n`;\n","import React, { useMemo } from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { useRootElement } from \"../context\";\n\nimport * as styles from \"./styles\";\n\nexport const Description = ({ children }: { children?: string }) => {\n const { t } = useTranslation(\"neighborhoodCharacteristics\");\n const { isLoading } = useRootElement();\n\n const description = useMemo(() => children || t(\"noData\"), [children]);\n\n return (\n <p\n data-testid=\"description\"\n className={styles.description}\n data-empty={!children}\n >\n {!isLoading && description}\n </p>\n );\n};\n","import React from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\n\nimport * as styles from \"./styles\";\nimport { RootElementContextProvider } from \"./context\";\n\nexport const Root = ({\n isLoading = false,\n className,\n children,\n ...rest\n}: {\n isLoading?: boolean;\n className?: string;\n children: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>) => (\n <RootElementContextProvider isLoading={isLoading}>\n <div\n data-testid=\"score-section-root\"\n className={twMerge(styles.wrapper, className)}\n data-is-loading={isLoading}\n {...rest}\n >\n {children}\n </div>\n </RootElementContextProvider>\n);\n\n// Export children\nexport { Title } from \"./Title\";\nexport { Description } from \"./Description\";\n","export const content = `grid gap-x-6 lg:grid-flow-col auto-cols-fr mb-8`;\n\nexport const root = `mb-9 lg:mb-0`;\nexport const mobileView = `lg:hidden`;\nexport const desktopView = `hidden lg:grid`;\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Section = \"transport\" | \"services\" | \"character\";\n\nexport type Score =\n | \"pedestrian_friendly\"\n | \"car_friendly\"\n | \"transit_friendly\"\n | \"cycling_friendly\"\n | \"groceries\"\n | \"shopping\"\n | \"restaurants\"\n | \"cafes\"\n | \"quiet\"\n | \"parks\"\n | \"vibrant\"\n | \"nightlife\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n title?: boolean | string;\n hideAttribution?: boolean;\n};\n\nexport type NeighborhoodCharacteristicsProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-characteristics-Viewed\",\n SCORE_CLICKED = \"neighborhood-characteristics-Score-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 SCORE_CLICKED = \"score_clicked\",\n}\n","import { type Score } from \"./types\";\n\nexport const sectionScores = {\n transport: [\n \"pedestrian_friendly\",\n \"car_friendly\",\n \"transit_friendly\",\n \"cycling_friendly\",\n ] as Score[],\n services: [\"groceries\", \"shopping\", \"restaurants\", \"cafes\"] as Score[],\n character: [\"quiet\", \"parks\", \"vibrant\", \"nightlife\"] as Score[],\n};\n\nexport const includeScores = [\n ...sectionScores.transport,\n ...sectionScores.services,\n ...sectionScores.character,\n];\n","import { type Profiles, type Scores } from \"@local-logic/client\";\nimport React, { useContext, useMemo } from \"react\";\nimport {\n type NeighborhoodCharacteristicsProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { includeScores } from \"./constants\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\nimport { useScores } from \"~/features/clientLibrary/useScores\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n title: NeighborhoodCharacteristicsProps[\"options\"][\"title\"];\n profilesData?: Profiles;\n scores?: Scores[\"location\"];\n locale: \"en\" | \"fr\";\n hideAttribution?: boolean;\n};\n\nconst NeighborhoodCharacteristicsContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useNeighborhoodCharacteristics = () =>\n useContext(NeighborhoodCharacteristicsContext);\n\nconst NeighborhoodCharacteristicsProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const tracking = useTracking();\n const { sdkState } =\n useStateManagerContext<NeighborhoodCharacteristicsProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\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 location: {\n lat:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lat\n : undefined,\n lng:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lng\n : undefined,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const geographyId = useMemo(() => {\n if (typeof sdkState.options?.geographyId !== \"undefined\") {\n return sdkState.options.geographyId;\n }\n\n return Object.keys(geographyData || {})[0];\n }, [sdkState.options?.geographyId, geographyData]);\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: geographyId,\n externalId: sdkState.globalOptions?.externalId,\n });\n const { data: scoresData, isFetching: isScoresFetching } = useScores({\n geographyId,\n location: {},\n include: includeScores,\n });\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching || isScoresFetching,\n [isGeographyLoading, isProfilesFetching, isScoresFetching],\n );\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n title: sdkState.options?.title,\n profilesData,\n scores: scoresData?.geographies[0]?.scores,\n locale,\n hideAttribution: sdkState.options?.hideAttribution,\n }),\n [\n isLoading,\n sdkState.options?.title,\n profilesData,\n scoresData,\n locale,\n sdkState.options?.hideAttribution,\n ],\n );\n\n return (\n <NeighborhoodCharacteristicsContext.Provider value={contextValue}>\n {children}\n </NeighborhoodCharacteristicsContext.Provider>\n );\n};\n\nexport { useNeighborhoodCharacteristics, NeighborhoodCharacteristicsProvider };\n","import React, { useState, useEffect } from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\nimport { useTranslation } from \"react-i18next\";\nimport * as ScoreSection from \"../ScoreSection\";\nimport * as styles from \"./styles\";\nimport { useResponsiveBreakpoints } from \"~/hooks/useResponsiveBreakpoints\";\nimport { useTracking } from \"~/tracking\";\nimport { useNeighborhoodCharacteristics } from \"~/sdks/NeighborhoodCharacteristics/context\";\n\nimport { TitleHeader } from \"~/components/TitleHeader\";\nimport { Attribution } from \"~/components/Attribution\";\nimport * as ScoreCardList from \"~/components/ScoreCardList\";\n\nimport {\n type Section,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodCharacteristics/types\";\n\nimport { sectionScores } from \"~/sdks/NeighborhoodCharacteristics/constants\";\n\ntype ScoreSectionType = {\n title: string;\n description: string;\n scores: ScoreCardList.CardProps[];\n};\n\nexport function Content() {\n const { t } = useTranslation([\"neighborhoodCharacteristics\", \"common\"]);\n const { lg: isDesktop } = useResponsiveBreakpoints();\n const tracking = useTracking();\n\n const { title, profilesData, scores, isLoading, locale, hideAttribution } =\n useNeighborhoodCharacteristics();\n\n const [scoreGroups, setScoreGroups] = useState<{\n [key in Section]: ScoreSectionType;\n }>({\n transport: {\n title: t(\"sections.transport.title\"),\n description: \"\",\n scores: [],\n },\n services: {\n title: t(\"sections.services.title\"),\n description: \"\",\n scores: [],\n },\n character: {\n title: t(\"sections.character.title\"),\n description: \"\",\n scores: [],\n },\n });\n\n useEffect(() => {\n const newScoreGroups = { ...scoreGroups };\n\n if (scores) {\n Object.keys(newScoreGroups).forEach((sectionKey) => {\n newScoreGroups[sectionKey as Section].description =\n profilesData?.profiles[sectionKey as Section] || \"\";\n\n newScoreGroups[sectionKey as Section].scores = sectionScores[\n sectionKey as Section\n ]\n .map((value) => ({\n title: t(`common:scores.${value}.title`),\n scoreKey: value,\n value: Number(scores[value]?.value),\n description: scores[value]?.text || \"\",\n }))\n .filter((score) => score.value > 0)\n .sort((a, b) => (a.value < b.value ? 1 : -1));\n });\n }\n\n setScoreGroups(newScoreGroups);\n }, [profilesData, scores]);\n\n const handleOnScoreClick =\n (category: string) => (score: string, isActive: boolean) => {\n const scoreState = isActive ? \"enabled\" : \"disabled\";\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SCORE_CLICKED,\n eventAttributes: [\n {\n label: \"category\",\n data: category,\n },\n {\n label: \"score\",\n data: score,\n },\n {\n label: \"state\",\n data: scoreState,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SCORE_CLICKED,\n eventAttributes: {\n ll_category: category,\n ll_score: score,\n ll_score_state: scoreState,\n },\n });\n };\n\n return (\n <>\n <TitleHeader\n title={\n typeof title === \"string\" || title === false ? title : t(\"title\")\n }\n />\n\n <div className={styles.content}>\n {Object.entries(scoreGroups).map(([key, value]) => (\n <ScoreSection.Root\n key={`score-section-1-${key}`}\n className={styles.root}\n isLoading={isLoading}\n data-testid=\"score-section-root-header\"\n >\n <ScoreSection.Title>{value.title}</ScoreSection.Title>\n <ScoreSection.Description>\n {value.description}\n </ScoreSection.Description>\n {!isDesktop && (\n <div className={styles.mobileView}>\n <ScoreCardList.Root>\n {value.scores.map((score) => (\n <ScoreCardList.Card\n key={`score-section-mobile-${key}-${score.scoreKey}`}\n title={score.title}\n scoreKey={score.scoreKey}\n value={score.value}\n description={score.description}\n onClick={handleOnScoreClick(key)}\n />\n ))}\n </ScoreCardList.Root>\n </div>\n )}\n </ScoreSection.Root>\n ))}\n </div>\n\n {isDesktop && (\n <div className={twMerge(styles.content, styles.desktopView)}>\n {Object.entries(scoreGroups).map(([key, value]) => (\n <ScoreSection.Root\n key={`score-section-2-${key}`}\n isLoading={isLoading}\n data-testid=\"score-section-root-desktop\"\n >\n <ScoreCardList.Root>\n {value.scores.map((score) => (\n <ScoreCardList.Card\n key={`score-section-desktop-${key}-${score.scoreKey}`}\n title={score.title}\n scoreKey={score.scoreKey}\n value={score.value}\n description={score.description}\n onClick={handleOnScoreClick(key)}\n />\n ))}\n </ScoreCardList.Root>\n </ScoreSection.Root>\n ))}\n </div>\n )}\n\n <Attribution\n sdkName=\"neighborhood-characteristics\"\n locale={locale}\n isHidden={hideAttribution}\n />\n </>\n );\n}\n","import { number, object, ObjectSchema, string, mixed, boolean } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n title: mixed<string | boolean>().optional(),\n hideAttribution: boolean().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport { Content } from \"./components/Content\";\nimport { NeighborhoodCharacteristicsProvider } from \"./context\";\nimport { schema } from \"./schema\";\nimport { NeighborhoodCharacteristicsProps } from \"./types\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport 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 NeighborhoodCharacteristics = () => {\n const { sdkState } =\n useStateManagerContext<NeighborhoodCharacteristicsProps>();\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 Characteristics\"\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_CHARACTERISTICS}\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_CHARACTERISTICS,\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 <NeighborhoodCharacteristicsProvider>\n <Content />\n </NeighborhoodCharacteristicsProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodCharacteristics;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(){const e=["isLoading","className","children"];function t(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,o)}return i}function i(e){for(var i=1;i<arguments.length;i++){var n=null!=arguments[i]?arguments[i]:{};i%2?t(Object(n),!0).forEach(function(t){o(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):t(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function o(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}System.register(["./rolldown-runtime-legacy-dtqCu9Cl.js","./google-maps-vendor-legacy-D5NgIsmz.js","./sdks-legacy-eEWqNDw9.js","./index-legacy-DeNa5JFf.js","./useGeographies-legacy-CYCHt3Zt.js","./useResponsiveBreakpoints-legacy-CfoMoiQ8.js","./Attribution-legacy-CZRg2xtq.js","./globals-legacy-Dv3_O5ef.js","./ResizeWrapper-legacy-dNB7wg4R.js","./ValidateOptions-legacy-DQF5TYHw.js","./useIsMobile-legacy-DfzhaV7o.js","./useScores-legacy-BDgM6HNV.js","./bundle-mjs-legacy-C0i5nU2f.js","./TitleHeader-legacy-C3IaKPzC.js","./useProfiles-legacy-D2vMNSmu.js","./ScoreCardList-legacy-Caqgt45w.js"],function(t,o){var n,r,s,l,a,c,d,u,p,g,v,h,y,f,b,m,j,O,x,I,E,C,S,D,k,w,_,K,N,P,L,A,M,R,H,T,$,V,W,q,B,F,G,z,U,Y,J,Q,X;function Z(){const{t:e}=d(["neighborhoodCharacteristics","common"]),{lg:t}=x(),o=g(),{title:n,profilesData:r,scores:s,isLoading:l,locale:a,hideAttribution:c}=J(),[u,p]=(0,P.useState)({transport:{title:e("sections.transport.title"),description:"",scores:[]},services:{title:e("sections.services.title"),description:"",scores:[]},character:{title:e("sections.character.title"),description:"",scores:[]}});(0,P.useEffect)(()=>{const t=i({},u);s&&Object.keys(t).forEach(i=>{t[i].description=(null==r?void 0:r.profiles[i])||"",t[i].scores=z[i].map(t=>{var i,o;return{title:e(`common:scores.${t}.title`),scoreKey:t,value:Number(null===(i=s[t])||void 0===i?void 0:i.value),description:(null===(o=s[t])||void 0===o?void 0:o.text)||""}}).filter(e=>e.value>0).sort((e,t)=>e.value<t.value?1:-1)}),p(t)},[r,s]);const v=e=>(t,i)=>{const n=i?"enabled":"disabled";o.postEvent({eventType:F.SCORE_CLICKED,eventAttributes:[{label:"category",data:e},{label:"score",data:t},{label:"state",data:n}]}),o.trackAnalyticsEvent({eventName:G.SCORE_CLICKED,eventAttributes:{ll_category:e,ll_score:t,ll_score_state:n}})};return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(w,{title:"string"==typeof n||!1===n?n:e("title")}),(0,L.jsx)("div",{className:V,children:Object.entries(u).map(([e,i])=>(0,L.jsxs)($,{className:W,isLoading:l,"data-testid":"score-section-root-header",children:[(0,L.jsx)(H,{children:i.title}),(0,L.jsx)(T,{children:i.description}),!t&&(0,L.jsx)("div",{className:q,children:(0,L.jsx)(N,{children:i.scores.map(t=>(0,L.jsx)(K,{title:t.title,scoreKey:t.scoreKey,value:t.value,description:t.description,onClick:v(e)},`score-section-mobile-${e}-${t.scoreKey}`))})})]},`score-section-1-${e}`))}),t&&(0,L.jsx)("div",{className:k(V,B),children:Object.entries(u).map(([e,t])=>(0,L.jsx)($,{isLoading:l,"data-testid":"score-section-root-desktop",children:(0,L.jsx)(N,{children:t.scores.map(t=>(0,L.jsx)(K,{title:t.title,scoreKey:t.scoreKey,value:t.value,description:t.description,onClick:v(e)},`score-section-desktop-${e}-${t.scoreKey}`))})},`score-section-2-${e}`))}),(0,L.jsx)(I,{sdkName:"neighborhood-characteristics",locale:a,isHidden:c})]})}return{setters:[function(e){n=e.a},function(e){r=e.l},function(e){s=e.a,l=e.c,a=e.d,c=e.f,d=e.g,u=e.m,p=e.n,g=e.o,v=e.p,h=e.r,y=e.t,f=e.u},function(e){b=e.Y,m=e.i,j=e.n},function(e){O=e.t},function(e){x=e.t},function(e){I=e.t},function(e){},function(e){E=e.t},function(e){C=e.t},function(e){S=e.t},function(e){D=e.t},function(e){k=e.t},function(e){w=e.t},function(e){_=e.t},function(e){K=e.n,N=e.t}],execute:function(){P=n(r(),1),L=b(),A=P.createContext({}),M=()=>(0,P.useContext)(A),R=({isLoading:e,children:t})=>(0,L.jsx)(A.Provider,{value:{isLoading:e},children:t}),H=({children:e})=>(0,L.jsx)("h3",{"data-testid":"title",className:"\n font-bold leading-6 mb-2\n",children:e}),T=({children:e})=>{const{t:t}=d("neighborhoodCharacteristics"),{isLoading:i}=M(),o=(0,P.useMemo)(()=>e||t("noData"),[e]);return(0,L.jsx)("p",{"data-testid":"description",className:"\n text-sm leading-5 mb-6\n \n data-[empty=true]:p-5\n data-[empty=true]:rounded\n data-[empty=true]:bg-gray-100\n \n group-data-[is-loading=true]/score-section:h-32\n group-data-[is-loading=true]/score-section:bg-gray-200\n group-data-[is-loading=true]/score-section:animate-pulse\n","data-empty":!e,children:!i&&o})},$=t=>{let{isLoading:o=!1,className:n,children:r}=t,s=function(e,t){if(null==e)return{};var i,o,n=function(e,t){if(null==e)return{};var i={};for(var o in e)if({}.hasOwnProperty.call(e,o)){if(-1!==t.indexOf(o))continue;i[o]=e[o]}return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)i=r[o],-1===t.indexOf(i)&&{}.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}(t,e);return(0,L.jsx)(R,{isLoading:o,children:(0,L.jsx)("div",i(i({"data-testid":"score-section-root",className:k("group/score-section text-gray-400",n),"data-is-loading":o},s),{},{children:r}))})},V="grid gap-x-6 lg:grid-flow-col auto-cols-fr mb-8",W="mb-9 lg:mb-0",q="lg:hidden",B="hidden lg:grid",F=function(e){return e.SDK_VIEWED="neighborhood-characteristics-Viewed",e.SCORE_CLICKED="neighborhood-characteristics-Score-Clicked",e}({}),G=function(e){return e.SDK_VIEWED="sdk_viewed",e.SCORE_CLICKED="score_clicked",e}({}),U=[...(z={transport:["pedestrian_friendly","car_friendly","transit_friendly","cycling_friendly"],services:["groceries","shopping","restaurants","cafes"],character:["quiet","parks","vibrant","nightlife"]}).transport,...z.services,...z.character],Y=P.createContext({}),J=()=>(0,P.useContext)(Y),Q=({children:e})=>{var t,i,o,n,r,s,l,a,c,d;const u=g(),{sdkState:p}=j(),v=(null===(t=p.globalOptions)||void 0===t?void 0:t.locale)||"en";m(()=>{u.postEvent({eventType:F.SDK_VIEWED}),u.trackAnalyticsEvent({eventName:G.SDK_VIEWED})});const{isLoading:h,data:y}=O({location:{lat:void 0===(null===(i=p.options)||void 0===i?void 0:i.geographyId)?null===(o=p.options)||void 0===o?void 0:o.lat:void 0,lng:void 0===(null===(n=p.options)||void 0===n?void 0:n.geographyId)?null===(r=p.options)||void 0===r?void 0:r.lng:void 0},externalId:null==p||null===(s=p.globalOptions)||void 0===s?void 0:s.externalId}),f=(0,P.useMemo)(()=>{var e;return void 0!==(null===(e=p.options)||void 0===e?void 0:e.geographyId)?p.options.geographyId:Object.keys(y||{})[0]},[null===(l=p.options)||void 0===l?void 0:l.geographyId,y]),{data:b,isFetching:x}=_({geogID:f,externalId:null===(a=p.globalOptions)||void 0===a?void 0:a.externalId}),{data:I,isFetching:E}=D({geographyId:f,location:{},include:U}),C=(0,P.useMemo)(()=>h||x||E,[h,x,E]),S=(0,P.useMemo)(()=>{var e,t,i;return{isLoading:C,title:null===(e=p.options)||void 0===e?void 0:e.title,profilesData:b,scores:null==I||null===(t=I.geographies[0])||void 0===t?void 0:t.scores,locale:v,hideAttribution:null===(i=p.options)||void 0===i?void 0:i.hideAttribution}},[C,null===(c=p.options)||void 0===c?void 0:c.title,b,I,v,null===(d=p.options)||void 0===d?void 0:d.hideAttribution]);return(0,L.jsx)(Y.Provider,{value:S,children:e})},X=f({lat:a().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:a().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:c().optional(),title:u().optional(),hideAttribution:v().optional()}).noUnknown(!0),l(p.neighborhoodWrap.key),t("default",()=>{var e,t,i,o,n,r,l;const{sdkState:a}=j(),c=S(),d=(null===(e=a.globalOptions)||void 0===e?void 0:e.locale)||"en",u=(0,P.useMemo)(()=>{var e,t,i,o;return null!==(e=a.options)&&void 0!==e&&e.geographyId?{geographyId:null===(t=a.options)||void 0===t?void 0:t.geographyId}:{lat:null===(i=a.options)||void 0===i?void 0:i.lat,lng:null===(o=a.options)||void 0===o?void 0:o.lng}},[null===(t=a.options)||void 0===t?void 0:t.lat,null===(i=a.options)||void 0===i?void 0:i.lng,null===(o=a.options)||void 0===o?void 0:o.geographyId]);return(0,L.jsx)(E,{children:(0,L.jsx)(C,{sdk:"Neighborhood Characteristics",schema:X,options:a.options,children:(0,L.jsx)(h,{environment:null===(n=a.globalOptions)||void 0===n||null===(n=n.environment)||void 0===n?void 0:n.api,apiKey:a.apiKey,appearance:null===(r=a.globalOptions)||void 0===r?void 0:r.appearance,locale:null===(l=a.globalOptions)||void 0===l?void 0:l.locale,product:y.NEIGHBORHOOD_CHARACTERISTICS,children:(0,L.jsx)(s,{trackingPipelineSettings:{apiKey:a.apiKey||""},analyticsSettings:p.neighborhoodWrap,meta:{clientId:a.clientId,productName:y.NEIGHBORHOOD_CHARACTERISTICS,productVersion:"1.24.65"},attributes:{location:u,host:a.location,host_url:document.referrer,locale:d,isMobile:c},flags:{isDebugMode:!1},children:(0,L.jsx)(Q,{children:(0,L.jsx)(Z,{})})})})})})})}}})}();
2
- //# sourceMappingURL=NeighborhoodCharacteristics-legacy-2J2zsQBh.js.map
1
+ !function(){const e=["isLoading","className","children"];function t(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,o)}return i}function i(e){for(var i=1;i<arguments.length;i++){var n=null!=arguments[i]?arguments[i]:{};i%2?t(Object(n),!0).forEach(function(t){o(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):t(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function o(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}System.register(["./rolldown-runtime-legacy-dtqCu9Cl.js","./google-maps-vendor-legacy-D5NgIsmz.js","./sdks-legacy-BMudUPgz.js","./index-legacy-A0tsrrZt.js","./useGeographies-legacy-CzZb8wbH.js","./useResponsiveBreakpoints-legacy-CfoMoiQ8.js","./Attribution-legacy-BHwwqaVL.js","./globals-legacy-BHUBCckM.js","./ResizeWrapper-legacy-Bq7weNwm.js","./ValidateOptions-legacy-Dsep8qdV.js","./useIsMobile-legacy-DmiaVB7P.js","./useScores-legacy-BDhM4zGM.js","./bundle-mjs-legacy-C0i5nU2f.js","./TitleHeader-legacy-OyxHyZJv.js","./useProfiles-legacy-D_7Zq231.js","./ScoreCardList-legacy-DL0dIYtn.js"],function(t,o){var n,r,s,l,a,c,d,u,p,g,v,h,y,f,b,m,j,O,x,I,E,C,S,D,k,w,_,K,N,P,L,A,M,R,H,T,$,V,W,q,B,F,G,z,U,Y,J,Q,X;function Z(){const{t:e}=d(["neighborhoodCharacteristics","common"]),{lg:t}=x(),o=g(),{title:n,profilesData:r,scores:s,isLoading:l,locale:a,hideAttribution:c}=J(),[u,p]=(0,P.useState)({transport:{title:e("sections.transport.title"),description:"",scores:[]},services:{title:e("sections.services.title"),description:"",scores:[]},character:{title:e("sections.character.title"),description:"",scores:[]}});(0,P.useEffect)(()=>{const t=i({},u);s&&Object.keys(t).forEach(i=>{t[i].description=(null==r?void 0:r.profiles[i])||"",t[i].scores=z[i].map(t=>{var i,o;return{title:e(`common:scores.${t}.title`),scoreKey:t,value:Number(null===(i=s[t])||void 0===i?void 0:i.value),description:(null===(o=s[t])||void 0===o?void 0:o.text)||""}}).filter(e=>e.value>0).sort((e,t)=>e.value<t.value?1:-1)}),p(t)},[r,s]);const v=e=>(t,i)=>{const n=i?"enabled":"disabled";o.postEvent({eventType:F.SCORE_CLICKED,eventAttributes:[{label:"category",data:e},{label:"score",data:t},{label:"state",data:n}]}),o.trackAnalyticsEvent({eventName:G.SCORE_CLICKED,eventAttributes:{ll_category:e,ll_score:t,ll_score_state:n}})};return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(w,{title:"string"==typeof n||!1===n?n:e("title")}),(0,L.jsx)("div",{className:V,children:Object.entries(u).map(([e,i])=>(0,L.jsxs)($,{className:W,isLoading:l,"data-testid":"score-section-root-header",children:[(0,L.jsx)(H,{children:i.title}),(0,L.jsx)(T,{children:i.description}),!t&&(0,L.jsx)("div",{className:q,children:(0,L.jsx)(N,{children:i.scores.map(t=>(0,L.jsx)(K,{title:t.title,scoreKey:t.scoreKey,value:t.value,description:t.description,onClick:v(e)},`score-section-mobile-${e}-${t.scoreKey}`))})})]},`score-section-1-${e}`))}),t&&(0,L.jsx)("div",{className:k(V,B),children:Object.entries(u).map(([e,t])=>(0,L.jsx)($,{isLoading:l,"data-testid":"score-section-root-desktop",children:(0,L.jsx)(N,{children:t.scores.map(t=>(0,L.jsx)(K,{title:t.title,scoreKey:t.scoreKey,value:t.value,description:t.description,onClick:v(e)},`score-section-desktop-${e}-${t.scoreKey}`))})},`score-section-2-${e}`))}),(0,L.jsx)(I,{sdkName:"neighborhood-characteristics",locale:a,isHidden:c})]})}return{setters:[function(e){n=e.a},function(e){r=e.l},function(e){s=e.a,l=e.c,a=e.d,c=e.f,d=e.g,u=e.m,p=e.n,g=e.o,v=e.p,h=e.r,y=e.t,f=e.u},function(e){b=e.Y,m=e.i,j=e.n},function(e){O=e.t},function(e){x=e.t},function(e){I=e.t},function(e){},function(e){E=e.t},function(e){C=e.t},function(e){S=e.t},function(e){D=e.t},function(e){k=e.t},function(e){w=e.t},function(e){_=e.t},function(e){K=e.n,N=e.t}],execute:function(){P=n(r(),1),L=b(),A=P.createContext({}),M=()=>(0,P.useContext)(A),R=({isLoading:e,children:t})=>(0,L.jsx)(A.Provider,{value:{isLoading:e},children:t}),H=({children:e})=>(0,L.jsx)("h3",{"data-testid":"title",className:"\n font-bold leading-6 mb-2\n",children:e}),T=({children:e})=>{const{t:t}=d("neighborhoodCharacteristics"),{isLoading:i}=M(),o=(0,P.useMemo)(()=>e||t("noData"),[e]);return(0,L.jsx)("p",{"data-testid":"description",className:"\n text-sm leading-5 mb-6\n \n data-[empty=true]:p-5\n data-[empty=true]:rounded\n data-[empty=true]:bg-gray-100\n \n group-data-[is-loading=true]/score-section:h-32\n group-data-[is-loading=true]/score-section:bg-gray-200\n group-data-[is-loading=true]/score-section:animate-pulse\n","data-empty":!e,children:!i&&o})},$=t=>{let{isLoading:o=!1,className:n,children:r}=t,s=function(e,t){if(null==e)return{};var i,o,n=function(e,t){if(null==e)return{};var i={};for(var o in e)if({}.hasOwnProperty.call(e,o)){if(-1!==t.indexOf(o))continue;i[o]=e[o]}return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)i=r[o],-1===t.indexOf(i)&&{}.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}(t,e);return(0,L.jsx)(R,{isLoading:o,children:(0,L.jsx)("div",i(i({"data-testid":"score-section-root",className:k("group/score-section text-gray-400",n),"data-is-loading":o},s),{},{children:r}))})},V="grid gap-x-6 lg:grid-flow-col auto-cols-fr mb-8",W="mb-9 lg:mb-0",q="lg:hidden",B="hidden lg:grid",F=function(e){return e.SDK_VIEWED="neighborhood-characteristics-Viewed",e.SCORE_CLICKED="neighborhood-characteristics-Score-Clicked",e}({}),G=function(e){return e.SDK_VIEWED="sdk_viewed",e.SCORE_CLICKED="score_clicked",e}({}),U=[...(z={transport:["pedestrian_friendly","car_friendly","transit_friendly","cycling_friendly"],services:["groceries","shopping","restaurants","cafes"],character:["quiet","parks","vibrant","nightlife"]}).transport,...z.services,...z.character],Y=P.createContext({}),J=()=>(0,P.useContext)(Y),Q=({children:e})=>{var t,i,o,n,r,s,l,a,c,d;const u=g(),{sdkState:p}=j(),v=(null===(t=p.globalOptions)||void 0===t?void 0:t.locale)||"en";m(()=>{u.postEvent({eventType:F.SDK_VIEWED}),u.trackAnalyticsEvent({eventName:G.SDK_VIEWED})});const{isLoading:h,data:y}=O({location:{lat:void 0===(null===(i=p.options)||void 0===i?void 0:i.geographyId)?null===(o=p.options)||void 0===o?void 0:o.lat:void 0,lng:void 0===(null===(n=p.options)||void 0===n?void 0:n.geographyId)?null===(r=p.options)||void 0===r?void 0:r.lng:void 0},externalId:null==p||null===(s=p.globalOptions)||void 0===s?void 0:s.externalId}),f=(0,P.useMemo)(()=>{var e;return void 0!==(null===(e=p.options)||void 0===e?void 0:e.geographyId)?p.options.geographyId:Object.keys(y||{})[0]},[null===(l=p.options)||void 0===l?void 0:l.geographyId,y]),{data:b,isFetching:x}=_({geogID:f,externalId:null===(a=p.globalOptions)||void 0===a?void 0:a.externalId}),{data:I,isFetching:E}=D({geographyId:f,location:{},include:U}),C=(0,P.useMemo)(()=>h||x||E,[h,x,E]),S=(0,P.useMemo)(()=>{var e,t,i;return{isLoading:C,title:null===(e=p.options)||void 0===e?void 0:e.title,profilesData:b,scores:null==I||null===(t=I.geographies[0])||void 0===t?void 0:t.scores,locale:v,hideAttribution:null===(i=p.options)||void 0===i?void 0:i.hideAttribution}},[C,null===(c=p.options)||void 0===c?void 0:c.title,b,I,v,null===(d=p.options)||void 0===d?void 0:d.hideAttribution]);return(0,L.jsx)(Y.Provider,{value:S,children:e})},X=f({lat:a().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:a().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:c().optional(),title:u().optional(),hideAttribution:v().optional()}).noUnknown(!0),l(p.neighborhoodWrap.key),t("default",()=>{var e,t,i,o,n,r,l;const{sdkState:a}=j(),c=S(),d=(null===(e=a.globalOptions)||void 0===e?void 0:e.locale)||"en",u=(0,P.useMemo)(()=>{var e,t,i,o;return null!==(e=a.options)&&void 0!==e&&e.geographyId?{geographyId:null===(t=a.options)||void 0===t?void 0:t.geographyId}:{lat:null===(i=a.options)||void 0===i?void 0:i.lat,lng:null===(o=a.options)||void 0===o?void 0:o.lng}},[null===(t=a.options)||void 0===t?void 0:t.lat,null===(i=a.options)||void 0===i?void 0:i.lng,null===(o=a.options)||void 0===o?void 0:o.geographyId]);return(0,L.jsx)(E,{children:(0,L.jsx)(C,{sdk:"Neighborhood Characteristics",schema:X,options:a.options,children:(0,L.jsx)(h,{environment:null===(n=a.globalOptions)||void 0===n||null===(n=n.environment)||void 0===n?void 0:n.api,apiKey:a.apiKey,appearance:null===(r=a.globalOptions)||void 0===r?void 0:r.appearance,locale:null===(l=a.globalOptions)||void 0===l?void 0:l.locale,product:y.NEIGHBORHOOD_CHARACTERISTICS,children:(0,L.jsx)(s,{trackingPipelineSettings:{apiKey:a.apiKey||""},analyticsSettings:p.neighborhoodWrap,meta:{clientId:a.clientId,productName:y.NEIGHBORHOOD_CHARACTERISTICS,productVersion:"1.25.0"},attributes:{location:u,host:a.location,host_url:document.referrer,locale:d,isMobile:c},flags:{isDebugMode:!1},children:(0,L.jsx)(Q,{children:(0,L.jsx)(Z,{})})})})})})})}}})}();
2
+ //# sourceMappingURL=NeighborhoodCharacteristics-legacy-qOhWab8U.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeighborhoodCharacteristics-legacy-2J2zsQBh.js","names":[],"sources":["../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/context.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Title/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Title/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Description/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Description/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/Content/styles.ts","../../src/sdks/NeighborhoodCharacteristics/types.ts","../../src/sdks/NeighborhoodCharacteristics/constants.ts","../../src/sdks/NeighborhoodCharacteristics/context.tsx","../../src/sdks/NeighborhoodCharacteristics/components/Content/index.tsx","../../src/sdks/NeighborhoodCharacteristics/schema.ts","../../src/sdks/NeighborhoodCharacteristics/index.tsx"],"sourcesContent":["export const wrapper = `group/score-section text-gray-400`;\n","import React, { useContext } from \"react\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n children?: React.ReactNode;\n};\n\nconst RootElementContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useRootElement = () => useContext(RootElementContext);\n\nconst RootElementContextProvider = ({\n isLoading,\n children,\n}: DefaultContext) => {\n return (\n <RootElementContext.Provider\n value={{\n isLoading,\n }}\n >\n {children}\n </RootElementContext.Provider>\n );\n};\n\nexport { useRootElement, RootElementContextProvider };\n","export const title = `\n font-bold leading-6 mb-2\n`;\n","import React from \"react\";\n\nimport * as styles from \"./styles\";\n\nexport const Title = ({ children }: { children: React.ReactNode }) => (\n <h3 data-testid=\"title\" className={styles.title}>\n {children}\n </h3>\n);\n","export const description = `\n text-sm leading-5 mb-6\n \n data-[empty=true]:p-5\n data-[empty=true]:rounded\n data-[empty=true]:bg-gray-100\n \n group-data-[is-loading=true]/score-section:h-32\n group-data-[is-loading=true]/score-section:bg-gray-200\n group-data-[is-loading=true]/score-section:animate-pulse\n`;\n","import React, { useMemo } from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { useRootElement } from \"../context\";\n\nimport * as styles from \"./styles\";\n\nexport const Description = ({ children }: { children?: string }) => {\n const { t } = useTranslation(\"neighborhoodCharacteristics\");\n const { isLoading } = useRootElement();\n\n const description = useMemo(() => children || t(\"noData\"), [children]);\n\n return (\n <p\n data-testid=\"description\"\n className={styles.description}\n data-empty={!children}\n >\n {!isLoading && description}\n </p>\n );\n};\n","import React from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\n\nimport * as styles from \"./styles\";\nimport { RootElementContextProvider } from \"./context\";\n\nexport const Root = ({\n isLoading = false,\n className,\n children,\n ...rest\n}: {\n isLoading?: boolean;\n className?: string;\n children: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>) => (\n <RootElementContextProvider isLoading={isLoading}>\n <div\n data-testid=\"score-section-root\"\n className={twMerge(styles.wrapper, className)}\n data-is-loading={isLoading}\n {...rest}\n >\n {children}\n </div>\n </RootElementContextProvider>\n);\n\n// Export children\nexport { Title } from \"./Title\";\nexport { Description } from \"./Description\";\n","export const content = `grid gap-x-6 lg:grid-flow-col auto-cols-fr mb-8`;\n\nexport const root = `mb-9 lg:mb-0`;\nexport const mobileView = `lg:hidden`;\nexport const desktopView = `hidden lg:grid`;\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Section = \"transport\" | \"services\" | \"character\";\n\nexport type Score =\n | \"pedestrian_friendly\"\n | \"car_friendly\"\n | \"transit_friendly\"\n | \"cycling_friendly\"\n | \"groceries\"\n | \"shopping\"\n | \"restaurants\"\n | \"cafes\"\n | \"quiet\"\n | \"parks\"\n | \"vibrant\"\n | \"nightlife\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n title?: boolean | string;\n hideAttribution?: boolean;\n};\n\nexport type NeighborhoodCharacteristicsProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-characteristics-Viewed\",\n SCORE_CLICKED = \"neighborhood-characteristics-Score-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 SCORE_CLICKED = \"score_clicked\",\n}\n","import { type Score } from \"./types\";\n\nexport const sectionScores = {\n transport: [\n \"pedestrian_friendly\",\n \"car_friendly\",\n \"transit_friendly\",\n \"cycling_friendly\",\n ] as Score[],\n services: [\"groceries\", \"shopping\", \"restaurants\", \"cafes\"] as Score[],\n character: [\"quiet\", \"parks\", \"vibrant\", \"nightlife\"] as Score[],\n};\n\nexport const includeScores = [\n ...sectionScores.transport,\n ...sectionScores.services,\n ...sectionScores.character,\n];\n","import { type Profiles, type Scores } from \"@local-logic/client\";\nimport React, { useContext, useMemo } from \"react\";\nimport {\n type NeighborhoodCharacteristicsProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { includeScores } from \"./constants\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\nimport { useScores } from \"~/features/clientLibrary/useScores\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n title: NeighborhoodCharacteristicsProps[\"options\"][\"title\"];\n profilesData?: Profiles;\n scores?: Scores[\"location\"];\n locale: \"en\" | \"fr\";\n hideAttribution?: boolean;\n};\n\nconst NeighborhoodCharacteristicsContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useNeighborhoodCharacteristics = () =>\n useContext(NeighborhoodCharacteristicsContext);\n\nconst NeighborhoodCharacteristicsProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const tracking = useTracking();\n const { sdkState } =\n useStateManagerContext<NeighborhoodCharacteristicsProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\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 location: {\n lat:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lat\n : undefined,\n lng:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lng\n : undefined,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const geographyId = useMemo(() => {\n if (typeof sdkState.options?.geographyId !== \"undefined\") {\n return sdkState.options.geographyId;\n }\n\n return Object.keys(geographyData || {})[0];\n }, [sdkState.options?.geographyId, geographyData]);\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: geographyId,\n externalId: sdkState.globalOptions?.externalId,\n });\n const { data: scoresData, isFetching: isScoresFetching } = useScores({\n geographyId,\n location: {},\n include: includeScores,\n });\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching || isScoresFetching,\n [isGeographyLoading, isProfilesFetching, isScoresFetching],\n );\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n title: sdkState.options?.title,\n profilesData,\n scores: scoresData?.geographies[0]?.scores,\n locale,\n hideAttribution: sdkState.options?.hideAttribution,\n }),\n [\n isLoading,\n sdkState.options?.title,\n profilesData,\n scoresData,\n locale,\n sdkState.options?.hideAttribution,\n ],\n );\n\n return (\n <NeighborhoodCharacteristicsContext.Provider value={contextValue}>\n {children}\n </NeighborhoodCharacteristicsContext.Provider>\n );\n};\n\nexport { useNeighborhoodCharacteristics, NeighborhoodCharacteristicsProvider };\n","import React, { useState, useEffect } from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\nimport { useTranslation } from \"react-i18next\";\nimport * as ScoreSection from \"../ScoreSection\";\nimport * as styles from \"./styles\";\nimport { useResponsiveBreakpoints } from \"~/hooks/useResponsiveBreakpoints\";\nimport { useTracking } from \"~/tracking\";\nimport { useNeighborhoodCharacteristics } from \"~/sdks/NeighborhoodCharacteristics/context\";\n\nimport { TitleHeader } from \"~/components/TitleHeader\";\nimport { Attribution } from \"~/components/Attribution\";\nimport * as ScoreCardList from \"~/components/ScoreCardList\";\n\nimport {\n type Section,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodCharacteristics/types\";\n\nimport { sectionScores } from \"~/sdks/NeighborhoodCharacteristics/constants\";\n\ntype ScoreSectionType = {\n title: string;\n description: string;\n scores: ScoreCardList.CardProps[];\n};\n\nexport function Content() {\n const { t } = useTranslation([\"neighborhoodCharacteristics\", \"common\"]);\n const { lg: isDesktop } = useResponsiveBreakpoints();\n const tracking = useTracking();\n\n const { title, profilesData, scores, isLoading, locale, hideAttribution } =\n useNeighborhoodCharacteristics();\n\n const [scoreGroups, setScoreGroups] = useState<{\n [key in Section]: ScoreSectionType;\n }>({\n transport: {\n title: t(\"sections.transport.title\"),\n description: \"\",\n scores: [],\n },\n services: {\n title: t(\"sections.services.title\"),\n description: \"\",\n scores: [],\n },\n character: {\n title: t(\"sections.character.title\"),\n description: \"\",\n scores: [],\n },\n });\n\n useEffect(() => {\n const newScoreGroups = { ...scoreGroups };\n\n if (scores) {\n Object.keys(newScoreGroups).forEach((sectionKey) => {\n newScoreGroups[sectionKey as Section].description =\n profilesData?.profiles[sectionKey as Section] || \"\";\n\n newScoreGroups[sectionKey as Section].scores = sectionScores[\n sectionKey as Section\n ]\n .map((value) => ({\n title: t(`common:scores.${value}.title`),\n scoreKey: value,\n value: Number(scores[value]?.value),\n description: scores[value]?.text || \"\",\n }))\n .filter((score) => score.value > 0)\n .sort((a, b) => (a.value < b.value ? 1 : -1));\n });\n }\n\n setScoreGroups(newScoreGroups);\n }, [profilesData, scores]);\n\n const handleOnScoreClick =\n (category: string) => (score: string, isActive: boolean) => {\n const scoreState = isActive ? \"enabled\" : \"disabled\";\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SCORE_CLICKED,\n eventAttributes: [\n {\n label: \"category\",\n data: category,\n },\n {\n label: \"score\",\n data: score,\n },\n {\n label: \"state\",\n data: scoreState,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SCORE_CLICKED,\n eventAttributes: {\n ll_category: category,\n ll_score: score,\n ll_score_state: scoreState,\n },\n });\n };\n\n return (\n <>\n <TitleHeader\n title={\n typeof title === \"string\" || title === false ? title : t(\"title\")\n }\n />\n\n <div className={styles.content}>\n {Object.entries(scoreGroups).map(([key, value]) => (\n <ScoreSection.Root\n key={`score-section-1-${key}`}\n className={styles.root}\n isLoading={isLoading}\n data-testid=\"score-section-root-header\"\n >\n <ScoreSection.Title>{value.title}</ScoreSection.Title>\n <ScoreSection.Description>\n {value.description}\n </ScoreSection.Description>\n {!isDesktop && (\n <div className={styles.mobileView}>\n <ScoreCardList.Root>\n {value.scores.map((score) => (\n <ScoreCardList.Card\n key={`score-section-mobile-${key}-${score.scoreKey}`}\n title={score.title}\n scoreKey={score.scoreKey}\n value={score.value}\n description={score.description}\n onClick={handleOnScoreClick(key)}\n />\n ))}\n </ScoreCardList.Root>\n </div>\n )}\n </ScoreSection.Root>\n ))}\n </div>\n\n {isDesktop && (\n <div className={twMerge(styles.content, styles.desktopView)}>\n {Object.entries(scoreGroups).map(([key, value]) => (\n <ScoreSection.Root\n key={`score-section-2-${key}`}\n isLoading={isLoading}\n data-testid=\"score-section-root-desktop\"\n >\n <ScoreCardList.Root>\n {value.scores.map((score) => (\n <ScoreCardList.Card\n key={`score-section-desktop-${key}-${score.scoreKey}`}\n title={score.title}\n scoreKey={score.scoreKey}\n value={score.value}\n description={score.description}\n onClick={handleOnScoreClick(key)}\n />\n ))}\n </ScoreCardList.Root>\n </ScoreSection.Root>\n ))}\n </div>\n )}\n\n <Attribution\n sdkName=\"neighborhood-characteristics\"\n locale={locale}\n isHidden={hideAttribution}\n />\n </>\n );\n}\n","import { number, object, ObjectSchema, string, mixed, boolean } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n title: mixed<string | boolean>().optional(),\n hideAttribution: boolean().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport { Content } from \"./components/Content\";\nimport { NeighborhoodCharacteristicsProvider } from \"./context\";\nimport { schema } from \"./schema\";\nimport { NeighborhoodCharacteristicsProps } from \"./types\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport 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 NeighborhoodCharacteristics = () => {\n const { sdkState } =\n useStateManagerContext<NeighborhoodCharacteristicsProps>();\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 Characteristics\"\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_CHARACTERISTICS}\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_CHARACTERISTICS,\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 <NeighborhoodCharacteristicsProvider>\n <Content />\n </NeighborhoodCharacteristicsProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodCharacteristics;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NeighborhoodCharacteristics-legacy-qOhWab8U.js","names":[],"sources":["../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/context.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Title/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Title/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Description/styles.ts","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/Description/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/ScoreSection/Root/index.tsx","../../src/sdks/NeighborhoodCharacteristics/components/Content/styles.ts","../../src/sdks/NeighborhoodCharacteristics/types.ts","../../src/sdks/NeighborhoodCharacteristics/constants.ts","../../src/sdks/NeighborhoodCharacteristics/context.tsx","../../src/sdks/NeighborhoodCharacteristics/components/Content/index.tsx","../../src/sdks/NeighborhoodCharacteristics/schema.ts","../../src/sdks/NeighborhoodCharacteristics/index.tsx"],"sourcesContent":["export const wrapper = `group/score-section text-gray-400`;\n","import React, { useContext } from \"react\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n children?: React.ReactNode;\n};\n\nconst RootElementContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useRootElement = () => useContext(RootElementContext);\n\nconst RootElementContextProvider = ({\n isLoading,\n children,\n}: DefaultContext) => {\n return (\n <RootElementContext.Provider\n value={{\n isLoading,\n }}\n >\n {children}\n </RootElementContext.Provider>\n );\n};\n\nexport { useRootElement, RootElementContextProvider };\n","export const title = `\n font-bold leading-6 mb-2\n`;\n","import React from \"react\";\n\nimport * as styles from \"./styles\";\n\nexport const Title = ({ children }: { children: React.ReactNode }) => (\n <h3 data-testid=\"title\" className={styles.title}>\n {children}\n </h3>\n);\n","export const description = `\n text-sm leading-5 mb-6\n \n data-[empty=true]:p-5\n data-[empty=true]:rounded\n data-[empty=true]:bg-gray-100\n \n group-data-[is-loading=true]/score-section:h-32\n group-data-[is-loading=true]/score-section:bg-gray-200\n group-data-[is-loading=true]/score-section:animate-pulse\n`;\n","import React, { useMemo } from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { useRootElement } from \"../context\";\n\nimport * as styles from \"./styles\";\n\nexport const Description = ({ children }: { children?: string }) => {\n const { t } = useTranslation(\"neighborhoodCharacteristics\");\n const { isLoading } = useRootElement();\n\n const description = useMemo(() => children || t(\"noData\"), [children]);\n\n return (\n <p\n data-testid=\"description\"\n className={styles.description}\n data-empty={!children}\n >\n {!isLoading && description}\n </p>\n );\n};\n","import React from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\n\nimport * as styles from \"./styles\";\nimport { RootElementContextProvider } from \"./context\";\n\nexport const Root = ({\n isLoading = false,\n className,\n children,\n ...rest\n}: {\n isLoading?: boolean;\n className?: string;\n children: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>) => (\n <RootElementContextProvider isLoading={isLoading}>\n <div\n data-testid=\"score-section-root\"\n className={twMerge(styles.wrapper, className)}\n data-is-loading={isLoading}\n {...rest}\n >\n {children}\n </div>\n </RootElementContextProvider>\n);\n\n// Export children\nexport { Title } from \"./Title\";\nexport { Description } from \"./Description\";\n","export const content = `grid gap-x-6 lg:grid-flow-col auto-cols-fr mb-8`;\n\nexport const root = `mb-9 lg:mb-0`;\nexport const mobileView = `lg:hidden`;\nexport const desktopView = `hidden lg:grid`;\n","import { SDKOptions } from \"~/types/options\";\n\nexport type Section = \"transport\" | \"services\" | \"character\";\n\nexport type Score =\n | \"pedestrian_friendly\"\n | \"car_friendly\"\n | \"transit_friendly\"\n | \"cycling_friendly\"\n | \"groceries\"\n | \"shopping\"\n | \"restaurants\"\n | \"cafes\"\n | \"quiet\"\n | \"parks\"\n | \"vibrant\"\n | \"nightlife\";\n\nexport type Options = {\n lat?: number;\n lng?: number;\n geographyId?: string;\n title?: boolean | string;\n hideAttribution?: boolean;\n};\n\nexport type NeighborhoodCharacteristicsProps = SDKOptions<\n Options,\n {\n options: Options | undefined;\n }\n>;\n\nexport enum TrackingPipelineEvents {\n SDK_VIEWED = \"neighborhood-characteristics-Viewed\",\n SCORE_CLICKED = \"neighborhood-characteristics-Score-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 SCORE_CLICKED = \"score_clicked\",\n}\n","import { type Score } from \"./types\";\n\nexport const sectionScores = {\n transport: [\n \"pedestrian_friendly\",\n \"car_friendly\",\n \"transit_friendly\",\n \"cycling_friendly\",\n ] as Score[],\n services: [\"groceries\", \"shopping\", \"restaurants\", \"cafes\"] as Score[],\n character: [\"quiet\", \"parks\", \"vibrant\", \"nightlife\"] as Score[],\n};\n\nexport const includeScores = [\n ...sectionScores.transport,\n ...sectionScores.services,\n ...sectionScores.character,\n];\n","import { type Profiles, type Scores } from \"@local-logic/client\";\nimport React, { useContext, useMemo } from \"react\";\nimport {\n type NeighborhoodCharacteristicsProps,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"./types\";\nimport { includeScores } from \"./constants\";\nimport { useTracking } from \"~/tracking\";\n\nimport useEffectOnce from \"~/hooks/useEffectOnce\";\nimport { useStateManagerContext } from \"~/context/stateManager\";\nimport { useGeographies } from \"~/features/clientLibrary/useGeographies\";\nimport { useProfiles } from \"~/features/clientLibrary/useProfiles\";\nimport { useScores } from \"~/features/clientLibrary/useScores\";\n\nexport type DefaultContext = {\n isLoading: boolean;\n title: NeighborhoodCharacteristicsProps[\"options\"][\"title\"];\n profilesData?: Profiles;\n scores?: Scores[\"location\"];\n locale: \"en\" | \"fr\";\n hideAttribution?: boolean;\n};\n\nconst NeighborhoodCharacteristicsContext = React.createContext<DefaultContext>(\n {} as DefaultContext,\n);\nconst useNeighborhoodCharacteristics = () =>\n useContext(NeighborhoodCharacteristicsContext);\n\nconst NeighborhoodCharacteristicsProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const tracking = useTracking();\n const { sdkState } =\n useStateManagerContext<NeighborhoodCharacteristicsProps>();\n const locale = sdkState.globalOptions?.locale || \"en\";\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 location: {\n lat:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lat\n : undefined,\n lng:\n typeof sdkState.options?.geographyId === \"undefined\"\n ? sdkState.options?.lng\n : undefined,\n },\n externalId: sdkState?.globalOptions?.externalId,\n },\n );\n\n const geographyId = useMemo(() => {\n if (typeof sdkState.options?.geographyId !== \"undefined\") {\n return sdkState.options.geographyId;\n }\n\n return Object.keys(geographyData || {})[0];\n }, [sdkState.options?.geographyId, geographyData]);\n\n const { data: profilesData, isFetching: isProfilesFetching } = useProfiles({\n geogID: geographyId,\n externalId: sdkState.globalOptions?.externalId,\n });\n const { data: scoresData, isFetching: isScoresFetching } = useScores({\n geographyId,\n location: {},\n include: includeScores,\n });\n\n const isLoading = useMemo(\n () => isGeographyLoading || isProfilesFetching || isScoresFetching,\n [isGeographyLoading, isProfilesFetching, isScoresFetching],\n );\n\n const contextValue = useMemo(\n () => ({\n isLoading,\n title: sdkState.options?.title,\n profilesData,\n scores: scoresData?.geographies[0]?.scores,\n locale,\n hideAttribution: sdkState.options?.hideAttribution,\n }),\n [\n isLoading,\n sdkState.options?.title,\n profilesData,\n scoresData,\n locale,\n sdkState.options?.hideAttribution,\n ],\n );\n\n return (\n <NeighborhoodCharacteristicsContext.Provider value={contextValue}>\n {children}\n </NeighborhoodCharacteristicsContext.Provider>\n );\n};\n\nexport { useNeighborhoodCharacteristics, NeighborhoodCharacteristicsProvider };\n","import React, { useState, useEffect } from \"react\";\n\nimport { twMerge } from \"tailwind-merge\";\nimport { useTranslation } from \"react-i18next\";\nimport * as ScoreSection from \"../ScoreSection\";\nimport * as styles from \"./styles\";\nimport { useResponsiveBreakpoints } from \"~/hooks/useResponsiveBreakpoints\";\nimport { useTracking } from \"~/tracking\";\nimport { useNeighborhoodCharacteristics } from \"~/sdks/NeighborhoodCharacteristics/context\";\n\nimport { TitleHeader } from \"~/components/TitleHeader\";\nimport { Attribution } from \"~/components/Attribution\";\nimport * as ScoreCardList from \"~/components/ScoreCardList\";\n\nimport {\n type Section,\n TrackingPipelineEvents,\n AnalyticsEvents,\n} from \"~/sdks/NeighborhoodCharacteristics/types\";\n\nimport { sectionScores } from \"~/sdks/NeighborhoodCharacteristics/constants\";\n\ntype ScoreSectionType = {\n title: string;\n description: string;\n scores: ScoreCardList.CardProps[];\n};\n\nexport function Content() {\n const { t } = useTranslation([\"neighborhoodCharacteristics\", \"common\"]);\n const { lg: isDesktop } = useResponsiveBreakpoints();\n const tracking = useTracking();\n\n const { title, profilesData, scores, isLoading, locale, hideAttribution } =\n useNeighborhoodCharacteristics();\n\n const [scoreGroups, setScoreGroups] = useState<{\n [key in Section]: ScoreSectionType;\n }>({\n transport: {\n title: t(\"sections.transport.title\"),\n description: \"\",\n scores: [],\n },\n services: {\n title: t(\"sections.services.title\"),\n description: \"\",\n scores: [],\n },\n character: {\n title: t(\"sections.character.title\"),\n description: \"\",\n scores: [],\n },\n });\n\n useEffect(() => {\n const newScoreGroups = { ...scoreGroups };\n\n if (scores) {\n Object.keys(newScoreGroups).forEach((sectionKey) => {\n newScoreGroups[sectionKey as Section].description =\n profilesData?.profiles[sectionKey as Section] || \"\";\n\n newScoreGroups[sectionKey as Section].scores = sectionScores[\n sectionKey as Section\n ]\n .map((value) => ({\n title: t(`common:scores.${value}.title`),\n scoreKey: value,\n value: Number(scores[value]?.value),\n description: scores[value]?.text || \"\",\n }))\n .filter((score) => score.value > 0)\n .sort((a, b) => (a.value < b.value ? 1 : -1));\n });\n }\n\n setScoreGroups(newScoreGroups);\n }, [profilesData, scores]);\n\n const handleOnScoreClick =\n (category: string) => (score: string, isActive: boolean) => {\n const scoreState = isActive ? \"enabled\" : \"disabled\";\n\n tracking.postEvent({\n eventType: TrackingPipelineEvents.SCORE_CLICKED,\n eventAttributes: [\n {\n label: \"category\",\n data: category,\n },\n {\n label: \"score\",\n data: score,\n },\n {\n label: \"state\",\n data: scoreState,\n },\n ],\n });\n\n tracking.trackAnalyticsEvent({\n eventName: AnalyticsEvents.SCORE_CLICKED,\n eventAttributes: {\n ll_category: category,\n ll_score: score,\n ll_score_state: scoreState,\n },\n });\n };\n\n return (\n <>\n <TitleHeader\n title={\n typeof title === \"string\" || title === false ? title : t(\"title\")\n }\n />\n\n <div className={styles.content}>\n {Object.entries(scoreGroups).map(([key, value]) => (\n <ScoreSection.Root\n key={`score-section-1-${key}`}\n className={styles.root}\n isLoading={isLoading}\n data-testid=\"score-section-root-header\"\n >\n <ScoreSection.Title>{value.title}</ScoreSection.Title>\n <ScoreSection.Description>\n {value.description}\n </ScoreSection.Description>\n {!isDesktop && (\n <div className={styles.mobileView}>\n <ScoreCardList.Root>\n {value.scores.map((score) => (\n <ScoreCardList.Card\n key={`score-section-mobile-${key}-${score.scoreKey}`}\n title={score.title}\n scoreKey={score.scoreKey}\n value={score.value}\n description={score.description}\n onClick={handleOnScoreClick(key)}\n />\n ))}\n </ScoreCardList.Root>\n </div>\n )}\n </ScoreSection.Root>\n ))}\n </div>\n\n {isDesktop && (\n <div className={twMerge(styles.content, styles.desktopView)}>\n {Object.entries(scoreGroups).map(([key, value]) => (\n <ScoreSection.Root\n key={`score-section-2-${key}`}\n isLoading={isLoading}\n data-testid=\"score-section-root-desktop\"\n >\n <ScoreCardList.Root>\n {value.scores.map((score) => (\n <ScoreCardList.Card\n key={`score-section-desktop-${key}-${score.scoreKey}`}\n title={score.title}\n scoreKey={score.scoreKey}\n value={score.value}\n description={score.description}\n onClick={handleOnScoreClick(key)}\n />\n ))}\n </ScoreCardList.Root>\n </ScoreSection.Root>\n ))}\n </div>\n )}\n\n <Attribution\n sdkName=\"neighborhood-characteristics\"\n locale={locale}\n isHidden={hideAttribution}\n />\n </>\n );\n}\n","import { number, object, ObjectSchema, string, mixed, boolean } from \"yup\";\nimport { Options } from \"./types\";\n\nexport const schema: ObjectSchema<Options> = object({\n lat: number()\n .min(-90, \"Must be a valid latitude.\")\n .max(90, \"Must be a valid latitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n lng: number()\n .min(-180, \"Must be a valid longitude.\")\n .max(180, \"Must be a valid longitude.\")\n .when(\"geographyId\", {\n is: (geographyId?: string) => typeof geographyId === \"string\",\n then: (fieldSchema) => fieldSchema.optional(),\n otherwise: (fieldSchema) => fieldSchema.required(),\n }),\n geographyId: string().optional(),\n title: mixed<string | boolean>().optional(),\n hideAttribution: boolean().optional(),\n}).noUnknown(true);\n","import React, { useMemo } from \"react\";\nimport { Content } from \"./components/Content\";\nimport { NeighborhoodCharacteristicsProvider } from \"./context\";\nimport { schema } from \"./schema\";\nimport { NeighborhoodCharacteristicsProps } from \"./types\";\nimport { TrackingProvider, initializeAnalytics } from \"~/tracking\";\n\n// TODO Move this import to sdks/sdks-app/src/App.tsx once all SDKs are migrated\nimport \"~/assets/styles/globals.css\";\n\nimport 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 NeighborhoodCharacteristics = () => {\n const { sdkState } =\n useStateManagerContext<NeighborhoodCharacteristicsProps>();\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 Characteristics\"\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_CHARACTERISTICS}\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_CHARACTERISTICS,\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 <NeighborhoodCharacteristicsProvider>\n <Content />\n </NeighborhoodCharacteristicsProvider>\n </TrackingProvider>\n </LocalLogicProvider>\n </ValidateOptions>\n </ResizeWrapper>\n );\n};\n\nexport default NeighborhoodCharacteristics;\n"],"mappings":"qvDW4BA,SAAgB,IACd,MAAM,EAAE,GAAM,EAAe,CAAC,8BAA+B,YACrD,GAAI,GAAc,IACpB,EAAW,KAEX,MAAE,EAAA,aAAO,EAAA,OAAc,EAAA,UAAQ,EAAA,OAAW,EAAA,gBAAQ,GACtD,KAEK,EAAa,IAAA,EAAkB,EAAA,UAEnC,CACD,UAAW,CACT,MAAO,EAAE,4BACT,YAAa,GACb,OAAQ,IAEV,SAAU,CACR,MAAO,EAAE,2BACT,YAAa,GACb,OAAQ,IAEV,UAAW,CACT,MAAO,EAAE,4BACT,YAAa,GACb,OAAQ,OAIZ,EAAA,EAAA,WAAA,KACE,MAAM,EAAA,EAAA,CAAA,EAAsB,GAExB,GACF,OAAO,KAAK,GAAgB,QAAS,IACnC,EAAe,GAAuB,aACpC,aAAA,EAAA,EAAc,SAAS,KAA0B,GAEnD,EAAe,GAAuB,OAAS,EAC7C,GAEC,IAAK,IAAA,IAAA,EAAA,EAAA,MAAW,CACf,MAAO,EAAE,iBAAiB,WAC1B,SAAU,EACV,MAAO,OAAoB,QAApB,EAAO,EAAO,UAAM,IAAA,OAAA,EAAb,EAAe,OAC7B,aAA0B,QAAb,EAAA,EAAO,UAAM,IAAA,OAAA,EAAb,EAAe,OAAQ,MAErC,OAAQ,GAAU,EAAM,MAAQ,GAChC,KAAA,CAAM,EAAG,IAAO,EAAE,MAAQ,EAAE,MAAQ,GAAI,KAI/C,EAAe,IACd,CAAC,EAAc,IAElB,MAAM,EACH,GAAA,CAAsB,EAAe,KACpC,MAAM,EAAa,EAAW,UAAY,WAE1C,EAAS,UAAU,CACjB,UAAW,EAAuB,cAClC,gBAAiB,CACf,CACE,MAAO,WACP,KAAM,GAER,CACE,MAAO,QACP,KAAM,GAER,CACE,MAAO,QACP,KAAM,MAKZ,EAAS,oBAAoB,CAC3B,UAAW,EAAgB,cAC3B,gBAAiB,CACf,YAAa,EACb,SAAU,EACV,eAAgB,MAKxB,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAD,CACE,MACmB,iBAAV,IAAgC,IAAV,EAAkB,EAAQ,EAAE,YAI7D,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EACb,SAAA,OAAO,QAAQ,GAAa,IAAA,EAAM,EAAK,MACtC,EAAA,EAAA,MAAC,EAAD,CAEE,UAAW,EACA,YACX,cAAY,4BAJd,SAAA,EAME,EAAA,EAAA,KAAC,EAAD,CAAA,SAAqB,EAAM,SAC3B,EAAA,EAAA,KAAC,EAAD,CAAA,SACG,EAAM,eAEP,IACA,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EACd,UAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SACG,EAAM,OAAO,IAAK,IACjB,EAAA,EAAA,KAAC,EAAD,CAEE,MAAO,EAAM,MACb,SAAU,EAAM,SAChB,MAAO,EAAM,MACb,YAAa,EAAM,YACnB,QAAS,EAAmB,IALvB,wBAAwB,KAAO,EAAM,mBAd/C,mBAAmB,QA6B7B,IACC,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAQ,EAAgB,GACrC,SAAA,OAAO,QAAQ,GAAa,IAAA,EAAM,EAAK,MACtC,EAAA,EAAA,KAAC,EAAD,CAEa,YACX,cAAY,6BAEZ,UAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SACG,EAAM,OAAO,IAAK,IACjB,EAAA,EAAA,KAAC,EAAD,CAEE,MAAO,EAAM,MACb,SAAU,EAAM,SAChB,MAAO,EAAM,MACb,YAAa,EAAM,YACnB,QAAS,EAAmB,IALvB,yBAAyB,KAAO,EAAM,gBAP5C,mBAAmB,SAqBhC,EAAA,EAAA,KAAC,EAAD,CACE,QAAQ,+BACA,SACR,SAAU,MAIlB,qbVlLM,EAAA,EAA2B,cAC/B,CAAC,GAEG,EAAA,KAAA,EAAuB,EAAA,YAAW,GAElC,EAAA,EACJ,YACA,eAGE,EAAA,EAAA,KAAC,EAAmB,SAApB,CACE,MAAO,CACL,aAGD,aElBM,EAAA,EAAW,eACtB,EAAA,EAAA,KAAC,KAAD,CAAI,cAAY,QAAQ,UDLL,iCCMhB,aECQ,EAAA,EAAiB,eAC5B,MAAM,EAAE,GAAM,EAAe,gCACvB,UAAE,GAAc,IAEhB,GAAA,EAAc,EAAA,SAAA,IAAc,GAAY,EAAE,UAAW,CAAC,IAE5D,OACE,EAAA,EAAA,KAAC,IAAD,CACE,cAAY,cACZ,UDhBqB,uSCiBrB,cAAa,EAEZ,UAAC,GAAa,KCZR,EAAA,IAAA,IAAQ,UACnB,GAAY,EAAA,UACZ,EAAA,SACA,GACG,EAAA,+WAAA,CAAA,EAAA,GAAA,OAMH,EAAA,EAAA,KAAC,EAAD,CAAuC,YACrC,UAAA,EAAA,EAAA,KAAC,MAAA,EAAA,EAAA,CACC,cAAY,qBACZ,UAAW,ENpBM,oCMoBkB,GACnC,kBAAiB,GACb,GAAA,CAAA,EAAA,CAEH,iBCxBM,EAAU,kDAEV,EAAO,eACP,EAAa,YACb,EAAc,iBC6Bf,EAAL,SAAA,UACL,EAAA,WAAA,sCACA,EAAA,cAAA,8CACF,CAHO,CAGP,CAAA,GAIY,EAAL,SAAA,UACL,EAAA,WAAA,aACA,EAAA,cAAA,iBACF,CAHO,CAGP,CAAA,GC9Ba,EAAgB,KAXhB,EAAgB,CAC3B,UAAW,CACT,sBACA,eACA,mBACA,oBAEF,SAAU,CAAC,YAAa,WAAY,cAAe,SACnD,UAAW,CAAC,QAAS,QAAS,UAAW,eAIxB,aACd,EAAc,YACd,EAAc,WCSb,EAAA,EAA2C,cAC/C,CAAC,GAEG,EAAA,KAAA,EACJ,EAAA,YAAW,GAEP,EAAA,EACJ,eAGI,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACJ,MAAM,EAAW,KACX,SAAE,GACN,IACI,GAAkB,QAAT,EAAA,EAAS,qBAAA,IAAA,OAAA,EAAT,EAAwB,SAAU,KAEjD,EAAA,KACE,EAAS,UAAU,CACjB,UAAW,EAAuB,aAGpC,EAAS,oBAAoB,CAC3B,UAAW,EAAgB,eAI/B,MAAQ,UAAW,EAAoB,KAAM,GAAkB,EAC7D,CACE,SAAU,CACR,SAC2C,KAAzB,QAAhB,EAAO,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,aACZ,QAD4B,EACrC,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,SAClB,EACN,SAC2C,KAAzB,QAAhB,EAAO,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,aACZ,QAD4B,EACrC,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,SAClB,GAER,WAAY,SAAU,QAAV,EAAA,EAAU,qBAAA,IAAA,OAAA,EAAV,EAAyB,aAInC,GAAA,EAAc,EAAA,SAAA,KAAc,IAAA,EAChC,YAA6C,KAAzB,QAAhB,EAAO,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,aACpB,EAAS,QAAQ,YAGnB,OAAO,KAAK,GAAiB,CAAC,GAAG,IACvC,CAAU,QAAV,EAAC,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,YAAa,KAE3B,KAAM,EAAc,WAAY,GAAuB,EAAY,CACzE,OAAQ,EACR,WAAqB,QAArB,EAAY,EAAS,qBAAA,IAAA,OAAA,EAAT,EAAwB,cAE9B,KAAM,EAAY,WAAY,GAAqB,EAAU,CACnE,cACA,SAAU,CAAC,EACX,QAAS,IAGL,GAAA,EAAY,EAAA,SAAA,IACV,GAAsB,GAAsB,EAClD,CAAC,EAAoB,EAAoB,IAGrC,GAAA,EAAe,EAAA,SAAA,KAAA,IAAA,EAAA,EAAA,EAAA,MACZ,CACL,YACA,MAAgB,QAAhB,EAAO,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,MACzB,eACA,OAAQ,SAA0B,QAA1B,EAAA,EAAY,YAAY,UAAE,IAAA,OAAA,EAA1B,EAA4B,OACpC,SACA,gBAA0B,QAA1B,EAAiB,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,kBAErC,CACE,EACS,QADT,EACA,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,MAClB,EACA,EACA,EACS,QADT,EACA,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,kBAItB,OACE,EAAA,EAAA,KAAC,EAAmC,SAApC,CAA6C,MAAO,EACjD,cE5GM,EAAgC,EAAO,CAClD,IAAK,IACF,KAAI,GAAK,6BACT,IAAI,GAAI,6BACR,KAAK,cAAe,CACnB,GAAK,GAAgD,iBAAhB,EACrC,KAAO,GAAgB,EAAY,WACnC,UAAY,GAAgB,EAAY,aAE5C,IAAK,IACF,KAAI,IAAM,8BACV,IAAI,IAAK,8BACT,KAAK,cAAe,CACnB,GAAK,GAAgD,iBAAhB,EACrC,KAAO,GAAgB,EAAY,WACnC,UAAY,GAAgB,EAAY,aAE5C,YAAa,IAAS,WACtB,MAAO,IAA0B,WACjC,gBAAiB,IAAU,aAC1B,WAAU,GCLb,EAAoB,EAAmB,iBAAiB,KAAG,EAAA,UAErD,KAAoC,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACxC,MAAM,SAAE,GACN,IACI,EAAW,IACX,GAAkB,QAAT,EAAA,EAAS,qBAAA,IAAA,OAAA,EAAT,EAAwB,SAAU,KAE3C,GAAA,EAAW,EAAA,SAAA,KAAc,IAAA,EAAA,EAAA,EAAA,EAC7B,OAAa,QAAb,EAAI,EAAS,eAAA,IAAA,GAAT,EAAkB,YACb,CACL,YAAsB,QAAtB,EAAa,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,aAI5B,CACL,IAAc,QAAd,EAAK,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,IACvB,IAAc,QAAd,EAAK,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,MAExB,CACQ,QADR,EACD,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,IACT,QADS,EAClB,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,IACT,QADS,EAClB,EAAS,eAAA,IAAA,OAAA,EAAT,EAAkB,cAGpB,OACE,EAAA,EAAA,KAAC,EAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CACE,IAAI,+BACI,SACR,QAAS,EAAS,QAElB,UAAA,EAAA,EAAA,KAAC,EAAD,CACE,YAAsB,QAAtB,EAAa,EAAS,qBAAA,IAAA,GAAe,QAAf,EAAT,EAAwB,mBAAA,IAAA,OAAA,EAAxB,EAAqC,IAClD,OAAQ,EAAS,OACjB,WAAqB,QAArB,EAAY,EAAS,qBAAA,IAAA,OAAA,EAAT,EAAwB,WACpC,OAAiB,QAAjB,EAAQ,EAAS,qBAAA,IAAA,OAAA,EAAT,EAAwB,OAChC,QAAS,EAAa,6BAEtB,UAAA,EAAA,EAAA,KAAC,EAAD,CACE,yBAA0B,CACxB,OAAQ,EAAS,QAAU,IAE7B,kBAAmB,EAAmB,iBACtC,KAAM,CACJ,SAAU,EAAS,SACnB,YAAa,EAAa,6BAC1B,eAAA,UAEF,WAAY,CACV,WACA,KAAM,EAAS,SACf,SAAU,SAAS,SACnB,SACA,YAEF,MAAO,CACL,aACE,GAGJ,UAAA,EAAA,EAAA,KAAC,EAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CAAU"}
@@ -1,2 +1,2 @@
1
- import{a as e}from"./rolldown-runtime-BEU_UCik.js";import{l as a}from"./google-maps-vendor-BeDgURNz.js";import{a as t,c as l,d as s,f as i,g as o,m as r,n,o as c,p as d,r as m,t as u,u as p}from"./sdks-CylBh5qd.js";import{t as h}from"./Car.es-3WnvWljX.js";import{t as g}from"./CaretDown.es-DPspOb5f.js";import{t as v}from"./GraduationCap.es-CEu4hWGC.js";import{a as b,i as x,n as j,r as f,t as y}from"./useDemographicsData-DdwPh1al.js";import{t as M}from"./UsersThree.es-DNdVLGYi.js";import{t as H}from"./IconBase.es-kve0MeDL.js";import{H as N,W as E,Y as A,d as _,f as D,i as V,n as Z,u as w}from"./index-DxqnJfnT.js";import{t as I}from"./useGeographies-CYqI3icF.js";import{t as C}from"./useLocation-yHkA-hA5.js";import{t as F}from"./useResponsiveBreakpoints-DjnptSN9.js";import{n as k}from"./Attribution-WqAVcFf4.js";import{t as O}from"./ResizeWrapper-CoWkpS6t.js";import{t as $}from"./ValidateOptions-C00hJqCN.js";import{t as T}from"./useIsMobile-Bz4RXQtS.js";/* empty css */import{i as z,n as R,r as K,t as L}from"./dist-BhLmWB7-.js";import{t as S}from"./TitleHeader-BlWv-Vn5.js";import{n as G}from"./NoDataContent-scqbLzmG.js";var W=e(a(),1),B=new Map([["bold",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,44H48A28,28,0,0,0,20,72V184a28,28,0,0,0,28,28H208a28,28,0,0,0,28-28V72A28,28,0,0,0,208,44ZM48,68H208a4,4,0,0,1,4,4V88H160a12,12,0,0,0-12,12,20,20,0,0,1-40,0A12,12,0,0,0,96,88H44V72A4,4,0,0,1,48,68ZM208,188H48a4,4,0,0,1-4-4V112H85.66a44,44,0,0,0,84.68,0H212v72A4,4,0,0,1,208,188Z"}))],["duotone",W.createElement(W.Fragment,null,W.createElement("path",{d:"M224,72v48H160a32,32,0,0,1-64,0H32V72A16,16,0,0,1,48,56H208A16,16,0,0,1,224,72Z",opacity:"0.2"}),W.createElement("path",{d:"M208,48H48A24,24,0,0,0,24,72V184a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V72A24,24,0,0,0,208,48ZM40,96H216v16H160a8,8,0,0,0-8,8,24,24,0,0,1-48,0,8,8,0,0,0-8-8H40Zm8-32H208a8,8,0,0,1,8,8v8H40V72A8,8,0,0,1,48,64ZM208,192H48a8,8,0,0,1-8-8V128H88.8a40,40,0,0,0,78.4,0H216v56A8,8,0,0,1,208,192Z"}))],["fill",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,48H48A24,24,0,0,0,24,72V184a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V72A24,24,0,0,0,208,48Zm-56,72a24,24,0,0,1-48,0,8,8,0,0,0-8-8H40V96H216v16H160A8,8,0,0,0,152,120ZM48,64H208a8,8,0,0,1,8,8v8H40V72A8,8,0,0,1,48,64Z"}))],["light",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,50H48A22,22,0,0,0,26,72V184a22,22,0,0,0,22,22H208a22,22,0,0,0,22-22V72A22,22,0,0,0,208,50ZM38,94H218v20H160a6,6,0,0,0-6,6,26,26,0,0,1-52,0,6,6,0,0,0-6-6H38ZM48,62H208a10,10,0,0,1,10,10V82H38V72A10,10,0,0,1,48,62ZM208,194H48a10,10,0,0,1-10-10V126H90.47a38,38,0,0,0,75.06,0H218v58A10,10,0,0,1,208,194Z"}))],["regular",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,48H48A24,24,0,0,0,24,72V184a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V72A24,24,0,0,0,208,48ZM40,96H216v16H160a8,8,0,0,0-8,8,24,24,0,0,1-48,0,8,8,0,0,0-8-8H40Zm8-32H208a8,8,0,0,1,8,8v8H40V72A8,8,0,0,1,48,64ZM208,192H48a8,8,0,0,1-8-8V128H88.8a40,40,0,0,0,78.4,0H216v56A8,8,0,0,1,208,192Z"}))],["thin",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,52H48A20,20,0,0,0,28,72V184a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V72A20,20,0,0,0,208,52ZM36,92H220v24H160a4,4,0,0,0-4,4,28,28,0,0,1-56,0,4,4,0,0,0-4-4H36ZM48,60H208a12,12,0,0,1,12,12V84H36V72A12,12,0,0,1,48,60ZM208,196H48a12,12,0,0,1-12-12V124H92.22a36,36,0,0,0,71.56,0H220v60A12,12,0,0,1,208,196Z"}))]]),P=new Map([["bold",W.createElement(W.Fragment,null,W.createElement("path",{d:"M222.14,105.85l-80-80a20,20,0,0,0-28.28,0l-80,80A19.86,19.86,0,0,0,28,120v96a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V164h24v52a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V120A19.86,19.86,0,0,0,222.14,105.85ZM204,204H164V152a12,12,0,0,0-12-12H104a12,12,0,0,0-12,12v52H52V121.65l76-76,76,76Z"}))],["duotone",W.createElement(W.Fragment,null,W.createElement("path",{d:"M216,120v96H152V152H104v64H40V120a8,8,0,0,1,2.34-5.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,216,120Z",opacity:"0.2"}),W.createElement("path",{d:"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z"}))],["fill",W.createElement(W.Fragment,null,W.createElement("path",{d:"M224,120v96a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V164a4,4,0,0,0-4-4H108a4,4,0,0,0-4,4v52a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a16,16,0,0,1,4.69-11.31l80-80a16,16,0,0,1,22.62,0l80,80A16,16,0,0,1,224,120Z"}))],["light",W.createElement(W.Fragment,null,W.createElement("path",{d:"M217.9,110.1l-80-80a14,14,0,0,0-19.8,0l-80,80A13.92,13.92,0,0,0,34,120v96a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V158h36v58a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V120A13.92,13.92,0,0,0,217.9,110.1ZM210,210H158V152a6,6,0,0,0-6-6H104a6,6,0,0,0-6,6v58H46V120a2,2,0,0,1,.58-1.42l80-80a2,2,0,0,1,2.84,0l80,80A2,2,0,0,1,210,120Z"}))],["regular",W.createElement(W.Fragment,null,W.createElement("path",{d:"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z"}))],["thin",W.createElement(W.Fragment,null,W.createElement("path",{d:"M216.49,111.51l-80-80a12,12,0,0,0-17,0l-80,80A12,12,0,0,0,36,120v96a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V156h40v60a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V120A12,12,0,0,0,216.49,111.51ZM212,212H156V152a4,4,0,0,0-4-4H104a4,4,0,0,0-4,4v60H44V120a4,4,0,0,1,1.17-2.83l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,212,120Z"}))]]),q=new Map([["bold",W.createElement(W.Fragment,null,W.createElement("path",{d:"M234.38,210a123.36,123.36,0,0,0-60.78-53.23,76,76,0,1,0-91.2,0A123.36,123.36,0,0,0,21.62,210a12,12,0,1,0,20.77,12c18.12-31.32,50.12-50,85.61-50s67.49,18.69,85.61,50a12,12,0,0,0,20.77-12ZM76,96a52,52,0,1,1,52,52A52.06,52.06,0,0,1,76,96Z"}))],["duotone",W.createElement(W.Fragment,null,W.createElement("path",{d:"M192,96a64,64,0,1,1-64-64A64,64,0,0,1,192,96Z",opacity:"0.2"}),W.createElement("path",{d:"M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z"}))],["fill",W.createElement(W.Fragment,null,W.createElement("path",{d:"M230.93,220a8,8,0,0,1-6.93,4H32a8,8,0,0,1-6.92-12c15.23-26.33,38.7-45.21,66.09-54.16a72,72,0,1,1,73.66,0c27.39,8.95,50.86,27.83,66.09,54.16A8,8,0,0,1,230.93,220Z"}))],["light",W.createElement(W.Fragment,null,W.createElement("path",{d:"M229.19,213c-15.81-27.32-40.63-46.49-69.47-54.62a70,70,0,1,0-63.44,0C67.44,166.5,42.62,185.67,26.81,213a6,6,0,1,0,10.38,6C56.4,185.81,90.34,166,128,166s71.6,19.81,90.81,53a6,6,0,1,0,10.38-6ZM70,96a58,58,0,1,1,58,58A58.07,58.07,0,0,1,70,96Z"}))],["regular",W.createElement(W.Fragment,null,W.createElement("path",{d:"M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z"}))],["thin",W.createElement(W.Fragment,null,W.createElement("path",{d:"M227.46,214c-16.52-28.56-43-48.06-73.68-55.09a68,68,0,1,0-51.56,0c-30.64,7-57.16,26.53-73.68,55.09a4,4,0,0,0,6.92,4C55,184.19,89.62,164,128,164s73,20.19,92.54,54a4,4,0,0,0,3.46,2,3.93,3.93,0,0,0,2-.54A4,4,0,0,0,227.46,214ZM68,96a60,60,0,1,1,60,60A60.07,60.07,0,0,1,68,96Z"}))]]),Y=W.forwardRef((e,a)=>W.createElement(H,{ref:a,...e,weights:B}));Y.displayName="CardholderIcon";var U=W.forwardRef((e,a)=>W.createElement(H,{ref:a,...e,weights:P}));U.displayName="HouseIcon";var J=W.forwardRef((e,a)=>W.createElement(H,{ref:a,...e,weights:q}));J.displayName="UserIcon";var Q=A(),X=({icon:e})=>(0,Q.jsx)(e,{className:"w-6 h-6"}),ee=({text:e,className:a})=>(0,Q.jsx)("h2",{className:`text-base leading-6 font-medium ${a||""}`,children:e}),ae=({sectionHeaders:e,activeTabIndex:a,onTabChange:t,children:l})=>(0,Q.jsx)("div",{className:"flex flex-col gap-2",children:e.map((e,s)=>(0,Q.jsxs)("div",{className:"px-4 rounded border border-ll-border shadow cursor-pointer group",onClick:()=>t(a===s?-1:s),"data-active":a===s,children:[(0,Q.jsxs)("div",{className:"py-3 flex items-center gap-1.5 group-data-[active=true]:text-ll-primary",children:[(0,Q.jsx)(X,{icon:e.icon}),(0,Q.jsx)(ee,{text:e.title,className:"grow"}),(0,Q.jsx)(g,{className:"w-3.5 h-3.5 text-ll-placeholder data-[is-active=true]:rotate-180 transition-transform duration-50 ease-in-out","data-is-active":a===s})]}),a===s&&(0,Q.jsx)("div",{className:"py-3 border-t border-ll-surface",children:l})]},`section-accordion-${e.title}`))}),te=({sectionHeaders:e,activeTabIndex:a,onTabChange:t,children:l})=>{const s=e[a]?.key;return(0,Q.jsxs)(K,{value:s,onValueChange:a=>{const l=e.findIndex(e=>e.key===a);-1!==l&&t(l)},children:[(0,Q.jsxs)("div",{className:"w-full",children:[(0,Q.jsx)(R,{className:"flex items-center justify-center pb-4","aria-label":"Demographics tabs",children:e.map((e,t)=>(0,Q.jsxs)(z,{value:e.key,className:"w-full flex items-center justify-center py-2.5 gap-2 bg-none border-none data-[active=true]:text-ll-primary cursor-pointer transition-colors","data-active":a===t,children:[(0,Q.jsx)(X,{icon:e.icon}),(0,Q.jsx)("p",{className:"m-0 text-base leading-6 font-medium",children:e.title})]},`section-tab-${e.key}`))}),(0,Q.jsx)("div",{className:"border-b-4 border-ll-surface rounded flex items-center justify-center",children:e.map((e,t)=>(0,Q.jsx)("div",{className:"h-1 bg-ll-primary rounded w-full -mb-1 data-[active=false]:opacity-0 transition-opacity","data-active":a===t},`section-tab-border-${e.key}`))})]}),(0,Q.jsx)(L,{value:s??"",className:"p-6",children:l})]})},le=["income","population","housing","household","education","commute","languages"],se={income:Y,population:J,housing:U,household:f,education:v,commute:h,languages:x},ie=function(e){return e.SDK_VIEWED="neighborhood-demographics-Viewed",e.CATEGORY_CLICKED="neighborhood-demographics-Category-Clicked",e}({}),oe=function(e){return e.SDK_VIEWED="sdk_viewed",e.CATEGORY_CLICKED="category_clicked",e}({}),re=W.createContext({}),ne=()=>(0,W.useContext)(re),ce=({children:e})=>{const{sdkState:a}=Z(),t=c();V(()=>{t.postEvent({eventType:ie.SDK_VIEWED}),t.trackAnalyticsEvent({eventName:oe.SDK_VIEWED})});const{isLoading:l,data:s}=I({location:{lat:void 0===a.options?.geographyId?a.options?.lat:void 0,lng:void 0===a.options?.geographyId?a.options?.lng:void 0}}),i=(0,W.useMemo)(()=>Object.values(s||{})[0],[l,s]),o=(0,W.useMemo)(()=>void 0!==a.options?.geographyId?a.options.geographyId:Object.keys(s||{})[0],[a.options?.geographyId,s]),{data:{country:r}}=C({lat:i?.centroid.lat,lng:i?.centroid.lng}),{data:n,isFetching:d}=y({geographyId:o});return(0,Q.jsx)(re.Provider,{value:{isLoading:l||d,demographicsData:n||{},country:r||"CA",locale:a.globalOptions?.locale||"en",hideAttribution:a.options?.hideAttribution||!1},children:e})},de=({className:e,children:a})=>{const{t:t}=o("neighborhoodDemographics"),l=c(),s=F(),[i,r]=(0,W.useState)(0),{demographicsData:n}=ne(),d=(0,W.useMemo)(()=>{if(!n)return[];const e=[];return Object.entries({income:"income",population:"population_age",housing:"housing_tenancy",household:"household_composition",commute:"commute_mode",education:"education_level",languages:"mother_tongue"}).forEach(([a,t])=>{Object.keys(n).includes(t)||e.push(a)}),e},[n]),m=(0,W.useMemo)(()=>le.filter(e=>!d.includes(e)).map(e=>({title:t(`data.${e}.title`),icon:se[e],key:e})),[d]),u=(0,W.useMemo)(()=>a.filter(e=>(0,W.isValidElement)(e)&&"function"==typeof e.type&&!d.includes(e.type.name.toLocaleLowerCase())),[a,d]),p=(0,W.useMemo)(()=>s&&s.lg&&i<0?0:i,[s,i]),h=e=>{r(e),i!==e&&void 0!==m[e]&&(l.postEvent({eventType:ie.CATEGORY_CLICKED,eventAttributes:[{label:"category",data:m[e].key}]}),l.trackAnalyticsEvent({eventName:oe.CATEGORY_CLICKED,eventAttributes:{ll_category:m[e].key}}))};return i>a.length-1&&console.error("Invalid tab content accessor. Index does not exist on the supplied list of nodes."),(0,Q.jsxs)("div",{className:`text-ll-placeholder ${e||""}`,children:[s&&!s.lg&&(0,Q.jsx)(ae,{sectionHeaders:m,activeTabIndex:p,onTabChange:h,children:u[p]}),s&&s.lg&&(0,Q.jsx)(te,{sectionHeaders:m,activeTabIndex:p,onTabChange:h,children:u[p]})]})},me="\n flex flex-col justify-start gap-3\n md:justify-between md:flex-row\n h-full\n",ue="\n flex justify-between gap-3 flex-row min-w-[250px]\n md:flex-col\n",pe="\n w-full md:h-full\n data-[size=quarter]:h-[25%] md:data-[size=quarter]:h-full\n data-[size=half]:h-[50%] md:data-[size=half]:h-full\n",he="text-ll-primary w-2/4 h-2/4",ge=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{income:a}}=ne(),t=["median_individual_income","median_household_income"],l=(0,W.useMemo)(()=>a?.variables.slice().reverse().filter(e=>!e.type||"average"===e.type||"median"===e.type)||[{variable:"avg_individual_income",label:"Avg individual income",value:a?.variables?.find(e=>"inc_person"===e.variable)?.value||0},{variable:"avg_household_income",label:"Avg household income",value:a?.variables?.find(e=>"inc_home"===e.variable)?.value||0}],[a?.variables]),s=(0,W.useMemo)(()=>({options:{title:e("data.income.graphs.averageIncome.title"),values:l.filter(e=>!t.includes(e.variable)).map(a=>({variable:a.variable,value:`${new Intl.NumberFormat("en-EN",{style:"currency",currency:"USD",maximumFractionDigits:1}).format(a.value/1e3)}${a.value>=1e3?"k":""}`,label:e(`data.income.graphs.averageIncome.types.${a.variable}`)}))}}),[l]);return(0,Q.jsx)(j,{...s})},ve=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{employment_status:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.filter(e=>!e.type||"percent"===e.type).map(e=>({label:e.label,data:Number((100*e.value).toFixed(1))}))||[],[a?.variables]),l=(0,W.useMemo)(()=>({options:{title:e("data.income.graphs.employment.title"),values:t.map(e=>({variable:e.label.replace(" ","_"),label:e.label,value:`${e.data}%`}))}}),[t]);return a?(0,Q.jsx)(j,{...l}):null},be=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{income_level:a}}=ne(),t=(0,W.useMemo)(()=>{const e=a?.variables.filter(e=>!e.type||"percent"===e.type).sort((e,a)=>Number(e.variable.split("_")[1])-Number(a.variable.split("_")[1]));return{labels:e?.map(e=>e.label)||[],data:e?.map(e=>Number((100*e.value).toFixed(1)))||[]}},[a?.variables]),l=(0,W.useMemo)(()=>({title:e("data.income.graphs.incomeBrackets.title"),labels:t.labels,data:t.data,unit:"%"}),[t]);return(0,Q.jsx)(_,{...l,children:(0,Q.jsx)(D,{})})},xe=()=>{const{demographicsData:{income_level:e}}=ne();return(0,Q.jsx)(Q.Fragment,{children:e?(0,Q.jsxs)("div",{className:me,children:[(0,Q.jsxs)("div",{className:ue,children:[(0,Q.jsx)("div",{className:pe,children:(0,Q.jsx)(ge,{})}),(0,Q.jsx)("div",{className:pe,children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(be,{})]}):(0,Q.jsx)("div",{className:me,children:(0,Q.jsx)("div",{className:pe,"data-size":"quarter",children:(0,Q.jsx)(ge,{})})})})},je=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{population_total:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables[0],[a?.variables]),l=(0,W.useMemo)(()=>({options:{title:e("data.population.graphs.totalPopulation.title"),values:[{variable:t?.variable||"",value:`${new Intl.NumberFormat("en-EN").format(Math.round(t?.value||0))}`,label:e("data.population.graphs.totalPopulation.title"),icon:f}]}}),[t]);return(0,Q.jsx)(j,{...l})},fe=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{population_age:a}}=ne(),t=(0,W.useMemo)(()=>{if(!a)return null;const e=a?.variables.filter(e=>!e.type||"percent"===e.type).sort((e,a)=>Number(e.variable.split("_")[1])-Number(a.variable.split("_")[1]));if(a?.variables.length>12){const a=e.map(e=>{const a=e.label.split(" ");return a.splice(1,1),a}),t=[];return a.forEach((l,s)=>{0!==s&&s%2!=0||t.push({variable:`age_${l[0]}_${a[s+1][1]}`,value:e[s].value+e[s+1].value,label:`${l[0]} to ${a[s+1][1]}`})}),t}return e},[a]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>e.label)||[],data:t?.map(e=>Number((100*e.value).toFixed(1)))||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.population.graphs.populationByAgeGroup.title"),labels:l.labels,data:l.data,unit:"%"}),[l]);return(0,Q.jsx)(_,{...s,children:(0,Q.jsx)(D,{})})},ye=()=>{const{demographicsData:{population_total:e}}=ne();return(0,Q.jsxs)("div",{className:me,children:[e&&(0,Q.jsx)("div",{className:ue,children:(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(je,{})})}),(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(fe,{})})]})},Me=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{property_tenure:a,housing_tenancy:t}}=ne(),l=(0,W.useMemo)(()=>t||a,[t,a]),s=(0,W.useMemo)(()=>l?.variables.filter(e=>!e.type||"percent"===e.type).map(e=>({label:e.label,data:Number((100*e.value).toFixed(1))}))||[],[l?.variables]),i=(0,W.useMemo)(()=>({options:{title:e("data.housing.graphs.homeOwnershipType.title"),values:s.map(e=>({variable:e.label.replace(" ","_"),label:e.label,value:`${e.data}%`}))}}),[s]);return(0,Q.jsx)(j,{...i})},He=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{housing_type:a}}=ne(),t=(0,W.useMemo)(()=>{const e=a?.variables.filter(e=>!e.type||"percent"===e.type);return{labels:e?.map(e=>e.label)||[],data:e?.map(e=>Number((100*e.value).toFixed(1)))||[]}},[a?.variables]),l=(0,W.useMemo)(()=>({title:e("data.housing.graphs.typeOfHousing.title"),labels:t.labels,data:t.data,unit:"%"}),[t]);return(0,Q.jsx)(_,{...l,children:(0,Q.jsx)(D,{})})},Ne=()=>{const{demographicsData:{property_tenure:e,housing_tenancy:a,housing_type:t}}=ne(),l=a||e;return(0,Q.jsxs)("div",{className:me,children:[l&&(0,Q.jsx)("div",{className:ue,children:(0,Q.jsx)("div",{className:pe,children:(0,Q.jsx)(Me,{})})}),t&&(0,Q.jsx)("div",{className:pe,children:(0,Q.jsx)(He,{})})]})},Ee=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{household_composition:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.map(e=>({...e,value:Number((100*e.value).toFixed(1))})).filter(e=>(!e.type||"percent"===e.type)&&Number((100*e.value).toFixed(1))>0),[a?.variables]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>`${e.value}% ${e.label}`)||[],data:t?.map(e=>e.value)||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.household.graphs.householdComposition.title"),labels:l.labels,data:l.data,icon:(0,Q.jsx)(M,{className:he})}),[l]);return(0,Q.jsx)(w,{...s})},Ae=()=>(0,Q.jsx)("div",{className:me,children:(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(Ee,{})})}),_e=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{commute_mode:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.map(e=>({...e,value:Number((100*e.value).toFixed(1))})).filter(e=>(!e.type||"percent"===e.type)&&Number((100*e.value).toFixed(1))>0),[a?.variables]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>`${e.value}% ${e.label}`)||[],data:t?.map(e=>e.value)||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.commute.graphs.commuteMode.title"),labels:l.labels,data:l.data,icon:(0,Q.jsx)(b,{className:he})}),[l]);return(0,Q.jsx)(w,{...s})},De=()=>(0,Q.jsx)("div",{className:me,children:(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(_e,{})})}),Ve=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{education_level:a}}=ne(),t=(0,W.useMemo)(()=>{const e=a?.variables.filter(e=>!e.type||"percent"===e.type);return{labels:e?.map(e=>e.label)||[],data:e?.map(e=>Number((100*e.value).toFixed(1)))||[]}},[a?.variables]),l=(0,W.useMemo)(()=>({title:e("data.education.graphs.educationLevel.title"),labels:t.labels,data:t.data,unit:"%"}),[t]);return(0,Q.jsx)(_,{...l,children:(0,Q.jsx)(D,{})})},Ze=()=>(0,Q.jsx)("div",{className:me,children:(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(Ve,{})})}),we=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{official_language_knowledge:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.map(e=>({...e,value:Number((100*e.value).toFixed(1))})).filter(e=>(!e.type||"percent"===e.type)&&Number((100*e.value).toFixed(1))>0),[a?.variables]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>`${e.value}% ${e.label}`)||[],data:t?.map(e=>e.value)||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.languages.graphs.spokenLanguages.title"),labels:l.labels,data:l.data,icon:(0,Q.jsx)(x,{className:he})}),[l]);return(0,Q.jsx)(w,{...s})},Ie=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{mother_tongue:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.filter(e=>"french_and_non_official_language_s"!==e.variable&&"english_and_non_official_language_s"!==e.variable).slice(0,10)?.map(e=>({...e,value:Number((100*e.value).toFixed(1))})).filter(e=>(!e.type||"percent"===e.type)&&e.value>0),[a?.variables]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>e.label)||[],data:t?.map(e=>e.value)||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.languages.graphs.motherTongue.title"),labels:l.labels,data:l.data,unit:"%"}),[l]);return(0,Q.jsx)(_,{...s,children:(0,Q.jsx)(D,{})})},Ce=()=>{const{demographicsData:{official_language_knowledge:e}}=ne();return(0,Q.jsxs)("div",{className:me,children:[e&&(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(we,{})}),(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(Ie,{})})]})},Fe=({children:e})=>(0,Q.jsx)(de,{children:e}),ke=()=>{const{t:e}=o("neighborhoodDemographics"),{isLoading:a,demographicsData:t}=ne();return(0,Q.jsxs)(Q.Fragment,{children:[a&&(0,Q.jsx)("div",{className:"\n flex justify-center items-center \n px-3 pt-4 pb-3 w-full h-full\n",children:(0,Q.jsx)(N,{image:!0})}),!a&&(!t||0===Object.keys(t).length)&&(0,Q.jsx)(G,{text:e("noData")}),t&&(0,Q.jsxs)(Fe,{children:[(0,Q.jsx)(xe,{}),(0,Q.jsx)(ye,{}),(0,Q.jsx)(Ne,{}),(0,Q.jsx)(Ae,{}),(0,Q.jsx)(Ze,{}),(0,Q.jsx)(De,{}),(0,Q.jsx)(Ce,{})]})]})},Oe=()=>{const{t:e}=o(["neighborhoodDemographics","common"]),{locale:a,hideAttribution:t}=ne();return(0,Q.jsxs)("div",{className:"\n py-3 items-center grid\n grid-cols-1 md:grid-cols-[2fr_1fr] \n [&>a]:justify-end\n",children:[(0,Q.jsx)(E,{noMargin:!0,variant:"caption1",color:"--ll-color-on-background-variant1",children:e("note")}),!t&&(0,Q.jsx)(k,{sdkName:"neighborhood-demographics",locale:a})]})},$e=p({lat:s().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:s().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:i().optional(),title:r().optional(),hideAttribution:d().optional()}).noUnknown(!0);l(n.neighborhoodWrap.key);var Te=()=>{const{t:e}=o("neighborhoodDemographics"),{sdkState:a}=Z(),l=T(),s=a.globalOptions?.locale||"en";return(0,Q.jsx)(O,{children:(0,Q.jsx)($,{sdk:"Neighborhood Demographics",schema:$e,options:a.options,children:(0,Q.jsx)(m,{environment:a.globalOptions?.environment?.api,apiKey:a.apiKey,appearance:a.globalOptions?.appearance,locale:a.globalOptions?.locale,product:u.NEIGHBORHOOD_DEMOGRAPHICS,children:(0,Q.jsx)(t,{trackingPipelineSettings:{apiKey:a.apiKey||""},analyticsSettings:n.neighborhoodWrap,meta:{clientId:a.clientId,productName:u.NEIGHBORHOOD_DEMOGRAPHICS,productVersion:"1.24.65"},attributes:{location:{lat:a.options?.lat,lng:a.options?.lng},host:a.location,host_url:document.referrer,locale:s,isMobile:l},flags:{isDebugMode:!1},children:(0,Q.jsxs)(ce,{children:[(0,Q.jsx)(S,{title:"string"==typeof a.options?.title||!1===a.options?.title?a.options.title:e("title")}),(0,Q.jsx)(ke,{}),(0,Q.jsx)(Oe,{})]})})})})})};export{Te as default};
2
- //# sourceMappingURL=NeighborhoodDemographics-CHSrL_pE.js.map
1
+ import{a as e}from"./rolldown-runtime-BEU_UCik.js";import{l as a}from"./google-maps-vendor-BeDgURNz.js";import{a as t,c as l,d as s,f as i,g as o,m as r,n,o as c,p as d,r as m,t as u,u as p}from"./sdks-C6AQk2vE.js";import{t as h}from"./Car.es-3WnvWljX.js";import{t as g}from"./CaretDown.es-DPspOb5f.js";import{t as v}from"./GraduationCap.es-CEu4hWGC.js";import{a as b,i as x,n as j,r as f,t as y}from"./useDemographicsData-BCiAVUly.js";import{t as M}from"./UsersThree.es-DNdVLGYi.js";import{t as H}from"./IconBase.es-kve0MeDL.js";import{H as N,W as E,Y as A,d as _,f as D,i as V,n as Z,u as w}from"./index-DuYul3n8.js";import{t as I}from"./useGeographies-D0Og6wGn.js";import{t as C}from"./useLocation-iMAOqyBM.js";import{t as F}from"./useResponsiveBreakpoints-DjnptSN9.js";import{n as k}from"./Attribution-CUXwGQ1J.js";import{t as O}from"./ResizeWrapper-CacQc137.js";import{t as $}from"./ValidateOptions-CHpsZ-kR.js";import{t as T}from"./useIsMobile-DFRT0gA-.js";/* empty css */import{i as z,n as R,r as K,t as L}from"./dist-LjV2lD3w.js";import{t as S}from"./TitleHeader-Bg-iB4qi.js";import{n as G}from"./NoDataContent-CLEOr0tN.js";var W=e(a(),1),B=new Map([["bold",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,44H48A28,28,0,0,0,20,72V184a28,28,0,0,0,28,28H208a28,28,0,0,0,28-28V72A28,28,0,0,0,208,44ZM48,68H208a4,4,0,0,1,4,4V88H160a12,12,0,0,0-12,12,20,20,0,0,1-40,0A12,12,0,0,0,96,88H44V72A4,4,0,0,1,48,68ZM208,188H48a4,4,0,0,1-4-4V112H85.66a44,44,0,0,0,84.68,0H212v72A4,4,0,0,1,208,188Z"}))],["duotone",W.createElement(W.Fragment,null,W.createElement("path",{d:"M224,72v48H160a32,32,0,0,1-64,0H32V72A16,16,0,0,1,48,56H208A16,16,0,0,1,224,72Z",opacity:"0.2"}),W.createElement("path",{d:"M208,48H48A24,24,0,0,0,24,72V184a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V72A24,24,0,0,0,208,48ZM40,96H216v16H160a8,8,0,0,0-8,8,24,24,0,0,1-48,0,8,8,0,0,0-8-8H40Zm8-32H208a8,8,0,0,1,8,8v8H40V72A8,8,0,0,1,48,64ZM208,192H48a8,8,0,0,1-8-8V128H88.8a40,40,0,0,0,78.4,0H216v56A8,8,0,0,1,208,192Z"}))],["fill",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,48H48A24,24,0,0,0,24,72V184a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V72A24,24,0,0,0,208,48Zm-56,72a24,24,0,0,1-48,0,8,8,0,0,0-8-8H40V96H216v16H160A8,8,0,0,0,152,120ZM48,64H208a8,8,0,0,1,8,8v8H40V72A8,8,0,0,1,48,64Z"}))],["light",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,50H48A22,22,0,0,0,26,72V184a22,22,0,0,0,22,22H208a22,22,0,0,0,22-22V72A22,22,0,0,0,208,50ZM38,94H218v20H160a6,6,0,0,0-6,6,26,26,0,0,1-52,0,6,6,0,0,0-6-6H38ZM48,62H208a10,10,0,0,1,10,10V82H38V72A10,10,0,0,1,48,62ZM208,194H48a10,10,0,0,1-10-10V126H90.47a38,38,0,0,0,75.06,0H218v58A10,10,0,0,1,208,194Z"}))],["regular",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,48H48A24,24,0,0,0,24,72V184a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V72A24,24,0,0,0,208,48ZM40,96H216v16H160a8,8,0,0,0-8,8,24,24,0,0,1-48,0,8,8,0,0,0-8-8H40Zm8-32H208a8,8,0,0,1,8,8v8H40V72A8,8,0,0,1,48,64ZM208,192H48a8,8,0,0,1-8-8V128H88.8a40,40,0,0,0,78.4,0H216v56A8,8,0,0,1,208,192Z"}))],["thin",W.createElement(W.Fragment,null,W.createElement("path",{d:"M208,52H48A20,20,0,0,0,28,72V184a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V72A20,20,0,0,0,208,52ZM36,92H220v24H160a4,4,0,0,0-4,4,28,28,0,0,1-56,0,4,4,0,0,0-4-4H36ZM48,60H208a12,12,0,0,1,12,12V84H36V72A12,12,0,0,1,48,60ZM208,196H48a12,12,0,0,1-12-12V124H92.22a36,36,0,0,0,71.56,0H220v60A12,12,0,0,1,208,196Z"}))]]),P=new Map([["bold",W.createElement(W.Fragment,null,W.createElement("path",{d:"M222.14,105.85l-80-80a20,20,0,0,0-28.28,0l-80,80A19.86,19.86,0,0,0,28,120v96a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V164h24v52a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V120A19.86,19.86,0,0,0,222.14,105.85ZM204,204H164V152a12,12,0,0,0-12-12H104a12,12,0,0,0-12,12v52H52V121.65l76-76,76,76Z"}))],["duotone",W.createElement(W.Fragment,null,W.createElement("path",{d:"M216,120v96H152V152H104v64H40V120a8,8,0,0,1,2.34-5.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,216,120Z",opacity:"0.2"}),W.createElement("path",{d:"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z"}))],["fill",W.createElement(W.Fragment,null,W.createElement("path",{d:"M224,120v96a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V164a4,4,0,0,0-4-4H108a4,4,0,0,0-4,4v52a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a16,16,0,0,1,4.69-11.31l80-80a16,16,0,0,1,22.62,0l80,80A16,16,0,0,1,224,120Z"}))],["light",W.createElement(W.Fragment,null,W.createElement("path",{d:"M217.9,110.1l-80-80a14,14,0,0,0-19.8,0l-80,80A13.92,13.92,0,0,0,34,120v96a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V158h36v58a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V120A13.92,13.92,0,0,0,217.9,110.1ZM210,210H158V152a6,6,0,0,0-6-6H104a6,6,0,0,0-6,6v58H46V120a2,2,0,0,1,.58-1.42l80-80a2,2,0,0,1,2.84,0l80,80A2,2,0,0,1,210,120Z"}))],["regular",W.createElement(W.Fragment,null,W.createElement("path",{d:"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z"}))],["thin",W.createElement(W.Fragment,null,W.createElement("path",{d:"M216.49,111.51l-80-80a12,12,0,0,0-17,0l-80,80A12,12,0,0,0,36,120v96a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V156h40v60a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V120A12,12,0,0,0,216.49,111.51ZM212,212H156V152a4,4,0,0,0-4-4H104a4,4,0,0,0-4,4v60H44V120a4,4,0,0,1,1.17-2.83l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,212,120Z"}))]]),q=new Map([["bold",W.createElement(W.Fragment,null,W.createElement("path",{d:"M234.38,210a123.36,123.36,0,0,0-60.78-53.23,76,76,0,1,0-91.2,0A123.36,123.36,0,0,0,21.62,210a12,12,0,1,0,20.77,12c18.12-31.32,50.12-50,85.61-50s67.49,18.69,85.61,50a12,12,0,0,0,20.77-12ZM76,96a52,52,0,1,1,52,52A52.06,52.06,0,0,1,76,96Z"}))],["duotone",W.createElement(W.Fragment,null,W.createElement("path",{d:"M192,96a64,64,0,1,1-64-64A64,64,0,0,1,192,96Z",opacity:"0.2"}),W.createElement("path",{d:"M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z"}))],["fill",W.createElement(W.Fragment,null,W.createElement("path",{d:"M230.93,220a8,8,0,0,1-6.93,4H32a8,8,0,0,1-6.92-12c15.23-26.33,38.7-45.21,66.09-54.16a72,72,0,1,1,73.66,0c27.39,8.95,50.86,27.83,66.09,54.16A8,8,0,0,1,230.93,220Z"}))],["light",W.createElement(W.Fragment,null,W.createElement("path",{d:"M229.19,213c-15.81-27.32-40.63-46.49-69.47-54.62a70,70,0,1,0-63.44,0C67.44,166.5,42.62,185.67,26.81,213a6,6,0,1,0,10.38,6C56.4,185.81,90.34,166,128,166s71.6,19.81,90.81,53a6,6,0,1,0,10.38-6ZM70,96a58,58,0,1,1,58,58A58.07,58.07,0,0,1,70,96Z"}))],["regular",W.createElement(W.Fragment,null,W.createElement("path",{d:"M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z"}))],["thin",W.createElement(W.Fragment,null,W.createElement("path",{d:"M227.46,214c-16.52-28.56-43-48.06-73.68-55.09a68,68,0,1,0-51.56,0c-30.64,7-57.16,26.53-73.68,55.09a4,4,0,0,0,6.92,4C55,184.19,89.62,164,128,164s73,20.19,92.54,54a4,4,0,0,0,3.46,2,3.93,3.93,0,0,0,2-.54A4,4,0,0,0,227.46,214ZM68,96a60,60,0,1,1,60,60A60.07,60.07,0,0,1,68,96Z"}))]]),Y=W.forwardRef((e,a)=>W.createElement(H,{ref:a,...e,weights:B}));Y.displayName="CardholderIcon";var U=W.forwardRef((e,a)=>W.createElement(H,{ref:a,...e,weights:P}));U.displayName="HouseIcon";var J=W.forwardRef((e,a)=>W.createElement(H,{ref:a,...e,weights:q}));J.displayName="UserIcon";var Q=A(),X=({icon:e})=>(0,Q.jsx)(e,{className:"w-6 h-6"}),ee=({text:e,className:a})=>(0,Q.jsx)("h2",{className:`text-base leading-6 font-medium ${a||""}`,children:e}),ae=({sectionHeaders:e,activeTabIndex:a,onTabChange:t,children:l})=>(0,Q.jsx)("div",{className:"flex flex-col gap-2",children:e.map((e,s)=>(0,Q.jsxs)("div",{className:"px-4 rounded border border-ll-border shadow cursor-pointer group",onClick:()=>t(a===s?-1:s),"data-active":a===s,children:[(0,Q.jsxs)("div",{className:"py-3 flex items-center gap-1.5 group-data-[active=true]:text-ll-primary",children:[(0,Q.jsx)(X,{icon:e.icon}),(0,Q.jsx)(ee,{text:e.title,className:"grow"}),(0,Q.jsx)(g,{className:"w-3.5 h-3.5 text-ll-placeholder data-[is-active=true]:rotate-180 transition-transform duration-50 ease-in-out","data-is-active":a===s})]}),a===s&&(0,Q.jsx)("div",{className:"py-3 border-t border-ll-surface",children:l})]},`section-accordion-${e.title}`))}),te=({sectionHeaders:e,activeTabIndex:a,onTabChange:t,children:l})=>{const s=e[a]?.key;return(0,Q.jsxs)(K,{value:s,onValueChange:a=>{const l=e.findIndex(e=>e.key===a);-1!==l&&t(l)},children:[(0,Q.jsxs)("div",{className:"w-full",children:[(0,Q.jsx)(R,{className:"flex items-center justify-center pb-4","aria-label":"Demographics tabs",children:e.map((e,t)=>(0,Q.jsxs)(z,{value:e.key,className:"w-full flex items-center justify-center py-2.5 gap-2 bg-none border-none data-[active=true]:text-ll-primary cursor-pointer transition-colors","data-active":a===t,children:[(0,Q.jsx)(X,{icon:e.icon}),(0,Q.jsx)("p",{className:"m-0 text-base leading-6 font-medium",children:e.title})]},`section-tab-${e.key}`))}),(0,Q.jsx)("div",{className:"border-b-4 border-ll-surface rounded flex items-center justify-center",children:e.map((e,t)=>(0,Q.jsx)("div",{className:"h-1 bg-ll-primary rounded w-full -mb-1 data-[active=false]:opacity-0 transition-opacity","data-active":a===t},`section-tab-border-${e.key}`))})]}),(0,Q.jsx)(L,{value:s??"",className:"p-6",children:l})]})},le=["income","population","housing","household","education","commute","languages"],se={income:Y,population:J,housing:U,household:f,education:v,commute:h,languages:x},ie=function(e){return e.SDK_VIEWED="neighborhood-demographics-Viewed",e.CATEGORY_CLICKED="neighborhood-demographics-Category-Clicked",e}({}),oe=function(e){return e.SDK_VIEWED="sdk_viewed",e.CATEGORY_CLICKED="category_clicked",e}({}),re=W.createContext({}),ne=()=>(0,W.useContext)(re),ce=({children:e})=>{const{sdkState:a}=Z(),t=c();V(()=>{t.postEvent({eventType:ie.SDK_VIEWED}),t.trackAnalyticsEvent({eventName:oe.SDK_VIEWED})});const{isLoading:l,data:s}=I({location:{lat:void 0===a.options?.geographyId?a.options?.lat:void 0,lng:void 0===a.options?.geographyId?a.options?.lng:void 0}}),i=(0,W.useMemo)(()=>Object.values(s||{})[0],[l,s]),o=(0,W.useMemo)(()=>void 0!==a.options?.geographyId?a.options.geographyId:Object.keys(s||{})[0],[a.options?.geographyId,s]),{data:{country:r}}=C({lat:i?.centroid.lat,lng:i?.centroid.lng}),{data:n,isFetching:d}=y({geographyId:o});return(0,Q.jsx)(re.Provider,{value:{isLoading:l||d,demographicsData:n||{},country:r||"CA",locale:a.globalOptions?.locale||"en",hideAttribution:a.options?.hideAttribution||!1},children:e})},de=({className:e,children:a})=>{const{t:t}=o("neighborhoodDemographics"),l=c(),s=F(),[i,r]=(0,W.useState)(0),{demographicsData:n}=ne(),d=(0,W.useMemo)(()=>{if(!n)return[];const e=[];return Object.entries({income:"income",population:"population_age",housing:"housing_tenancy",household:"household_composition",commute:"commute_mode",education:"education_level",languages:"mother_tongue"}).forEach(([a,t])=>{Object.keys(n).includes(t)||e.push(a)}),e},[n]),m=(0,W.useMemo)(()=>le.filter(e=>!d.includes(e)).map(e=>({title:t(`data.${e}.title`),icon:se[e],key:e})),[d]),u=(0,W.useMemo)(()=>a.filter(e=>(0,W.isValidElement)(e)&&"function"==typeof e.type&&!d.includes(e.type.name.toLocaleLowerCase())),[a,d]),p=(0,W.useMemo)(()=>s&&s.lg&&i<0?0:i,[s,i]),h=e=>{r(e),i!==e&&void 0!==m[e]&&(l.postEvent({eventType:ie.CATEGORY_CLICKED,eventAttributes:[{label:"category",data:m[e].key}]}),l.trackAnalyticsEvent({eventName:oe.CATEGORY_CLICKED,eventAttributes:{ll_category:m[e].key}}))};return i>a.length-1&&console.error("Invalid tab content accessor. Index does not exist on the supplied list of nodes."),(0,Q.jsxs)("div",{className:`text-ll-placeholder ${e||""}`,children:[s&&!s.lg&&(0,Q.jsx)(ae,{sectionHeaders:m,activeTabIndex:p,onTabChange:h,children:u[p]}),s&&s.lg&&(0,Q.jsx)(te,{sectionHeaders:m,activeTabIndex:p,onTabChange:h,children:u[p]})]})},me="\n flex flex-col justify-start gap-3\n md:justify-between md:flex-row\n h-full\n",ue="\n flex justify-between gap-3 flex-row min-w-[250px]\n md:flex-col\n",pe="\n w-full md:h-full\n data-[size=quarter]:h-[25%] md:data-[size=quarter]:h-full\n data-[size=half]:h-[50%] md:data-[size=half]:h-full\n",he="text-ll-primary w-2/4 h-2/4",ge=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{income:a}}=ne(),t=["median_individual_income","median_household_income"],l=(0,W.useMemo)(()=>a?.variables.slice().reverse().filter(e=>!e.type||"average"===e.type||"median"===e.type)||[{variable:"avg_individual_income",label:"Avg individual income",value:a?.variables?.find(e=>"inc_person"===e.variable)?.value||0},{variable:"avg_household_income",label:"Avg household income",value:a?.variables?.find(e=>"inc_home"===e.variable)?.value||0}],[a?.variables]),s=(0,W.useMemo)(()=>({options:{title:e("data.income.graphs.averageIncome.title"),values:l.filter(e=>!t.includes(e.variable)).map(a=>({variable:a.variable,value:`${new Intl.NumberFormat("en-EN",{style:"currency",currency:"USD",maximumFractionDigits:1}).format(a.value/1e3)}${a.value>=1e3?"k":""}`,label:e(`data.income.graphs.averageIncome.types.${a.variable}`)}))}}),[l]);return(0,Q.jsx)(j,{...s})},ve=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{employment_status:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.filter(e=>!e.type||"percent"===e.type).map(e=>({label:e.label,data:Number((100*e.value).toFixed(1))}))||[],[a?.variables]),l=(0,W.useMemo)(()=>({options:{title:e("data.income.graphs.employment.title"),values:t.map(e=>({variable:e.label.replace(" ","_"),label:e.label,value:`${e.data}%`}))}}),[t]);return a?(0,Q.jsx)(j,{...l}):null},be=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{income_level:a}}=ne(),t=(0,W.useMemo)(()=>{const e=a?.variables.filter(e=>!e.type||"percent"===e.type).sort((e,a)=>Number(e.variable.split("_")[1])-Number(a.variable.split("_")[1]));return{labels:e?.map(e=>e.label)||[],data:e?.map(e=>Number((100*e.value).toFixed(1)))||[]}},[a?.variables]),l=(0,W.useMemo)(()=>({title:e("data.income.graphs.incomeBrackets.title"),labels:t.labels,data:t.data,unit:"%"}),[t]);return(0,Q.jsx)(_,{...l,children:(0,Q.jsx)(D,{})})},xe=()=>{const{demographicsData:{income_level:e}}=ne();return(0,Q.jsx)(Q.Fragment,{children:e?(0,Q.jsxs)("div",{className:me,children:[(0,Q.jsxs)("div",{className:ue,children:[(0,Q.jsx)("div",{className:pe,children:(0,Q.jsx)(ge,{})}),(0,Q.jsx)("div",{className:pe,children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(be,{})]}):(0,Q.jsx)("div",{className:me,children:(0,Q.jsx)("div",{className:pe,"data-size":"quarter",children:(0,Q.jsx)(ge,{})})})})},je=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{population_total:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables[0],[a?.variables]),l=(0,W.useMemo)(()=>({options:{title:e("data.population.graphs.totalPopulation.title"),values:[{variable:t?.variable||"",value:`${new Intl.NumberFormat("en-EN").format(Math.round(t?.value||0))}`,label:e("data.population.graphs.totalPopulation.title"),icon:f}]}}),[t]);return(0,Q.jsx)(j,{...l})},fe=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{population_age:a}}=ne(),t=(0,W.useMemo)(()=>{if(!a)return null;const e=a?.variables.filter(e=>!e.type||"percent"===e.type).sort((e,a)=>Number(e.variable.split("_")[1])-Number(a.variable.split("_")[1]));if(a?.variables.length>12){const a=e.map(e=>{const a=e.label.split(" ");return a.splice(1,1),a}),t=[];return a.forEach((l,s)=>{0!==s&&s%2!=0||t.push({variable:`age_${l[0]}_${a[s+1][1]}`,value:e[s].value+e[s+1].value,label:`${l[0]} to ${a[s+1][1]}`})}),t}return e},[a]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>e.label)||[],data:t?.map(e=>Number((100*e.value).toFixed(1)))||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.population.graphs.populationByAgeGroup.title"),labels:l.labels,data:l.data,unit:"%"}),[l]);return(0,Q.jsx)(_,{...s,children:(0,Q.jsx)(D,{})})},ye=()=>{const{demographicsData:{population_total:e}}=ne();return(0,Q.jsxs)("div",{className:me,children:[e&&(0,Q.jsx)("div",{className:ue,children:(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(je,{})})}),(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(fe,{})})]})},Me=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{property_tenure:a,housing_tenancy:t}}=ne(),l=(0,W.useMemo)(()=>t||a,[t,a]),s=(0,W.useMemo)(()=>l?.variables.filter(e=>!e.type||"percent"===e.type).map(e=>({label:e.label,data:Number((100*e.value).toFixed(1))}))||[],[l?.variables]),i=(0,W.useMemo)(()=>({options:{title:e("data.housing.graphs.homeOwnershipType.title"),values:s.map(e=>({variable:e.label.replace(" ","_"),label:e.label,value:`${e.data}%`}))}}),[s]);return(0,Q.jsx)(j,{...i})},He=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{housing_type:a}}=ne(),t=(0,W.useMemo)(()=>{const e=a?.variables.filter(e=>!e.type||"percent"===e.type);return{labels:e?.map(e=>e.label)||[],data:e?.map(e=>Number((100*e.value).toFixed(1)))||[]}},[a?.variables]),l=(0,W.useMemo)(()=>({title:e("data.housing.graphs.typeOfHousing.title"),labels:t.labels,data:t.data,unit:"%"}),[t]);return(0,Q.jsx)(_,{...l,children:(0,Q.jsx)(D,{})})},Ne=()=>{const{demographicsData:{property_tenure:e,housing_tenancy:a,housing_type:t}}=ne(),l=a||e;return(0,Q.jsxs)("div",{className:me,children:[l&&(0,Q.jsx)("div",{className:ue,children:(0,Q.jsx)("div",{className:pe,children:(0,Q.jsx)(Me,{})})}),t&&(0,Q.jsx)("div",{className:pe,children:(0,Q.jsx)(He,{})})]})},Ee=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{household_composition:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.map(e=>({...e,value:Number((100*e.value).toFixed(1))})).filter(e=>(!e.type||"percent"===e.type)&&Number((100*e.value).toFixed(1))>0),[a?.variables]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>`${e.value}% ${e.label}`)||[],data:t?.map(e=>e.value)||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.household.graphs.householdComposition.title"),labels:l.labels,data:l.data,icon:(0,Q.jsx)(M,{className:he})}),[l]);return(0,Q.jsx)(w,{...s})},Ae=()=>(0,Q.jsx)("div",{className:me,children:(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(Ee,{})})}),_e=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{commute_mode:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.map(e=>({...e,value:Number((100*e.value).toFixed(1))})).filter(e=>(!e.type||"percent"===e.type)&&Number((100*e.value).toFixed(1))>0),[a?.variables]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>`${e.value}% ${e.label}`)||[],data:t?.map(e=>e.value)||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.commute.graphs.commuteMode.title"),labels:l.labels,data:l.data,icon:(0,Q.jsx)(b,{className:he})}),[l]);return(0,Q.jsx)(w,{...s})},De=()=>(0,Q.jsx)("div",{className:me,children:(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(_e,{})})}),Ve=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{education_level:a}}=ne(),t=(0,W.useMemo)(()=>{const e=a?.variables.filter(e=>!e.type||"percent"===e.type);return{labels:e?.map(e=>e.label)||[],data:e?.map(e=>Number((100*e.value).toFixed(1)))||[]}},[a?.variables]),l=(0,W.useMemo)(()=>({title:e("data.education.graphs.educationLevel.title"),labels:t.labels,data:t.data,unit:"%"}),[t]);return(0,Q.jsx)(_,{...l,children:(0,Q.jsx)(D,{})})},Ze=()=>(0,Q.jsx)("div",{className:me,children:(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(Ve,{})})}),we=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{official_language_knowledge:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.map(e=>({...e,value:Number((100*e.value).toFixed(1))})).filter(e=>(!e.type||"percent"===e.type)&&Number((100*e.value).toFixed(1))>0),[a?.variables]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>`${e.value}% ${e.label}`)||[],data:t?.map(e=>e.value)||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.languages.graphs.spokenLanguages.title"),labels:l.labels,data:l.data,icon:(0,Q.jsx)(x,{className:he})}),[l]);return(0,Q.jsx)(w,{...s})},Ie=()=>{const{t:e}=o("neighborhoodDemographics"),{demographicsData:{mother_tongue:a}}=ne(),t=(0,W.useMemo)(()=>a?.variables.filter(e=>"french_and_non_official_language_s"!==e.variable&&"english_and_non_official_language_s"!==e.variable).slice(0,10)?.map(e=>({...e,value:Number((100*e.value).toFixed(1))})).filter(e=>(!e.type||"percent"===e.type)&&e.value>0),[a?.variables]),l=(0,W.useMemo)(()=>({labels:t?.map(e=>e.label)||[],data:t?.map(e=>e.value)||[]}),[t]),s=(0,W.useMemo)(()=>({title:e("data.languages.graphs.motherTongue.title"),labels:l.labels,data:l.data,unit:"%"}),[l]);return(0,Q.jsx)(_,{...s,children:(0,Q.jsx)(D,{})})},Ce=()=>{const{demographicsData:{official_language_knowledge:e}}=ne();return(0,Q.jsxs)("div",{className:me,children:[e&&(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(we,{})}),(0,Q.jsx)("div",{className:pe,"data-size":"half",children:(0,Q.jsx)(Ie,{})})]})},Fe=({children:e})=>(0,Q.jsx)(de,{children:e}),ke=()=>{const{t:e}=o("neighborhoodDemographics"),{isLoading:a,demographicsData:t}=ne();return(0,Q.jsxs)(Q.Fragment,{children:[a&&(0,Q.jsx)("div",{className:"\n flex justify-center items-center \n px-3 pt-4 pb-3 w-full h-full\n",children:(0,Q.jsx)(N,{image:!0})}),!a&&(!t||0===Object.keys(t).length)&&(0,Q.jsx)(G,{text:e("noData")}),t&&(0,Q.jsxs)(Fe,{children:[(0,Q.jsx)(xe,{}),(0,Q.jsx)(ye,{}),(0,Q.jsx)(Ne,{}),(0,Q.jsx)(Ae,{}),(0,Q.jsx)(Ze,{}),(0,Q.jsx)(De,{}),(0,Q.jsx)(Ce,{})]})]})},Oe=()=>{const{t:e}=o(["neighborhoodDemographics","common"]),{locale:a,hideAttribution:t}=ne();return(0,Q.jsxs)("div",{className:"\n py-3 items-center grid\n grid-cols-1 md:grid-cols-[2fr_1fr] \n [&>a]:justify-end\n",children:[(0,Q.jsx)(E,{noMargin:!0,variant:"caption1",color:"--ll-color-on-background-variant1",children:e("note")}),!t&&(0,Q.jsx)(k,{sdkName:"neighborhood-demographics",locale:a})]})},$e=p({lat:s().min(-90,"Must be a valid latitude.").max(90,"Must be a valid latitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),lng:s().min(-180,"Must be a valid longitude.").max(180,"Must be a valid longitude.").when("geographyId",{is:e=>"string"==typeof e,then:e=>e.optional(),otherwise:e=>e.required()}),geographyId:i().optional(),title:r().optional(),hideAttribution:d().optional()}).noUnknown(!0);l(n.neighborhoodWrap.key);var Te=()=>{const{t:e}=o("neighborhoodDemographics"),{sdkState:a}=Z(),l=T(),s=a.globalOptions?.locale||"en";return(0,Q.jsx)(O,{children:(0,Q.jsx)($,{sdk:"Neighborhood Demographics",schema:$e,options:a.options,children:(0,Q.jsx)(m,{environment:a.globalOptions?.environment?.api,apiKey:a.apiKey,appearance:a.globalOptions?.appearance,locale:a.globalOptions?.locale,product:u.NEIGHBORHOOD_DEMOGRAPHICS,children:(0,Q.jsx)(t,{trackingPipelineSettings:{apiKey:a.apiKey||""},analyticsSettings:n.neighborhoodWrap,meta:{clientId:a.clientId,productName:u.NEIGHBORHOOD_DEMOGRAPHICS,productVersion:"1.25.0"},attributes:{location:{lat:a.options?.lat,lng:a.options?.lng},host:a.location,host_url:document.referrer,locale:s,isMobile:l},flags:{isDebugMode:!1},children:(0,Q.jsxs)(ce,{children:[(0,Q.jsx)(S,{title:"string"==typeof a.options?.title||!1===a.options?.title?a.options.title:e("title")}),(0,Q.jsx)(ke,{}),(0,Q.jsx)(Oe,{})]})})})})})};export{Te as default};
2
+ //# sourceMappingURL=NeighborhoodDemographics-BckV-fh5.js.map