@abcagency/hc-ui-components 1.1.1 → 1.2.1

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 (234) hide show
  1. package/.editorconfig +12 -0
  2. package/.eslintrc +144 -0
  3. package/.prettierignore +3 -0
  4. package/dist/_virtual/_rollupPluginBabelHelpers.js +516 -0
  5. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  6. package/dist/apis/hcApi.js +189 -0
  7. package/dist/apis/hcApi.js.map +1 -0
  8. package/dist/clientToken.js +10 -0
  9. package/dist/clientToken.js.map +1 -0
  10. package/dist/components/HireControlMap.js +130 -0
  11. package/dist/components/HireControlMap.js.map +1 -0
  12. package/dist/components/modules/accordions/MapAccordionItem.js +76 -0
  13. package/dist/components/modules/accordions/MapAccordionItem.js.map +1 -0
  14. package/dist/components/modules/accordions/default.js +108 -0
  15. package/dist/components/modules/accordions/default.js.map +1 -0
  16. package/dist/components/modules/accordions/filterItem.js +50 -0
  17. package/dist/components/modules/accordions/filterItem.js.map +1 -0
  18. package/dist/components/modules/accordions/filters.js +46 -0
  19. package/dist/components/modules/accordions/filters.js.map +1 -0
  20. package/dist/components/modules/buttons/button-group-apply.js +84 -0
  21. package/dist/components/modules/buttons/button-group-apply.js.map +1 -0
  22. package/dist/components/modules/buttons/commute-pill.js +18 -0
  23. package/dist/components/modules/buttons/commute-pill.js.map +1 -0
  24. package/dist/components/modules/buttons/default.js +145 -0
  25. package/dist/components/modules/buttons/default.js.map +1 -0
  26. package/dist/components/modules/buttons/items-pill.js +23 -0
  27. package/dist/components/modules/buttons/items-pill.js.map +1 -0
  28. package/dist/components/modules/buttons/pill-wrapper.js +20 -0
  29. package/dist/components/modules/buttons/pill-wrapper.js.map +1 -0
  30. package/dist/components/modules/buttons/show-all-button.js +39 -0
  31. package/dist/components/modules/buttons/show-all-button.js.map +1 -0
  32. package/dist/components/modules/cards/default.js +102 -0
  33. package/dist/components/modules/cards/default.js.map +1 -0
  34. package/dist/components/modules/cards/filter.js +38 -0
  35. package/dist/components/modules/cards/filter.js.map +1 -0
  36. package/dist/components/modules/dialogs/apply-dialog.js +46 -0
  37. package/dist/components/modules/dialogs/apply-dialog.js.map +1 -0
  38. package/dist/components/modules/filter/commute.js +184 -0
  39. package/dist/components/modules/filter/commute.js.map +1 -0
  40. package/dist/components/modules/filter/index.js +79 -0
  41. package/dist/components/modules/filter/index.js.map +1 -0
  42. package/dist/components/modules/filter/item.js +71 -0
  43. package/dist/components/modules/filter/item.js.map +1 -0
  44. package/dist/components/modules/filter/location.js +68 -0
  45. package/dist/components/modules/filter/location.js.map +1 -0
  46. package/dist/components/modules/filter/points-of-interest.js +38 -0
  47. package/dist/components/modules/filter/points-of-interest.js.map +1 -0
  48. package/dist/components/modules/filter/radio-item.js +46 -0
  49. package/dist/components/modules/filter/radio-item.js.map +1 -0
  50. package/dist/components/modules/filter/search.js +83 -0
  51. package/dist/components/modules/filter/search.js.map +1 -0
  52. package/dist/components/modules/filter/sort.js +93 -0
  53. package/dist/components/modules/filter/sort.js.map +1 -0
  54. package/dist/components/modules/grid.js +39 -0
  55. package/dist/components/modules/grid.js.map +1 -0
  56. package/dist/components/modules/icon.js +23 -0
  57. package/dist/components/modules/icon.js.map +1 -0
  58. package/dist/components/modules/jobListing/listing-details.js +69 -0
  59. package/dist/components/modules/jobListing/listing-details.js.map +1 -0
  60. package/dist/components/modules/maps/info-window-card.js +14 -0
  61. package/dist/components/modules/maps/info-window-card.js.map +1 -0
  62. package/dist/components/modules/maps/info-window-content.js +39 -0
  63. package/dist/components/modules/maps/info-window-content.js.map +1 -0
  64. package/dist/components/modules/maps/list/field-mapper.js +88 -0
  65. package/dist/components/modules/maps/list/field-mapper.js.map +1 -0
  66. package/dist/components/modules/maps/list/header-item.js +59 -0
  67. package/dist/components/modules/maps/list/header-item.js.map +1 -0
  68. package/dist/components/modules/maps/list/header.js +37 -0
  69. package/dist/components/modules/maps/list/header.js.map +1 -0
  70. package/dist/components/modules/maps/list/index.js +93 -0
  71. package/dist/components/modules/maps/list/index.js.map +1 -0
  72. package/dist/components/modules/maps/list/item-expand-card/index.js +16 -0
  73. package/dist/components/modules/maps/list/item-expand-card/index.js.map +1 -0
  74. package/dist/components/modules/maps/list/item-expand-card/recruiter-contact-nav.js +38 -0
  75. package/dist/components/modules/maps/list/item-expand-card/recruiter-contact-nav.js.map +1 -0
  76. package/dist/components/modules/maps/list/item-expand-card/recruiter-details.js +40 -0
  77. package/dist/components/modules/maps/list/item-expand-card/recruiter-details.js.map +1 -0
  78. package/dist/components/modules/maps/list/item-expand-card/recruiter-headshot.js +20 -0
  79. package/dist/components/modules/maps/list/item-expand-card/recruiter-headshot.js.map +1 -0
  80. package/dist/components/modules/maps/list/list-item/index.js +98 -0
  81. package/dist/components/modules/maps/list/list-item/index.js.map +1 -0
  82. package/dist/components/modules/maps/map-list.js +57 -0
  83. package/dist/components/modules/maps/map-list.js.map +1 -0
  84. package/dist/components/modules/maps/map-marker.js +85 -0
  85. package/dist/components/modules/maps/map-marker.js.map +1 -0
  86. package/dist/components/modules/maps/map.js +201 -0
  87. package/dist/components/modules/maps/map.js.map +1 -0
  88. package/dist/components/modules/maps/place-marker.js +37 -0
  89. package/dist/components/modules/maps/place-marker.js.map +1 -0
  90. package/dist/components/modules/maps/tabs.js +84 -0
  91. package/dist/components/modules/maps/tabs.js.map +1 -0
  92. package/dist/constants/placeTypes.js +11 -0
  93. package/dist/constants/placeTypes.js.map +1 -0
  94. package/dist/contexts/mapContext.js +133 -0
  95. package/dist/contexts/mapContext.js.map +1 -0
  96. package/dist/contexts/mapListContext.js +278 -0
  97. package/dist/contexts/mapListContext.js.map +1 -0
  98. package/dist/contexts/placesContext.js +152 -0
  99. package/dist/contexts/placesContext.js.map +1 -0
  100. package/dist/hooks/useList.js +119 -0
  101. package/dist/hooks/useList.js.map +1 -0
  102. package/dist/index.js +2 -4536
  103. package/dist/index.js.map +1 -0
  104. package/dist/services/_virtual/_rollupPluginBabelHelpers.js +372 -0
  105. package/dist/services/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  106. package/dist/services/apis/hcApi.js +189 -0
  107. package/dist/services/apis/hcApi.js.map +1 -0
  108. package/dist/services/clientToken.js +7 -0
  109. package/dist/services/clientToken.js.map +1 -0
  110. package/dist/services/configService.js +33 -0
  111. package/dist/services/configService.js.map +1 -0
  112. package/dist/services/googlePlacesNearbyService.js +61 -0
  113. package/dist/services/googlePlacesNearbyService.js.map +1 -0
  114. package/dist/services/listingAggregatorService.js +56 -0
  115. package/dist/services/listingAggregatorService.js.map +1 -0
  116. package/dist/services/listingEntityService.js +36 -0
  117. package/dist/services/listingEntityService.js.map +1 -0
  118. package/dist/services/listingService.js +60 -112
  119. package/dist/services/listingService.js.map +1 -0
  120. package/dist/services/recruiterService.js +36 -0
  121. package/dist/services/recruiterService.js.map +1 -0
  122. package/dist/services/styles/index.css +3 -0
  123. package/dist/styles/index.css +3 -0
  124. package/dist/util/filterUtil.js +213 -0
  125. package/dist/util/filterUtil.js.map +1 -0
  126. package/dist/util/loading.js +16 -0
  127. package/dist/util/loading.js.map +1 -0
  128. package/dist/util/localStorageUtil.js +32 -0
  129. package/dist/util/localStorageUtil.js.map +1 -0
  130. package/dist/util/mapIconUtil.js +73 -0
  131. package/dist/util/mapIconUtil.js.map +1 -0
  132. package/dist/util/mapUtil.js +76 -0
  133. package/dist/util/mapUtil.js.map +1 -0
  134. package/dist/util/sortUtil.js +33 -0
  135. package/dist/util/sortUtil.js.map +1 -0
  136. package/dist/util/stringUtils.js +9 -0
  137. package/dist/util/stringUtils.js.map +1 -0
  138. package/jsconfig.json +7 -0
  139. package/package.json +51 -38
  140. package/postcss.config.js +13 -15
  141. package/{src/tailwind/preset.default.js → preset.default.js} +15 -15
  142. package/rollup.config.mjs +87 -0
  143. package/src/apis/hcApi.js +93 -87
  144. package/src/clientToken.js +9 -9
  145. package/src/components/HireControlMap.js +121 -0
  146. package/src/components/modules/accordions/MapAccordionItem.js +72 -69
  147. package/src/components/modules/accordions/default.js +171 -173
  148. package/src/components/modules/accordions/filterItem.js +53 -53
  149. package/src/components/modules/accordions/filters.js +47 -44
  150. package/src/components/modules/buttons/button-group-apply.js +113 -85
  151. package/src/components/modules/buttons/commute-pill.js +22 -21
  152. package/src/components/modules/buttons/default.js +196 -196
  153. package/src/components/modules/buttons/items-pill.js +32 -31
  154. package/src/components/modules/buttons/pill-wrapper.js +27 -26
  155. package/src/components/modules/buttons/show-all-button.js +20 -20
  156. package/src/components/modules/cards/default.js +167 -168
  157. package/src/components/modules/cards/filter.js +56 -55
  158. package/src/components/modules/dialogs/apply-dialog.js +48 -47
  159. package/src/components/modules/filter/commute.js +148 -151
  160. package/src/components/modules/filter/index.js +87 -86
  161. package/src/components/modules/filter/item.js +76 -77
  162. package/src/components/modules/filter/location.js +71 -69
  163. package/src/components/modules/filter/points-of-interest.js +44 -43
  164. package/src/components/modules/filter/radio-item.js +53 -51
  165. package/src/components/modules/filter/search.js +92 -91
  166. package/src/components/modules/filter/sort.js +83 -83
  167. package/src/components/modules/grid.js +55 -56
  168. package/src/components/modules/icon.js +33 -33
  169. package/src/components/modules/jobListing/listing-details.js +94 -88
  170. package/src/components/modules/maps/info-window-card.js +17 -17
  171. package/src/components/modules/maps/info-window-content.js +58 -60
  172. package/src/components/modules/maps/list/field-mapper.js +112 -111
  173. package/src/components/modules/maps/list/header-item.js +91 -90
  174. package/src/components/modules/maps/list/header.js +47 -46
  175. package/src/components/modules/maps/list/index.js +107 -104
  176. package/src/components/modules/maps/list/item-expand-card/index.js +22 -21
  177. package/src/components/modules/maps/list/item-expand-card/recruiter-contact-nav.js +50 -48
  178. package/src/components/modules/maps/list/item-expand-card/recruiter-details.js +68 -67
  179. package/src/components/modules/maps/list/item-expand-card/recruiter-headshot.js +22 -22
  180. package/src/components/modules/maps/list/list-item/index.js +134 -133
  181. package/src/components/modules/maps/map-list.js +74 -73
  182. package/src/components/modules/maps/map-marker.js +86 -84
  183. package/src/components/modules/maps/map.js +229 -226
  184. package/src/components/modules/maps/place-marker.js +1 -1
  185. package/src/components/modules/maps/tabs.js +81 -79
  186. package/src/constants/placeTypes.js +8 -8
  187. package/src/contexts/mapContext.js +20 -19
  188. package/src/contexts/mapListContext.js +20 -15
  189. package/src/contexts/placesContext.js +4 -0
  190. package/src/hooks/useList.js +12 -10
  191. package/src/index.js +3 -103
  192. package/src/services/configService.js +16 -16
  193. package/src/services/googlePlacesNearbyService.js +33 -33
  194. package/src/services/listingAggregatorService.js +5 -4
  195. package/src/services/listingEntityService.js +2 -1
  196. package/src/services/listingService.js +27 -28
  197. package/src/services/recruiterService.js +17 -17
  198. package/src/styles/{globals.css → index.css} +23 -23
  199. package/src/util/arrayUtil.js +3 -3
  200. package/src/util/fieldMapper.js +22 -19
  201. package/src/util/filterUtil.js +19 -19
  202. package/src/util/loading.js +17 -17
  203. package/src/util/localStorageUtil.js +26 -26
  204. package/src/util/mapIconUtil.js +3 -3
  205. package/src/util/sortUtil.js +32 -32
  206. package/src/util/stringUtils.js +6 -6
  207. package/{src/tailwind/tailwind.config.js → tailwind.config.js} +126 -127
  208. package/dist/globals.css +0 -3
  209. package/dist/output.css +0 -784
  210. package/dist/services/globals.css +0 -3
  211. package/rollup.config.js +0 -68
  212. package/src/components/layout/footer.js +0 -34
  213. package/src/components/layout/header.js +0 -23
  214. package/src/components/layout/layout.js +0 -36
  215. package/src/components/modules/animations/slidein.js +0 -41
  216. package/src/components/modules/navigation/nav-link.js +0 -65
  217. package/src/components/modules/navigation/navbar.js +0 -106
  218. package/src/components/modules/navigation/skip-link.js +0 -21
  219. package/src/components/modules/navigation/social.js +0 -29
  220. package/src/components/modules/sections/default.js +0 -59
  221. package/src/components/modules/sections/sectionContext.js +0 -4
  222. package/src/hooks/useClickOutside.js +0 -16
  223. package/src/hooks/useEventListener.js +0 -25
  224. package/src/hooks/useEventTracker.js +0 -19
  225. package/src/hooks/useRefScrollProgress.js +0 -24
  226. package/src/hooks/useScript.js +0 -63
  227. package/src/hooks/useScrollDirection.js +0 -39
  228. package/src/hooks/useSectionTracker.js +0 -95
  229. package/src/hooks/useUserAgent.js +0 -43
  230. package/src/hooks/useWindowSize.js +0 -28
  231. package/src/index.css +0 -25
  232. package/src/styles/fonts.js +0 -0
  233. package/src/util/page-head.js +0 -62
  234. package/src/util/provider.js +0 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/modules/maps/list/list-item/index.js"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport Grid from '~/components/modules/grid';\nimport Icon from '~/components/modules/icon';\nimport FieldMapper from '~/components/modules/maps/list/field-mapper';\n\nimport { useMapList } from '~/contexts/mapListContext';\n\nconst ListItem = forwardRef(\n\t(\n\t\t{\n\t\t\tisActive,\n\t\t\tbodyClassName,\n\t\t\tclassName,\n\t\t\titem,\n\t\t\tfieldsShown,\n\t\t\tspecialFeatures,\n\t\t\tonItemSelected,\n\t\t\tshowMap,\n\t\t\tsetMobileTab,\n\t\t\tfavorites,\n\t\t\tsetFavorites,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst { siteConfig } = useMapList();\n\t\tconst mapPinColor = siteConfig.colors.primary.replace(\"#\", \"\");\n\n\t\tconst handleClick = () => {\n\t\t\tif (onItemSelected) {\n\t\t\t\tonItemSelected(item);\n\t\t\t}\n\t\t};\n\n\t\tlet isFavorite = favorites.includes(item.id);\n\n\t\tconst handleFavouriteClick = event => {\n\t\t\tevent.stopPropagation();\n\t\t\tlet updatedFavorites;\n\t\t\tif (isFavorite) {\n\t\t\t\tupdatedFavorites = favorites.filter(fav => fav !== item.id);\n\t\t\t} else {\n\t\t\t\tupdatedFavorites = [...favorites, item.id];\n\t\t\t}\n\t\t\tisFavorite = !isFavorite;\n\t\t\tsetFavorites(updatedFavorites);\n\n\t\t};\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\tonClick={handleClick}\n\t\t\t\tclassName={`\n\t\t\t\t\thc-group hc-relative hc-flex md:hc-flex-col hc-w-full md:hc-pl-4 hc-text-left hc-bg-clip-border hc-border hc-border-transparent hc-break-words hc-overflow-hidden hc-cursor-pointer hc-transition-colors hover:hc-bg-uiAccent/5 focus:hover:hc-bg-uiAccent/5\n\t\t\t\t\t${isActive ? \"hc-bg-uiAccent/5 hc-border-secondary hc-border\" : \"hc-text-uiText hc-bg-white\"}\n\t\t\t\t\t${className ?? \"\"}\n `}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns=\"hc-grid-flow-col hc-auto-cols-fr\"\n\t\t\t\t\tgap=\"hc-gap-2\"\n\t\t\t\t\tisAnimated={false}\n\t\t\t\t\tclassName={`\n\t\t\t\t\t\thc-block md:hc-grid hc-p-2 hc-ps-4 hc-w-full hc-grow hc-leading-tight hc-text-sm md:hc-text-xs lg:hc-text-sm\n\t\t\t\t\t\t${bodyClassName ?? \"\"}\n\t\t\t\t\t`}\n\t\t\t\t>\n\t\t\t\t\t<Grid.Item className=\"hc-hidden md:hc-block md:hc-absolute md:hc-left-1.5 hc-top-1.5\">\n\t\t\t\t\t\t<span className=\"hc-sr-only\">Expand row</span>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\ticon=\"fluent-emoji-high-contrast:plus\"\n\t\t\t\t\t\t\tsize=\"hc-size-2.5\"\n\t\t\t\t\t\t\tclassName={`\n\t\t\t\t\t\t\t\thc-opacity-0 hc-text-uiText/60 hc-transition group-hover:hc-opacity-100 group-active:hc-opacity-100\n\t\t\t\t\t\t\t\t${isActive ? \"hc-opacity-100 hc-rotate-45\" : \"\"}\n\t\t\t\t\t\t\t`}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t</Grid.Item>\n\n\t\t\t\t\t<FieldMapper\n\t\t\t\t\t\titem={item}\n\t\t\t\t\t\tfieldsShown={fieldsShown}\n\t\t\t\t\t\tspecialFeatures={specialFeatures}\n\t\t\t\t\t\tisFavorite={isFavorite}\n\t\t\t\t\t\thandleFavouriteClick={handleFavouriteClick}\n\t\t\t\t\t/>\n\t\t\t\t\t<Grid.Item\n\t\t\t\t\t\tkey={\"favorites\"}\n\t\t\t\t\t\tclassName=\"hc-hidden md:hc-block hc-col-span-1\"\n\t\t\t\t\t>\n\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\ticon={isFavorite ? \"mdi:heart\" : \"mdi:heart-outline\"}\n\t\t\t\t\t\t\tsize=\"hc-size-3.5\"\n\t\t\t\t\t\t\ticonClasses={isFavorite ? \"hc-text-primary\" : \"\"}\n\t\t\t\t\t\t\ttitle={!isFavorite ? 'Add job to favorites' : 'Remove job from favorites'}\n\t\t\t\t\t\t\tclassName={`\n\t\t\t\t\t\t\thc-pr-2 hc-transition-opacity hc-duration-300 hc-cursor-pointer hc-opacity-100\"\n\t\t\t\t\t\t`}\n\t\t\t\t\t\t\tonClick={e => handleFavouriteClick(e)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid.Item>\n\t\t\t\t</Grid>\n\n\t\t\t\t{showMap && (\n\t\t\t\t\t<div onClick={() => { setMobileTab(\"mapTab\"); handleClick(); }} className=\"md:hc-hidden hc-w-2/5 sm:hc-w-1/3 hc-p-1.5 hc-my-1 hc-bg-uiAccent/5 hc-border hc-border-uiAccent/10 hc-rounded-sm\">\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={`https://maps.googleapis.com/maps/api/staticmap?scale=2&center=${item.mapDetails?.latitude},${item.mapDetails?.longitude}&zoom=10&size=240x180&maptype=roadmap&markers=color:0x${mapPinColor}%7Clabel:•%7C${item.mapDetails?.latitude},${item.mapDetails?.longitude}&key=${process.env.GOOGLE_MAPS_API_KEY}`}\n\t\t\t\t\t\t\talt={`Map of location for ${item.fields.position}`}\n\t\t\t\t\t\t\tclassName=\"hc-w-full hc-h-full hc-object-cover\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</button>\n\t\t);\n\t},\n);\n\nListItem.displayName = \"ListItem\";\n\nexport default React.memo(ListItem, (prevProps, nextProps) => {\n\treturn (\n\t\t(prevProps.isActive === nextProps.isActive ||\n\t\t\tprevProps.isActive !== nextProps.isActive) &&\n\t\tprevProps.bodyClassName === nextProps.bodyClassName &&\n\t\tprevProps.className === nextProps.className &&\n\t\tprevProps.fieldsShown === nextProps.fieldsShown &&\n\t\tprevProps.item.id === nextProps.item.id\n\t);\n});\n"],"names":["ListItem","forwardRef","_ref","ref","_item$mapDetails","_item$mapDetails2","_item$mapDetails3","_item$mapDetails4","isActive","bodyClassName","className","item","fieldsShown","specialFeatures","onItemSelected","showMap","setMobileTab","favorites","setFavorites","props","_objectWithoutProperties","_excluded","_useMapList","useMapList","siteConfig","mapPinColor","colors","primary","replace","handleClick","isFavorite","includes","id","handleFavouriteClick","event","stopPropagation","updatedFavorites","filter","fav","concat","_toConsumableArray","React","createElement","_extends","onClick","Grid","columns","gap","isAnimated","Item","Icon","icon","size","FieldMapper","key","iconClasses","title","e","src","mapDetails","latitude","longitude","alt","fields","position","displayName","memo","prevProps","nextProps"],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+ import ItemsList from './list/index.js';
3
+ import Map from './map.js';
4
+ import MapTabs from './tabs.js';
5
+ import Filter from '../filter/index.js';
6
+
7
+ var MapList = function MapList(_ref) {
8
+ var _ref$loading = _ref.loading,
9
+ loading = _ref$loading === void 0 ? false : _ref$loading,
10
+ mapDetails = _ref.mapDetails,
11
+ markerConfigs = _ref.markerConfigs,
12
+ itemExpandedContent = _ref.itemExpandedContent,
13
+ fieldsShown = _ref.fieldsShown,
14
+ specialFeatures = _ref.specialFeatures,
15
+ fieldNames = _ref.fieldNames,
16
+ showMap = _ref.showMap,
17
+ placeMappings = _ref.placeMappings;
18
+ var listProps = {
19
+ fieldsShown: fieldsShown,
20
+ fieldNames: fieldNames,
21
+ itemExpandedContent: itemExpandedContent,
22
+ loading: loading,
23
+ showMap: showMap,
24
+ specialFeatures: specialFeatures
25
+ };
26
+ var mapProps = {
27
+ mapDetails: mapDetails,
28
+ markerConfigs: markerConfigs,
29
+ placeMappings: placeMappings,
30
+ clusterGridSize: 60,
31
+ showMap: showMap
32
+ };
33
+
34
+ // useEffect(() => {
35
+ // if (selectedItem !== null) {
36
+ // trackEvent("Map", "View Location", selectedItem[titlePropName]);
37
+ // }
38
+ // // eslint-disable-next-line react-hooks/exhaustive-deps
39
+ // }, []);
40
+ var map = /*#__PURE__*/React.createElement(Map, mapProps);
41
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
42
+ className: "\n\t\t\t\t\t".concat(showMap == false ? "md:hc-grid-rows-[100vh]" : "md:hc-grid-rows-[50vh_50vh]", "\n\t\t\t\t\tmd:hc-grid md:hc-pt-4 hc-overflow-hidden hc-relative bg-gray-100\n\t\t\t\t")
43
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ItemsList, listProps)), /*#__PURE__*/React.createElement("div", null, showMap && map)), /*#__PURE__*/React.createElement("div", {
44
+ className: "md:hc-hidden"
45
+ }, /*#__PURE__*/React.createElement(MapTabs, {
46
+ showMap: showMap,
47
+ list: /*#__PURE__*/React.createElement(ItemsList, listProps),
48
+ map: !loading && showMap && map,
49
+ filter: /*#__PURE__*/React.createElement(Filter, {
50
+ showMap: showMap,
51
+ className: "md:hc-hidden"
52
+ })
53
+ })));
54
+ };
55
+
56
+ export { MapList as default };
57
+ //# sourceMappingURL=map-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-list.js","sources":["../../../../src/components/modules/maps/map-list.js"],"sourcesContent":["import React from 'react';\n\nimport List from '~/components/modules/maps/list';\nimport Map from '~/components/modules/maps/map';\nimport Tabs from '~/components/modules/maps/tabs';\nimport Filter from '~/components/modules/filter';\n\nconst MapList = ({\n\tloading = false,\n\tmapDetails,\n\tmarkerConfigs,\n\titemExpandedContent,\n\tfieldsShown,\n\tspecialFeatures,\n\tfieldNames,\n\tshowMap,\n\tplaceMappings\n}) => {\n\n\tconst listProps = {\n\t\tfieldsShown: fieldsShown,\n\t\tfieldNames: fieldNames,\n\t\titemExpandedContent: itemExpandedContent,\n\t\tloading: loading,\n\t\tshowMap: showMap,\n\t\tspecialFeatures: specialFeatures\n\t};\n\n\tconst mapProps = {\n\t\tmapDetails: mapDetails,\n\t\tmarkerConfigs: markerConfigs,\n\t\tplaceMappings: placeMappings,\n\t\tclusterGridSize: 60,\n\t\tshowMap: showMap\n\t};\n\n\t// useEffect(() => {\n\t// \tif (selectedItem !== null) {\n\t// \t\ttrackEvent(\"Map\", \"View Location\", selectedItem[titlePropName]);\n\t// \t}\n\t// \t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, []);\n\tconst map = <Map {...mapProps} />;\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={`\n\t\t\t\t\t${showMap == false ? \"md:hc-grid-rows-[100vh]\" : \"md:hc-grid-rows-[50vh_50vh]\"}\n\t\t\t\t\tmd:hc-grid md:hc-pt-4 hc-overflow-hidden hc-relative bg-gray-100\n\t\t\t\t`}\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<List {...listProps} />\n\t\t\t\t</div>\n\t\t\t\t<div>{showMap && map}</div>\n\t\t\t</div>\n\t\t\t<div className=\"md:hc-hidden\">\n\t\t\t\t<Tabs\n\t\t\t\t\tshowMap={showMap}\n\t\t\t\t\tlist={<List {...listProps} />}\n\t\t\t\t\tmap={!loading && showMap && map}\n\t\t\t\t\tfilter={\n\t\t\t\t\t\t<Filter\n\t\t\t\t\t\t\tshowMap={showMap}\n\t\t\t\t\t\t\tclassName=\"md:hc-hidden\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default MapList;\n"],"names":["MapList","_ref","_ref$loading","loading","mapDetails","markerConfigs","itemExpandedContent","fieldsShown","specialFeatures","fieldNames","showMap","placeMappings","listProps","mapProps","clusterGridSize","map","React","createElement","Map","Fragment","className","concat","List","Tabs","list","filter","Filter"],"mappings":";;;;;;AAOA,IAAMA,OAAO,GAAG,SAAVA,OAAOA,CAAAC,IAAA,EAUP;AAAA,EAAA,IAAAC,YAAA,GAAAD,IAAA,CATLE,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,YAAA;IACfE,UAAU,GAAAH,IAAA,CAAVG,UAAU;IACVC,aAAa,GAAAJ,IAAA,CAAbI,aAAa;IACbC,mBAAmB,GAAAL,IAAA,CAAnBK,mBAAmB;IACnBC,WAAW,GAAAN,IAAA,CAAXM,WAAW;IACXC,eAAe,GAAAP,IAAA,CAAfO,eAAe;IACfC,UAAU,GAAAR,IAAA,CAAVQ,UAAU;IACVC,OAAO,GAAAT,IAAA,CAAPS,OAAO;IACPC,aAAa,GAAAV,IAAA,CAAbU,aAAa,CAAA;AAGb,EAAA,IAAMC,SAAS,GAAG;AACjBL,IAAAA,WAAW,EAAEA,WAAW;AACxBE,IAAAA,UAAU,EAAEA,UAAU;AACtBH,IAAAA,mBAAmB,EAAEA,mBAAmB;AACxCH,IAAAA,OAAO,EAAEA,OAAO;AAChBO,IAAAA,OAAO,EAAEA,OAAO;AAChBF,IAAAA,eAAe,EAAEA,eAAAA;GACjB,CAAA;AAED,EAAA,IAAMK,QAAQ,GAAG;AAChBT,IAAAA,UAAU,EAAEA,UAAU;AACtBC,IAAAA,aAAa,EAAEA,aAAa;AAC5BM,IAAAA,aAAa,EAAEA,aAAa;AAC5BG,IAAAA,eAAe,EAAE,EAAE;AACnBJ,IAAAA,OAAO,EAAEA,OAAAA;GACT,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;EACA,IAAMK,GAAG,gBAAGC,KAAA,CAAAC,aAAA,CAACC,GAAG,EAAKL,QAAW,CAAC,CAAA;EACjC,oBACCG,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAG,QAAA,EAAA,IAAA,eACCH,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IACCG,SAAS,EAAA,cAAA,CAAAC,MAAA,CACNX,OAAO,IAAI,KAAK,GAAG,yBAAyB,GAAG,6BAA6B,EAAA,wFAAA,CAAA;GAI/EM,eAAAA,KAAA,CAAAC,aAAA,CACCD,KAAAA,EAAAA,IAAAA,eAAAA,KAAA,CAAAC,aAAA,CAACK,SAAI,EAAKV,SAAY,CAClB,CAAC,eACNI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA,IAAA,EAAMP,OAAO,IAAIK,GAAS,CACtB,CAAC,eACNC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKG,IAAAA,SAAS,EAAC,cAAA;AAAc,GAAA,eAC5BJ,KAAA,CAAAC,aAAA,CAACM,OAAI,EAAA;AACJb,IAAAA,OAAO,EAAEA,OAAQ;IACjBc,IAAI,eAAER,KAAA,CAAAC,aAAA,CAACK,SAAI,EAAKV,SAAY,CAAE;AAC9BG,IAAAA,GAAG,EAAE,CAACZ,OAAO,IAAIO,OAAO,IAAIK,GAAI;AAChCU,IAAAA,MAAM,eACLT,KAAA,CAAAC,aAAA,CAACS,MAAM,EAAA;AACNhB,MAAAA,OAAO,EAAEA,OAAQ;AACjBU,MAAAA,SAAS,EAAC,cAAA;KACV,CAAA;GAEF,CACG,CACJ,CAAC,CAAA;AAEL;;;;"}
@@ -0,0 +1,85 @@
1
+ import React, { useRef, useEffect } from 'react';
2
+ import { MarkerF, InfoWindow } from '@react-google-maps/api';
3
+ import CardInfoWindow from './info-window-card.js';
4
+ import InfoWindowContent from './info-window-content.js';
5
+ import { useMap } from '../../../contexts/mapContext.js';
6
+ import { useMapList } from '../../../contexts/mapListContext.js';
7
+
8
+ var MapMarker = function MapMarker(_ref) {
9
+ var item = _ref.item,
10
+ markerRefs = _ref.markerRefs,
11
+ infoWindowClasses = _ref.infoWindowClasses,
12
+ markerClickHandler = _ref.markerClickHandler,
13
+ clusterer = _ref.clusterer,
14
+ markerIconSelected = _ref.markerIconSelected,
15
+ markerIcon = _ref.markerIcon,
16
+ selectedLocation = _ref.selectedLocation,
17
+ setMapInteracted = _ref.setMapInteracted;
18
+ var _useMap = useMap(),
19
+ setLocation = _useMap.setLocation,
20
+ commuteLocation = _useMap.commuteLocation;
21
+ var isSelected = item.id === (selectedLocation === null || selectedLocation === void 0 ? void 0 : selectedLocation.id);
22
+ var markerRef = useRef(null);
23
+ var _useMapList = useMapList(),
24
+ handleFilterListingsByLocation = _useMapList.handleFilterListingsByLocation;
25
+ useEffect(function () {
26
+ markerRefs.current[item.id] = markerRef.current;
27
+ }, []);
28
+ var onMarkerClick = function onMarkerClick() {
29
+ setMapInteracted(true);
30
+ markerClickHandler(item);
31
+ };
32
+ var getInfoWindow = function getInfoWindow() {
33
+ if (!isSelected || !item || !item.id || !selectedLocation) {
34
+ return;
35
+ }
36
+ //Direct dom removal of empty info windows
37
+ document.querySelectorAll("div.gm-style-iw.gm-style-iw-c").forEach(function (x) {
38
+ if (!x.innerHTML.includes(item.id)) x.parentElement.remove();
39
+ });
40
+ return /*#__PURE__*/React.createElement(InfoWindow, {
41
+ position: {
42
+ lat: item.latitude,
43
+ lng: item.longitude
44
+ },
45
+ anchor: markerRefs.current[item.id],
46
+ onCloseClick: function onCloseClick() {
47
+ setMapInteracted(true);
48
+ setLocation(null);
49
+ },
50
+ options: {
51
+ maxWidth: 400
52
+ }
53
+ }, /*#__PURE__*/React.createElement(CardInfoWindow, {
54
+ className: infoWindowClasses,
55
+ id: item.id,
56
+ content: /*#__PURE__*/React.createElement(InfoWindowContent, {
57
+ item: item,
58
+ commuteLocation: commuteLocation,
59
+ filterListingsByLocation: function filterListingsByLocation() {
60
+ return handleFilterListingsByLocation(selectedLocation);
61
+ }
62
+ })
63
+ }));
64
+ };
65
+ return /*#__PURE__*/React.createElement(MarkerF, {
66
+ key: item.id,
67
+ position: {
68
+ lat: item.latitude,
69
+ lng: item.longitude
70
+ },
71
+ title: item.name,
72
+ options: {
73
+ icon: isSelected ? markerIconSelected : markerIcon
74
+ },
75
+ zIndex: isSelected ? 9999 : 1,
76
+ onLoad: function onLoad(marker) {
77
+ return markerRef.current = marker;
78
+ },
79
+ onClick: onMarkerClick,
80
+ clusterer: clusterer
81
+ }, isSelected && getInfoWindow());
82
+ };
83
+
84
+ export { MapMarker as default };
85
+ //# sourceMappingURL=map-marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-marker.js","sources":["../../../../src/components/modules/maps/map-marker.js"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { MarkerF, InfoWindow } from '@react-google-maps/api';\n\nimport InfoWindowCard from '~/components/modules/maps/info-window-card';\nimport InfoWindowContent from \"~/components/modules/maps/info-window-content\";\n\nimport { useMap } from \"~/contexts/mapContext\";\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nconst MapMarker = ({\n\titem,\n\tmarkerRefs,\n\tinfoWindowClasses,\n\tmarkerClickHandler,\n\tclusterer,\n\tmarkerIconSelected,\n\tmarkerIcon,\n\tselectedLocation,\n\tsetMapInteracted\n}) => {\n\tconst { setLocation, commuteLocation } = useMap();\n\tconst isSelected = item.id === selectedLocation?.id;\n\tconst markerRef = useRef(null);\n\n\tconst {\n\t\thandleFilterListingsByLocation\n\t} = useMapList();\n\n\tuseEffect(() => {\n\t\tmarkerRefs.current[item.id] = markerRef.current;\n\t}, []);\n\n\tconst onMarkerClick = () => {\n\t\tsetMapInteracted(true);\n\t\tmarkerClickHandler(item);\n\t};\n\n\tconst getInfoWindow = () => {\n\t\tif (!isSelected || !item || !item.id || !selectedLocation) {\n\t\t\treturn;\n\t\t}\n\t\t//Direct dom removal of empty info windows\n\t\tdocument.querySelectorAll(\"div.gm-style-iw.gm-style-iw-c\").forEach(x => { if (!x.innerHTML.includes(item.id)) x.parentElement.remove(); });\n\t\treturn (\n\t\t\t<InfoWindow\n\t\t\t\tposition={{ lat: item.latitude, lng: item.longitude }}\n\t\t\t\tanchor={markerRefs.current[item.id]}\n\t\t\t\tonCloseClick={() => {\n\t\t\t\t\tsetMapInteracted(true);\n\t\t\t\t\tsetLocation(null);\n\t\t\t\t}}\n\t\t\t\toptions={{ maxWidth: 400 }}\n\t\t\t>\n\t\t\t\t<InfoWindowCard\n\t\t\t\t\tclassName={infoWindowClasses}\n\t\t\t\t\tid={item.id}\n\t\t\t\t\tcontent={<InfoWindowContent\n\t\t\t\t\t\titem={item}\n\t\t\t\t\t\tcommuteLocation={commuteLocation}\n\t\t\t\t\t\tfilterListingsByLocation={() =>\n\t\t\t\t\t\t\thandleFilterListingsByLocation(selectedLocation)\n\t\t\t\t\t\t}\n\t\t\t\t\t/>}\n\t\t\t\t/>\n\t\t\t</InfoWindow>\n\t\t);\n\t};\n\treturn (\n\t\t<MarkerF\n\t\t\tkey={item.id}\n\t\t\tposition={{ lat: item.latitude, lng: item.longitude }}\n\t\t\ttitle={item.name}\n\t\t\toptions={{\n\t\t\t\ticon: isSelected ? markerIconSelected : markerIcon\n\t\t\t}}\n\t\t\tzIndex={isSelected ? 9999 : 1}\n\t\t\tonLoad={marker => (markerRef.current = marker)}\n\t\t\tonClick={onMarkerClick}\n\t\t\tclusterer={clusterer}\n\t\t>\n\t\t\t{isSelected && getInfoWindow()}\n\t\t</MarkerF>\n\t);\n};\n\nexport default MapMarker;\n"],"names":["MapMarker","_ref","item","markerRefs","infoWindowClasses","markerClickHandler","clusterer","markerIconSelected","markerIcon","selectedLocation","setMapInteracted","_useMap","useMap","setLocation","commuteLocation","isSelected","id","markerRef","useRef","_useMapList","useMapList","handleFilterListingsByLocation","useEffect","current","onMarkerClick","getInfoWindow","document","querySelectorAll","forEach","x","innerHTML","includes","parentElement","remove","React","createElement","InfoWindow","position","lat","latitude","lng","longitude","anchor","onCloseClick","options","maxWidth","InfoWindowCard","className","content","InfoWindowContent","filterListingsByLocation","MarkerF","key","title","name","icon","zIndex","onLoad","marker","onClick"],"mappings":";;;;;;;AASA,IAAMA,SAAS,GAAG,SAAZA,SAASA,CAAAC,IAAA,EAUT;AAAA,EAAA,IATLC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IACVC,iBAAiB,GAAAH,IAAA,CAAjBG,iBAAiB;IACjBC,kBAAkB,GAAAJ,IAAA,CAAlBI,kBAAkB;IAClBC,SAAS,GAAAL,IAAA,CAATK,SAAS;IACTC,kBAAkB,GAAAN,IAAA,CAAlBM,kBAAkB;IAClBC,UAAU,GAAAP,IAAA,CAAVO,UAAU;IACVC,gBAAgB,GAAAR,IAAA,CAAhBQ,gBAAgB;IAChBC,gBAAgB,GAAAT,IAAA,CAAhBS,gBAAgB,CAAA;AAEhB,EAAA,IAAAC,OAAA,GAAyCC,MAAM,EAAE;IAAzCC,WAAW,GAAAF,OAAA,CAAXE,WAAW;IAAEC,eAAe,GAAAH,OAAA,CAAfG,eAAe,CAAA;AACpC,EAAA,IAAMC,UAAU,GAAGb,IAAI,CAACc,EAAE,MAAKP,gBAAgB,KAAA,IAAA,IAAhBA,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhBA,gBAAgB,CAAEO,EAAE,CAAA,CAAA;AACnD,EAAA,IAAMC,SAAS,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;AAE9B,EAAA,IAAAC,WAAA,GAEIC,UAAU,EAAE;IADfC,8BAA8B,GAAAF,WAAA,CAA9BE,8BAA8B,CAAA;AAG/BC,EAAAA,SAAS,CAAC,YAAM;IACfnB,UAAU,CAACoB,OAAO,CAACrB,IAAI,CAACc,EAAE,CAAC,GAAGC,SAAS,CAACM,OAAO,CAAA;GAC/C,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,GAAS;IAC3Bd,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACtBL,kBAAkB,CAACH,IAAI,CAAC,CAAA;GACxB,CAAA;AAED,EAAA,IAAMuB,aAAa,GAAG,SAAhBA,aAAaA,GAAS;AAC3B,IAAA,IAAI,CAACV,UAAU,IAAI,CAACb,IAAI,IAAI,CAACA,IAAI,CAACc,EAAE,IAAI,CAACP,gBAAgB,EAAE;AAC1D,MAAA,OAAA;AACD,KAAA;AACA;IACAiB,QAAQ,CAACC,gBAAgB,CAAC,+BAA+B,CAAC,CAACC,OAAO,CAAC,UAAAC,CAAC,EAAI;AAAE,MAAA,IAAI,CAACA,CAAC,CAACC,SAAS,CAACC,QAAQ,CAAC7B,IAAI,CAACc,EAAE,CAAC,EAAEa,CAAC,CAACG,aAAa,CAACC,MAAM,EAAE,CAAA;AAAE,KAAC,CAAC,CAAA;AAC1I,IAAA,oBACCC,KAAA,CAAAC,aAAA,CAACC,UAAU,EAAA;AACVC,MAAAA,QAAQ,EAAE;QAAEC,GAAG,EAAEpC,IAAI,CAACqC,QAAQ;QAAEC,GAAG,EAAEtC,IAAI,CAACuC,SAAAA;OAAY;MACtDC,MAAM,EAAEvC,UAAU,CAACoB,OAAO,CAACrB,IAAI,CAACc,EAAE,CAAE;MACpC2B,YAAY,EAAE,SAAAA,YAAAA,GAAM;QACnBjC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACtBG,WAAW,CAAC,IAAI,CAAC,CAAA;OAChB;AACF+B,MAAAA,OAAO,EAAE;AAAEC,QAAAA,QAAQ,EAAE,GAAA;AAAI,OAAA;AAAE,KAAA,eAE3BX,KAAA,CAAAC,aAAA,CAACW,cAAc,EAAA;AACdC,MAAAA,SAAS,EAAE3C,iBAAkB;MAC7BY,EAAE,EAAEd,IAAI,CAACc,EAAG;AACZgC,MAAAA,OAAO,eAAEd,KAAA,CAAAC,aAAA,CAACc,iBAAiB,EAAA;AAC1B/C,QAAAA,IAAI,EAAEA,IAAK;AACXY,QAAAA,eAAe,EAAEA,eAAgB;QACjCoC,wBAAwB,EAAE,SAAAA,wBAAA,GAAA;UAAA,OACzB7B,8BAA8B,CAACZ,gBAAgB,CAAC,CAAA;AAAA,SAAA;OAEjD,CAAA;AAAE,KACH,CACU,CAAC,CAAA;GAEd,CAAA;AACD,EAAA,oBACCyB,KAAA,CAAAC,aAAA,CAACgB,OAAO,EAAA;IACPC,GAAG,EAAElD,IAAI,CAACc,EAAG;AACbqB,IAAAA,QAAQ,EAAE;MAAEC,GAAG,EAAEpC,IAAI,CAACqC,QAAQ;MAAEC,GAAG,EAAEtC,IAAI,CAACuC,SAAAA;KAAY;IACtDY,KAAK,EAAEnD,IAAI,CAACoD,IAAK;AACjBV,IAAAA,OAAO,EAAE;AACRW,MAAAA,IAAI,EAAExC,UAAU,GAAGR,kBAAkB,GAAGC,UAAAA;KACvC;AACFgD,IAAAA,MAAM,EAAEzC,UAAU,GAAG,IAAI,GAAG,CAAE;IAC9B0C,MAAM,EAAE,SAAAA,MAAAA,CAAAC,MAAM,EAAA;AAAA,MAAA,OAAKzC,SAAS,CAACM,OAAO,GAAGmC,MAAM,CAAA;KAAE;AAC/CC,IAAAA,OAAO,EAAEnC,aAAc;AACvBlB,IAAAA,SAAS,EAAEA,SAAAA;AAAU,GAAA,EAEpBS,UAAU,IAAIU,aAAa,EACpB,CAAC,CAAA;AAEZ;;;;"}
@@ -0,0 +1,201 @@
1
+ import React, { useRef, useEffect } from 'react';
2
+ import { GoogleMap, MarkerClustererF } from '@react-google-maps/api';
3
+ import MapMarker from './map-marker.js';
4
+ import PlaceMarker from './place-marker.js';
5
+ import ShowAllButton from '../buttons/show-all-button.js';
6
+ import { usePlaces } from '../../../contexts/placesContext.js';
7
+ import { useMap } from '../../../contexts/mapContext.js';
8
+ import { useMapList } from '../../../contexts/mapListContext.js';
9
+ import { pinIcon, markerIcon, markerIconSelected } from '../../../util/mapIconUtil.js';
10
+ import { clusterOptions } from '../../../util/mapUtil.js';
11
+
12
+ var Map = function Map(_ref) {
13
+ var markerConfigs = _ref.markerConfigs,
14
+ infoWindowClasses = _ref.infoWindowClasses,
15
+ _ref$clusterGridSize = _ref.clusterGridSize,
16
+ clusterGridSize = _ref$clusterGridSize === void 0 ? 60 : _ref$clusterGridSize;
17
+ var _useMap = useMap(),
18
+ location = _useMap.location,
19
+ zoom = _useMap.zoom,
20
+ center = _useMap.center;
21
+ _useMap.commuteLocation;
22
+ var selectLocationEntity = _useMap.selectLocationEntity,
23
+ setLocation = _useMap.setLocation,
24
+ mapInteracted = _useMap.mapInteracted,
25
+ setMapInteracted = _useMap.setMapInteracted;
26
+ var _useMapList = useMapList(),
27
+ mapItems = _useMapList.mapItems;
28
+ _useMapList.handleFilterListingsByLocation;
29
+ var filteredListings = _useMapList.filteredListings,
30
+ setSelectedFilters = _useMapList.setSelectedFilters,
31
+ setQuery = _useMapList.setQuery;
32
+ var mapRef = useRef();
33
+ var markerRefs = useRef({});
34
+ var mapContainerRef = useRef(null);
35
+ var _usePlaces = usePlaces(),
36
+ poiMarkers = _usePlaces.poiMarkers,
37
+ setCurrentCenter = _usePlaces.setCurrentCenter,
38
+ currentCenter = _usePlaces.currentCenter,
39
+ setCurrentZoom = _usePlaces.setCurrentZoom,
40
+ currentZoom = _usePlaces.currentZoom,
41
+ selectedPlaceMarker = _usePlaces.selectedPlaceMarker,
42
+ setSelectedPlaceMarker = _usePlaces.setSelectedPlaceMarker,
43
+ placesWindow = _usePlaces.placesWindow,
44
+ setPlacesWindow = _usePlaces.setPlacesWindow;
45
+ var onIdle = function onIdle() {
46
+ if (!currentCenter || !mapRef.current) return;
47
+ var newCenter = mapRef.current.getCenter().toJSON();
48
+ var newZoom = mapRef.current.zoom;
49
+ setCurrentCenter(newCenter);
50
+ if (newZoom != currentZoom) {
51
+ setCurrentZoom(newZoom);
52
+ }
53
+ };
54
+ useEffect(function () {
55
+ if (mapContainerRef.current) {
56
+ var handleScroll = function handleScroll() {
57
+ setMapInteracted(true);
58
+ };
59
+ var mapContainerRefCurrent = mapContainerRef.current;
60
+ mapContainerRef.current.addEventListener('wheel', handleScroll);
61
+ return function () {
62
+ return mapContainerRefCurrent.removeEventListener('wheel', handleScroll);
63
+ };
64
+ }
65
+ }, [mapContainerRef.current]);
66
+ useEffect(function () {
67
+ if (mapRef.current) {
68
+ var mapInstance = mapRef.current;
69
+ var dragStartListener = mapInstance.addListener('dragstart', function () {
70
+ return setMapInteracted(true);
71
+ });
72
+ var mouseDownListener = mapInstance.addListener('mousedown', function () {
73
+ return setMapInteracted(true);
74
+ });
75
+ return function () {
76
+ google.maps.event.removeListener(dragStartListener);
77
+ google.maps.event.removeListener(mouseDownListener);
78
+ };
79
+ }
80
+ }, [mapRef.current, mapContainerRef.current]);
81
+ useEffect(function () {
82
+ if ((mapItems && mapItems.length > 0 || poiMarkers.length > 0) && mapRef.current) {
83
+ fitBounds(mapRef.current);
84
+ }
85
+ }, [mapItems, mapRef.current, location]);
86
+ useEffect(function () {
87
+ if (mapItems && mapItems.length > 0 || poiMarkers.length > 0 && mapRef.current && mapInteracted) {
88
+ fitBounds(mapRef.current, true);
89
+ }
90
+ if (mapRef.current) {
91
+ var currZoom = mapRef.current.zoom;
92
+ var setZoomVal = currZoom < 13 ? currZoom : 12;
93
+ mapRef.current.setZoom(setZoomVal);
94
+ }
95
+ }, [filteredListings]);
96
+ useEffect(function () {
97
+ if (!mapRef.current || !location || mapInteracted) return;
98
+ mapRef.current.panTo(new google.maps.LatLng(location.latitude, location.longitude));
99
+ if (mapRef.current) {
100
+ var setZoomVal = zoom < 13 ? zoom : 12;
101
+ mapRef.current.setZoom(setZoomVal);
102
+ }
103
+ }, [location, zoom, mapRef.current]);
104
+ var fitBounds = function fitBounds(map) {
105
+ var overload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
106
+ if ((mapInteracted === false || overload) && mapItems != null) {
107
+ var bounds = new window.google.maps.LatLngBounds();
108
+ mapItems.forEach(function (item) {
109
+ bounds.extend(new google.maps.LatLng(item.latitude, item.longitude));
110
+ });
111
+ if (!map) return;
112
+ map.fitBounds(bounds);
113
+ }
114
+ if (mapRef.current.zoom > 17) {
115
+ mapRef.current.setZoom(16);
116
+ }
117
+ };
118
+ var markerClickHandler = function markerClickHandler(mapLocation) {
119
+ setMapInteracted(true);
120
+ selectLocationEntity(mapLocation);
121
+ };
122
+ var onLoad = function onLoad(map) {
123
+ if (!location || location === null) {
124
+ mapRef.current = map;
125
+ fitBounds(map, true);
126
+ return;
127
+ }
128
+ mapRef.current = map;
129
+ if (mapInteracted === false) {
130
+ mapRef.current.panTo(new google.maps.LatLng(location.latitude, location.longitude));
131
+ mapRef.current.setZoom(zoom);
132
+ }
133
+ };
134
+ var pinIconUrl = pinIcon({
135
+ fillColor: markerConfigs.fillColor,
136
+ strokeColor: markerConfigs.strokeColor
137
+ });
138
+ return /*#__PURE__*/React.createElement(React.Fragment, null, zoom && center && /*#__PURE__*/React.createElement("div", {
139
+ ref: mapContainerRef,
140
+ className: "hc-h-full hc-relative"
141
+ }, /*#__PURE__*/React.createElement(GoogleMap, {
142
+ zoom: zoom,
143
+ onLoad: onLoad,
144
+ onIdle: onIdle,
145
+ center: center,
146
+ mapContainerStyle: {
147
+ width: "100%",
148
+ height: "100%"
149
+ },
150
+ options: {
151
+ styles: [{
152
+ featureType: "poi",
153
+ elementType: "labels",
154
+ stylers: [{
155
+ visibility: "off"
156
+ }]
157
+ }]
158
+ }
159
+ }, /*#__PURE__*/React.createElement(MarkerClustererF, {
160
+ options: clusterOptions(clusterGridSize, markerConfigs.fillColor)
161
+ }, function (clusterer) {
162
+ return /*#__PURE__*/React.createElement(React.Fragment, null, mapItems.map(function (item) {
163
+ return /*#__PURE__*/React.createElement(MapMarker, {
164
+ key: item.id,
165
+ item: item,
166
+ selectedLocation: location,
167
+ markerRefs: markerRefs,
168
+ infoWindowClasses: infoWindowClasses,
169
+ setSelectedLocation: setLocation,
170
+ markerClickHandler: markerClickHandler,
171
+ clusterer: clusterer,
172
+ markerIcon: markerIcon(markerConfigs),
173
+ markerIconSelected: markerIconSelected(markerConfigs),
174
+ setMapInteracted: setMapInteracted
175
+ });
176
+ }), poiMarkers && poiMarkers.markers.map(function (marker, index) {
177
+ return /*#__PURE__*/React.createElement(PlaceMarker, {
178
+ key: "marker-".concat(marker.title, "-").concat(index),
179
+ marker: marker,
180
+ index: index,
181
+ selectedPlaceMarker: selectedPlaceMarker,
182
+ placesWindow: placesWindow,
183
+ setPlacesWindow: setPlacesWindow,
184
+ setSelectedPlaceMarker: setSelectedPlaceMarker
185
+ });
186
+ }));
187
+ })), mapInteracted && markerConfigs && /*#__PURE__*/React.createElement(ShowAllButton, {
188
+ mapInteracted: mapInteracted,
189
+ markerConfigs: markerConfigs,
190
+ setMapInteracted: setMapInteracted,
191
+ fitBounds: fitBounds,
192
+ mapRef: mapRef,
193
+ pinIconUrl: pinIconUrl,
194
+ setQuery: setQuery,
195
+ listingCount: filteredListings.length,
196
+ setSelectedFilters: setSelectedFilters
197
+ })));
198
+ };
199
+
200
+ export { Map as default };
201
+ //# sourceMappingURL=map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.js","sources":["../../../../src/components/modules/maps/map.js"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { GoogleMap, MarkerClustererF } from \"@react-google-maps/api\";\n\nimport MapMarker from \"~/components/modules/maps/map-marker\";\nimport PlaceMarker from \"~/components/modules/maps/place-marker\";\nimport ShowAllButton from \"~/components/modules/buttons/show-all-button\";\n\nimport { usePlaces } from \"~/contexts/placesContext\";\nimport { useMap } from \"~/contexts/mapContext\";\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nimport { markerIconSelected, markerIcon, pinIcon } from \"~/util/mapIconUtil\";\nimport { clusterOptions } from \"~/util/mapUtil\";\n\nconst Map = ({\n\tmarkerConfigs,\n\tinfoWindowClasses,\n\tclusterGridSize = 60\n}) => {\n\tconst {\n\t\tlocation,\n\t\tzoom,\n\t\tcenter,\n\t\tcommuteLocation,\n\t\tselectLocationEntity,\n\t\tsetLocation,\n\t\tmapInteracted,\n\t\tsetMapInteracted\n\t} = useMap();\n\n\tconst {\n\t\tmapItems, handleFilterListingsByLocation, filteredListings, setSelectedFilters,\n\t\tsetQuery\n\t} = useMapList();\n\n\tconst mapRef = useRef();\n\tconst markerRefs = useRef({});\n\tconst mapContainerRef = useRef(null);\n\tconst {\n\t\tpoiMarkers,\n\t\tsetCurrentCenter,\n\t\tcurrentCenter,\n\t\tsetCurrentZoom,\n\t\tcurrentZoom,\n\t\tselectedPlaceMarker,\n\t\tsetSelectedPlaceMarker,\n\t\tplacesWindow,\n\t\tsetPlacesWindow } = usePlaces();\n\n\tconst onIdle = () => {\n\t\tif (!currentCenter || !mapRef.current) return;\n\t\tconst newCenter = mapRef.current.getCenter().toJSON();\n\t\tconst newZoom = mapRef.current.zoom;\n\n\t\tsetCurrentCenter(newCenter);\n\n\t\tif (newZoom != currentZoom) {\n\t\t\tsetCurrentZoom(newZoom);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (mapContainerRef.current) {\n\t\t\tconst handleScroll = () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t};\n\t\t\tvar mapContainerRefCurrent = mapContainerRef.current;\n\t\t\tmapContainerRef.current.addEventListener('wheel', handleScroll);\n\t\t\treturn () => mapContainerRefCurrent.removeEventListener('wheel', handleScroll);\n\t\t}\n\t}, [mapContainerRef.current]);\n\n\tuseEffect(() => {\n\t\tif (mapRef.current) {\n\t\t\tconst mapInstance = mapRef.current;\n\t\t\tconst dragStartListener = mapInstance.addListener('dragstart', () => setMapInteracted(true));\n\t\t\tconst mouseDownListener = mapInstance.addListener('mousedown', () => setMapInteracted(true));\n\t\t\treturn () => {\n\t\t\t\tgoogle.maps.event.removeListener(dragStartListener);\n\t\t\t\tgoogle.maps.event.removeListener(mouseDownListener);\n\t\t\t};\n\t\t}\n\t}, [mapRef.current, mapContainerRef.current]);\n\n\tuseEffect(() => {\n\t\tif ((mapItems && mapItems.length > 0 || poiMarkers.length > 0) && mapRef.current) {\n\t\t\tfitBounds(mapRef.current);\n\t\t}\n\t}, [mapItems, mapRef.current, location]);\n\n\tuseEffect(() => {\n\t\tif (mapItems && mapItems.length > 0 || poiMarkers.length > 0 && mapRef.current && mapInteracted) {\n\t\t\tfitBounds(mapRef.current, true);\n\t\t}\n\t\tif (mapRef.current) {\n\t\t\tlet currZoom = mapRef.current.zoom;\n\t\t\tlet setZoomVal = currZoom < 13 ? currZoom : 12;\n\t\t\tmapRef.current.setZoom(setZoomVal);\n\t\t}\n\t}, [filteredListings]);\n\n\tuseEffect(() => {\n\t\tif (!mapRef.current || !location || mapInteracted) return;\n\t\tmapRef.current.panTo(\n\t\t\tnew google.maps.LatLng(location.latitude, location.longitude),\n\t\t);\n\t\tif (mapRef.current) {\n\t\t\tlet setZoomVal = zoom < 13 ? zoom : 12;\n\t\t\tmapRef.current.setZoom(setZoomVal);\n\t\t}\n\t}, [location, zoom, mapRef.current]);\n\n\tconst fitBounds = (map, overload = false) => {\n\t\tif ((mapInteracted === false || overload) && mapItems != null) {\n\t\t\tconst bounds = new window.google.maps.LatLngBounds();\n\t\t\tmapItems.forEach(item => {\n\t\t\t\tbounds.extend(new google.maps.LatLng(item.latitude, item.longitude));\n\t\t\t});\n\t\t\tif (!map) return;\n\t\t\tmap.fitBounds(bounds);\n\t\t}\n\t\tif (mapRef.current.zoom > 17) {\n\t\t\tmapRef.current.setZoom(16);\n\t\t}\n\t};\n\n\tconst markerClickHandler = mapLocation => {\n\t\tsetMapInteracted(true);\n\t\tselectLocationEntity(mapLocation);\n\t};\n\n\tconst onLoad = map => {\n\t\tif (!location || location === null) {\n\t\t\tmapRef.current = map;\n\t\t\tfitBounds(map, true);\n\t\t\treturn;\n\t\t}\n\t\tmapRef.current = map;\n\n\t\tif (mapInteracted === false) {\n\t\t\tmapRef.current.panTo(\n\t\t\t\tnew google.maps.LatLng(location.latitude, location.longitude),\n\t\t\t);\n\n\t\t\tmapRef.current.setZoom(zoom);\n\t\t}\n\t};\n\n\tconst pinIconUrl = pinIcon({\n\t\tfillColor: markerConfigs.fillColor,\n\t\tstrokeColor: markerConfigs.strokeColor\n\t});\n\n\treturn (\n\t\t<>{zoom && center && <div ref={mapContainerRef} className=\"hc-h-full hc-relative\">\n\t\t\t<GoogleMap\n\t\t\t\tzoom={zoom}\n\t\t\t\tonLoad={onLoad}\n\t\t\t\tonIdle={onIdle}\n\t\t\t\tcenter={center}\n\t\t\t\tmapContainerStyle={{\n\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\theight: \"100%\"\n\t\t\t\t}}\n\t\t\t\toptions={{\n\t\t\t\t\tstyles: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfeatureType: \"poi\",\n\t\t\t\t\t\t\telementType: \"labels\",\n\t\t\t\t\t\t\tstylers: [{ visibility: \"off\" }]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<MarkerClustererF options={clusterOptions(clusterGridSize, markerConfigs.fillColor)}>\n\t\t\t\t\t{clusterer => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{mapItems.map(item => (\n\t\t\t\t\t\t\t\t<MapMarker\n\t\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t\tselectedLocation={location}\n\t\t\t\t\t\t\t\t\tmarkerRefs={markerRefs}\n\t\t\t\t\t\t\t\t\tinfoWindowClasses={infoWindowClasses}\n\t\t\t\t\t\t\t\t\tsetSelectedLocation={setLocation}\n\t\t\t\t\t\t\t\t\tmarkerClickHandler={markerClickHandler}\n\t\t\t\t\t\t\t\t\tclusterer={clusterer}\n\t\t\t\t\t\t\t\t\tmarkerIcon={markerIcon(markerConfigs)}\n\t\t\t\t\t\t\t\t\tmarkerIconSelected={markerIconSelected(markerConfigs)}\n\t\t\t\t\t\t\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t{poiMarkers && poiMarkers.markers.map((marker, index) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<PlaceMarker\n\t\t\t\t\t\t\t\t\t\tkey={`marker-${marker.title}-${index}`}\n\t\t\t\t\t\t\t\t\t\tmarker={marker}\n\t\t\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\t\t\tselectedPlaceMarker={selectedPlaceMarker}\n\t\t\t\t\t\t\t\t\t\tplacesWindow={placesWindow}\n\t\t\t\t\t\t\t\t\t\tsetPlacesWindow={setPlacesWindow}\n\t\t\t\t\t\t\t\t\t\tsetSelectedPlaceMarker={setSelectedPlaceMarker}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</MarkerClustererF>\n\t\t\t</GoogleMap>\n\t\t\t{mapInteracted && markerConfigs && (\n\t\t\t\t<ShowAllButton\n\t\t\t\t\tmapInteracted={mapInteracted}\n\t\t\t\t\tmarkerConfigs={markerConfigs}\n\t\t\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\t\t\tfitBounds={fitBounds}\n\t\t\t\t\tmapRef={mapRef}\n\t\t\t\t\tpinIconUrl={pinIconUrl}\n\t\t\t\t\tsetQuery={setQuery}\n\t\t\t\t\tlistingCount={filteredListings.length}\n\t\t\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t\t}\n\t\t</>\n\t);\n};\n\nexport default Map;\n"],"names":["Map","_ref","markerConfigs","infoWindowClasses","_ref$clusterGridSize","clusterGridSize","_useMap","useMap","location","zoom","center","commuteLocation","selectLocationEntity","setLocation","mapInteracted","setMapInteracted","_useMapList","useMapList","mapItems","handleFilterListingsByLocation","filteredListings","setSelectedFilters","setQuery","mapRef","useRef","markerRefs","mapContainerRef","_usePlaces","usePlaces","poiMarkers","setCurrentCenter","currentCenter","setCurrentZoom","currentZoom","selectedPlaceMarker","setSelectedPlaceMarker","placesWindow","setPlacesWindow","onIdle","current","newCenter","getCenter","toJSON","newZoom","useEffect","handleScroll","mapContainerRefCurrent","addEventListener","removeEventListener","mapInstance","dragStartListener","addListener","mouseDownListener","google","maps","event","removeListener","length","fitBounds","currZoom","setZoomVal","setZoom","panTo","LatLng","latitude","longitude","map","overload","arguments","undefined","bounds","window","LatLngBounds","forEach","item","extend","markerClickHandler","mapLocation","onLoad","pinIconUrl","pinIcon","fillColor","strokeColor","React","createElement","Fragment","ref","className","GoogleMap","mapContainerStyle","width","height","options","styles","featureType","elementType","stylers","visibility","MarkerClustererF","clusterOptions","clusterer","MapMarker","key","id","selectedLocation","setSelectedLocation","markerIcon","markerIconSelected","markers","marker","index","PlaceMarker","concat","title","ShowAllButton","listingCount"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { Marker, InfoWindowF } from '@react-google-maps/api';
3
+
4
+ var PlaceMarker = function PlaceMarker(_ref) {
5
+ var marker = _ref.marker,
6
+ index = _ref.index,
7
+ selectedPlaceMarker = _ref.selectedPlaceMarker,
8
+ setSelectedPlaceMarker = _ref.setSelectedPlaceMarker,
9
+ placesWindow = _ref.placesWindow,
10
+ setPlacesWindow = _ref.setPlacesWindow;
11
+ var markerKey = "marker-".concat(marker.title, "-").concat(index);
12
+ var placeMarkerClickHandler = function placeMarkerClickHandler() {
13
+ setSelectedPlaceMarker(markerKey);
14
+ setPlacesWindow(true);
15
+ };
16
+ return /*#__PURE__*/React.createElement(Marker, {
17
+ key: markerKey,
18
+ position: marker.position,
19
+ title: marker.title,
20
+ icon: marker.icon,
21
+ options: {
22
+ optimized: false
23
+ },
24
+ onClick: placeMarkerClickHandler
25
+ }, selectedPlaceMarker === markerKey && placesWindow && marker && /*#__PURE__*/React.createElement(InfoWindowF, {
26
+ position: marker.position,
27
+ onCloseClick: function onCloseClick() {
28
+ return setPlacesWindow(false);
29
+ },
30
+ options: {
31
+ maxWidth: 400
32
+ }
33
+ }, /*#__PURE__*/React.createElement("div", null, marker.title)));
34
+ };
35
+
36
+ export { PlaceMarker as default };
37
+ //# sourceMappingURL=place-marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"place-marker.js","sources":["../../../../src/components/modules/maps/place-marker.js"],"sourcesContent":["import React from 'react';\nimport { Marker, InfoWindowF } from '@react-google-maps/api';\n\nconst PlaceMarker = ({\n\tmarker,\n\tindex,\n\tselectedPlaceMarker,\n\tsetSelectedPlaceMarker,\n\tplacesWindow,\n\tsetPlacesWindow\n}) => {\n\tconst markerKey = `marker-${marker.title}-${index}`;\n\n\tconst placeMarkerClickHandler = () => {\n\t\tsetSelectedPlaceMarker(markerKey);\n\t\tsetPlacesWindow(true);\n\t};\n\n\treturn (\n\t\t<Marker\n\t\t\tkey={markerKey}\n\t\t\tposition={marker.position}\n\t\t\ttitle={marker.title}\n\t\t\ticon={marker.icon}\n\t\t\toptions={{ optimized: false }}\n\t\t\tonClick={placeMarkerClickHandler}\n\t\t>\n\t\t\t{selectedPlaceMarker === markerKey && placesWindow && marker && (\n\t\t\t\t<InfoWindowF\n\t\t\t\t\tposition={marker.position}\n\t\t\t\t\tonCloseClick={() => setPlacesWindow(false)}\n\t\t\t\t\toptions={{ maxWidth: 400 }}\n\t\t\t\t>\n\t\t\t\t\t<div>{marker.title}</div>\n\t\t\t\t</InfoWindowF>\n\t\t\t)}\n\t\t</Marker>\n\t);\n};\n\nexport default PlaceMarker;\n"],"names":["PlaceMarker","_ref","marker","index","selectedPlaceMarker","setSelectedPlaceMarker","placesWindow","setPlacesWindow","markerKey","concat","title","placeMarkerClickHandler","React","createElement","Marker","key","position","icon","options","optimized","onClick","InfoWindowF","onCloseClick","maxWidth"],"mappings":";;;AAGA,IAAMA,WAAW,GAAG,SAAdA,WAAWA,CAAAC,IAAA,EAOX;AAAA,EAAA,IANLC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,mBAAmB,GAAAH,IAAA,CAAnBG,mBAAmB;IACnBC,sBAAsB,GAAAJ,IAAA,CAAtBI,sBAAsB;IACtBC,YAAY,GAAAL,IAAA,CAAZK,YAAY;IACZC,eAAe,GAAAN,IAAA,CAAfM,eAAe,CAAA;EAEf,IAAMC,SAAS,GAAAC,SAAAA,CAAAA,MAAA,CAAaP,MAAM,CAACQ,KAAK,EAAAD,GAAAA,CAAAA,CAAAA,MAAA,CAAIN,KAAK,CAAE,CAAA;AAEnD,EAAA,IAAMQ,uBAAuB,GAAG,SAA1BA,uBAAuBA,GAAS;IACrCN,sBAAsB,CAACG,SAAS,CAAC,CAAA;IACjCD,eAAe,CAAC,IAAI,CAAC,CAAA;GACrB,CAAA;AAED,EAAA,oBACCK,KAAA,CAAAC,aAAA,CAACC,MAAM,EAAA;AACNC,IAAAA,GAAG,EAAEP,SAAU;IACfQ,QAAQ,EAAEd,MAAM,CAACc,QAAS;IAC1BN,KAAK,EAAER,MAAM,CAACQ,KAAM;IACpBO,IAAI,EAAEf,MAAM,CAACe,IAAK;AAClBC,IAAAA,OAAO,EAAE;AAAEC,MAAAA,SAAS,EAAE,KAAA;KAAQ;AAC9BC,IAAAA,OAAO,EAAET,uBAAAA;AAAwB,GAAA,EAEhCP,mBAAmB,KAAKI,SAAS,IAAIF,YAAY,IAAIJ,MAAM,iBAC3DU,KAAA,CAAAC,aAAA,CAACQ,WAAW,EAAA;IACXL,QAAQ,EAAEd,MAAM,CAACc,QAAS;IAC1BM,YAAY,EAAE,SAAAA,YAAA,GAAA;MAAA,OAAMf,eAAe,CAAC,KAAK,CAAC,CAAA;KAAC;AAC3CW,IAAAA,OAAO,EAAE;AAAEK,MAAAA,QAAQ,EAAE,GAAA;AAAI,KAAA;GAEzBX,eAAAA,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA,IAAA,EAAMX,MAAM,CAACQ,KAAW,CACZ,CAEP,CAAC,CAAA;AAEX;;;;"}
@@ -0,0 +1,84 @@
1
+ import React from 'react';
2
+ import * as Tabs from '@radix-ui/react-tabs';
3
+ import Button from '../buttons/default.js';
4
+ import { useMapList } from '../../../contexts/mapListContext.js';
5
+
6
+ var MapTabs = function MapTabs(_ref) {
7
+ var map = _ref.map,
8
+ list = _ref.list,
9
+ filter = _ref.filter,
10
+ className = _ref.className,
11
+ showMap = _ref.showMap;
12
+ var tabButtonClasses = "hc-flex hc-items-center hc-gap-2 hc-rounded-none hc-border-x-0 data-[state=active]:hc-bg-primary data-[state=active]:hc-text-white";
13
+ var _useMapList = useMapList(),
14
+ mobileTab = _useMapList.mobileTab,
15
+ setMobileTab = _useMapList.setMobileTab;
16
+ return /*#__PURE__*/React.createElement("div", {
17
+ className: "\n\t\t\t\thc-relative hc-overflow-hidden\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : "", "\n\t\t\t")
18
+ }, /*#__PURE__*/React.createElement(Tabs.Root, {
19
+ className: "hc-flex hc-flex-col hc-h-screen hc-min-h-screen"
20
+ //defaultValue="listTab"
21
+ ,
22
+ value: mobileTab
23
+ }, /*#__PURE__*/React.createElement(Tabs.List, {
24
+ className: "hc-w-full hc-shrink-0 hc-flex hc-divide-x hc-divide-primary",
25
+ "aria-label": "Review positions"
26
+ }, /*#__PURE__*/React.createElement(Tabs.Trigger, {
27
+ value: "listTab",
28
+ asChild: true,
29
+ onClick: function onClick() {
30
+ return setMobileTab("listTab");
31
+ }
32
+ }, /*#__PURE__*/React.createElement(Button.Btn, {
33
+ variant: "outline",
34
+ isBlock: true,
35
+ className: tabButtonClasses
36
+ }, /*#__PURE__*/React.createElement(Button.Body, {
37
+ className: "hc-justify-center"
38
+ }, /*#__PURE__*/React.createElement(Button.Icon, {
39
+ icon: "mdi:view-list",
40
+ size: "hc-size-5"
41
+ }), "List"))), showMap && /*#__PURE__*/React.createElement(Tabs.Trigger, {
42
+ value: "mapTab",
43
+ asChild: true,
44
+ onClick: function onClick() {
45
+ return setMobileTab("mapTab");
46
+ }
47
+ }, /*#__PURE__*/React.createElement(Button.Btn, {
48
+ variant: "outline",
49
+ isBlock: true,
50
+ className: tabButtonClasses
51
+ }, /*#__PURE__*/React.createElement(Button.Body, {
52
+ className: "hc-justify-center"
53
+ }, /*#__PURE__*/React.createElement(Button.Icon, {
54
+ icon: "mdi:map",
55
+ size: "hc-size-5"
56
+ }), "Map"))), /*#__PURE__*/React.createElement(Tabs.Trigger, {
57
+ value: "filterTab",
58
+ asChild: true,
59
+ onClick: function onClick() {
60
+ return setMobileTab("filterTab");
61
+ }
62
+ }, /*#__PURE__*/React.createElement(Button.Btn, {
63
+ variant: "outline",
64
+ isBlock: true,
65
+ className: tabButtonClasses
66
+ }, /*#__PURE__*/React.createElement(Button.Body, {
67
+ className: "hc-justify-center"
68
+ }, /*#__PURE__*/React.createElement(Button.Icon, {
69
+ icon: "fluent:search-12-filled",
70
+ size: "hc-size-5"
71
+ }), "Filter")))), /*#__PURE__*/React.createElement(Tabs.Content, {
72
+ className: "hc-grow hc-bg-white hc-outline-none",
73
+ value: "listTab"
74
+ }, list), showMap && /*#__PURE__*/React.createElement(Tabs.Content, {
75
+ className: "hc-grow hc-bg-white hc-outline-none",
76
+ value: "mapTab"
77
+ }, map), /*#__PURE__*/React.createElement(Tabs.Content, {
78
+ className: "hc-grow hc-bg-white hc-outline-none hc-p-2",
79
+ value: "filterTab"
80
+ }, filter)));
81
+ };
82
+
83
+ export { MapTabs as default };
84
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sources":["../../../../src/components/modules/maps/tabs.js"],"sourcesContent":["import React from 'react'\nimport * as Tabs from '@radix-ui/react-tabs';\n\nimport Button from '~/components/modules/buttons/default';\n\nimport { useMapList } from '~/contexts/mapListContext';\n\nconst MapTabs = ({\n\tmap,\n\tlist,\n\tfilter,\n\tclassName,\n\tshowMap\n}) => {\n\tconst tabButtonClasses =\n\t\t\"hc-flex hc-items-center hc-gap-2 hc-rounded-none hc-border-x-0 data-[state=active]:hc-bg-primary data-[state=active]:hc-text-white\";\n\tconst { mobileTab, setMobileTab } = useMapList();\n\treturn (\n\t\t<div\n\t\t\tclassName={`\n\t\t\t\thc-relative hc-overflow-hidden\n\t\t\t\t${className ?? \"\"}\n\t\t\t`}\n\t\t>\n\t\t\t<Tabs.Root\n\t\t\t\tclassName=\"hc-flex hc-flex-col hc-h-screen hc-min-h-screen\"\n\t\t\t\t//defaultValue=\"listTab\"\n\t\t\t\tvalue={mobileTab}\n\t\t\t>\n\t\t\t\t<Tabs.List\n\t\t\t\t\tclassName=\"hc-w-full hc-shrink-0 hc-flex hc-divide-x hc-divide-primary\"\n\t\t\t\t\taria-label=\"Review positions\"\n\t\t\t\t>\n\t\t\t\t\t<Tabs.Trigger value=\"listTab\" asChild onClick={() => setMobileTab(\"listTab\")}>\n\t\t\t\t\t\t<Button.Btn variant=\"outline\" isBlock className={tabButtonClasses}>\n\t\t\t\t\t\t\t<Button.Body className=\"hc-justify-center\">\n\t\t\t\t\t\t\t\t<Button.Icon icon=\"mdi:view-list\" size=\"hc-size-5\" />\n\t\t\t\t\t\t\t\tList\n\t\t\t\t\t\t\t</Button.Body>\n\t\t\t\t\t\t</Button.Btn>\n\t\t\t\t\t</Tabs.Trigger>\n\t\t\t\t\t{showMap && (\n\t\t\t\t\t\t<Tabs.Trigger value=\"mapTab\" asChild onClick={() => setMobileTab(\"mapTab\")}>\n\t\t\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\t\tclassName={tabButtonClasses}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Button.Body className=\"hc-justify-center\">\n\t\t\t\t\t\t\t\t\t<Button.Icon icon=\"mdi:map\" size=\"hc-size-5\" />\n\t\t\t\t\t\t\t\t\tMap\n\t\t\t\t\t\t\t\t</Button.Body>\n\t\t\t\t\t\t\t</Button.Btn>\n\t\t\t\t\t\t</Tabs.Trigger>\n\t\t\t\t\t)}\n\t\t\t\t\t<Tabs.Trigger value=\"filterTab\" asChild onClick={() => setMobileTab(\"filterTab\")}>\n\t\t\t\t\t\t<Button.Btn variant=\"outline\" isBlock className={tabButtonClasses}>\n\t\t\t\t\t\t\t<Button.Body className=\"hc-justify-center\">\n\t\t\t\t\t\t\t\t<Button.Icon icon=\"fluent:search-12-filled\" size=\"hc-size-5\" />\n\t\t\t\t\t\t\t\tFilter\n\t\t\t\t\t\t\t</Button.Body>\n\t\t\t\t\t\t</Button.Btn>\n\t\t\t\t\t</Tabs.Trigger>\n\t\t\t\t</Tabs.List>\n\t\t\t\t<Tabs.Content className=\"hc-grow hc-bg-white hc-outline-none\" value=\"listTab\">\n\t\t\t\t\t{list}\n\t\t\t\t</Tabs.Content>\n\t\t\t\t{showMap && (\n\t\t\t\t\t<Tabs.Content className=\"hc-grow hc-bg-white hc-outline-none\" value=\"mapTab\">\n\t\t\t\t\t\t{map}\n\t\t\t\t\t</Tabs.Content>\n\t\t\t\t)}\n\t\t\t\t<Tabs.Content className=\"hc-grow hc-bg-white hc-outline-none hc-p-2\" value=\"filterTab\">\n\t\t\t\t\t{filter}\n\t\t\t\t</Tabs.Content>\n\t\t\t</Tabs.Root>\n\t\t</div>\n\t);\n};\n\nexport default MapTabs;\n"],"names":["MapTabs","_ref","map","list","filter","className","showMap","tabButtonClasses","_useMapList","useMapList","mobileTab","setMobileTab","React","createElement","concat","Tabs","Root","value","List","Trigger","asChild","onClick","Button","Btn","variant","isBlock","Body","Icon","icon","size","Content"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ var placeTypes = {
2
+ FOOD: "food",
3
+ STORE: "shopping",
4
+ TOURIST_ATTRACTION: "attractions",
5
+ TRANSIT_STATION: "transit",
6
+ SCHOOL: "schools",
7
+ PLACE_OF_WORSHIP: "worship"
8
+ };
9
+
10
+ export { placeTypes };
11
+ //# sourceMappingURL=placeTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeTypes.js","sources":["../../src/constants/placeTypes.js"],"sourcesContent":["export const placeTypes = {\n\tFOOD: \"food\",\n\tSTORE: \"shopping\",\n\tTOURIST_ATTRACTION: \"attractions\",\n\tTRANSIT_STATION: \"transit\",\n\tSCHOOL: \"schools\",\n\tPLACE_OF_WORSHIP: \"worship\"\n};\n"],"names":["placeTypes","FOOD","STORE","TOURIST_ATTRACTION","TRANSIT_STATION","SCHOOL","PLACE_OF_WORSHIP"],"mappings":"AAAO,IAAMA,UAAU,GAAG;AACzBC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,kBAAkB,EAAE,aAAa;AACjCC,EAAAA,eAAe,EAAE,SAAS;AAC1BC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,gBAAgB,EAAE,SAAA;AACnB;;;;"}