@abcagency/hc-ui-components 1.7.4 → 1.7.6
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.
- package/dist/components/HireControlMap.js +97 -166
- package/dist/components/HireControlMap.js.map +1 -1
- package/dist/components/containers/accordions/map-accordion-item-container.js +3 -1
- package/dist/components/containers/accordions/map-accordion-item-container.js.map +1 -1
- package/dist/components/containers/filter/commute-container.js +11 -3
- package/dist/components/containers/filter/commute-container.js.map +1 -1
- package/dist/components/containers/maps/map-container.js +2 -0
- package/dist/components/containers/maps/map-container.js.map +1 -1
- package/dist/components/containers/maps/map-list-container.js +34 -3
- package/dist/components/containers/maps/map-list-container.js.map +1 -1
- package/dist/components/modules/accordions/default.js +1 -1
- package/dist/components/modules/buttons/button-group-apply.js +1 -1
- package/dist/components/modules/buttons/default.js +1 -1
- package/dist/components/modules/cards/default.js +1 -1
- package/dist/components/modules/filter/commute.js +3 -1
- package/dist/components/modules/filter/commute.js.map +1 -1
- package/dist/components/modules/filter/index.js +1 -0
- package/dist/components/modules/filter/index.js.map +1 -1
- package/dist/components/modules/filter/item.js +1 -0
- package/dist/components/modules/filter/item.js.map +1 -1
- package/dist/components/modules/filter/sort.js +1 -1
- package/dist/components/modules/grid.js +1 -1
- package/dist/components/modules/list/header.js +1 -1
- package/dist/components/modules/list/item-expand-card/index.js +1 -1
- package/dist/components/modules/list/list-item/list-item.js +85 -14
- package/dist/components/modules/list/list-item/list-item.js.map +1 -1
- package/dist/contexts/mapListContext.js +40 -39
- package/dist/contexts/mapListContext.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/util/algoliaSearchUtil.js +1 -1
- package/dist/util/filterUtil.js +1 -1
- package/dist/util/twMerge.js +1 -1
- package/package.json +4 -1
- package/src/apis/hcApi.ts +9 -2
- package/src/components/HireControlMap.js +19 -56
- package/src/components/containers/accordions/map-accordion-item-container.js +3 -1
- package/src/components/containers/filter/commute-container.js +11 -3
- package/src/components/containers/maps/map-container.js +2 -0
- package/src/components/containers/maps/map-list-container.js +30 -3
- package/src/components/modules/filter/commute.js +7 -5
- package/src/components/modules/filter/index.js +2 -0
- package/src/components/modules/filter/item.js +1 -0
- package/src/components/modules/list/list-item/list-item.jsx +97 -24
- package/src/contexts/mapListContext.tsx +39 -38
- package/src/index.js +1 -0
- package/dist/apis/hcApi.js +0 -91
- package/dist/apis/hcApi.js.map +0 -1
- package/dist/clientToken.js +0 -10
- package/dist/clientToken.js.map +0 -1
- package/dist/components/modules/skeleton/map-skeleton.js +0 -50
- package/dist/components/modules/skeleton/map-skeleton.js.map +0 -1
- package/dist/node_modules/@algolia/client-common/dist/common.js +0 -541
- package/dist/node_modules/@algolia/client-common/dist/common.js.map +0 -1
- package/dist/node_modules/@algolia/requester-browser-xhr/dist/requester.xhr.js +0 -4
- package/dist/node_modules/@algolia/requester-browser-xhr/dist/requester.xhr.js.map +0 -1
- package/dist/node_modules/algoliasearch/dist/lite/builds/browser.js +0 -272
- package/dist/node_modules/algoliasearch/dist/lite/builds/browser.js.map +0 -1
- package/dist/node_modules/fuse.js/dist/fuse.js +0 -1779
- package/dist/node_modules/fuse.js/dist/fuse.js.map +0 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -2580
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
- package/dist/services/configService.js +0 -15
- package/dist/services/configService.js.map +0 -1
- package/dist/services/listingAggregatorService.js +0 -41
- package/dist/services/listingAggregatorService.js.map +0 -1
- package/dist/services/listingEntityService.js +0 -16
- package/dist/services/listingEntityService.js.map +0 -1
- package/dist/services/listingService.js +0 -15
- package/dist/services/listingService.js.map +0 -1
|
@@ -137,6 +137,7 @@ var MapContainer = function MapContainer(_ref) {
|
|
|
137
137
|
var fitBounds = function fitBounds(map) {
|
|
138
138
|
var overload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
139
139
|
if ((mapInteracted === false || overload) && mapItems != null) {
|
|
140
|
+
if (typeof window === 'undefined' || !window.google) return;
|
|
140
141
|
var bounds = new window.google.maps.LatLngBounds();
|
|
141
142
|
mapItems.forEach(function (item) {
|
|
142
143
|
if (!mapInteracted && markersToHideFromBounds.includes(item.id)) {
|
|
@@ -198,6 +199,7 @@ var MapContainer = function MapContainer(_ref) {
|
|
|
198
199
|
return;
|
|
199
200
|
}
|
|
200
201
|
setTimeout(function () {
|
|
202
|
+
if (typeof window === 'undefined' || !window.google) return;
|
|
201
203
|
var bounds = new window.google.maps.LatLngBounds();
|
|
202
204
|
markers.forEach(function (marker) {
|
|
203
205
|
bounds.extend(marker.getPosition());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-container.js","sources":["../../../../src/components/containers/maps/map-container.js"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport MapMarker from \"~/components/containers/maps/map-marker-container\";\nimport PlaceMarker from \"~/components/modules/maps/place-marker\";\n\nimport { usePlaces } from \"~/contexts/placesContext\";\nimport { useMap } from \"~/contexts/mapContext\";\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nimport { markerIconSelected, markerIcon, pinIcon } from \"~/util/mapIconUtil\";\n\nimport Map from \"~/components/modules/maps/map\";\nimport { MarkerClustererF, Marker } from \"@react-google-maps/api\";\nimport { clusterOptions } from \"~/util/mapUtil\";\n\nconst MapContainer = ({ markerConfigs, infoWindowClasses, clusterGridSize = 60 }) => {\n\tconst {\n\t\tlocation,\n\t\tzoom,\n\t\tcenter,\n\t\tselectLocationEntity,\n\t\tsetLocation,\n\t\tmapInteracted,\n\t\tsetMapInteracted,\n\t\tdefaultZoomOverride\n\t} = useMap();\n\n\tconst {\n\t\tmapItems: oldMapItems,\n\t\tfilteredListings,\n\t\tselectedFilters,\n\t\tsetSelectedFilters,\n\t\tsetQuery,\n\t\tsiteConfig\n\t} = useMapList();\n\tconst [mapItems, setMapItems] = useState(null);\n\tconst [markersToHideFromBounds, setMarkersToHideFromBounds] = useState([]);\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,\n\t\tadditionalMapMarkers\n\t} = 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\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 (!oldMapItems || oldMapItems.length === 0) return;\n\n\t\tif (!siteConfig.defaultMapState || mapInteracted || selectedFilters?.state || selectedFilters?.city) {\n\t\t\tsetMapItems(oldMapItems);\n\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\treturn;\n\t\t}\n\n\t\tconst markersToHide = oldMapItems\n\t\t\t.filter(x => x.address.state !== siteConfig.defaultMapState)\n\t\t\t.map(item => item.id);\n\n\t\tsetMarkersToHideFromBounds(markersToHide);\n\t\tsetMapItems(oldMapItems);\n\t}, [oldMapItems, selectedFilters, siteConfig, mapInteracted]);\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 && defaultZoomOverride && !mapInteracted && !location) {\n\t\t\tmapRef.current.setZoom(defaultZoomOverride);\n\t\t}\n\t}, [mapInteracted]);\n\n\tuseEffect(() => {\n\t\tif (mapRef.current) {\n\t\t\tconst mapInstance = mapRef.current;\n\t\t\tconst dragStartListener = mapInstance.addListener(\"dragstart\", () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\t});\n\t\t\tconst mouseDownListener = mapInstance.addListener(\"mousedown\", () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\t});\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 && !mapInteracted) {\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 && !mapInteracted) {\n\t\t\tconst currZoom = mapRef.current.zoom;\n\t\t\tconst 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(new google.maps.LatLng(location.latitude, location.longitude));\n\t\tif (mapRef.current) {\n\t\t\tconst 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\n\t\t\tmapItems.forEach(item => {\n\t\t\t\tif (!mapInteracted && markersToHideFromBounds.includes(item.id)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbounds.extend(new google.maps.LatLng(item.latitude, item.longitude));\n\t\t\t});\n\n\t\t\tif (siteConfig.optionalShowLocationClusterConfig) {\n\t\t\t\tconst configLocation = new google.maps.LatLng(\n\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.latitude,\n\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.longitude\n\t\t\t\t);\n\t\t\t\tmap.panTo(configLocation);\n\t\t\t\tbounds.extend(\n\t\t\t\t\tnew google.maps.LatLng(\n\t\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.latitude,\n\t\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.longitude\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!map) return;\n\t\t\tconst currentCenter = map.getCenter();\n\t\t\tmap.fitBounds(bounds);\n\t\t\tconst newCenter = bounds.getCenter();\n\t\t\tif (currentCenter && newCenter) {\n\t\t\t\tmap.panTo(newCenter);\n\t\t\t}\n\t\t}\n\t\tif (defaultZoomOverride && !mapInteracted && !location) {\n\t\t\tmapRef.current.setZoom(defaultZoomOverride);\n\t\t} else if (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\tsetMarkersToHideFromBounds([]);\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(new google.maps.LatLng(location.latitude, location.longitude));\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\tconst onClusterClick = cluster => {\n\t\tif (\n\t\t\t!siteConfig.optionalShowLocationClusterConfig ||\n mapRef.current.zoom > siteConfig.optionalShowLocationClusterConfig.showForZoomLevelLessThan\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!cluster || typeof cluster.getMarkers !== \"function\") {\n\t\t\tconsole.error(\"Cluster object or getMarkers method not available.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst markers = cluster.getMarkers();\n\n\t\tif (!markers || markers.length === 0) {\n\t\t\tconsole.error(\"No markers found in the cluster.\");\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tconst bounds = new window.google.maps.LatLngBounds();\n\n\t\t\tmarkers.forEach(marker => {\n\t\t\t\tbounds.extend(marker.getPosition());\n\t\t\t});\n\t\t\tconst clusterCenter = bounds.getCenter();\n\n\t\t\tconst configLat = siteConfig.optionalShowLocationClusterConfig.latitude;\n\t\t\tconst configLng = siteConfig.optionalShowLocationClusterConfig.longitude;\n\n\t\t\tconst latDiff = clusterCenter.lat() - configLat;\n\t\t\tconst lngDiff = clusterCenter.lng() - configLng;\n\t\t\tconst distance = Math.sqrt(latDiff * latDiff + lngDiff * lngDiff);\n\n\t\t\tconst distanceThreshold = 1;\n\t\t\tif (distance <= distanceThreshold) {\n\t\t\t\tbounds.extend(new google.maps.LatLng(configLat, configLng));\n\t\t\t}\n\n\t\t\tif (mapRef.current) {\n\t\t\t\tmapRef.current.fitBounds(bounds);\n\t\t\t}\n\t\t}, 300);\n\t};\n\tif (!mapItems) {\n\t\treturn null;\n\t}\n\n\tconst mapItemsKey = mapItems.map(item => item.id).join(\"-\");\n\n\n\treturn (\n\t\t<Map\n\t\t\tzoom={zoom}\n\t\t\tcenter={center}\n\t\t\tmapContainerRef={mapContainerRef}\n\t\t\tonLoad={onLoad}\n\t\t\tonIdle={onIdle}\n\t\t\tmapInteracted={mapInteracted}\n\t\t\tpinIconUrl={pinIconUrl}\n\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\tfitBounds={fitBounds}\n\t\t\tmapRef={mapRef}\n\t\t\tsetQuery={setQuery}\n\t\t\tfilteredListingsLength={filteredListings.length}\n\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t>\n\t\t\t<MarkerClustererF\n\t\t\t\tkey={mapItemsKey}\n\t\t\t\tcalculator={markers => {\n\t\t\t\t\tconst totalCount = markers.reduce((sum, marker) => sum + (marker.get(\"count\") || 1), 0);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: totalCount.toString(),\n\t\t\t\t\t\tindex: Math.min(5, Math.floor(totalCount / 10))\n\t\t\t\t\t};\n\t\t\t\t}}\n\t\t\t\toptions={{\n\t\t\t\t\t...clusterOptions(clusterGridSize, markerConfigs.fillColor)\n\t\t\t\t}}\n\t\t\t\tonClick={onClusterClick}\n\t\t\t>\n\t\t\t\t{clusterer => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{mapItems.map(item => {\n\t\t\t\t\t\t\tconst markerCount = Object.values(item.items).length;\n\t\t\t\t\t\t\treturn (\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, markerCount)}\n\t\t\t\t\t\t\t\t\tmarkerIconSelected={markerIconSelected(markerConfigs, markerCount)}\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})}\n\n\t\t\t\t\t\t{additionalMapMarkers &&\n additionalMapMarkers.map(\n \t(marker, index) =>\n \t\tcurrentZoom >= marker.minZoom &&\n currentZoom <= marker.maxZoom && (\n \t\t\t<Marker\n \t\t\t\tkey={`marker-${marker.title}-${index}`}\n \t\t\t\tposition={marker.position}\n \t\t\t\ttitle={marker.title}\n \t\t\t\ticon={{\n \t\t\t\t\turl: marker.iconUrl,\n \t\t\t\t\tscaledSize: new window.google.maps.Size(40, 40)\n \t\t\t\t}}\n \t\t\t/>\n \t\t)\n )}\n\n\t\t\t\t\t\t{poiMarkers &&\n poiMarkers.markers.map((marker, index) => (\n \t<PlaceMarker\n \t\tkey={`marker-${marker.title}-${index}`}\n \t\tmarker={marker}\n \t\tindex={index}\n \t\tselectedPlaceMarker={selectedPlaceMarker}\n \t\tplacesWindow={placesWindow}\n \t\tsetPlacesWindow={setPlacesWindow}\n \t\tsetSelectedPlaceMarker={setSelectedPlaceMarker}\n \t/>\n ))}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</MarkerClustererF>\n\t\t</Map>\n\t);\n};\n\nexport default MapContainer;\n\n"],"names":["MapContainer","_ref","markerConfigs","infoWindowClasses","_ref$clusterGridSize","clusterGridSize","_useMap","useMap","location","zoom","center","selectLocationEntity","setLocation","mapInteracted","setMapInteracted","defaultZoomOverride","_useMapList","useMapList","oldMapItems","mapItems","filteredListings","selectedFilters","setSelectedFilters","setQuery","siteConfig","_useState","useState","_useState2","_slicedToArray","setMapItems","_useState3","_useState4","markersToHideFromBounds","setMarkersToHideFromBounds","mapRef","useRef","markerRefs","mapContainerRef","_usePlaces","usePlaces","poiMarkers","setCurrentCenter","currentCenter","setCurrentZoom","currentZoom","selectedPlaceMarker","setSelectedPlaceMarker","placesWindow","setPlacesWindow","additionalMapMarkers","onIdle","current","newCenter","getCenter","toJSON","newZoom","useEffect","length","defaultMapState","state","city","markersToHide","filter","x","address","map","item","id","handleScroll","mapContainerRefCurrent","addEventListener","removeEventListener","setZoom","mapInstance","dragStartListener","addListener","mouseDownListener","google","maps","event","removeListener","fitBounds","currZoom","setZoomVal","panTo","LatLng","latitude","longitude","overload","arguments","undefined","bounds","window","LatLngBounds","forEach","includes","extend","optionalShowLocationClusterConfig","configLocation","markerClickHandler","mapLocation","onLoad","pinIconUrl","pinIcon","fillColor","strokeColor","onClusterClick","cluster","showForZoomLevelLessThan","getMarkers","console","error","markers","setTimeout","marker","getPosition","clusterCenter","configLat","configLng","latDiff","lat","lngDiff","lng","distance","Math","sqrt","distanceThreshold","mapItemsKey","join","React","createElement","Map","filteredListingsLength","MarkerClustererF","key","calculator","totalCount","reduce","sum","get","text","toString","index","min","floor","options","_objectSpread","clusterOptions","onClick","clusterer","Fragment","markerCount","Object","values","items","MapMarker","selectedLocation","setSelectedLocation","markerIcon","markerIconSelected","minZoom","maxZoom","Marker","concat","title","position","icon","url","iconUrl","scaledSize","Size","PlaceMarker"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"map-container.js","sources":["../../../../src/components/containers/maps/map-container.js"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport MapMarker from \"~/components/containers/maps/map-marker-container\";\nimport PlaceMarker from \"~/components/modules/maps/place-marker\";\n\nimport { usePlaces } from \"~/contexts/placesContext\";\nimport { useMap } from \"~/contexts/mapContext\";\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nimport { markerIconSelected, markerIcon, pinIcon } from \"~/util/mapIconUtil\";\n\nimport Map from \"~/components/modules/maps/map\";\nimport { MarkerClustererF, Marker } from \"@react-google-maps/api\";\nimport { clusterOptions } from \"~/util/mapUtil\";\n\nconst MapContainer = ({ markerConfigs, infoWindowClasses, clusterGridSize = 60 }) => {\n\tconst {\n\t\tlocation,\n\t\tzoom,\n\t\tcenter,\n\t\tselectLocationEntity,\n\t\tsetLocation,\n\t\tmapInteracted,\n\t\tsetMapInteracted,\n\t\tdefaultZoomOverride\n\t} = useMap();\n\n\tconst {\n\t\tmapItems: oldMapItems,\n\t\tfilteredListings,\n\t\tselectedFilters,\n\t\tsetSelectedFilters,\n\t\tsetQuery,\n\t\tsiteConfig\n\t} = useMapList();\n\tconst [mapItems, setMapItems] = useState(null);\n\tconst [markersToHideFromBounds, setMarkersToHideFromBounds] = useState([]);\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,\n\t\tadditionalMapMarkers\n\t} = 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\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 (!oldMapItems || oldMapItems.length === 0) return;\n\n\t\tif (!siteConfig.defaultMapState || mapInteracted || selectedFilters?.state || selectedFilters?.city) {\n\t\t\tsetMapItems(oldMapItems);\n\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\treturn;\n\t\t}\n\n\t\tconst markersToHide = oldMapItems\n\t\t\t.filter(x => x.address.state !== siteConfig.defaultMapState)\n\t\t\t.map(item => item.id);\n\n\t\tsetMarkersToHideFromBounds(markersToHide);\n\t\tsetMapItems(oldMapItems);\n\t}, [oldMapItems, selectedFilters, siteConfig, mapInteracted]);\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 && defaultZoomOverride && !mapInteracted && !location) {\n\t\t\tmapRef.current.setZoom(defaultZoomOverride);\n\t\t}\n\t}, [mapInteracted]);\n\n\tuseEffect(() => {\n\t\tif (mapRef.current) {\n\t\t\tconst mapInstance = mapRef.current;\n\t\t\tconst dragStartListener = mapInstance.addListener(\"dragstart\", () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\t});\n\t\t\tconst mouseDownListener = mapInstance.addListener(\"mousedown\", () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\t});\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 && !mapInteracted) {\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 && !mapInteracted) {\n\t\t\tconst currZoom = mapRef.current.zoom;\n\t\t\tconst 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(new google.maps.LatLng(location.latitude, location.longitude));\n\t\tif (mapRef.current) {\n\t\t\tconst 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\tif (typeof window === 'undefined' || !window.google) return;\n\t\t\tconst bounds = new window.google.maps.LatLngBounds();\n\n\t\t\tmapItems.forEach(item => {\n\t\t\t\tif (!mapInteracted && markersToHideFromBounds.includes(item.id)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbounds.extend(new google.maps.LatLng(item.latitude, item.longitude));\n\t\t\t});\n\n\t\t\tif (siteConfig.optionalShowLocationClusterConfig) {\n\t\t\t\tconst configLocation = new google.maps.LatLng(\n\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.latitude,\n\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.longitude\n\t\t\t\t);\n\t\t\t\tmap.panTo(configLocation);\n\t\t\t\tbounds.extend(\n\t\t\t\t\tnew google.maps.LatLng(\n\t\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.latitude,\n\t\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.longitude\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!map) return;\n\t\t\tconst currentCenter = map.getCenter();\n\t\t\tmap.fitBounds(bounds);\n\t\t\tconst newCenter = bounds.getCenter();\n\t\t\tif (currentCenter && newCenter) {\n\t\t\t\tmap.panTo(newCenter);\n\t\t\t}\n\t\t}\n\t\tif (defaultZoomOverride && !mapInteracted && !location) {\n\t\t\tmapRef.current.setZoom(defaultZoomOverride);\n\t\t} else if (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\tsetMarkersToHideFromBounds([]);\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(new google.maps.LatLng(location.latitude, location.longitude));\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\tconst onClusterClick = cluster => {\n\t\tif (\n\t\t\t!siteConfig.optionalShowLocationClusterConfig ||\n mapRef.current.zoom > siteConfig.optionalShowLocationClusterConfig.showForZoomLevelLessThan\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!cluster || typeof cluster.getMarkers !== \"function\") {\n\t\t\tconsole.error(\"Cluster object or getMarkers method not available.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst markers = cluster.getMarkers();\n\n\t\tif (!markers || markers.length === 0) {\n\t\t\tconsole.error(\"No markers found in the cluster.\");\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (typeof window === 'undefined' || !window.google) return;\n\t\t\tconst bounds = new window.google.maps.LatLngBounds();\n\n\t\t\tmarkers.forEach(marker => {\n\t\t\t\tbounds.extend(marker.getPosition());\n\t\t\t});\n\t\t\tconst clusterCenter = bounds.getCenter();\n\n\t\t\tconst configLat = siteConfig.optionalShowLocationClusterConfig.latitude;\n\t\t\tconst configLng = siteConfig.optionalShowLocationClusterConfig.longitude;\n\n\t\t\tconst latDiff = clusterCenter.lat() - configLat;\n\t\t\tconst lngDiff = clusterCenter.lng() - configLng;\n\t\t\tconst distance = Math.sqrt(latDiff * latDiff + lngDiff * lngDiff);\n\n\t\t\tconst distanceThreshold = 1;\n\t\t\tif (distance <= distanceThreshold) {\n\t\t\t\tbounds.extend(new google.maps.LatLng(configLat, configLng));\n\t\t\t}\n\n\t\t\tif (mapRef.current) {\n\t\t\t\tmapRef.current.fitBounds(bounds);\n\t\t\t}\n\t\t}, 300);\n\t};\n\tif (!mapItems) {\n\t\treturn null;\n\t}\n\n\tconst mapItemsKey = mapItems.map(item => item.id).join(\"-\");\n\n\n\treturn (\n\t\t<Map\n\t\t\tzoom={zoom}\n\t\t\tcenter={center}\n\t\t\tmapContainerRef={mapContainerRef}\n\t\t\tonLoad={onLoad}\n\t\t\tonIdle={onIdle}\n\t\t\tmapInteracted={mapInteracted}\n\t\t\tpinIconUrl={pinIconUrl}\n\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\tfitBounds={fitBounds}\n\t\t\tmapRef={mapRef}\n\t\t\tsetQuery={setQuery}\n\t\t\tfilteredListingsLength={filteredListings.length}\n\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t>\n\t\t\t<MarkerClustererF\n\t\t\t\tkey={mapItemsKey}\n\t\t\t\tcalculator={markers => {\n\t\t\t\t\tconst totalCount = markers.reduce((sum, marker) => sum + (marker.get(\"count\") || 1), 0);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: totalCount.toString(),\n\t\t\t\t\t\tindex: Math.min(5, Math.floor(totalCount / 10))\n\t\t\t\t\t};\n\t\t\t\t}}\n\t\t\t\toptions={{\n\t\t\t\t\t...clusterOptions(clusterGridSize, markerConfigs.fillColor)\n\t\t\t\t}}\n\t\t\t\tonClick={onClusterClick}\n\t\t\t>\n\t\t\t\t{clusterer => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{mapItems.map(item => {\n\t\t\t\t\t\t\tconst markerCount = Object.values(item.items).length;\n\t\t\t\t\t\t\treturn (\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, markerCount)}\n\t\t\t\t\t\t\t\t\tmarkerIconSelected={markerIconSelected(markerConfigs, markerCount)}\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})}\n\n\t\t\t\t\t\t{additionalMapMarkers &&\n additionalMapMarkers.map(\n \t(marker, index) =>\n \t\tcurrentZoom >= marker.minZoom &&\n currentZoom <= marker.maxZoom && (\n \t\t\t<Marker\n \t\t\t\tkey={`marker-${marker.title}-${index}`}\n \t\t\t\tposition={marker.position}\n \t\t\t\ttitle={marker.title}\n \t\t\t\ticon={{\n \t\t\t\t\turl: marker.iconUrl,\n \t\t\t\t\tscaledSize: new window.google.maps.Size(40, 40)\n \t\t\t\t}}\n \t\t\t/>\n \t\t)\n )}\n\n\t\t\t\t\t\t{poiMarkers &&\n poiMarkers.markers.map((marker, index) => (\n \t<PlaceMarker\n \t\tkey={`marker-${marker.title}-${index}`}\n \t\tmarker={marker}\n \t\tindex={index}\n \t\tselectedPlaceMarker={selectedPlaceMarker}\n \t\tplacesWindow={placesWindow}\n \t\tsetPlacesWindow={setPlacesWindow}\n \t\tsetSelectedPlaceMarker={setSelectedPlaceMarker}\n \t/>\n ))}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</MarkerClustererF>\n\t\t</Map>\n\t);\n};\n\nexport default MapContainer;\n\n"],"names":["MapContainer","_ref","markerConfigs","infoWindowClasses","_ref$clusterGridSize","clusterGridSize","_useMap","useMap","location","zoom","center","selectLocationEntity","setLocation","mapInteracted","setMapInteracted","defaultZoomOverride","_useMapList","useMapList","oldMapItems","mapItems","filteredListings","selectedFilters","setSelectedFilters","setQuery","siteConfig","_useState","useState","_useState2","_slicedToArray","setMapItems","_useState3","_useState4","markersToHideFromBounds","setMarkersToHideFromBounds","mapRef","useRef","markerRefs","mapContainerRef","_usePlaces","usePlaces","poiMarkers","setCurrentCenter","currentCenter","setCurrentZoom","currentZoom","selectedPlaceMarker","setSelectedPlaceMarker","placesWindow","setPlacesWindow","additionalMapMarkers","onIdle","current","newCenter","getCenter","toJSON","newZoom","useEffect","length","defaultMapState","state","city","markersToHide","filter","x","address","map","item","id","handleScroll","mapContainerRefCurrent","addEventListener","removeEventListener","setZoom","mapInstance","dragStartListener","addListener","mouseDownListener","google","maps","event","removeListener","fitBounds","currZoom","setZoomVal","panTo","LatLng","latitude","longitude","overload","arguments","undefined","window","bounds","LatLngBounds","forEach","includes","extend","optionalShowLocationClusterConfig","configLocation","markerClickHandler","mapLocation","onLoad","pinIconUrl","pinIcon","fillColor","strokeColor","onClusterClick","cluster","showForZoomLevelLessThan","getMarkers","console","error","markers","setTimeout","marker","getPosition","clusterCenter","configLat","configLng","latDiff","lat","lngDiff","lng","distance","Math","sqrt","distanceThreshold","mapItemsKey","join","React","createElement","Map","filteredListingsLength","MarkerClustererF","key","calculator","totalCount","reduce","sum","get","text","toString","index","min","floor","options","_objectSpread","clusterOptions","onClick","clusterer","Fragment","markerCount","Object","values","items","MapMarker","selectedLocation","setSelectedLocation","markerIcon","markerIconSelected","minZoom","maxZoom","Marker","concat","title","position","icon","url","iconUrl","scaledSize","Size","PlaceMarker"],"mappings":"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"}
|
|
@@ -1,9 +1,26 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React, { useState, useEffect, Suspense, lazy } from 'react';
|
|
2
3
|
import ItemsListContainer from '../list/item-list-container.js';
|
|
3
|
-
import MapContainer from './map-container.js';
|
|
4
4
|
import FilterContainer from '../filter/filter-container.js';
|
|
5
5
|
import MapList from '../../modules/maps/map-list.js';
|
|
6
6
|
|
|
7
|
+
// Dynamically import the Map container (Google Maps is heavy)
|
|
8
|
+
var Map = /*#__PURE__*/lazy(function () {
|
|
9
|
+
return import('./map-container.js');
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
// Loading placeholder that maintains layout
|
|
13
|
+
var MapLoadingPlaceholder = function MapLoadingPlaceholder() {
|
|
14
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
15
|
+
className: "hc-w-full hc-h-full hc-bg-gray-100 hc-flex hc-items-center hc-justify-center"
|
|
16
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
17
|
+
className: "hc-text-center hc-p-8"
|
|
18
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
19
|
+
className: "hc-animate-spin hc-rounded-full hc-h-12 hc-w-12 hc-border-b-2 hc-border-gray-900 hc-mx-auto"
|
|
20
|
+
}), /*#__PURE__*/React.createElement("p", {
|
|
21
|
+
className: "hc-mt-4 hc-text-gray-600"
|
|
22
|
+
}, "Loading map...")));
|
|
23
|
+
};
|
|
7
24
|
var MapListContainer = function MapListContainer(_ref) {
|
|
8
25
|
var _ref$loading = _ref.loading,
|
|
9
26
|
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
@@ -17,6 +34,15 @@ var MapListContainer = function MapListContainer(_ref) {
|
|
|
17
34
|
showMap = _ref.showMap,
|
|
18
35
|
placeMappings = _ref.placeMappings,
|
|
19
36
|
mapPosition = _ref.mapPosition;
|
|
37
|
+
var _useState = useState(false),
|
|
38
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
39
|
+
isClient = _useState2[0],
|
|
40
|
+
setIsClient = _useState2[1];
|
|
41
|
+
|
|
42
|
+
// Only load map on client side
|
|
43
|
+
useEffect(function () {
|
|
44
|
+
setIsClient(true);
|
|
45
|
+
}, []);
|
|
20
46
|
var listProps = {
|
|
21
47
|
fieldsShown: fieldsShown,
|
|
22
48
|
fieldNames: fieldNames,
|
|
@@ -32,12 +58,17 @@ var MapListContainer = function MapListContainer(_ref) {
|
|
|
32
58
|
clusterGridSize: 60,
|
|
33
59
|
showMap: showMap
|
|
34
60
|
};
|
|
61
|
+
|
|
62
|
+
// Render map only after client-side hydration
|
|
63
|
+
var mapComponent = isClient && showMap ? /*#__PURE__*/React.createElement(Suspense, {
|
|
64
|
+
fallback: /*#__PURE__*/React.createElement(MapLoadingPlaceholder, null)
|
|
65
|
+
}, /*#__PURE__*/React.createElement(Map, mapProps)) : showMap ? /*#__PURE__*/React.createElement(MapLoadingPlaceholder, null) : null;
|
|
35
66
|
return /*#__PURE__*/React.createElement(MapList, {
|
|
36
67
|
showMap: showMap,
|
|
37
68
|
containerStyle: containerStyle,
|
|
38
69
|
loading: loading,
|
|
39
70
|
list: /*#__PURE__*/React.createElement(ItemsListContainer, listProps),
|
|
40
|
-
map:
|
|
71
|
+
map: mapComponent,
|
|
41
72
|
filter: /*#__PURE__*/React.createElement(FilterContainer, {
|
|
42
73
|
showMap: showMap,
|
|
43
74
|
className: "md:hc-hidden"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-list-container.js","sources":["../../../../src/components/containers/maps/map-list-container.js"],"sourcesContent":["import React from 'react';\n\nimport List from '~/components/containers/list/item-list-container';\nimport
|
|
1
|
+
{"version":3,"file":"map-list-container.js","sources":["../../../../src/components/containers/maps/map-list-container.js"],"sourcesContent":["import React, { useState, useEffect, lazy, Suspense } from 'react';\n\nimport List from '~/components/containers/list/item-list-container';\nimport Filter from '~/components/containers/filter/filter-container';\nimport MapList from '~/components/modules/maps/map-list';\n\n// Dynamically import the Map container (Google Maps is heavy)\nconst Map = lazy(() => import('~/components/containers/maps/map-container'));\n\n// Loading placeholder that maintains layout\nconst MapLoadingPlaceholder = () => (\n\t<div className=\"hc-w-full hc-h-full hc-bg-gray-100 hc-flex hc-items-center hc-justify-center\">\n\t\t<div className=\"hc-text-center hc-p-8\">\n\t\t\t<div className=\"hc-animate-spin hc-rounded-full hc-h-12 hc-w-12 hc-border-b-2 hc-border-gray-900 hc-mx-auto\"></div>\n\t\t\t<p className=\"hc-mt-4 hc-text-gray-600\">Loading map...</p>\n\t\t</div>\n\t</div>\n);\n\nconst MapListContainer = ({\n\tloading = false,\n\tcontainerStyle,\n\tmapDetails,\n\tmarkerConfigs,\n\titemExpandedContent,\n\tfieldsShown,\n\tspecialFeatures,\n\tfieldNames,\n\tshowMap,\n\tplaceMappings,\n\tmapPosition\n}) => {\n\tconst [isClient, setIsClient] = useState(false);\n\n\t// Only load map on client side\n\tuseEffect(() => {\n\t\tsetIsClient(true);\n\t}, []);\n\n\tconst listProps = {\n\t\tfieldsShown,\n\t\tfieldNames,\n\t\titemExpandedContent,\n\t\tloading,\n\t\tshowMap,\n\t\tspecialFeatures\n\t};\n\n\tconst mapProps = {\n\t\tmapDetails,\n\t\tmarkerConfigs,\n\t\tplaceMappings,\n\t\tclusterGridSize: 60,\n\t\tshowMap\n\t};\n\n\t// Render map only after client-side hydration\n\tconst mapComponent = isClient && showMap ? (\n\t\t<Suspense fallback={<MapLoadingPlaceholder />}>\n\t\t\t<Map {...mapProps} />\n\t\t</Suspense>\n\t) : (\n\t\tshowMap ? <MapLoadingPlaceholder /> : null\n\t);\n\n\treturn (\n\t\t<MapList\n\t\t\tshowMap={showMap}\n\t\t\tcontainerStyle={containerStyle}\n\t\t\tloading={loading}\n\t\t\tlist={<List {...listProps} />}\n\t\t\tmap={mapComponent}\n\t\t\tfilter={<Filter showMap={showMap} className=\"md:hc-hidden\" />}\n\t\t\tmapPosition={mapPosition}\n\t\t/>\n\t);\n};\n\nexport default MapListContainer;\n"],"names":["Map","lazy","MapLoadingPlaceholder","React","createElement","className","MapListContainer","_ref","_ref$loading","loading","containerStyle","mapDetails","markerConfigs","itemExpandedContent","fieldsShown","specialFeatures","fieldNames","showMap","placeMappings","mapPosition","_useState","useState","_useState2","_slicedToArray","isClient","setIsClient","useEffect","listProps","mapProps","clusterGridSize","mapComponent","Suspense","fallback","MapList","list","List","map","filter","Filter"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React, { forwardRef } from 'react';
|
|
3
3
|
import * as RadixAccordion from '@radix-ui/react-accordion';
|
|
4
|
-
import { twMerge } from '
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import IconContained from '../icon.js';
|
|
6
6
|
|
|
7
7
|
var _excluded = ["id", "children", "className"],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { taggedTemplateLiteral as _taggedTemplateLiteral } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { twMerge } from '
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
4
|
import Button from './default.js';
|
|
5
5
|
import ApplyDialog from '../dialogs/apply-dialog.js';
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React, { forwardRef } from 'react';
|
|
3
3
|
import { Link } from 'react-router-dom';
|
|
4
|
-
import { twMerge } from '
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import IconContained from '../icon.js';
|
|
6
6
|
|
|
7
7
|
var _excluded = ["children", "href", "className", "size", "variant", "isBlock", "hasUnderline", "target", "execOnClick", "isIframe", "iframeMsgType"],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React, { forwardRef } from 'react';
|
|
3
3
|
import { Link } from 'react-router-dom';
|
|
4
|
-
import { twMerge } from '
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
|
|
6
6
|
var _excluded = ["as", "className", "hasShadow", "image", "body", "children", "footer"],
|
|
7
7
|
_excluded2 = ["as", "href", "className", "hasShadow", "image", "body", "children", "footer"],
|
|
@@ -53,7 +53,9 @@ var FilterCommute = function FilterCommute(_ref) {
|
|
|
53
53
|
size: "sqsm",
|
|
54
54
|
onClick: function onClick() {
|
|
55
55
|
setIsCurrentLocation(!isCurrentLocation);
|
|
56
|
-
|
|
56
|
+
if (typeof window !== 'undefined') {
|
|
57
|
+
localStorage.setItem('isCurrentLocation', !isCurrentLocation);
|
|
58
|
+
}
|
|
57
59
|
if (isCurrentLocation || commuteLocation) {
|
|
58
60
|
setCommuteLocation("");
|
|
59
61
|
setSelected("");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commute.js","sources":["../../../../src/components/modules/filter/commute.js"],"sourcesContent":["import React, { Fragment } from 'react';\nimport { Combobox, Transition } from '@headlessui/react';\n\nimport Button from '~/components/modules/buttons/default';\nimport Icon from \"~/components/modules/icon\";\n\nconst FilterCommute = ({\n\tclassName,\n\tready,\n\tstatus,\n\tdata,\n\tselected,\n\tisCurrentLocation,\n\tinputRef,\n\thandleSelect,\n\tsetValue,\n\tsetSelected,\n\tclearSuggestions,\n\tcommuteLocation,\n\tsetIsCurrentLocation,\n\tfetchLocation,\n\tsetCommuteLocation\n}) => {\n\treturn (\n\t\t<div className={`relative ${className ?? \"\"}`}>\n\t\t\t<label\n\t\t\t\thtmlFor=\"commute\"\n\t\t\t\tclassName=\"hc-flex hc-items-center hc-gap-2 hc-mb-2 hc-text-xs hc-uppercase hc-font-bold hc-text-uiText\"\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\ticon=\"ri:pin-distance-fill\"\n\t\t\t\t\tsize=\"hc-size-5\"\n\t\t\t\t\tclassName=\"hc-text-uiAccent/30\"\n\t\t\t\t/>\n\t\t\t\t<span>\n\t\t\t\t\t<span className=\"md:hc-hidden lg:hc-inline\">Calculate your</span> commute\n\t\t\t\t</span>\n\t\t\t</label>\n\n\t\t\t<Combobox value={selected} onChange={handleSelect}>\n\t\t\t\t<div className=\"hc-relative hc-mt-1\">\n\t\t\t\t\t<div className=\"hc-relative hc-flex hc-items-center hc-w-full hc-pr-2 hc-cursor-default hc-overflow-hidden hc-rounded hc-bg-white hc-text-left hc-border hc-border-uiAccent/20 focus-within:hc-ring-1 focus-within:hc-ring-uiAccent focus:hc-outline-none\">\n\t\t\t\t\t\t<Combobox.Input\n\t\t\t\t\t\t\tclassName=\"hc-w-full hc-border-none hc-py-2 hc-pl-4 hc-pr-1 hc-text-sm hc-leading-5 hc-text-gray-900 focus:hc-ring-0 placeholder:hc-text-gray-400\"\n\t\t\t\t\t\t\tonChange={e => {\n\t\t\t\t\t\t\t\tsetCommuteLocation(\"\");\n\t\t\t\t\t\t\t\tsetValue(e.target.value);\n\t\t\t\t\t\t\t\tsetSelected(e.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvalue={selected}\n\t\t\t\t\t\t\tdisabled={!ready}\n\t\t\t\t\t\t\tplaceholder=\"Starting point\"\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\t\tvariant=\"icon\"\n\t\t\t\t\t\t\tsize=\"sqsm\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetIsCurrentLocation(!isCurrentLocation);\n\t\t\t\t\t\t\t\tlocalStorage.setItem('isCurrentLocation', !isCurrentLocation);\n\t\t\t\t\t\t\t\tif (isCurrentLocation || commuteLocation) {\n\t\t\t\t\t\t\t\
|
|
1
|
+
{"version":3,"file":"commute.js","sources":["../../../../src/components/modules/filter/commute.js"],"sourcesContent":["import React, { Fragment } from 'react';\nimport { Combobox, Transition } from '@headlessui/react';\n\nimport Button from '~/components/modules/buttons/default';\nimport Icon from \"~/components/modules/icon\";\n\nconst FilterCommute = ({\n\tclassName,\n\tready,\n\tstatus,\n\tdata,\n\tselected,\n\tisCurrentLocation,\n\tinputRef,\n\thandleSelect,\n\tsetValue,\n\tsetSelected,\n\tclearSuggestions,\n\tcommuteLocation,\n\tsetIsCurrentLocation,\n\tfetchLocation,\n\tsetCommuteLocation\n}) => {\n\treturn (\n\t\t<div className={`relative ${className ?? \"\"}`}>\n\t\t\t<label\n\t\t\t\thtmlFor=\"commute\"\n\t\t\t\tclassName=\"hc-flex hc-items-center hc-gap-2 hc-mb-2 hc-text-xs hc-uppercase hc-font-bold hc-text-uiText\"\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\ticon=\"ri:pin-distance-fill\"\n\t\t\t\t\tsize=\"hc-size-5\"\n\t\t\t\t\tclassName=\"hc-text-uiAccent/30\"\n\t\t\t\t/>\n\t\t\t\t<span>\n\t\t\t\t\t<span className=\"md:hc-hidden lg:hc-inline\">Calculate your</span> commute\n\t\t\t\t</span>\n\t\t\t</label>\n\n\t\t\t<Combobox value={selected} onChange={handleSelect}>\n\t\t\t\t<div className=\"hc-relative hc-mt-1\">\n\t\t\t\t\t<div className=\"hc-relative hc-flex hc-items-center hc-w-full hc-pr-2 hc-cursor-default hc-overflow-hidden hc-rounded hc-bg-white hc-text-left hc-border hc-border-uiAccent/20 focus-within:hc-ring-1 focus-within:hc-ring-uiAccent focus:hc-outline-none\">\n\t\t\t\t\t\t<Combobox.Input\n\t\t\t\t\t\t\tclassName=\"hc-w-full hc-border-none hc-py-2 hc-pl-4 hc-pr-1 hc-text-sm hc-leading-5 hc-text-gray-900 focus:hc-ring-0 placeholder:hc-text-gray-400\"\n\t\t\t\t\t\t\tonChange={e => {\n\t\t\t\t\t\t\t\tsetCommuteLocation(\"\");\n\t\t\t\t\t\t\t\tsetValue(e.target.value);\n\t\t\t\t\t\t\t\tsetSelected(e.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvalue={selected}\n\t\t\t\t\t\t\tdisabled={!ready}\n\t\t\t\t\t\t\tplaceholder=\"Starting point\"\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\t\tvariant=\"icon\"\n\t\t\t\t\t\t\tsize=\"sqsm\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetIsCurrentLocation(!isCurrentLocation);\n\t\t\t\t\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\t\t\t\t\tlocalStorage.setItem('isCurrentLocation', !isCurrentLocation);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (isCurrentLocation || commuteLocation) {\n\t\t\t\t\t\t\t\tsetCommuteLocation(\"\");\n\t\t\t\t\t\t\t\tsetSelected(\"\");\n\t\t\t\t\t\t\t} else if (!commuteLocation) { fetchLocation(); }\n\t\t\t\t\t\t}}\n\n\t\t\t\t\t\t\tclassName=\"\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"hc-sr-only\">Use your location</span>\n\t\t\t\t\t\t\t{commuteLocation ? <Icon icon=\"mdi:times\"></Icon> : <Button.Icon className={isCurrentLocation ? 'hc-text-blue-500' : 'hc-text-current'} icon=\"mdi:my-location\" />}\n\t\t\t\t\t\t</Button.Btn>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Transition\n\t\t\t\t\t\tas={Fragment}\n\t\t\t\t\t\tleave=\"hc-transition hc-ease-in hc-duration-100\"\n\t\t\t\t\t\tleaveFrom=\"hc-opacity-100\"\n\t\t\t\t\t\tleaveTo=\"hc-opacity-0\"\n\t\t\t\t\t\tafterLeave={clearSuggestions}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Combobox.Options className=\"hc-absolute hc-z-20 hc-mt-1 hc-max-h-60 hc-w-full hc-overflow-auto hc-rounded hc-bg-white hc-py-1 hc-text-base hc-shadow hc-ring-1 hc-ring-uiAccent/10 focus:hc-outline-none sm:hc-text-sm\">\n\t\t\t\t\t\t\t{status === \"OK\" &&\n\t\t\t\t\t\t\t\tdata.map(data => (\n\t\t\t\t\t\t\t\t\t<Combobox.Option\n\t\t\t\t\t\t\t\t\t\tkey={data.place_id}\n\t\t\t\t\t\t\t\t\t\tvalue={data.description}\n\t\t\t\t\t\t\t\t\t\tclassName={({ active }) =>\n\t\t\t\t\t\t\t\t\t\t\t`hc-relative hc-cursor-default hc-select-none hc-px-4 hc-py-2 ${active ? \"hc-bg-primary hc-text-white\" : \"hc-text-uiText\"\n\t\t\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{({ selected }) => (\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`hc-block hc-truncate ${selected ? \"hc-font-bold\" : \"hc-font-medium\"}`}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{data.description}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</Combobox.Option>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</Combobox.Options>\n\t\t\t\t\t</Transition>\n\t\t\t\t</div>\n\t\t\t</Combobox>\n\t\t</div>\n\t);\n};\n\nexport default FilterCommute;\n"],"names":["FilterCommute","_ref","className","ready","status","data","selected","isCurrentLocation","inputRef","handleSelect","setValue","setSelected","clearSuggestions","commuteLocation","setIsCurrentLocation","fetchLocation","setCommuteLocation","React","createElement","concat","htmlFor","Icon","icon","size","Combobox","value","onChange","Input","e","target","disabled","placeholder","ref","Button","Btn","variant","onClick","window","localStorage","setItem","Transition","as","Fragment","leave","leaveFrom","leaveTo","afterLeave","Options","map","Option","key","place_id","description","_ref2","active","_ref3"],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@ var Filter = function Filter(_ref) {
|
|
|
30
30
|
setShowFixedFooter = _useState4[1];
|
|
31
31
|
var transitionTimeoutRef = useRef(null);
|
|
32
32
|
useEffect(function () {
|
|
33
|
+
if (typeof window === 'undefined') return;
|
|
33
34
|
var checkOverflow = function checkOverflow() {
|
|
34
35
|
if (contentRef.current) {
|
|
35
36
|
// Add a small tolerance (5px) to avoid false positives from rounding/padding
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/modules/filter/index.js"],"sourcesContent":["\"use client\";\nimport Button from \"~/components/modules/buttons/default\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { twMerge } from '~/util/twMerge';\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nconst Filter = ({\n\tclassName,\n\thasActiveFilters,\n\tfilteredListings,\n\tselectedFilters,\n\tsetMobileTab,\n\thandleReset,\n\tisDesktop = false,\n\tstyle,\n\tchildren\n}) => {\n\tconst { filterConfig } = useMapList();\n\tconst contentRef = useRef(null);\n\tconst containerRef = useRef(null);\n\tconst [hasOverflow, setHasOverflow] = useState(false);\n\tconst [showFixedFooter, setShowFixedFooter] = useState(false);\n\tconst transitionTimeoutRef = useRef(null);\n\n\tuseEffect(() => {\n\t\tconst checkOverflow = () => {\n\t\t\tif (contentRef.current) {\n\t\t\t\t// Add a small tolerance (5px) to avoid false positives from rounding/padding\n\t\t\t\tconst hasScroll = contentRef.current.scrollHeight > contentRef.current.clientHeight + 5;\n\n\t\t\t\tif (hasScroll !== hasOverflow) {\n\t\t\t\t\tsetHasOverflow(hasScroll);\n\n\t\t\t\t\t// Clear any pending transitions\n\t\t\t\t\tif (transitionTimeoutRef.current) {\n\t\t\t\t\t\tclearTimeout(transitionTimeoutRef.current);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add a delay when transitioning to fixed footer to smooth the transition\n\t\t\t\t\tif (hasScroll) {\n\t\t\t\t\t\ttransitionTimeoutRef.current = setTimeout(() => setShowFixedFooter(true), 200);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Delay hiding fixed footer to allow animation to complete and prevent flashing\n\t\t\t\t\t\ttransitionTimeoutRef.current = setTimeout(() => setShowFixedFooter(false), 200);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Delay initial check to ensure layout is complete\n\t\tsetTimeout(checkOverflow, 100);\n\n\t\t// Check on resize\n\t\twindow.addEventListener('resize', checkOverflow);\n\n\t\t// Use ResizeObserver to detect container size changes\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tsetTimeout(checkOverflow, 50);\n\t\t});\n\t\tif (containerRef.current) {\n\t\t\tresizeObserver.observe(containerRef.current);\n\t\t}\n\t\tif (contentRef.current) {\n\t\t\tresizeObserver.observe(contentRef.current);\n\t\t}\n\n\t\t// Use MutationObserver to detect content changes\n\t\tconst mutationObserver = new MutationObserver(() => {\n\t\t\tsetTimeout(checkOverflow, 50);\n\t\t});\n\t\tif (contentRef.current) {\n\t\t\tmutationObserver.observe(contentRef.current, { childList: true, subtree: true, attributes: true });\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', checkOverflow);\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t\t// Clear timeout on unmount\n\t\t\tif (transitionTimeoutRef.current) {\n\t\t\t\tclearTimeout(transitionTimeoutRef.current);\n\t\t\t}\n\t\t};\n\t}, [children, hasOverflow]);\n\n\t// Reusable button component\n\tconst MobileButtons = () => (\n\t\t<>\n\t\t\t<Button.Btn\n\t\t\t\tonClick={handleReset}\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tclassName={filterConfig?.classNames?.resetButton}\n\t\t\t>\n\t\t\t\tReset All\n\t\t\t</Button.Btn>\n\t\t\t{selectedFilters && Object.keys(selectedFilters).length > 0 && (\n\t\t\t\t<Button.Btn\n\t\t\t\t\tonClick={() => setMobileTab(\"listTab\")}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t`${hasActiveFilters ? \"hc-opacity-0 hc-pointer-events-none\" : \"hc-opacity-100\"}`,\n\t\t\t\t\t\tfilterConfig?.classNames?.showJobsButton\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Button.Body>\n\t\t\t\t\t\t<Button.Icon icon=\"fluent:search-12-filled\" size=\"hc-size-3.5\" />\n\t\t\t\t\t\tShow {filteredListings.length} Jobs\n\t\t\t\t\t</Button.Body>\n\t\t\t\t</Button.Btn>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tstyle={isDesktop ? style : undefined}\n\t\t\tclassName={twMerge(\n `/* Mobile layout */\n hc-relative hc-w-full hc-h-full hc-flex hc-flex-col\n\n /* Desktop layout */\n md:hc-relative md:hc-flex md:hc-flex-col md:hc-max-h-[100%]\n\n ${className ?? \"\"}`,\n filterConfig?.classNames?.filterContainer\n )}\n\t\t>\n\t\t\t{/* Content area with scroll */}\n\t\t\t<div\n\t\t\t\tref={contentRef}\n\t\t\t\tclassName={twMerge(\n\t\t\t\t\t`hc-w-full hc-flex-grow hc-max-h-full hc-overflow-auto ${hasOverflow ? 'hc-pb-16' : ''} md:hc-overflow-y-auto ${hasOverflow ? 'md:hc-pb-16' : 'md:hc-pb-0'}`,\n\t\t\t\t\tfilterConfig?.classNames?.filterContent\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"hc-px-4 md:hc-pt-4 hc-space-y-4\">\n\t\t\t\t\t{children}\n\n\t\t\t\t\t{/* Inline buttons when no overflow - both mobile and desktop */}\n\t\t\t\t\t{!hasOverflow && !showFixedFooter && (\n\t\t\t\t\t\t<div className={twMerge(\n\t\t\t\t\t\t\t\"hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-border-t hc-border-gray-200 hc-animate-in hc-fade-in hc-duration-300\",\n\t\t\t\t\t\t\tfilterConfig?.classNames?.filterFooter\n\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t{/* Mobile buttons */}\n\t\t\t\t\t\t\t<div className=\"hc-flex hc-items-center hc-justify-between hc-gap-2 hc-w-full md:hc-hidden\">\n\t\t\t\t\t\t\t\t<MobileButtons />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{/* Desktop button */}\n\t\t\t\t\t\t\t<div className=\"hc-hidden md:hc-flex\">\n\t\t\t\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tclassName={filterConfig?.classNames?.resetButton}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tReset All\n\t\t\t\t\t\t\t\t</Button.Btn>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Mobile Footer - fixed at bottom (only when overflow) */}\n\t\t\t{showFixedFooter && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"hc-w-full hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-px-4 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 md:hc-hidden hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200\"\n\t\t\t\t>\n\t\t\t\t\t<MobileButtons />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Desktop Footer - fixed at bottom (only when overflow) */}\n\t\t\t{showFixedFooter && (\n\t\t\t\t<div className=\"hc-hidden md:hc-flex md:hc-justify-start hc-px-4 hc-py-4 hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200\">\n\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName={filterConfig?.classNames?.resetButton}\n\t\t\t\t\t>\n\t\t\t\t\t\tReset All\n\t\t\t\t\t</Button.Btn>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Filter;\n"],"names":["Filter","_ref","_filterConfig$classNa3","_filterConfig$classNa4","_filterConfig$classNa5","_filterConfig$classNa6","_filterConfig$classNa7","className","hasActiveFilters","filteredListings","selectedFilters","setMobileTab","handleReset","_ref$isDesktop","isDesktop","style","children","_useMapList","useMapList","filterConfig","contentRef","useRef","containerRef","_useState","useState","_useState2","_slicedToArray","hasOverflow","setHasOverflow","_useState3","_useState4","showFixedFooter","setShowFixedFooter","transitionTimeoutRef","useEffect","checkOverflow","current","hasScroll","scrollHeight","clientHeight","clearTimeout","setTimeout","window","addEventListener","resizeObserver","ResizeObserver","observe","mutationObserver","MutationObserver","childList","subtree","attributes","removeEventListener","disconnect","MobileButtons","_filterConfig$classNa","_filterConfig$classNa2","React","createElement","Fragment","Button","Btn","onClick","variant","size","classNames","resetButton","Object","keys","length","twMerge","concat","showJobsButton","Body","Icon","icon","ref","undefined","filterContainer","filterContent","filterFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/modules/filter/index.js"],"sourcesContent":["\"use client\";\nimport Button from \"~/components/modules/buttons/default\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { twMerge } from '~/util/twMerge';\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nconst Filter = ({\n\tclassName,\n\thasActiveFilters,\n\tfilteredListings,\n\tselectedFilters,\n\tsetMobileTab,\n\thandleReset,\n\tisDesktop = false,\n\tstyle,\n\tchildren\n}) => {\n\tconst { filterConfig } = useMapList();\n\tconst contentRef = useRef(null);\n\tconst containerRef = useRef(null);\n\tconst [hasOverflow, setHasOverflow] = useState(false);\n\tconst [showFixedFooter, setShowFixedFooter] = useState(false);\n\tconst transitionTimeoutRef = useRef(null);\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return;\n\t\t\n\t\tconst checkOverflow = () => {\n\t\t\tif (contentRef.current) {\n\t\t\t\t// Add a small tolerance (5px) to avoid false positives from rounding/padding\n\t\t\t\tconst hasScroll = contentRef.current.scrollHeight > contentRef.current.clientHeight + 5;\n\n\t\t\t\tif (hasScroll !== hasOverflow) {\n\t\t\t\t\tsetHasOverflow(hasScroll);\n\n\t\t\t\t\t// Clear any pending transitions\n\t\t\t\t\tif (transitionTimeoutRef.current) {\n\t\t\t\t\t\tclearTimeout(transitionTimeoutRef.current);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add a delay when transitioning to fixed footer to smooth the transition\n\t\t\t\t\tif (hasScroll) {\n\t\t\t\t\t\ttransitionTimeoutRef.current = setTimeout(() => setShowFixedFooter(true), 200);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Delay hiding fixed footer to allow animation to complete and prevent flashing\n\t\t\t\t\t\ttransitionTimeoutRef.current = setTimeout(() => setShowFixedFooter(false), 200);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Delay initial check to ensure layout is complete\n\t\tsetTimeout(checkOverflow, 100);\n\n\t\t// Check on resize\n\t\twindow.addEventListener('resize', checkOverflow);\n\n\t\t// Use ResizeObserver to detect container size changes\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tsetTimeout(checkOverflow, 50);\n\t\t});\n\t\tif (containerRef.current) {\n\t\t\tresizeObserver.observe(containerRef.current);\n\t\t}\n\t\tif (contentRef.current) {\n\t\t\tresizeObserver.observe(contentRef.current);\n\t\t}\n\n\t\t// Use MutationObserver to detect content changes\n\t\tconst mutationObserver = new MutationObserver(() => {\n\t\t\tsetTimeout(checkOverflow, 50);\n\t\t});\n\t\tif (contentRef.current) {\n\t\t\tmutationObserver.observe(contentRef.current, { childList: true, subtree: true, attributes: true });\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', checkOverflow);\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t\t// Clear timeout on unmount\n\t\t\tif (transitionTimeoutRef.current) {\n\t\t\t\tclearTimeout(transitionTimeoutRef.current);\n\t\t\t}\n\t\t};\n\t}, [children, hasOverflow]);\n\n\t// Reusable button component\n\tconst MobileButtons = () => (\n\t\t<>\n\t\t\t<Button.Btn\n\t\t\t\tonClick={handleReset}\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tclassName={filterConfig?.classNames?.resetButton}\n\t\t\t>\n\t\t\t\tReset All\n\t\t\t</Button.Btn>\n\t\t\t{selectedFilters && Object.keys(selectedFilters).length > 0 && (\n\t\t\t\t<Button.Btn\n\t\t\t\t\tonClick={() => setMobileTab(\"listTab\")}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t`${hasActiveFilters ? \"hc-opacity-0 hc-pointer-events-none\" : \"hc-opacity-100\"}`,\n\t\t\t\t\t\tfilterConfig?.classNames?.showJobsButton\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Button.Body>\n\t\t\t\t\t\t<Button.Icon icon=\"fluent:search-12-filled\" size=\"hc-size-3.5\" />\n\t\t\t\t\t\tShow {filteredListings.length} Jobs\n\t\t\t\t\t</Button.Body>\n\t\t\t\t</Button.Btn>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tstyle={isDesktop ? style : undefined}\n\t\t\tclassName={twMerge(\n `/* Mobile layout */\n hc-relative hc-w-full hc-h-full hc-flex hc-flex-col\n\n /* Desktop layout */\n md:hc-relative md:hc-flex md:hc-flex-col md:hc-max-h-[100%]\n\n ${className ?? \"\"}`,\n filterConfig?.classNames?.filterContainer\n )}\n\t\t>\n\t\t\t{/* Content area with scroll */}\n\t\t\t<div\n\t\t\t\tref={contentRef}\n\t\t\t\tclassName={twMerge(\n\t\t\t\t\t`hc-w-full hc-flex-grow hc-max-h-full hc-overflow-auto ${hasOverflow ? 'hc-pb-16' : ''} md:hc-overflow-y-auto ${hasOverflow ? 'md:hc-pb-16' : 'md:hc-pb-0'}`,\n\t\t\t\t\tfilterConfig?.classNames?.filterContent\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"hc-px-4 md:hc-pt-4 hc-space-y-4\">\n\t\t\t\t\t{children}\n\n\t\t\t\t\t{/* Inline buttons when no overflow - both mobile and desktop */}\n\t\t\t\t\t{!hasOverflow && !showFixedFooter && (\n\t\t\t\t\t\t<div className={twMerge(\n\t\t\t\t\t\t\t\"hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-border-t hc-border-gray-200 hc-animate-in hc-fade-in hc-duration-300\",\n\t\t\t\t\t\t\tfilterConfig?.classNames?.filterFooter\n\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t{/* Mobile buttons */}\n\t\t\t\t\t\t\t<div className=\"hc-flex hc-items-center hc-justify-between hc-gap-2 hc-w-full md:hc-hidden\">\n\t\t\t\t\t\t\t\t<MobileButtons />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{/* Desktop button */}\n\t\t\t\t\t\t\t<div className=\"hc-hidden md:hc-flex\">\n\t\t\t\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tclassName={filterConfig?.classNames?.resetButton}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tReset All\n\t\t\t\t\t\t\t\t</Button.Btn>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Mobile Footer - fixed at bottom (only when overflow) */}\n\t\t\t{showFixedFooter && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"hc-w-full hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-px-4 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 md:hc-hidden hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200\"\n\t\t\t\t>\n\t\t\t\t\t<MobileButtons />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Desktop Footer - fixed at bottom (only when overflow) */}\n\t\t\t{showFixedFooter && (\n\t\t\t\t<div className=\"hc-hidden md:hc-flex md:hc-justify-start hc-px-4 hc-py-4 hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200\">\n\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName={filterConfig?.classNames?.resetButton}\n\t\t\t\t\t>\n\t\t\t\t\t\tReset All\n\t\t\t\t\t</Button.Btn>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Filter;\n"],"names":["Filter","_ref","_filterConfig$classNa3","_filterConfig$classNa4","_filterConfig$classNa5","_filterConfig$classNa6","_filterConfig$classNa7","className","hasActiveFilters","filteredListings","selectedFilters","setMobileTab","handleReset","_ref$isDesktop","isDesktop","style","children","_useMapList","useMapList","filterConfig","contentRef","useRef","containerRef","_useState","useState","_useState2","_slicedToArray","hasOverflow","setHasOverflow","_useState3","_useState4","showFixedFooter","setShowFixedFooter","transitionTimeoutRef","useEffect","window","checkOverflow","current","hasScroll","scrollHeight","clientHeight","clearTimeout","setTimeout","addEventListener","resizeObserver","ResizeObserver","observe","mutationObserver","MutationObserver","childList","subtree","attributes","removeEventListener","disconnect","MobileButtons","_filterConfig$classNa","_filterConfig$classNa2","React","createElement","Fragment","Button","Btn","onClick","variant","size","classNames","resetButton","Object","keys","length","twMerge","concat","showJobsButton","Body","Icon","icon","ref","undefined","filterContainer","filterContent","filterFooter"],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ var FilterItem = function FilterItem(_ref) {
|
|
|
31
31
|
React.createElement("label", _extends({
|
|
32
32
|
onClick: function onClick() {
|
|
33
33
|
if (!isExternalLink) return;
|
|
34
|
+
if (typeof window === 'undefined') return;
|
|
34
35
|
trackEvent(eventTypes.EXTERNAL_LINK_CLICKED, {
|
|
35
36
|
link: externalLinkUrl
|
|
36
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","sources":["../../../../src/components/modules/filter/item.js"],"sourcesContent":["import React from 'react';\nimport Icon from '~/components/modules/icon';\nimport { twMerge } from '~/util/twMerge';\nimport { useMapList } from '~/contexts/mapListContext';\n\nconst FilterItem = ({\n\tclassName,\n\titem,\n\ttype,\n\titemKey,\n\thasCount,\n\tfield,\n\tactiveItem,\n\tsetActiveItem,\n\tchangeHandler,\n\tisExternalLink = false,\n\texternalLinkUrl,\n\ttrackEvent,\n\teventTypes,\n\t...rest\n}) => {\n\tconst { filterConfig } = useMapList();\n\tconst itemName = item.name ? item.name : item;\n\n\treturn (\n\t\t// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions\n\t\t<label\n\t\t onClick={() =>\n\t\t\t{\n\t\t\t\tif(!isExternalLink) return;\n\t\t\t trackEvent(eventTypes.EXTERNAL_LINK_CLICKED, { link: externalLinkUrl });\n\t\t\t\twindow.location.href = externalLinkUrl;\n\t\t\t}}\n\t\t\tclassName={`\n hc-flex hc-items-start hc-gap-2 hc-px-2 hc-py-1.5 hc-rounded-sm hc-text-sm hc-cursor-pointer hc-transition hover:hc-bg-uiAccent/5\n ${className ?? \"\"}\n `}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{isExternalLink ? (\n\t\t\t\t<Icon\n\t\t\t\t\ticon=\"tabler:external-link\"\n\t\t\t\t\tsize=\"hc-size-4\"\n\t\t\t\t\tclassName={'hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30'}\n\t\t\t\t></Icon>\n\t\t\t) : (\n\t\t\t\t<input\n\t\t\t\t\tid={itemKey}\n\t\t\t\t\tname={field}\n\t\t\t\t\tdisabled={item.count === 0}\n\t\t\t\t\tvalue={itemName}\n\t\t\t\t\ttype={type}\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\"hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-sm\",\n\t\t\t\t\t\tfilterConfig?.classNames?.filterItemCheckbox\n\t\t\t\t\t)}\n\t\t\t\t\tchecked={activeItem}\n\t\t\t\t\tonChange={() => {\n\t\t\t\t\t\tsetActiveItem(!activeItem);\n\t\t\t\t\t\tchangeHandler();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<span className={twMerge(\n\t\t\t\t\"hc-text-left hc-font-medium\",\n\t\t\t\tfilterConfig?.classNames?.filterItemLabel\n\t\t\t)}>{itemName}</span>\n\t\t\t{hasCount && !isExternalLink && (\n\t\t\t\t<span className={twMerge(\n\t\t\t\t\t\"hc-inline-block hc-mt-1 hc-ml-auto hc-text-xs hc-leading-none hc-text-primary\",\n\t\t\t\t\tfilterConfig?.classNames?.filterItemCount\n\t\t\t\t)}>\n ({item.count})\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</label>\n\t);\n};\n\nexport default FilterItem;\n"],"names":["FilterItem","_ref","_filterConfig$classNa","_filterConfig$classNa2","_filterConfig$classNa3","className","item","type","itemKey","hasCount","field","activeItem","setActiveItem","changeHandler","_ref$isExternalLink","isExternalLink","externalLinkUrl","trackEvent","eventTypes","rest","_objectWithoutProperties","_excluded","_useMapList","useMapList","filterConfig","itemName","name","React","createElement","_extends","onClick","
|
|
1
|
+
{"version":3,"file":"item.js","sources":["../../../../src/components/modules/filter/item.js"],"sourcesContent":["import React from 'react';\nimport Icon from '~/components/modules/icon';\nimport { twMerge } from '~/util/twMerge';\nimport { useMapList } from '~/contexts/mapListContext';\n\nconst FilterItem = ({\n\tclassName,\n\titem,\n\ttype,\n\titemKey,\n\thasCount,\n\tfield,\n\tactiveItem,\n\tsetActiveItem,\n\tchangeHandler,\n\tisExternalLink = false,\n\texternalLinkUrl,\n\ttrackEvent,\n\teventTypes,\n\t...rest\n}) => {\n\tconst { filterConfig } = useMapList();\n\tconst itemName = item.name ? item.name : item;\n\n\treturn (\n\t\t// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions\n\t\t<label\n\t\t onClick={() =>\n\t\t\t{\n\t\t\t\tif(!isExternalLink) return;\n\t\t\t\tif (typeof window === 'undefined') return;\n\t\t\t trackEvent(eventTypes.EXTERNAL_LINK_CLICKED, { link: externalLinkUrl });\n\t\t\t\twindow.location.href = externalLinkUrl;\n\t\t\t}}\n\t\t\tclassName={`\n hc-flex hc-items-start hc-gap-2 hc-px-2 hc-py-1.5 hc-rounded-sm hc-text-sm hc-cursor-pointer hc-transition hover:hc-bg-uiAccent/5\n ${className ?? \"\"}\n `}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{isExternalLink ? (\n\t\t\t\t<Icon\n\t\t\t\t\ticon=\"tabler:external-link\"\n\t\t\t\t\tsize=\"hc-size-4\"\n\t\t\t\t\tclassName={'hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30'}\n\t\t\t\t></Icon>\n\t\t\t) : (\n\t\t\t\t<input\n\t\t\t\t\tid={itemKey}\n\t\t\t\t\tname={field}\n\t\t\t\t\tdisabled={item.count === 0}\n\t\t\t\t\tvalue={itemName}\n\t\t\t\t\ttype={type}\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\"hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-sm\",\n\t\t\t\t\t\tfilterConfig?.classNames?.filterItemCheckbox\n\t\t\t\t\t)}\n\t\t\t\t\tchecked={activeItem}\n\t\t\t\t\tonChange={() => {\n\t\t\t\t\t\tsetActiveItem(!activeItem);\n\t\t\t\t\t\tchangeHandler();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<span className={twMerge(\n\t\t\t\t\"hc-text-left hc-font-medium\",\n\t\t\t\tfilterConfig?.classNames?.filterItemLabel\n\t\t\t)}>{itemName}</span>\n\t\t\t{hasCount && !isExternalLink && (\n\t\t\t\t<span className={twMerge(\n\t\t\t\t\t\"hc-inline-block hc-mt-1 hc-ml-auto hc-text-xs hc-leading-none hc-text-primary\",\n\t\t\t\t\tfilterConfig?.classNames?.filterItemCount\n\t\t\t\t)}>\n ({item.count})\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</label>\n\t);\n};\n\nexport default FilterItem;\n"],"names":["FilterItem","_ref","_filterConfig$classNa","_filterConfig$classNa2","_filterConfig$classNa3","className","item","type","itemKey","hasCount","field","activeItem","setActiveItem","changeHandler","_ref$isExternalLink","isExternalLink","externalLinkUrl","trackEvent","eventTypes","rest","_objectWithoutProperties","_excluded","_useMapList","useMapList","filterConfig","itemName","name","React","createElement","_extends","onClick","window","EXTERNAL_LINK_CLICKED","link","location","href","concat","Icon","icon","size","id","disabled","count","value","twMerge","classNames","filterItemCheckbox","checked","onChange","filterItemLabel","filterItemCount"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends, slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React, { forwardRef } from 'react';
|
|
3
3
|
import * as Select from '@radix-ui/react-select';
|
|
4
|
-
import { twMerge } from '
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import IconContained from '../icon.js';
|
|
6
6
|
import Button from '../buttons/default.js';
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React, { forwardRef } from 'react';
|
|
3
|
-
import { twMerge } from '
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
4
|
|
|
5
5
|
var _excluded = ["as", "children", "className", "autoRows", "columns", "gap"];
|
|
6
6
|
var Grid = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { taggedTemplateLiteral as _taggedTemplateLiteral } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { twMerge } from '
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
4
|
import Grid from '../grid.js';
|
|
5
5
|
import HeaderItem from './header-item.js';
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { twMerge } from '
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
4
|
|
|
5
5
|
var _excluded = ["className", "content"];
|
|
6
6
|
var CardItemExpand = function CardItemExpand(_ref) {
|