@abcagency/hc-ui-components 1.9.35 → 1.9.36

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 (501) hide show
  1. package/dist/_virtual/jsx-runtime.js +4 -0
  2. package/dist/_virtual/jsx-runtime.js.map +1 -0
  3. package/dist/_virtual/react-jsx-runtime.production.min.js +4 -0
  4. package/dist/_virtual/react-jsx-runtime.production.min.js.map +1 -0
  5. package/dist/apis/hcApi.js +91 -0
  6. package/dist/apis/hcApi.js.map +1 -0
  7. package/dist/clientToken.js +10 -0
  8. package/dist/clientToken.js.map +1 -0
  9. package/dist/components/HireControlMap.js +175 -203
  10. package/dist/components/HireControlMap.js.map +1 -1
  11. package/dist/components/containers/accordions/filter-container.js +9 -22
  12. package/dist/components/containers/accordions/filter-container.js.map +1 -1
  13. package/dist/components/containers/accordions/filter-item-container.js +11 -16
  14. package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
  15. package/dist/components/containers/accordions/map-accordion-item-container.js +12 -37
  16. package/dist/components/containers/accordions/map-accordion-item-container.js.map +1 -1
  17. package/dist/components/containers/filter/commute-container.js +7 -18
  18. package/dist/components/containers/filter/commute-container.js.map +1 -1
  19. package/dist/components/containers/filter/filter-container.js +16 -12
  20. package/dist/components/containers/filter/filter-container.js.map +1 -1
  21. package/dist/components/containers/filter/filter-item-container.js +28 -44
  22. package/dist/components/containers/filter/filter-item-container.js.map +1 -1
  23. package/dist/components/containers/filter/location-container.js +7 -15
  24. package/dist/components/containers/filter/location-container.js.map +1 -1
  25. package/dist/components/containers/filter/points-of-interest-container.js +8 -21
  26. package/dist/components/containers/filter/points-of-interest-container.js.map +1 -1
  27. package/dist/components/containers/filter/points-of-interest-radio-item-container.js +3 -6
  28. package/dist/components/containers/filter/points-of-interest-radio-item-container.js.map +1 -1
  29. package/dist/components/containers/filter/search-container.js +4 -11
  30. package/dist/components/containers/filter/search-container.js.map +1 -1
  31. package/dist/components/containers/jobListing/listing-details-container.js +5 -10
  32. package/dist/components/containers/jobListing/listing-details-container.js.map +1 -1
  33. package/dist/components/containers/list/item-list-container.js +15 -22
  34. package/dist/components/containers/list/item-list-container.js.map +1 -1
  35. package/dist/components/containers/list/list-item/list-item-container.js +5 -16
  36. package/dist/components/containers/list/list-item/list-item-container.js.map +1 -1
  37. package/dist/components/containers/maps/info-window-content-container.js +3 -6
  38. package/dist/components/containers/maps/info-window-content-container.js.map +1 -1
  39. package/dist/components/containers/maps/map-container.js +28 -106
  40. package/dist/components/containers/maps/map-container.js.map +1 -1
  41. package/dist/components/containers/maps/map-list-container.js +7 -35
  42. package/dist/components/containers/maps/map-list-container.js.map +1 -1
  43. package/dist/components/containers/maps/map-marker-container.js +8 -11
  44. package/dist/components/containers/maps/map-marker-container.js.map +1 -1
  45. package/dist/components/modules/accordions/MapAccordionItem.js +5 -5
  46. package/dist/components/modules/accordions/MapAccordionItem.js.map +1 -1
  47. package/dist/components/modules/accordions/default.js +15 -15
  48. package/dist/components/modules/accordions/default.js.map +1 -1
  49. package/dist/components/modules/accordions/filterItem.js +7 -12
  50. package/dist/components/modules/accordions/filterItem.js.map +1 -1
  51. package/dist/components/modules/accordions/filters.js +7 -17
  52. package/dist/components/modules/accordions/filters.js.map +1 -1
  53. package/dist/components/modules/buttons/button-group-apply.js +19 -20
  54. package/dist/components/modules/buttons/button-group-apply.js.map +1 -1
  55. package/dist/components/modules/buttons/default.js +9 -9
  56. package/dist/components/modules/buttons/default.js.map +1 -1
  57. package/dist/components/modules/buttons/items-pill.js +2 -2
  58. package/dist/components/modules/buttons/items-pill.js.map +1 -1
  59. package/dist/components/modules/buttons/pill-wrapper.js +3 -4
  60. package/dist/components/modules/buttons/pill-wrapper.js.map +1 -1
  61. package/dist/components/modules/buttons/show-all-button.js +3 -3
  62. package/dist/components/modules/buttons/show-all-button.js.map +1 -1
  63. package/dist/components/modules/cards/default.js +11 -11
  64. package/dist/components/modules/cards/default.js.map +1 -1
  65. package/dist/components/modules/cards/filter.js +5 -5
  66. package/dist/components/modules/cards/filter.js.map +1 -1
  67. package/dist/components/modules/dialogs/apply-dialog.js +19 -19
  68. package/dist/components/modules/dialogs/apply-dialog.js.map +1 -1
  69. package/dist/components/modules/filter/commute.js +20 -21
  70. package/dist/components/modules/filter/commute.js.map +1 -1
  71. package/dist/components/modules/filter/index.js +30 -122
  72. package/dist/components/modules/filter/index.js.map +1 -1
  73. package/dist/components/modules/filter/item.js +9 -15
  74. package/dist/components/modules/filter/item.js.map +1 -1
  75. package/dist/components/modules/filter/location.js +6 -6
  76. package/dist/components/modules/filter/location.js.map +1 -1
  77. package/dist/components/modules/filter/radio-item.js +6 -6
  78. package/dist/components/modules/filter/radio-item.js.map +1 -1
  79. package/dist/components/modules/filter/search.js +11 -16
  80. package/dist/components/modules/filter/search.js.map +1 -1
  81. package/dist/components/modules/filter/sort.js +28 -28
  82. package/dist/components/modules/filter/sort.js.map +1 -1
  83. package/dist/components/modules/grid.js +4 -4
  84. package/dist/components/modules/grid.js.map +1 -1
  85. package/dist/components/modules/icon.js +4 -4
  86. package/dist/components/modules/icon.js.map +1 -1
  87. package/dist/components/modules/jobListing/listing-details.js +5 -8
  88. package/dist/components/modules/jobListing/listing-details.js.map +1 -1
  89. package/dist/components/modules/list/field-mapper-desktop.js +14 -38
  90. package/dist/components/modules/list/field-mapper-desktop.js.map +1 -1
  91. package/dist/components/modules/list/field-mapper-mobile.js +63 -94
  92. package/dist/components/modules/list/field-mapper-mobile.js.map +1 -1
  93. package/dist/components/modules/list/header-item.js +7 -7
  94. package/dist/components/modules/list/header-item.js.map +1 -1
  95. package/dist/components/modules/list/header.js +5 -5
  96. package/dist/components/modules/list/header.js.map +1 -1
  97. package/dist/components/modules/list/item-expand-card/index.js +3 -3
  98. package/dist/components/modules/list/item-expand-card/index.js.map +1 -1
  99. package/dist/components/modules/list/item-list.js +18 -15
  100. package/dist/components/modules/list/item-list.js.map +1 -1
  101. package/dist/components/modules/list/list-item/list-item.js +18 -95
  102. package/dist/components/modules/list/list-item/list-item.js.map +1 -1
  103. package/dist/components/modules/maps/info-window-card.js +2 -2
  104. package/dist/components/modules/maps/info-window-card.js.map +1 -1
  105. package/dist/components/modules/maps/info-window-content.js +5 -5
  106. package/dist/components/modules/maps/info-window-content.js.map +1 -1
  107. package/dist/components/modules/maps/map-list.js +5 -5
  108. package/dist/components/modules/maps/map-list.js.map +1 -1
  109. package/dist/components/modules/maps/map-marker.js +3 -3
  110. package/dist/components/modules/maps/map-marker.js.map +1 -1
  111. package/dist/components/modules/maps/map.js +5 -17
  112. package/dist/components/modules/maps/map.js.map +1 -1
  113. package/dist/components/modules/maps/place-marker.js +5 -5
  114. package/dist/components/modules/maps/place-marker.js.map +1 -1
  115. package/dist/components/modules/maps/tabs.js +25 -25
  116. package/dist/components/modules/maps/tabs.js.map +1 -1
  117. package/dist/contexts/componentContext.js +58 -6
  118. package/dist/contexts/componentContext.js.map +1 -1
  119. package/dist/contexts/mapContext.js +20 -49
  120. package/dist/contexts/mapContext.js.map +1 -1
  121. package/dist/contexts/mapListContext.js +70 -271
  122. package/dist/contexts/mapListContext.js.map +1 -1
  123. package/dist/contexts/placesContext.js +5 -7
  124. package/dist/contexts/placesContext.js.map +1 -1
  125. package/dist/contexts/themeContext.js +5 -10
  126. package/dist/contexts/themeContext.js.map +1 -1
  127. package/dist/contexts/trackEventContext.js +2 -2
  128. package/dist/contexts/trackEventContext.js.map +1 -1
  129. package/dist/hc_react_map_npm/packages/hc-ui-components/node_modules/tslib/tslib.es6.js +45 -0
  130. package/dist/hc_react_map_npm/packages/hc-ui-components/node_modules/tslib/tslib.es6.js.map +1 -0
  131. package/dist/hooks/useList.js +1 -3
  132. package/dist/hooks/useList.js.map +1 -1
  133. package/dist/index.js +1 -2
  134. package/dist/index.js.map +1 -1
  135. package/dist/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js +1 -0
  136. package/dist/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js.map +1 -1
  137. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +802 -0
  138. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -0
  139. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +679 -0
  140. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -0
  141. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +343 -0
  142. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +1 -0
  143. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +140 -0
  144. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -0
  145. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +137 -0
  146. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -0
  147. package/dist/node_modules/@headlessui/react/dist/components/combobox/combobox.js +33 -0
  148. package/dist/node_modules/@headlessui/react/dist/components/combobox/combobox.js.map +1 -0
  149. package/dist/node_modules/@headlessui/react/dist/components/keyboard.js +4 -0
  150. package/dist/node_modules/@headlessui/react/dist/components/keyboard.js.map +1 -0
  151. package/dist/node_modules/@headlessui/react/dist/components/transitions/transition.js +19 -0
  152. package/dist/node_modules/@headlessui/react/dist/components/transitions/transition.js.map +1 -0
  153. package/dist/node_modules/@headlessui/react/dist/components/transitions/utils/transition.js +8 -0
  154. package/dist/node_modules/@headlessui/react/dist/components/transitions/utils/transition.js.map +1 -0
  155. package/dist/node_modules/@headlessui/react/dist/hooks/use-computed.js +8 -0
  156. package/dist/node_modules/@headlessui/react/dist/hooks/use-computed.js.map +1 -0
  157. package/dist/node_modules/@headlessui/react/dist/hooks/use-controllable.js +7 -0
  158. package/dist/node_modules/@headlessui/react/dist/hooks/use-controllable.js.map +1 -0
  159. package/dist/node_modules/@headlessui/react/dist/hooks/use-disposables.js +7 -0
  160. package/dist/node_modules/@headlessui/react/dist/hooks/use-disposables.js.map +1 -0
  161. package/dist/node_modules/@headlessui/react/dist/hooks/use-document-event.js +7 -0
  162. package/dist/node_modules/@headlessui/react/dist/hooks/use-document-event.js.map +1 -0
  163. package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js +7 -0
  164. package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js.map +1 -0
  165. package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js +7 -0
  166. package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js.map +1 -0
  167. package/dist/node_modules/@headlessui/react/dist/hooks/use-id.js +9 -0
  168. package/dist/node_modules/@headlessui/react/dist/hooks/use-id.js.map +1 -0
  169. package/dist/node_modules/@headlessui/react/dist/hooks/use-is-mounted.js +7 -0
  170. package/dist/node_modules/@headlessui/react/dist/hooks/use-is-mounted.js.map +1 -0
  171. package/dist/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js +7 -0
  172. package/dist/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js.map +1 -0
  173. package/dist/node_modules/@headlessui/react/dist/hooks/use-latest-value.js +7 -0
  174. package/dist/node_modules/@headlessui/react/dist/hooks/use-latest-value.js.map +1 -0
  175. package/dist/node_modules/@headlessui/react/dist/hooks/use-outside-click.js +10 -0
  176. package/dist/node_modules/@headlessui/react/dist/hooks/use-outside-click.js.map +1 -0
  177. package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js +7 -0
  178. package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js.map +1 -0
  179. package/dist/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js +7 -0
  180. package/dist/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js.map +1 -0
  181. package/dist/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js +7 -0
  182. package/dist/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js.map +1 -0
  183. package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js +7 -0
  184. package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js.map +1 -0
  185. package/dist/node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js +6 -0
  186. package/dist/node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js.map +1 -0
  187. package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js +11 -0
  188. package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js.map +1 -0
  189. package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js +8 -0
  190. package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js.map +1 -0
  191. package/dist/node_modules/@headlessui/react/dist/hooks/use-watch.js +7 -0
  192. package/dist/node_modules/@headlessui/react/dist/hooks/use-watch.js.map +1 -0
  193. package/dist/node_modules/@headlessui/react/dist/hooks/use-window-event.js +7 -0
  194. package/dist/node_modules/@headlessui/react/dist/hooks/use-window-event.js.map +1 -0
  195. package/dist/node_modules/@headlessui/react/dist/internal/hidden.js +6 -0
  196. package/dist/node_modules/@headlessui/react/dist/internal/hidden.js.map +1 -0
  197. package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js +6 -0
  198. package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js.map +1 -0
  199. package/dist/node_modules/@headlessui/react/dist/utils/active-element-history.js +6 -0
  200. package/dist/node_modules/@headlessui/react/dist/utils/active-element-history.js.map +1 -0
  201. package/dist/node_modules/@headlessui/react/dist/utils/bugs.js +4 -0
  202. package/dist/node_modules/@headlessui/react/dist/utils/bugs.js.map +1 -0
  203. package/dist/node_modules/@headlessui/react/dist/utils/calculate-active-index.js +4 -0
  204. package/dist/node_modules/@headlessui/react/dist/utils/calculate-active-index.js.map +1 -0
  205. package/dist/node_modules/@headlessui/react/dist/utils/class-names.js +4 -0
  206. package/dist/node_modules/@headlessui/react/dist/utils/class-names.js.map +1 -0
  207. package/dist/node_modules/@headlessui/react/dist/utils/disposables.js +6 -0
  208. package/dist/node_modules/@headlessui/react/dist/utils/disposables.js.map +1 -0
  209. package/dist/node_modules/@headlessui/react/dist/utils/document-ready.js +4 -0
  210. package/dist/node_modules/@headlessui/react/dist/utils/document-ready.js.map +1 -0
  211. package/dist/node_modules/@headlessui/react/dist/utils/env.js +4 -0
  212. package/dist/node_modules/@headlessui/react/dist/utils/env.js.map +1 -0
  213. package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js +7 -0
  214. package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js.map +1 -0
  215. package/dist/node_modules/@headlessui/react/dist/utils/form.js +4 -0
  216. package/dist/node_modules/@headlessui/react/dist/utils/form.js.map +1 -0
  217. package/dist/node_modules/@headlessui/react/dist/utils/match.js +4 -0
  218. package/dist/node_modules/@headlessui/react/dist/utils/match.js.map +1 -0
  219. package/dist/node_modules/@headlessui/react/dist/utils/micro-task.js +4 -0
  220. package/dist/node_modules/@headlessui/react/dist/utils/micro-task.js.map +1 -0
  221. package/dist/node_modules/@headlessui/react/dist/utils/once.js +4 -0
  222. package/dist/node_modules/@headlessui/react/dist/utils/once.js.map +1 -0
  223. package/dist/node_modules/@headlessui/react/dist/utils/owner.js +6 -0
  224. package/dist/node_modules/@headlessui/react/dist/utils/owner.js.map +1 -0
  225. package/dist/node_modules/@headlessui/react/dist/utils/platform.js +4 -0
  226. package/dist/node_modules/@headlessui/react/dist/utils/platform.js.map +1 -0
  227. package/dist/node_modules/@headlessui/react/dist/utils/render.js +11 -0
  228. package/dist/node_modules/@headlessui/react/dist/utils/render.js.map +1 -0
  229. package/dist/node_modules/@iconify/react/dist/iconify.js +1928 -0
  230. package/dist/node_modules/@iconify/react/dist/iconify.js.map +1 -0
  231. package/dist/node_modules/@radix-ui/number/dist/index.js +7 -0
  232. package/dist/node_modules/@radix-ui/number/dist/index.js.map +1 -0
  233. package/dist/node_modules/@radix-ui/primitive/dist/index.js +12 -0
  234. package/dist/node_modules/@radix-ui/primitive/dist/index.js.map +1 -0
  235. package/dist/node_modules/@radix-ui/react-accordion/dist/index.js +304 -0
  236. package/dist/node_modules/@radix-ui/react-accordion/dist/index.js.map +1 -0
  237. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js +26 -0
  238. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js.map +1 -0
  239. package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js +145 -0
  240. package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js.map +1 -0
  241. package/dist/node_modules/@radix-ui/react-collection/dist/index.js +69 -0
  242. package/dist/node_modules/@radix-ui/react-collection/dist/index.js.map +1 -0
  243. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +19 -0
  244. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +1 -0
  245. package/dist/node_modules/@radix-ui/react-context/dist/index.js +80 -0
  246. package/dist/node_modules/@radix-ui/react-context/dist/index.js.map +1 -0
  247. package/dist/node_modules/@radix-ui/react-dialog/dist/index.js +320 -0
  248. package/dist/node_modules/@radix-ui/react-dialog/dist/index.js.map +1 -0
  249. package/dist/node_modules/@radix-ui/react-direction/dist/index.js +12 -0
  250. package/dist/node_modules/@radix-ui/react-direction/dist/index.js.map +1 -0
  251. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +212 -0
  252. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +1 -0
  253. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +27 -0
  254. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +1 -0
  255. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +208 -0
  256. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +1 -0
  257. package/dist/node_modules/@radix-ui/react-id/dist/index.js +16 -0
  258. package/dist/node_modules/@radix-ui/react-id/dist/index.js.map +1 -0
  259. package/dist/node_modules/@radix-ui/react-popper/dist/index.js +279 -0
  260. package/dist/node_modules/@radix-ui/react-popper/dist/index.js.map +1 -0
  261. package/dist/node_modules/@radix-ui/react-portal/dist/index.js +18 -0
  262. package/dist/node_modules/@radix-ui/react-portal/dist/index.js.map +1 -0
  263. package/dist/node_modules/@radix-ui/react-presence/dist/index.js +120 -0
  264. package/dist/node_modules/@radix-ui/react-presence/dist/index.js.map +1 -0
  265. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js +42 -0
  266. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
  267. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js +221 -0
  268. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +1 -0
  269. package/dist/node_modules/@radix-ui/react-select/dist/index.js +1109 -0
  270. package/dist/node_modules/@radix-ui/react-select/dist/index.js.map +1 -0
  271. package/dist/node_modules/@radix-ui/react-slot/dist/index.js +82 -0
  272. package/dist/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
  273. package/dist/node_modules/@radix-ui/react-tabs/dist/index.js +187 -0
  274. package/dist/node_modules/@radix-ui/react-tabs/dist/index.js.map +1 -0
  275. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +13 -0
  276. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +1 -0
  277. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +47 -0
  278. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +1 -0
  279. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +19 -0
  280. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +1 -0
  281. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +8 -0
  282. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +1 -0
  283. package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js +16 -0
  284. package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js.map +1 -0
  285. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js +41 -0
  286. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js.map +1 -0
  287. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js +35 -0
  288. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js.map +1 -0
  289. package/dist/node_modules/@react-google-maps/api/dist/esm.js +8515 -0
  290. package/dist/node_modules/@react-google-maps/api/dist/esm.js.map +1 -0
  291. package/dist/node_modules/@remix-run/router/dist/router.js +271 -0
  292. package/dist/node_modules/@remix-run/router/dist/router.js.map +1 -0
  293. package/dist/node_modules/@tanstack/react-virtual/dist/esm/index.js +43 -0
  294. package/dist/node_modules/@tanstack/react-virtual/dist/esm/index.js.map +1 -0
  295. package/dist/node_modules/@tanstack/virtual-core/dist/esm/index.js +669 -0
  296. package/dist/node_modules/@tanstack/virtual-core/dist/esm/index.js.map +1 -0
  297. package/dist/node_modules/@tanstack/virtual-core/dist/esm/utils.js +61 -0
  298. package/dist/node_modules/@tanstack/virtual-core/dist/esm/utils.js.map +1 -0
  299. package/dist/node_modules/aria-hidden/dist/es2015/index.js +137 -0
  300. package/dist/node_modules/aria-hidden/dist/es2015/index.js.map +1 -0
  301. package/dist/node_modules/fuse.js/dist/fuse.js +1779 -0
  302. package/dist/node_modules/fuse.js/dist/fuse.js.map +1 -0
  303. package/dist/node_modules/get-nonce/dist/es2015/index.js +9 -0
  304. package/dist/node_modules/get-nonce/dist/es2015/index.js.map +1 -0
  305. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.js +17 -0
  306. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.js.map +1 -0
  307. package/dist/node_modules/react/jsx-runtime.js +12 -0
  308. package/dist/node_modules/react/jsx-runtime.js.map +1 -0
  309. package/dist/node_modules/react-loader-spinner/dist/index.js +134 -83
  310. package/dist/node_modules/react-loader-spinner/dist/index.js.map +1 -1
  311. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js +10 -0
  312. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js.map +1 -0
  313. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +161 -0
  314. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js.map +1 -0
  315. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js +39 -0
  316. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js.map +1 -0
  317. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +22 -0
  318. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js.map +1 -0
  319. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +107 -0
  320. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js.map +1 -0
  321. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js +6 -0
  322. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js.map +1 -0
  323. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js +8 -0
  324. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js.map +1 -0
  325. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js +57 -0
  326. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js.map +1 -0
  327. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +11 -0
  328. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js.map +1 -0
  329. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +32 -0
  330. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js.map +1 -0
  331. package/dist/node_modules/react-router/dist/index.js +280 -0
  332. package/dist/node_modules/react-router/dist/index.js.map +1 -0
  333. package/dist/node_modules/react-router-dom/dist/index.js +201 -0
  334. package/dist/node_modules/react-router-dom/dist/index.js.map +1 -0
  335. package/dist/node_modules/react-style-singleton/dist/es2015/component.js +20 -0
  336. package/dist/node_modules/react-style-singleton/dist/es2015/component.js.map +1 -0
  337. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js +26 -0
  338. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js.map +1 -0
  339. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js +52 -0
  340. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js.map +1 -0
  341. package/dist/node_modules/styled-components/dist/styled-components.browser.esm.js +716 -4
  342. package/dist/node_modules/styled-components/dist/styled-components.browser.esm.js.map +1 -1
  343. package/dist/node_modules/styled-components/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js +5 -7
  344. package/dist/node_modules/styled-components/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js.map +1 -1
  345. package/dist/node_modules/styled-components/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js.map +1 -1
  346. package/dist/node_modules/stylis/src/Enum.js +2 -2
  347. package/dist/node_modules/stylis/src/Enum.js.map +1 -1
  348. package/dist/node_modules/stylis/src/Middleware.js +59 -49
  349. package/dist/node_modules/stylis/src/Middleware.js.map +1 -1
  350. package/dist/node_modules/stylis/src/Parser.js +135 -137
  351. package/dist/node_modules/stylis/src/Parser.js.map +1 -1
  352. package/dist/node_modules/stylis/src/Prefixer.js +187 -135
  353. package/dist/node_modules/stylis/src/Prefixer.js.map +1 -1
  354. package/dist/node_modules/stylis/src/Serializer.js +21 -18
  355. package/dist/node_modules/stylis/src/Serializer.js.map +1 -1
  356. package/dist/node_modules/stylis/src/Tokenizer.js +121 -117
  357. package/dist/node_modules/stylis/src/Tokenizer.js.map +1 -1
  358. package/dist/node_modules/stylis/src/Utility.js +26 -24
  359. package/dist/node_modules/stylis/src/Utility.js.map +1 -1
  360. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +2530 -0
  361. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  362. package/dist/node_modules/tinycolor2/esm/tinycolor.js.map +1 -1
  363. package/dist/node_modules/tslib/tslib.es6.js +13 -1
  364. package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
  365. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js +25 -0
  366. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js.map +1 -0
  367. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +49 -0
  368. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js.map +1 -0
  369. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js +43 -0
  370. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js.map +1 -0
  371. package/dist/node_modules/use-places-autocomplete/dist/index.esm.js +243 -0
  372. package/dist/node_modules/use-places-autocomplete/dist/index.esm.js.map +1 -0
  373. package/dist/node_modules/use-sidecar/dist/es2015/exports.js +22 -0
  374. package/dist/node_modules/use-sidecar/dist/es2015/exports.js.map +1 -0
  375. package/dist/node_modules/use-sidecar/dist/es2015/medium.js +78 -0
  376. package/dist/node_modules/use-sidecar/dist/es2015/medium.js.map +1 -0
  377. package/dist/services/configService.js +15 -0
  378. package/dist/services/configService.js.map +1 -0
  379. package/dist/services/listingAggregatorService.js +37 -0
  380. package/dist/services/listingAggregatorService.js.map +1 -0
  381. package/dist/services/listingEntityService.js +15 -0
  382. package/dist/services/listingEntityService.js.map +1 -0
  383. package/dist/services/listingService.js +30 -0
  384. package/dist/services/listingService.js.map +1 -0
  385. package/dist/styles/index.css +3 -1
  386. package/dist/types/components/containers/accordions/filter-container.d.ts +11 -0
  387. package/dist/types/components/containers/accordions/map-accordion-item-container.d.ts +1 -2
  388. package/dist/types/components/containers/filter/commute-container.d.ts +5 -0
  389. package/dist/types/components/containers/filter/filter-container.d.ts +7 -0
  390. package/dist/types/components/containers/filter/location-container.d.ts +10 -0
  391. package/dist/types/components/containers/filter/points-of-interest-container.d.ts +10 -0
  392. package/dist/types/components/containers/filter/points-of-interest-radio-item-container.d.ts +8 -0
  393. package/dist/types/components/containers/filter/search-container.d.ts +8 -0
  394. package/dist/types/components/containers/list/list-item/list-item-container.d.ts +1 -3
  395. package/dist/types/components/containers/maps/info-window-content-container.d.ts +5 -0
  396. package/dist/types/components/containers/maps/map-container.d.ts +7 -0
  397. package/dist/types/components/containers/maps/map-list-container.d.ts +15 -0
  398. package/dist/types/components/containers/maps/map-marker-container.d.ts +13 -0
  399. package/dist/types/components/modules/buttons/button-group-apply.d.ts +1 -2
  400. package/dist/types/components/modules/jobListing/listing-details.d.ts +1 -2
  401. package/dist/types/components/modules/list/field-mapper-desktop.d.ts +1 -2
  402. package/dist/types/components/modules/list/field-mapper-mobile.d.ts +1 -2
  403. package/dist/types/components/modules/list/list-item/list-item.d.ts +1 -1
  404. package/dist/types/constants/placeTypes.d.ts +8 -0
  405. package/dist/types/contexts/mapContext.d.ts +0 -1
  406. package/dist/types/contexts/mapListContext.d.ts +2 -54
  407. package/dist/types/contexts/placesContext.d.ts +10 -0
  408. package/dist/types/hooks/useList.d.ts +3 -3
  409. package/dist/types/services/configService.d.ts +6 -0
  410. package/dist/types/services/listingAggregatorService.d.ts +9 -0
  411. package/dist/types/services/listingEntityService.d.ts +6 -0
  412. package/dist/types/services/listingService.d.ts +9 -0
  413. package/dist/types/services/recruiterService.d.ts +6 -0
  414. package/dist/types/types/GetListingParams.d.ts +1 -1
  415. package/dist/types/types/ListingEntity.d.ts +1 -2
  416. package/dist/types/types/ListingFields.d.ts +2 -4
  417. package/dist/types/types/Listings.d.ts +1 -0
  418. package/dist/types/types/config/Colors.d.ts +0 -1
  419. package/dist/types/types/config/MapConfig.d.ts +0 -4
  420. package/dist/types/types/config/PointsOfInterestConfig.d.ts +0 -1
  421. package/dist/types/util/filterUtil.d.ts +8 -12
  422. package/dist/types/util/mapIconUtil.d.ts +24 -0
  423. package/dist/types/util/mapUtil.d.ts +3 -3
  424. package/dist/types/util/urlFilterUtil.d.ts +0 -1
  425. package/dist/util/filterUtil.js +122 -413
  426. package/dist/util/filterUtil.js.map +1 -1
  427. package/dist/util/loading.js +3 -3
  428. package/dist/util/loading.js.map +1 -1
  429. package/dist/util/mapUtil.js +25 -43
  430. package/dist/util/mapUtil.js.map +1 -1
  431. package/dist/util/urlFilterUtil.js +1 -5
  432. package/dist/util/urlFilterUtil.js.map +1 -1
  433. package/package.json +17 -66
  434. package/src/apis/hcApi.ts +2 -9
  435. package/src/components/HireControlMap.js +95 -160
  436. package/src/components/containers/accordions/filter-container.js +4 -14
  437. package/src/components/containers/accordions/filter-item-container.js +5 -7
  438. package/src/components/containers/accordions/map-accordion-item-container.js +7 -28
  439. package/src/components/containers/filter/commute-container.js +4 -15
  440. package/src/components/containers/filter/filter-container.js +13 -8
  441. package/src/components/containers/filter/filter-item-container.js +25 -39
  442. package/src/components/containers/filter/location-container.js +4 -9
  443. package/src/components/containers/filter/points-of-interest-container.js +3 -14
  444. package/src/components/containers/filter/points-of-interest-radio-item-container.js +1 -4
  445. package/src/components/containers/filter/search-container.js +2 -8
  446. package/src/components/containers/jobListing/listing-details-container.js +2 -6
  447. package/src/components/containers/list/item-list-container.tsx +13 -22
  448. package/src/components/containers/list/list-item/list-item-container.js +2 -11
  449. package/src/components/containers/maps/info-window-content-container.js +2 -5
  450. package/src/components/containers/maps/map-container.js +14 -92
  451. package/src/components/containers/maps/map-list-container.js +5 -33
  452. package/src/components/containers/maps/map-marker-container.js +2 -4
  453. package/src/components/modules/accordions/filterItem.js +3 -16
  454. package/src/components/modules/accordions/filters.js +4 -19
  455. package/src/components/modules/buttons/button-group-apply.js +9 -14
  456. package/src/components/modules/buttons/pill-wrapper.js +1 -2
  457. package/src/components/modules/dialogs/apply-dialog.js +2 -2
  458. package/src/components/modules/filter/commute.js +5 -7
  459. package/src/components/modules/filter/index.js +50 -137
  460. package/src/components/modules/filter/item.js +3 -16
  461. package/src/components/modules/filter/search.js +1 -7
  462. package/src/components/modules/jobListing/listing-details.js +3 -5
  463. package/src/components/modules/list/field-mapper-desktop.jsx +13 -32
  464. package/src/components/modules/list/field-mapper-mobile.jsx +80 -92
  465. package/src/components/modules/list/header-item.js +1 -1
  466. package/src/components/modules/list/item-list.tsx +5 -2
  467. package/src/components/modules/list/list-item/list-item.jsx +11 -85
  468. package/src/components/modules/maps/map-list.js +1 -1
  469. package/src/components/modules/maps/map.js +18 -30
  470. package/src/components/modules/maps/tabs.js +5 -5
  471. package/src/contexts/mapContext.tsx +18 -45
  472. package/src/contexts/mapListContext.tsx +86 -373
  473. package/src/contexts/placesContext.js +3 -3
  474. package/src/contexts/themeContext.js +3 -8
  475. package/src/hooks/useList.js +1 -3
  476. package/src/index.js +0 -9
  477. package/src/services/configService.ts +16 -0
  478. package/src/services/listingAggregatorService.ts +58 -0
  479. package/src/services/listingEntityService.ts +16 -0
  480. package/src/services/listingService.ts +40 -0
  481. package/src/services/recruiterService.ts +18 -0
  482. package/src/styles/bundle.css +1 -3
  483. package/src/styles/index.css +2 -4
  484. package/src/types/GetListingParams.ts +1 -1
  485. package/src/types/ListingEntity.ts +1 -2
  486. package/src/types/ListingFields.ts +2 -4
  487. package/src/types/Listings.ts +1 -0
  488. package/src/types/config/Colors.ts +0 -1
  489. package/src/types/config/MapConfig.ts +0 -2
  490. package/src/types/config/PointsOfInterestConfig.ts +0 -1
  491. package/src/util/fieldMapper.js +2 -6
  492. package/src/util/filterUtil.js +55 -261
  493. package/src/util/mapUtil.js +41 -59
  494. package/src/util/urlFilterUtil.js +1 -4
  495. package/README.md +0 -323
  496. package/src/components/modules/maps/map.js.bak +0 -67
  497. package/src/components/modules/maps/map.js.bak2 +0 -67
  498. package/src/contexts/componentContext.tsx +0 -226
  499. package/src/styles/components.css +0 -30
  500. package/src/util/algoliaSearchUtil.js +0 -151
  501. package/src/util/twMerge.js +0 -6
@@ -1,9 +1,11 @@
1
- import React, { createContext, useState, useEffect, useContext, useRef, ReactNode, JSX } from 'react';
1
+ import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react';
2
2
 
3
- import { generateFilterOptions, applyFilters, filterListingsByLocation, getFieldValue } from '~/util/filterUtil';
3
+ import { generateFilterOptions, applyFilters, filterListingsByLocation } from '~/util/filterUtil';
4
4
  import { getStorageObject, setStorageObject } from '~/util/localStorageUtil';
5
5
  import { updateURLWithFilters, filtersFromURL } from '~/util/urlFilterUtil';
6
- import { useMap } from '~/contexts/mapContext';
6
+
7
+ import { getListingEntities } from "~/services/listingEntityService";
8
+ import fetchListings from '~/services/listingAggregatorService';
7
9
 
8
10
  import { Listing } from '~/types/Listings';
9
11
  import { ListingEntity } from '~/types/ListingEntity';
@@ -30,7 +32,6 @@ interface MapListContextProps {
30
32
  setMobileTab: (tab: string) => void;
31
33
  mobileTab: string;
32
34
  siteConfig: SiteConfig;
33
- googleMapsApiKey?: string;
34
35
  favorites: number[];
35
36
  resetEntityFilter: () => void;
36
37
  handleSettingFavorites: (favorites: number[] | null) => void;
@@ -38,7 +39,6 @@ interface MapListContextProps {
38
39
  filterByFavorites: boolean;
39
40
  commuteLocation: any | null;
40
41
  setCommuteLocation: (location: any | null) => void;
41
- setMapBounds: (bounds: google.maps.LatLngBounds | null) => void;
42
42
  navigateToDetails: (id: number) => void;
43
43
  navigateToEasyApply: (id: number) => void;
44
44
  Link: React.ComponentType<any>;
@@ -53,30 +53,6 @@ interface MapListContextProps {
53
53
  hiddenFilters?: string[];
54
54
  containerStyle?: any;
55
55
  ExpandListComponent?: React.ComponentType<{ listing: any }> | ((listing: any) => JSX.Element) | null;
56
- mobileDetailsCallback?: ((item: any) => void) | null;
57
- noEntities?: boolean;
58
- filterConfig?: {
59
- hideZeroResults?: boolean;
60
- dynamicCounts?: boolean;
61
- showFavorites?: boolean;
62
- collapsedByDefault?: boolean;
63
- sortAlphabetically?: boolean;
64
- classNames?: {
65
- filterContainer?: string;
66
- filterContent?: string;
67
- filterAccordion?: string;
68
- filterAccordionHeader?: string;
69
- filterAccordionContent?: string;
70
- filterItem?: string;
71
- filterItemLabel?: string;
72
- filterItemCheckbox?: string;
73
- filterItemCount?: string;
74
- searchInput?: string;
75
- resetButton?: string;
76
- showJobsButton?: string;
77
- filterFooter?: string;
78
- };
79
- };
80
56
  }
81
57
 
82
58
  const MapListContext = createContext<MapListContextProps | undefined>(undefined);
@@ -100,7 +76,6 @@ const getQuery = (localStorageKey: string = ''): string | null => {
100
76
  interface MapListProviderProps {
101
77
  children: ReactNode;
102
78
  siteConfig: MapConfig;
103
- googleMapsApiKey?: string;
104
79
  resetFilters: boolean;
105
80
  navigateToDetails: (id: number) => void;
106
81
  navigateToEasyApply: (id: number) => void;
@@ -118,40 +93,13 @@ interface MapListProviderProps {
118
93
  defaultFilters?: Record<string, any>;
119
94
  containerStyle?: any;
120
95
  localStorageKey: string;
121
- getListingEntitiesCallback?: (origin?: string) => Promise<any>;
96
+ getListingEntitiesCallback?: (entityIds: number[], origin?: string) => Promise<ListingEntity[]>;
122
97
  ExpandListComponent?: React.ComponentType<{ listing: Listing }> | ((listing: Listing) => JSX.Element) | null;
123
- mobileDetailsCallback?: ((item: any) => void) | null;
124
- hideMap?: boolean;
125
- hideFilters?: boolean;
126
- noEntities?: boolean;
127
- filterConfig?: {
128
- hideZeroResults?: boolean;
129
- dynamicCounts?: boolean;
130
- showFavorites?: boolean;
131
- collapsedByDefault?: boolean;
132
- sortAlphabetically?: boolean;
133
- classNames?: {
134
- filterContainer?: string;
135
- filterContent?: string;
136
- filterAccordion?: string;
137
- filterAccordionHeader?: string;
138
- filterAccordionContent?: string;
139
- filterItem?: string;
140
- filterItemLabel?: string;
141
- filterItemCheckbox?: string;
142
- filterItemCount?: string;
143
- searchInput?: string;
144
- resetButton?: string;
145
- showJobsButton?: string;
146
- filterFooter?: string;
147
- };
148
- };
149
98
  }
150
99
 
151
100
  export const MapListProvider: React.FC<MapListProviderProps> = ({
152
101
  children,
153
102
  siteConfig,
154
- googleMapsApiKey,
155
103
  resetFilters,
156
104
  navigateToDetails,
157
105
  navigateToEasyApply,
@@ -169,119 +117,41 @@ export const MapListProvider: React.FC<MapListProviderProps> = ({
169
117
  defaultFilters,
170
118
  containerStyle,
171
119
  ExpandListComponent,
172
- mobileDetailsCallback = null,
173
120
  getListingEntitiesCallback,
174
- localStorageKey,
175
- hideMap = false,
176
- hideFilters = false,
177
- noEntities = false,
178
- filterConfig = {
179
- hideZeroResults: false,
180
- dynamicCounts: true,
181
- showFavorites: true,
182
- collapsedByDefault: false,
183
- sortAlphabetically: false,
184
- classNames: {
185
- filterContainer: '',
186
- filterContent: '',
187
- filterAccordion: '',
188
- filterAccordionHeader: '',
189
- filterAccordionContent: '',
190
- filterItem: '',
191
- filterItemLabel: '',
192
- filterItemCheckbox: '',
193
- filterItemCount: '',
194
- searchInput: '',
195
- resetButton: '',
196
- showJobsButton: '',
197
- filterFooter: ''
198
- }
199
- }
121
+ localStorageKey
200
122
  }) => {
201
123
  const firstLoadFilters = () =>{
202
- if (typeof window === 'undefined') {
203
- return getStorageObject(localStorageKey + 'selectedFilters', {}) || {};
204
- }
205
- let urlData = filtersFromURL(window.location);
206
- let urlFilters = urlData?.filters;
207
-
208
- // If ls-ignore=true is in URL, don't load from localStorage
209
- if (urlData?.lsIgnore) {
210
- return urlFilters || {};
211
- }
212
-
124
+ let urlFilters = filtersFromURL(window.location)?.filters;
213
125
  return (setFiltersUrl === true && urlFilters && Object.keys(urlFilters).length > 0) ? urlFilters : getStorageObject(localStorageKey + 'selectedFilters', {}) || {}
214
126
  }
215
-
127
+
216
128
  const firstLoadQuery = (): string | null => {
217
129
  if (resetFilters) return null;
218
- if (typeof window === 'undefined') return getQuery(localStorageKey);
219
130
  // Check URL first
220
131
  const urlData = filtersFromURL(window.location);
221
-
222
- // If ls-ignore=true is in URL, ONLY use URL query (don't fall back to localStorage)
223
- if (urlData?.lsIgnore) {
224
- return urlData?.query || null;
225
- }
226
-
227
- // If setFiltersUrl is enabled and there's a query in URL, use it
228
132
  if (setFiltersUrl === true && urlData?.query) {
229
133
  return urlData.query;
230
134
  }
231
-
232
- // Only fall back to localStorage if there's NO query param in URL
233
- // This prevents localStorage from overriding empty query params
234
- if (setFiltersUrl === true && typeof urlData?.query !== 'undefined') {
235
- return null; // URL has query param but it's empty/null
236
- }
237
-
238
- // Fall back to localStorage only if URL has no query param at all
135
+ // Fall back to localStorage
239
136
  return getQuery(localStorageKey);
240
137
  }
241
-
138
+
242
139
  const [allListings, setAllListings] = useState<Listing[]>([]);
243
140
  const [filteredListings, setFilteredListings] = useState<Listing[]>([]);
244
141
  const [loading, setLoading] = useState<boolean>(false);
245
- const [mapItems, setMapItems] = useState<any>([]);
246
- const [query, setQuery] = useState<string | null>(null);
247
- const [sortSetting, setSortSetting] = useState<{ field: string; type: string }>({ field: 'position', type: 'asc' });
142
+ const [mapItems, setMapItems] = useState<any>(getStorageObject(localStorageKey + 'mapItems', []) || []);
143
+ const [query, setQuery] = useState<string | null>(() => firstLoadQuery());
144
+ const [sortSetting, setSortSetting] = useState<{ field: string; type: string }>(getStorageObject(localStorageKey + 'sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' });
248
145
  const [listingEntities, setListingEntities] = useState<Record<number, ListingEntity> | null>({});
249
146
  const [firstLoad, setFirstLoad] = useState<boolean>(true);
250
- const [commuteLocation, setCommuteLocation] = useState<any | null>(null);
251
- const [selectedFilters, setSelectedFilters] = useState<Record<string, any>>({});
252
- const [hasMounted, setHasMounted] = useState(false);
253
-
254
- // Load from localStorage/URL after mount to avoid hydration mismatch
255
- useEffect(() => {
256
- if (typeof window !== 'undefined') {
257
- const storedMapItems = getStorageObject(localStorageKey + 'mapItems', []) || [];
258
- const storedSortSetting = getStorageObject(localStorageKey + 'sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' };
259
- const storedCommuteLocation = getStorageObject(localStorageKey + 'commuteLocation');
260
-
261
- setMapItems(storedMapItems);
262
- setSortSetting(storedSortSetting);
263
- if (storedCommuteLocation) setCommuteLocation(storedCommuteLocation);
264
-
265
- // Load filters and query
266
- if (!resetFilters) {
267
- setSelectedFilters(firstLoadFilters());
268
- setQuery(firstLoadQuery());
269
- }
270
-
271
- setHasMounted(true);
272
- }
273
- }, [localStorageKey]);
147
+ const [commuteLocation, setCommuteLocation] = useState<any | null>(getStorageObject('commuteLocation'));
148
+ const [selectedFilters, setSelectedFilters] = useState<Record<string, any>>(() => resetFilters ? {} : firstLoadFilters());
274
149
  const [filterOptions, setFilterOptions] = useState<any>();
275
150
  const [recruiters, setRecruiters] = useState<Record<number, Recruiter>>({});
276
151
  const [filterDialogIsOpen, setFilterDialogIsOpen] = useState<boolean>(false);
277
152
  const [mobileTab, setMobileTab] = useState<string>("listTab");
278
153
  const [favorites, setFavorites] = useState<number[]>([]);
279
154
  const [filterByFavorites, setFilterByFavorites] = useState<boolean>(false);
280
- const entitiesInitialized = useRef<boolean>(false);
281
- const [mapBounds, setMapBounds] = useState<google.maps.LatLngBounds | null>(null);
282
- const [baseFilteredListings, setBaseFilteredListings] = useState<Listing[]>([]); // Store listings before bounds filtering
283
- const isApplyingBoundsFilter = useRef<boolean>(false);
284
- const boundsDebounceTimer = useRef<NodeJS.Timeout | null>(null);
285
155
 
286
156
  const setNewFilteredListings = (filteredListings: Listing[]) => {
287
157
  setFilteredListings(filteredListings);
@@ -289,13 +159,11 @@ export const MapListProvider: React.FC<MapListProviderProps> = ({
289
159
 
290
160
  useEffect(() => {
291
161
  if (!sortSetting) return;
292
- if (typeof window !== 'undefined') {
293
- localStorage.setItem(localStorageKey + 'sortSetting', JSON.stringify(sortSetting));
294
- }
162
+ localStorage.setItem(localStorageKey + 'sortSetting', JSON.stringify(sortSetting));
163
+ setNewFilteredListings(filteredListings);
295
164
  }, [sortSetting, localStorageKey]);
296
165
 
297
166
  useEffect(() => {
298
- if (typeof window === 'undefined') return;
299
167
  const loadedFavorites = JSON.parse(localStorage.getItem(localStorageKey + 'favorites') || '[]');
300
168
  setFavorites(loadedFavorites);
301
169
  }, [localStorageKey]);
@@ -304,157 +172,103 @@ export const MapListProvider: React.FC<MapListProviderProps> = ({
304
172
  setStorageObject(localStorageKey + "commuteLocation", commuteLocation);
305
173
  }, [commuteLocation, localStorageKey]);
306
174
 
307
-
308
175
  useEffect(() => {
309
- if (!commuteLocation || noEntities) return;
176
+ if (!commuteLocation) return;
310
177
 
311
178
  async function fetchEntities() {
179
+ const distinctEntityIds = [
180
+ ...new Set(allListings.map(listing => listing.entityId ?? -1))
181
+ ];
312
182
  try {
313
- // Only fetch if callback is provided
314
- if (!getListingEntitiesCallback) {
315
- return;
316
- }
317
-
318
- const fetchedEntities = await getListingEntitiesCallback(`${commuteLocation.lat}, ${commuteLocation.lng}`);
319
- console.log('Fetched entities with travel times:', fetchedEntities);
183
+ console.log(getListingEntitiesCallback);
184
+ console.log("fetching entities")
185
+ const fetchedEntities = getListingEntitiesCallback !== null && getListingEntitiesCallback !== undefined ? await getListingEntitiesCallback(distinctEntityIds,
186
+ `${commuteLocation.lat}, ${commuteLocation.lng}`) : await getListingEntities(
187
+ distinctEntityIds,
188
+ `${commuteLocation.lat}, ${commuteLocation.lng}`
189
+ );
320
190
  setListingEntities(fetchedEntities);
321
-
322
- // Update travelTime on ALL listings (both allListings and filteredListings)
323
- const updatedAllListings = allListings.map(listing => {
191
+ const newFilteredListings: Listing[] = [...filteredListings] ?? [];
192
+ for (let i = 0; i < allListings.length; i++) {
193
+ const listing = newFilteredListings[i];
324
194
  if (
325
195
  listing &&
326
196
  listing.fields &&
327
- listing.fields.entityKey &&
328
- listing.fields.entityKey !== ''
197
+ listing.entityId !== undefined &&
198
+ listing.entityId !== -1
329
199
  ) {
330
- const entityKey = listing.fields.entityKey;
331
- // Try exact match first, then lowercase match for case-insensitive lookup
332
- const travelTime = (fetchedEntities[entityKey] || fetchedEntities[entityKey.toLowerCase()])?.travelTime;
333
- if (travelTime !== undefined) {
334
- return {
335
- ...listing,
336
- fields: {
337
- ...listing.fields,
338
- travelTime
339
- }
340
- };
200
+ const entityId = listing.entityId;
201
+ const travelTime = fetchedEntities[entityId]?.travelTime;
202
+
203
+ if (travelTime !== undefined && listing.fields) {
204
+ listing.fields.travelTime = travelTime;
341
205
  }
342
206
  }
343
- return listing;
344
- });
345
-
346
- console.log('Updated listings with travel times:', updatedAllListings.slice(0, 2));
347
- setAllListings(updatedAllListings);
207
+ }
348
208
  } catch (error) {
349
209
  console.error("Failed to fetch listing entities:", error);
350
210
  }
351
211
  }
352
212
 
353
213
  fetchEntities();
354
- }, [commuteLocation, noEntities]);
214
+ }, [commuteLocation, allListings, siteConfig.companyId]);
355
215
 
356
- // Set listingEntities from passed-in entities (only once on initial load)
357
- // Entities should be an object: { "rochester, mn": {...}, "albuquerque, nm": {...} }
358
- // Note: Commute location changes will fetch updated entities with travel times via separate useEffect
359
216
  useEffect(() => {
360
- if (!entities || entitiesInitialized.current) return;
361
-
362
- entitiesInitialized.current = true;
363
-
364
- // Handle both object (production format) and array (for backwards compatibility)
365
- if (Array.isArray(entities)) {
366
- // Convert array to object
367
- const entitiesObj: Record<string, any> = {};
368
- entities.forEach((entity: any) => {
369
- if (entity.entityKey) {
370
- entitiesObj[entity.entityKey.toLowerCase()] = entity;
371
- }
372
- });
373
- console.log('Set listingEntities from entities array:', entitiesObj);
374
- setListingEntities(entitiesObj);
375
- } else if (typeof entities === 'object') {
376
- // Normalize keys to lowercase for production format
377
- const normalizedEntities: Record<string, any> = {};
378
- Object.keys(entities).forEach(key => {
379
- normalizedEntities[key.toLowerCase()] = entities[key];
380
- });
381
- console.log('Set listingEntities from entities object:', normalizedEntities);
382
- setListingEntities(normalizedEntities);
383
- }
384
- // eslint-disable-next-line react-hooks/exhaustive-deps
385
- }, []); // Empty deps - only run once on mount, entities are static data
386
-
387
- // Set listings from passed-in data
388
- useEffect(() => {
389
- if (!listings || listings.length === 0) {
390
- setLoading(false);
391
- return;
392
- }
393
-
394
- setLoading(true);
217
+ const handleFetchListings = async () => {
218
+ if (!getStorageObject(localStorageKey + 'listings') ?? [].length) {
219
+ setLoading(true);
220
+ }
395
221
 
396
- try {
397
- // Apply default filters if provided
398
- let processedListings = listings;
399
- if (defaultFilters) {
400
- processedListings = listings.filter(listing => {
401
- return Object.keys(defaultFilters).every(filterKey => {
402
- const filterValues = defaultFilters[filterKey as keyof typeof defaultFilters];
403
- const listingValue = getFieldValue(listing, filterKey);
404
- return filterValues.includes(listingValue);
222
+ try {
223
+ const {
224
+ listingsResult,
225
+ fetchedEntities,
226
+ distinctItems
227
+ } = await fetchListings(commuteLocation, entities, listings, getListingEntitiesCallback);
228
+ if (defaultFilters) {
229
+ const filteredListings = listingsResult.filter(listing => {
230
+ if (!listing.fields) return false;
231
+
232
+ return Object.keys(defaultFilters).every(filterKey => {
233
+ const filterValues = defaultFilters[filterKey as keyof typeof defaultFilters];
234
+ const listingValue = listing.fields ? listing.fields[filterKey as keyof typeof listing.fields] : null;
235
+ return filterValues.includes(listingValue);
236
+ });
405
237
  });
406
- });
407
- }
408
-
409
- setAllListings(processedListings);
410
- console.log('Set allListings to', processedListings.length, 'items');
411
-
412
- // Map items will be set when entities are processed
413
- // For now, just set empty object - will be populated when entities arrive
414
- setMapItems({});
415
- } catch (error) {
416
- console.error('Error processing listings:', error);
417
- }
418
-
419
- setLoading(false);
420
- }, [listings]);
421
-
422
- useEffect(() => {
423
- const processListings = async () => {
424
- // Don't process if allListings hasn't been loaded yet
425
- if (allListings.length === 0) {
426
- console.log('processListings: Skipping - allListings is empty');
427
- return;
428
- }
429
-
430
- let filteredListings: Listing[];
431
- let tempSelectedFilters = selectedFilters;
432
- let tempQuery = query;
238
+ setAllListings(filteredListings);
239
+ } else {
240
+ setAllListings(listingsResult);
241
+ }
242
+ setListingEntities(fetchedEntities);
243
+ setMapItems(distinctItems);
244
+ } catch (error) {
245
+ console.log(error);
246
+ }
247
+ setLoading(false);
248
+ };
249
+ handleFetchListings();
250
+ }, [query, siteConfig, commuteLocation]);
433
251
 
434
- console.log('processListings: Running with query:', tempQuery, 'and', allListings.length, 'listings');
252
+ useEffect(() => {
253
+ const processListings = () => {
254
+ let filteredListings: Listing[];
255
+ let tempSelectedFilters = selectedFilters;
256
+ let tempQuery = query;
435
257
 
436
- const { mapItems, filteredListings: tempFilteredListings } = await applyFilters(
258
+ const { mapItems, filteredListings: tempFilteredListings } = applyFilters(
437
259
  allListings,
438
260
  tempSelectedFilters,
439
261
  tempQuery,
440
262
  listingEntities,
441
263
  favorites,
442
- siteConfig,
443
- firstLoad
264
+ siteConfig
444
265
  );
445
266
  filteredListings = tempFilteredListings;
446
267
 
447
268
  if (filterByFavorites) {
448
269
  filteredListings = filteredListings.filter((x: Listing) => favorites.includes(x.id));
449
270
  }
450
-
451
- // Store the base filtered listings (before bounds filtering)
452
- setBaseFilteredListings(filteredListings);
453
-
454
- // Batch state updates together
455
271
  setNewFilteredListings(filteredListings);
456
- setMapItems(mapItems);
457
-
458
272
  if (firstLoad && tempSelectedFilters) {
459
273
  // Update URL with filters if needed
460
274
  } else if (Object.keys(tempSelectedFilters).length === 0 && !firstLoad) {
@@ -462,42 +276,16 @@ useEffect(() => {
462
276
  } else if (!firstLoad) {
463
277
  setStorageObject(localStorageKey + 'selectedFilters', tempSelectedFilters);
464
278
  }
465
- if(setFiltersUrl === true && typeof window !== 'undefined')
279
+ if(setFiltersUrl === true)
466
280
  {
467
281
  updateURLWithFilters(tempSelectedFilters, window.location, tempQuery, handleUrlUpdate);
468
282
  }
469
- if (typeof window !== 'undefined') {
470
- tempQuery != null ? localStorage.setItem(localStorageKey + 'query', tempQuery) : localStorage.removeItem(localStorageKey + 'query');
471
- }
283
+ tempQuery != null ? localStorage.setItem(localStorageKey + 'query', tempQuery) : localStorage.removeItem(localStorageKey + 'query');
284
+ setMapItems(mapItems);
472
285
 
473
286
  if (tempSelectedFilters) {
474
287
  const keys = Object.keys(tempSelectedFilters);
475
288
  const lastKey = keys[keys.length - 1];
476
-
477
- // Ensure all filterConfig properties have values
478
- const normalizedFilterConfig = {
479
- hideZeroResults: filterConfig?.hideZeroResults ?? false,
480
- dynamicCounts: filterConfig?.dynamicCounts ?? true,
481
- showFavorites: filterConfig?.showFavorites ?? true,
482
- collapsedByDefault: filterConfig?.collapsedByDefault ?? false,
483
- sortAlphabetically: filterConfig?.sortAlphabetically ?? false,
484
- classNames: {
485
- filterContainer: filterConfig?.classNames?.filterContainer ?? '',
486
- filterContent: filterConfig?.classNames?.filterContent ?? '',
487
- filterAccordion: filterConfig?.classNames?.filterAccordion ?? '',
488
- filterAccordionHeader: filterConfig?.classNames?.filterAccordionHeader ?? '',
489
- filterAccordionContent: filterConfig?.classNames?.filterAccordionContent ?? '',
490
- filterItem: filterConfig?.classNames?.filterItem ?? '',
491
- filterItemLabel: filterConfig?.classNames?.filterItemLabel ?? '',
492
- filterItemCheckbox: filterConfig?.classNames?.filterItemCheckbox ?? '',
493
- filterItemCount: filterConfig?.classNames?.filterItemCount ?? '',
494
- searchInput: filterConfig?.classNames?.searchInput ?? '',
495
- resetButton: filterConfig?.classNames?.resetButton ?? '',
496
- showJobsButton: filterConfig?.classNames?.showJobsButton ?? '',
497
- filterFooter: filterConfig?.classNames?.filterFooter ?? ''
498
- }
499
- };
500
-
501
289
  const options = generateFilterOptions(
502
290
  filteredListings,
503
291
  allListings,
@@ -505,8 +293,7 @@ useEffect(() => {
505
293
  filterOptions,
506
294
  lastKey,
507
295
  favorites,
508
- tempSelectedFilters,
509
- normalizedFilterConfig
296
+ tempSelectedFilters
510
297
  );
511
298
  if (options) {
512
299
  setFilterOptions(options);
@@ -516,76 +303,7 @@ useEffect(() => {
516
303
  };
517
304
 
518
305
  processListings();
519
- }, [selectedFilters, query, filterByFavorites, favorites, allListings]);
520
-
521
- // Separate effect for map bounds filtering with debouncing to avoid infinite loops
522
- useEffect(() => {
523
- // Clear any existing timer
524
- if (boundsDebounceTimer.current) {
525
- clearTimeout(boundsDebounceTimer.current);
526
- }
527
-
528
- // Don't filter if feature is disabled or no bounds available
529
- if (!siteConfig.filterByMapBounds || !mapBounds || baseFilteredListings.length === 0) {
530
- return;
531
- }
532
-
533
- // Prevent re-entrant calls
534
- if (isApplyingBoundsFilter.current) {
535
- return;
536
- }
537
-
538
- // Debounce the bounds filtering by 300ms
539
- boundsDebounceTimer.current = setTimeout(() => {
540
- isApplyingBoundsFilter.current = true;
541
-
542
- console.log('Applying map bounds filter to', baseFilteredListings.length, 'listings');
543
-
544
- const boundsFilteredListings = baseFilteredListings.filter((listing: Listing) => {
545
- const lat = listing.mapDetails?.latitude;
546
- const lng = listing.mapDetails?.longitude;
547
- if (!lat || !lng) return false;
548
- return mapBounds.contains({ lat, lng });
549
- });
550
-
551
- console.log('After bounds filter:', boundsFilteredListings.length, 'listings remain');
552
-
553
- // Use a flag to prevent this from triggering processListings
554
- setFilteredListings(boundsFilteredListings);
555
-
556
- // Reset the flag after a short delay
557
- setTimeout(() => {
558
- isApplyingBoundsFilter.current = false;
559
- }, 100);
560
- }, 300);
561
-
562
- return () => {
563
- if (boundsDebounceTimer.current) {
564
- clearTimeout(boundsDebounceTimer.current);
565
- }
566
- };
567
- }, [mapBounds, siteConfig.filterByMapBounds]);
568
-
569
- // When baseFilteredListings changes, apply bounds filter if enabled
570
- useEffect(() => {
571
- if (!siteConfig.filterByMapBounds || !mapBounds || baseFilteredListings.length === 0) {
572
- // If bounds filtering is disabled, just set the base listings
573
- if (!siteConfig.filterByMapBounds && baseFilteredListings.length > 0) {
574
- setFilteredListings(baseFilteredListings);
575
- }
576
- return;
577
- }
578
-
579
- // If bounds filtering is enabled, trigger it
580
- const boundsFilteredListings = baseFilteredListings.filter((listing: Listing) => {
581
- const lat = listing.mapDetails?.latitude;
582
- const lng = listing.mapDetails?.longitude;
583
- if (!lat || !lng) return false;
584
- return mapBounds.contains({ lat, lng });
585
- });
586
-
587
- setFilteredListings(boundsFilteredListings);
588
- }, [baseFilteredListings]);
306
+ }, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);
589
307
 
590
308
  const handleFilterListingsByLocation = (selectedLocation: any) => {
591
309
  const { filteredListings } = filterListingsByLocation(
@@ -603,7 +321,6 @@ useEffect(() => {
603
321
  }
604
322
 
605
323
  const handleSettingFavorites = (newFavorites: number[] | null) => {
606
- if (typeof window === 'undefined') return;
607
324
  if (newFavorites == null) {
608
325
  localStorage.removeItem(localStorageKey + 'favorites');
609
326
  } else {
@@ -632,7 +349,6 @@ useEffect(() => {
632
349
  setMobileTab,
633
350
  mobileTab,
634
351
  siteConfig,
635
- googleMapsApiKey,
636
352
  favorites,
637
353
  handleSettingFavorites,
638
354
  resetEntityFilter,
@@ -640,7 +356,6 @@ useEffect(() => {
640
356
  filterByFavorites,
641
357
  commuteLocation,
642
358
  setCommuteLocation,
643
- setMapBounds,
644
359
  navigateToDetails,
645
360
  navigateToEasyApply,
646
361
  Link,
@@ -654,9 +369,7 @@ useEffect(() => {
654
369
  defaultFilters,
655
370
  hiddenFilters,
656
371
  containerStyle,
657
- ExpandListComponent,
658
- mobileDetailsCallback, noEntities,
659
- filterConfig
372
+ ExpandListComponent
660
373
  }}>
661
374
  {children}
662
375
  </MapListContext.Provider>
@@ -10,7 +10,7 @@ const PlacesContext = createContext();
10
10
 
11
11
  export const usePlaces = () => useContext(PlacesContext);
12
12
 
13
- export const PlacesProvider = ({ children, placeMappings, markerColors, additionalMapMarkers, googleMapsApiKey, showAtZoomLevel = 12 }) => {
13
+ export const PlacesProvider = ({ children, placeMappings, markerColors, additionalMapMarkers, googleMapsApiKey }) => {
14
14
  const { selectedPlaces, zoom, center } = useMap();
15
15
  const [poiMarkers, setPoiMarkers] = useState({ markers: [], icon: null });
16
16
  const [currentCenter, setCurrentCenter] = useState(center);
@@ -34,7 +34,7 @@ export const PlacesProvider = ({ children, placeMappings, markerColors, addition
34
34
  }, [currentZoom]);
35
35
 
36
36
  useEffect(() => {
37
- if (!selectedPlaces || selectedPlaces.length === 0 || !center || currentZoom < showAtZoomLevel) {
37
+ if (!selectedPlaces || (!selectedPlaces.length > 0) || !center || currentZoom < 12) {
38
38
  setPoiMarkers({ markers: [], icon: null });
39
39
  return;
40
40
  }
@@ -82,7 +82,7 @@ export const PlacesProvider = ({ children, placeMappings, markerColors, addition
82
82
  };
83
83
 
84
84
  fetchPlaces();
85
- }, [selectedPlaces, currentZoom, currentCenter, placeMappings, markerColors.placeMarkers, googleMapsApiKey, getRadiusForZoom, center, showAtZoomLevel]);
85
+ }, [selectedPlaces, currentZoom, currentCenter, placeMappings, markerColors.placeMarkers, googleMapsApiKey, getRadiusForZoom, center]);
86
86
 
87
87
  return (
88
88
  <PlacesContext.Provider value={{