@abcagency/hc-ui-components 1.3.47 → 1.3.49
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 +1 -0
- package/dist/components/HireControlMap.js.map +1 -1
- package/dist/components/containers/maps/map-container.js +34 -2
- package/dist/components/containers/maps/map-container.js.map +1 -1
- package/dist/components/containers/maps/map-list-container.js +4 -2
- package/dist/components/containers/maps/map-list-container.js.map +1 -1
- package/dist/components/modules/buttons/show-all-button.js +1 -2
- package/dist/components/modules/buttons/show-all-button.js.map +1 -1
- package/dist/components/modules/maps/map-list.js +3 -2
- package/dist/components/modules/maps/map-list.js.map +1 -1
- package/dist/components/modules/maps/map.js.map +1 -1
- package/dist/util/filterUtil.js +26 -1
- package/dist/util/filterUtil.js.map +1 -1
- package/package.json +1 -1
- package/src/components/HireControlMap.js +1 -0
- package/src/components/containers/maps/map-container.js +245 -206
- package/src/components/containers/maps/map-list-container.js +3 -1
- package/src/components/modules/buttons/show-all-button.js +2 -3
- package/src/components/modules/maps/map-list.js +13 -3
- package/src/components/modules/maps/map.js +64 -64
- package/src/util/filterUtil.js +20 -0
|
@@ -156,6 +156,7 @@ var HomeBody = function HomeBody(_ref3) {
|
|
|
156
156
|
size: siteConfig.pointsOfInterestConfig.placeMarkerSize
|
|
157
157
|
}
|
|
158
158
|
},
|
|
159
|
+
mapPosition: siteConfig.mapPosition,
|
|
159
160
|
showMap: siteConfig.showMap,
|
|
160
161
|
fieldsShown: siteConfig.fieldsShown,
|
|
161
162
|
specialFeatures: siteConfig.specialFeatures,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HireControlMap.js","sources":["../../src/components/HireControlMap.js"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\n\nimport Grid from '~/components/modules/grid';\nimport Filter from '~/components/containers/filter/filter-container';\nimport MapList from '~/components/containers/maps/map-list-container';\n\nimport { MapProvider } from '~/contexts/mapContext';\nimport { PlacesProvider } from '~/contexts/placesContext';\nimport { MapListProvider } from '~/contexts/mapListContext';\nimport { TrackEventProvider } from '~/contexts/trackEventContext';\n\nimport { getMapConfig } from '~/services/configService';\nimport { setClientAuthKey } from '~/clientToken.js';\n\nimport '../styles/index.css';\nimport { ThemeProvider } from '~/contexts/themeContext';\n\nconst libraries = ['places'];\n\nexport const HireControlMap = ({\n\tclientToken,\n\tnavigateToDetails = null,\n\tnavigateToEasyApply = null,\n\thandleUrlUpdate = null,\n\tLink = null,\n\tlinkFormat = '/jobs/[slug]',\n\ttrackEvent = (eventType, eventObj) => {console.log(eventType); console.log(eventObj);},\n\tlistings = [],\n\tsetFiltersUrl = null\n}) => {\n\tconst [siteConfig, setSiteconfig] = useState(null);\n\n\tuseEffect(() => {\n\t\tsetClientAuthKey(clientToken);\n\t\tconst fetchSiteConfig = async () => {\n\t\t\ttry {\n\t\t\t\tconst configData = await getMapConfig(clientToken);\n\t\t\t\tsetSiteconfig(configData);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to fetch site configuration:', error);\n\t\t\t}\n\t\t};\n\n\t\tfetchSiteConfig();\n\t}, [clientToken]);\n\n\tconst { isLoaded } = useLoadScript({\n\t\tgoogleMapsApiKey: process.env.GOOGLE_MAPS_API_KEY,\n\t\tversion: 'quarterly',\n\t\tlibraries: libraries\n\t});\n\n\treturn (\n\t\t<div>\n\t\t\t{isLoaded && siteConfig && (\n\t\t\t\t<HomeBody\n\t\t\t\t\tsiteConfig={siteConfig}\n\t\t\t\t\tnavigateToDetails={navigateToDetails}\n\t\t\t\t\tnavigateToEasyApply={navigateToEasyApply}\n\t\t\t\t\tLink={Link}\n\t\t\t\t\tlinkFormat={linkFormat}\n\t\t\t\t\ttrackEvent={trackEvent}\n\t\t\t\t\tlistings={listings}\n\t\t\t\t\tsetFiltersUrl={setFiltersUrl}\n\t\t\t\t\thandleUrlUpdate={handleUrlUpdate}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nconst HomeBody = ({ siteConfig, navigateToDetails, navigateToEasyApply, Link, linkFormat, trackEvent, listings, setFiltersUrl, handleUrlUpdate }) => {\n\tconst resetFilters = false;\n\n\treturn (\n\t\t<TrackEventProvider trackEvent={trackEvent}>\n\t\t\t<ThemeProvider uiText={siteConfig.colors.uiText} uiAccent={siteConfig.colors.uiAccent} primary={siteConfig.colors.primary} primaryDark={siteConfig.colors.primaryDark} secondary={siteConfig.colors.secondary} secondaryDark={siteConfig.colors.secondaryDark}>\n\t\t\t\t<MapListProvider\n\t\t\t\t\tsiteConfig={siteConfig}\n\t\t\t\t\tresetFilters={resetFilters}\n\t\t\t\t\tavigateToDetails={navigateToDetails}\n\t\t\t\t\tnavigateToEasyApply={navigateToEasyApply}\n\t\t\t\t\tLink={Link}\n\t\t\t\t\tlinkFormat={linkFormat}\n\t\t\t\t\tlistings={listings}\n\t\t\t\t\tsetFiltersUrl={setFiltersUrl}\n\t\t\t\t\thandleUrlUpdate={handleUrlUpdate}\n\t\t\t\t>\n\t\t\t\t\t<MapProvider resetFilters={resetFilters}>\n\t\t\t\t\t\t<PlacesProvider\n\t\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\t\tmarkerColors={{\n\t\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\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\t\t<Grid\n\t\t\t\t\t\t\t\tas='section'\n\t\t\t\t\t\t\t\tid='job-search-interface'\n\t\t\t\t\t\t\t\tcolumns='md:hc-grid-cols-[1fr_2.5fr] lg:hc-grid-cols-[1fr_3.5fr]'\n\t\t\t\t\t\t\t\tgap='hc-gap-0'\n\t\t\t\t\t\t\t\tautoRows={false}\n\t\t\t\t\t\t\t\tclassName='hc-bundle hc-items-stretch hc-h-screen hc-min-h-[30rem] hc-divide-x hc-divide-uiAccent/20'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Grid.Item className='hc-bg-gray-100'>\n\t\t\t\t\t\t\t\t\t<Filter showMap={siteConfig.showMap} className='hc-hidden md:hc-block' />\n\t\t\t\t\t\t\t\t</Grid.Item>\n\t\t\t\t\t\t\t\t<MapList\n\t\t\t\t\t\t\t\t\tmarkerConfigs={{\n\t\t\t\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\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\tshowMap={siteConfig.showMap}\n\t\t\t\t\t\t\t\t\tfieldsShown={siteConfig.fieldsShown}\n\t\t\t\t\t\t\t\t\tspecialFeatures={siteConfig.specialFeatures}\n\t\t\t\t\t\t\t\t\tfieldNames={siteConfig.fieldNames}\n\t\t\t\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PlacesProvider>\n\t\t\t\t\t</MapProvider>\n\t\t\t\t</MapListProvider>\n\t\t\t</ThemeProvider>\n\t\t</TrackEventProvider>\n\t);\n};\n\nexport default HireControlMap;\n"],"names":["libraries","HireControlMap","_ref","clientToken","_ref$navigateToDetail","navigateToDetails","_ref$navigateToEasyAp","navigateToEasyApply","_ref$handleUrlUpdate","handleUrlUpdate","_ref$Link","Link","_ref$linkFormat","linkFormat","_ref$trackEvent","trackEvent","eventType","eventObj","console","log","_ref$listings","listings","_ref$setFiltersUrl","setFiltersUrl","_useState","useState","_useState2","_slicedToArray","siteConfig","setSiteconfig","useEffect","setClientAuthKey","fetchSiteConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","configData","wrap","_callee$","_context","prev","next","getMapConfig","sent","t0","error","stop","apply","arguments","_useLoadScript","useLoadScript","googleMapsApiKey","version","isLoaded","React","createElement","HomeBody","_ref3","_siteConfig$pointsOfI","_siteConfig$pointsOfI2","resetFilters","TrackEventProvider","ThemeProvider","uiText","colors","uiAccent","primary","primaryDark","secondary","secondaryDark","MapListProvider","avigateToDetails","MapProvider","PlacesProvider","placeMappings","pointsOfInterestConfig","markerColors","fillColor","strokeColor","selectedFillColor","selectedStrokeColor","placeMarkers","placeMarkerColors","size","placeMarkerSize","Grid","as","id","columns","gap","autoRows","className","Item","Filter","showMap","MapList","markerConfigs","fieldsShown","specialFeatures","fieldNames"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HireControlMap.js","sources":["../../src/components/HireControlMap.js"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\n\nimport Grid from '~/components/modules/grid';\nimport Filter from '~/components/containers/filter/filter-container';\nimport MapList from '~/components/containers/maps/map-list-container';\n\nimport { MapProvider } from '~/contexts/mapContext';\nimport { PlacesProvider } from '~/contexts/placesContext';\nimport { MapListProvider } from '~/contexts/mapListContext';\nimport { TrackEventProvider } from '~/contexts/trackEventContext';\n\nimport { getMapConfig } from '~/services/configService';\nimport { setClientAuthKey } from '~/clientToken.js';\n\nimport '../styles/index.css';\nimport { ThemeProvider } from '~/contexts/themeContext';\n\nconst libraries = ['places'];\n\nexport const HireControlMap = ({\n\tclientToken,\n\tnavigateToDetails = null,\n\tnavigateToEasyApply = null,\n\thandleUrlUpdate = null,\n\tLink = null,\n\tlinkFormat = '/jobs/[slug]',\n\ttrackEvent = (eventType, eventObj) => {console.log(eventType); console.log(eventObj);},\n\tlistings = [],\n\tsetFiltersUrl = null\n}) => {\n\tconst [siteConfig, setSiteconfig] = useState(null);\n\n\tuseEffect(() => {\n\t\tsetClientAuthKey(clientToken);\n\t\tconst fetchSiteConfig = async () => {\n\t\t\ttry {\n\t\t\t\tconst configData = await getMapConfig(clientToken);\n\t\t\t\tsetSiteconfig(configData);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to fetch site configuration:', error);\n\t\t\t}\n\t\t};\n\n\t\tfetchSiteConfig();\n\t}, [clientToken]);\n\n\tconst { isLoaded } = useLoadScript({\n\t\tgoogleMapsApiKey: process.env.GOOGLE_MAPS_API_KEY,\n\t\tversion: 'quarterly',\n\t\tlibraries: libraries\n\t});\n\n\treturn (\n\t\t<div>\n\t\t\t{isLoaded && siteConfig && (\n\t\t\t\t<HomeBody\n\t\t\t\t\tsiteConfig={siteConfig}\n\t\t\t\t\tnavigateToDetails={navigateToDetails}\n\t\t\t\t\tnavigateToEasyApply={navigateToEasyApply}\n\t\t\t\t\tLink={Link}\n\t\t\t\t\tlinkFormat={linkFormat}\n\t\t\t\t\ttrackEvent={trackEvent}\n\t\t\t\t\tlistings={listings}\n\t\t\t\t\tsetFiltersUrl={setFiltersUrl}\n\t\t\t\t\thandleUrlUpdate={handleUrlUpdate}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nconst HomeBody = ({ siteConfig, navigateToDetails, navigateToEasyApply, Link, linkFormat, trackEvent, listings, setFiltersUrl, handleUrlUpdate }) => {\n\tconst resetFilters = false;\n\n\treturn (\n\t\t<TrackEventProvider trackEvent={trackEvent}>\n\t\t\t<ThemeProvider uiText={siteConfig.colors.uiText} uiAccent={siteConfig.colors.uiAccent} primary={siteConfig.colors.primary} primaryDark={siteConfig.colors.primaryDark} secondary={siteConfig.colors.secondary} secondaryDark={siteConfig.colors.secondaryDark}>\n\t\t\t\t<MapListProvider\n\t\t\t\t\tsiteConfig={siteConfig}\n\t\t\t\t\tresetFilters={resetFilters}\n\t\t\t\t\tavigateToDetails={navigateToDetails}\n\t\t\t\t\tnavigateToEasyApply={navigateToEasyApply}\n\t\t\t\t\tLink={Link}\n\t\t\t\t\tlinkFormat={linkFormat}\n\t\t\t\t\tlistings={listings}\n\t\t\t\t\tsetFiltersUrl={setFiltersUrl}\n\t\t\t\t\thandleUrlUpdate={handleUrlUpdate}\n\t\t\t\t>\n\t\t\t\t\t<MapProvider resetFilters={resetFilters}>\n\t\t\t\t\t\t<PlacesProvider\n\t\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\t\tmarkerColors={{\n\t\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\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\t\t<Grid\n\t\t\t\t\t\t\t\tas='section'\n\t\t\t\t\t\t\t\tid='job-search-interface'\n\t\t\t\t\t\t\t\tcolumns='md:hc-grid-cols-[1fr_2.5fr] lg:hc-grid-cols-[1fr_3.5fr]'\n\t\t\t\t\t\t\t\tgap='hc-gap-0'\n\t\t\t\t\t\t\t\tautoRows={false}\n\t\t\t\t\t\t\t\tclassName='hc-bundle hc-items-stretch hc-h-screen hc-min-h-[30rem] hc-divide-x hc-divide-uiAccent/20'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Grid.Item className='hc-bg-gray-100'>\n\t\t\t\t\t\t\t\t\t<Filter showMap={siteConfig.showMap} className='hc-hidden md:hc-block' />\n\t\t\t\t\t\t\t\t</Grid.Item>\n\t\t\t\t\t\t\t\t<MapList\n\t\t\t\t\t\t\t\t\tmarkerConfigs={{\n\t\t\t\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\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\tmapPosition={siteConfig.mapPosition}\n\t\t\t\t\t\t\t\t\tshowMap={siteConfig.showMap}\n\t\t\t\t\t\t\t\t\tfieldsShown={siteConfig.fieldsShown}\n\t\t\t\t\t\t\t\t\tspecialFeatures={siteConfig.specialFeatures}\n\t\t\t\t\t\t\t\t\tfieldNames={siteConfig.fieldNames}\n\t\t\t\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PlacesProvider>\n\t\t\t\t\t</MapProvider>\n\t\t\t\t</MapListProvider>\n\t\t\t</ThemeProvider>\n\t\t</TrackEventProvider>\n\t);\n};\n\nexport default HireControlMap;\n"],"names":["libraries","HireControlMap","_ref","clientToken","_ref$navigateToDetail","navigateToDetails","_ref$navigateToEasyAp","navigateToEasyApply","_ref$handleUrlUpdate","handleUrlUpdate","_ref$Link","Link","_ref$linkFormat","linkFormat","_ref$trackEvent","trackEvent","eventType","eventObj","console","log","_ref$listings","listings","_ref$setFiltersUrl","setFiltersUrl","_useState","useState","_useState2","_slicedToArray","siteConfig","setSiteconfig","useEffect","setClientAuthKey","fetchSiteConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","configData","wrap","_callee$","_context","prev","next","getMapConfig","sent","t0","error","stop","apply","arguments","_useLoadScript","useLoadScript","googleMapsApiKey","version","isLoaded","React","createElement","HomeBody","_ref3","_siteConfig$pointsOfI","_siteConfig$pointsOfI2","resetFilters","TrackEventProvider","ThemeProvider","uiText","colors","uiAccent","primary","primaryDark","secondary","secondaryDark","MapListProvider","avigateToDetails","MapProvider","PlacesProvider","placeMappings","pointsOfInterestConfig","markerColors","fillColor","strokeColor","selectedFillColor","selectedStrokeColor","placeMarkers","placeMarkerColors","size","placeMarkerSize","Grid","as","id","columns","gap","autoRows","className","Item","Filter","showMap","MapList","markerConfigs","mapPosition","fieldsShown","specialFeatures","fieldNames"],"mappings":"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"}
|
|
@@ -26,7 +26,8 @@ var MapContainer = function MapContainer(_ref) {
|
|
|
26
26
|
mapItems = _useMapList.mapItems,
|
|
27
27
|
filteredListings = _useMapList.filteredListings,
|
|
28
28
|
setSelectedFilters = _useMapList.setSelectedFilters,
|
|
29
|
-
setQuery = _useMapList.setQuery
|
|
29
|
+
setQuery = _useMapList.setQuery,
|
|
30
|
+
siteConfig = _useMapList.siteConfig;
|
|
30
31
|
var mapRef = useRef();
|
|
31
32
|
var markerRefs = useRef({});
|
|
32
33
|
var mapContainerRef = useRef(null);
|
|
@@ -107,7 +108,12 @@ var MapContainer = function MapContainer(_ref) {
|
|
|
107
108
|
bounds.extend(new google.maps.LatLng(item.latitude, item.longitude));
|
|
108
109
|
});
|
|
109
110
|
if (!map) return;
|
|
111
|
+
var _currentCenter = map.getCenter();
|
|
110
112
|
map.fitBounds(bounds);
|
|
113
|
+
var newCenter = bounds.getCenter();
|
|
114
|
+
if (_currentCenter && newCenter) {
|
|
115
|
+
map.panTo(newCenter);
|
|
116
|
+
}
|
|
111
117
|
}
|
|
112
118
|
if (mapRef.current.zoom > 17) {
|
|
113
119
|
mapRef.current.setZoom(16);
|
|
@@ -133,6 +139,31 @@ var MapContainer = function MapContainer(_ref) {
|
|
|
133
139
|
fillColor: markerConfigs.fillColor,
|
|
134
140
|
strokeColor: markerConfigs.strokeColor
|
|
135
141
|
});
|
|
142
|
+
var onClusterClick = function onClusterClick(cluster) {
|
|
143
|
+
if (!siteConfig.optionalShowLocationClusterConfig || mapRef.current.zoom > siteConfig.optionalShowLocationClusterConfig.showForZoomLevelLessThan) {
|
|
144
|
+
console.log("should return");
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (!cluster || typeof cluster.getMarkers !== 'function') {
|
|
148
|
+
console.error('Cluster object or getMarkers method not available.');
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
var markers = cluster.getMarkers();
|
|
152
|
+
if (!markers || markers.length === 0) {
|
|
153
|
+
console.error('No markers found in the cluster.');
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
setTimeout(function () {
|
|
157
|
+
var bounds = new window.google.maps.LatLngBounds();
|
|
158
|
+
markers.forEach(function (marker) {
|
|
159
|
+
bounds.extend(marker.getPosition());
|
|
160
|
+
});
|
|
161
|
+
bounds.extend(new google.maps.LatLng(siteConfig.optionalShowLocationClusterConfig.latitude, siteConfig.optionalShowLocationClusterConfig.longitude));
|
|
162
|
+
if (mapRef.current) {
|
|
163
|
+
mapRef.current.fitBounds(bounds);
|
|
164
|
+
}
|
|
165
|
+
}, 500);
|
|
166
|
+
};
|
|
136
167
|
return /*#__PURE__*/React__default.createElement(Map, {
|
|
137
168
|
zoom: zoom,
|
|
138
169
|
center: center,
|
|
@@ -148,7 +179,8 @@ var MapContainer = function MapContainer(_ref) {
|
|
|
148
179
|
filteredListingsLength: filteredListings.length,
|
|
149
180
|
setSelectedFilters: setSelectedFilters
|
|
150
181
|
}, /*#__PURE__*/React__default.createElement(MarkerClustererF, {
|
|
151
|
-
options: clusterOptions(clusterGridSize, markerConfigs.fillColor)
|
|
182
|
+
options: clusterOptions(clusterGridSize, markerConfigs.fillColor),
|
|
183
|
+
onClick: onClusterClick
|
|
152
184
|
}, function (clusterer) {
|
|
153
185
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, mapItems.map(function (item) {
|
|
154
186
|
return /*#__PURE__*/React__default.createElement(MapMarkerContainer, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-container.js","sources":["../../../../src/components/containers/maps/map-container.js"],"sourcesContent":["import React, { useEffect, useRef } 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 } from \"@react-google-maps/api\";\nimport { clusterOptions } from \"~/util/mapUtil\";\n\nconst MapContainer = ({\n\tmarkerConfigs,\n\tinfoWindowClasses,\n\tclusterGridSize = 60\n}) => {\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} = useMap();\n\n\tconst {\n\t\tmapItems, 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<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 options={clusterOptions(clusterGridSize, markerConfigs.fillColor)}>\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\t<MapMarker\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\tselectedLocation={location}\n\t\t\t\t\t\t\t\tmarkerRefs={markerRefs}\n\t\t\t\t\t\t\t\tinfoWindowClasses={infoWindowClasses}\n\t\t\t\t\t\t\t\tsetSelectedLocation={setLocation}\n\t\t\t\t\t\t\t\tmarkerClickHandler={markerClickHandler}\n\t\t\t\t\t\t\t\tclusterer={clusterer}\n\t\t\t\t\t\t\t\tmarkerIcon={markerIcon(markerConfigs)}\n\t\t\t\t\t\t\t\tmarkerIconSelected={markerIconSelected(markerConfigs)}\n\t\t\t\t\t\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{poiMarkers && poiMarkers.markers.map((marker, index) => (\n\t\t\t\t\t\t\t<PlaceMarker\n\t\t\t\t\t\t\t\tkey={`marker-${marker.title}-${index}`}\n\t\t\t\t\t\t\t\tmarker={marker}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\tselectedPlaceMarker={selectedPlaceMarker}\n\t\t\t\t\t\t\t\tplacesWindow={placesWindow}\n\t\t\t\t\t\t\t\tsetPlacesWindow={setPlacesWindow}\n\t\t\t\t\t\t\t\tsetSelectedPlaceMarker={setSelectedPlaceMarker}\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)}\n\t\t\t</MarkerClustererF>\n\t\t</Map>\n\t);\n};\n\nexport default MapContainer;\n"],"names":["MapContainer","_ref","markerConfigs","infoWindowClasses","_ref$clusterGridSize","clusterGridSize","_useMap","useMap","location","zoom","center","selectLocationEntity","setLocation","mapInteracted","setMapInteracted","_useMapList","useMapList","mapItems","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","Map","filteredListingsLength","MarkerClustererF","options","clusterOptions","clusterer","Fragment","MapMarker","key","id","selectedLocation","setSelectedLocation","markerIcon","markerIconSelected","markers","marker","index","PlaceMarker","concat","title"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"map-container.js","sources":["../../../../src/components/containers/maps/map-container.js"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\r\n\r\nimport MapMarker from \"~/components/containers/maps/map-marker-container\";\r\nimport PlaceMarker from \"~/components/modules/maps/place-marker\";\r\n\r\nimport { usePlaces } from \"~/contexts/placesContext\";\r\nimport { useMap } from \"~/contexts/mapContext\";\r\nimport { useMapList } from \"~/contexts/mapListContext\";\r\n\r\nimport { markerIconSelected, markerIcon, pinIcon } from \"~/util/mapIconUtil\";\r\n\r\nimport Map from \"~/components/modules/maps/map\";\r\nimport { MarkerClustererF } from \"@react-google-maps/api\";\r\nimport { clusterOptions } from \"~/util/mapUtil\";\r\n\r\nconst MapContainer = ({\r\n\tmarkerConfigs,\r\n\tinfoWindowClasses,\r\n\tclusterGridSize = 60\r\n}) => {\r\n\tconst {\r\n\t\tlocation,\r\n\t\tzoom,\r\n\t\tcenter,\r\n\t\tselectLocationEntity,\r\n\t\tsetLocation,\r\n\t\tmapInteracted,\r\n\t\tsetMapInteracted\r\n\t} = useMap();\r\n\r\n\tconst {\r\n\t\tmapItems, filteredListings, setSelectedFilters,\r\n\t\tsetQuery,\r\n\t\tsiteConfig\r\n\t} = useMapList();\r\n\r\n\tconst mapRef = useRef();\r\n\tconst markerRefs = useRef({});\r\n\tconst mapContainerRef = useRef(null);\r\n\tconst {\r\n\t\tpoiMarkers,\r\n\t\tsetCurrentCenter,\r\n\t\tcurrentCenter,\r\n\t\tsetCurrentZoom,\r\n\t\tcurrentZoom,\r\n\t\tselectedPlaceMarker,\r\n\t\tsetSelectedPlaceMarker,\r\n\t\tplacesWindow,\r\n\t\tsetPlacesWindow } = usePlaces();\r\n\r\n\tconst onIdle = () => {\r\n\t\tif (!currentCenter || !mapRef.current) return;\r\n\t\tconst newCenter = mapRef.current.getCenter().toJSON();\r\n\t\tconst newZoom = mapRef.current.zoom;\r\n\r\n\t\tsetCurrentCenter(newCenter);\r\n\r\n\t\tif (newZoom !== currentZoom) {\r\n\t\t\tsetCurrentZoom(newZoom);\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (mapContainerRef.current) {\r\n\t\t\tconst handleScroll = () => {\r\n\t\t\t\tsetMapInteracted(true);\r\n\t\t\t};\r\n\t\t\tvar mapContainerRefCurrent = mapContainerRef.current;\r\n\t\t\tmapContainerRef.current.addEventListener('wheel', handleScroll);\r\n\t\t\treturn () => mapContainerRefCurrent.removeEventListener('wheel', handleScroll);\r\n\t\t}\r\n\t}, [mapContainerRef.current]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (mapRef.current) {\r\n\t\t\tconst mapInstance = mapRef.current;\r\n\t\t\tconst dragStartListener = mapInstance.addListener('dragstart', () => setMapInteracted(true));\r\n\t\t\tconst mouseDownListener = mapInstance.addListener('mousedown', () => setMapInteracted(true));\r\n\t\t\treturn () => {\r\n\t\t\t\tgoogle.maps.event.removeListener(dragStartListener);\r\n\t\t\t\tgoogle.maps.event.removeListener(mouseDownListener);\r\n\t\t\t};\r\n\t\t}\r\n\t}, [mapRef.current, mapContainerRef.current]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif ((mapItems && mapItems.length > 0 || poiMarkers.length > 0) && mapRef.current) {\r\n\t\t\tfitBounds(mapRef.current);\r\n\t\t}\r\n\t}, [mapItems, mapRef.current, location]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif ((mapItems && mapItems.length > 0 || poiMarkers.length > 0) && mapRef.current && mapInteracted) {\r\n\t\t\tfitBounds(mapRef.current, true);\r\n\t\t}\r\n\t\tif (mapRef.current) {\r\n\t\t\tlet currZoom = mapRef.current.zoom;\r\n\t\t\tlet setZoomVal = currZoom < 13 ? currZoom : 12;\r\n\t\t\tmapRef.current.setZoom(setZoomVal);\r\n\t\t}\r\n\t}, [filteredListings]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!mapRef.current || !location || mapInteracted) return;\r\n\t\tmapRef.current.panTo(\r\n\t\t\tnew google.maps.LatLng(location.latitude, location.longitude)\r\n\t\t);\r\n\t\tif (mapRef.current) {\r\n\t\t\tlet setZoomVal = zoom < 13 ? zoom : 12;\r\n\t\t\tmapRef.current.setZoom(setZoomVal);\r\n\t\t}\r\n\t}, [location, zoom, mapRef.current]);\r\n\r\n\tconst fitBounds = (map, overload = false) => {\r\n\t\tif ((mapInteracted === false || overload) && mapItems != null) {\r\n\t\t const bounds = new window.google.maps.LatLngBounds();\r\n\t\t mapItems.forEach(item => {\r\n\t\t\t\tbounds.extend(new google.maps.LatLng(item.latitude, item.longitude));\r\n\t\t });\r\n\r\n\t\t if (!map) return;\r\n\t\t const currentCenter = map.getCenter();\r\n\t\t map.fitBounds(bounds);\r\n\t\t const newCenter = bounds.getCenter();\r\n\t\t if (currentCenter && newCenter) {\r\n\t\t\t\tmap.panTo(newCenter);\r\n\t\t }\r\n\t\t}\r\n\t\tif (mapRef.current.zoom > 17) {\r\n\t\t mapRef.current.setZoom(16);\r\n\t\t}\r\n\t };\r\n\r\n\tconst markerClickHandler = mapLocation => {\r\n\t\tsetMapInteracted(true);\r\n\t\tselectLocationEntity(mapLocation);\r\n\t};\r\n\r\n\tconst onLoad = map => {\r\n\t\tif (!location || location === null) {\r\n\t\t\tmapRef.current = map;\r\n\t\t\tfitBounds(map, true);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tmapRef.current = map;\r\n\r\n\t\tif (mapInteracted === false) {\r\n\t\t\tmapRef.current.panTo(\r\n\t\t\t\tnew google.maps.LatLng(location.latitude, location.longitude)\r\n\t\t\t);\r\n\r\n\t\t\tmapRef.current.setZoom(zoom);\r\n\t\t}\r\n\t};\r\n\r\n\tconst pinIconUrl = pinIcon({\r\n\t\tfillColor: markerConfigs.fillColor,\r\n\t\tstrokeColor: markerConfigs.strokeColor\r\n\t});\r\n\r\n\tconst onClusterClick = cluster => {\r\n\t\tif(!siteConfig.optionalShowLocationClusterConfig || (mapRef.current.zoom > siteConfig.optionalShowLocationClusterConfig.showForZoomLevelLessThan)) {\r\n\t\t\tconsole.log(\"should return\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!cluster || typeof cluster.getMarkers !== 'function') {\r\n\t\t console.error('Cluster object or getMarkers method not available.');\r\n\t\t return;\r\n\t\t}\r\n\r\n\t\tconst markers = cluster.getMarkers();\r\n\r\n\t\tif (!markers || markers.length === 0) {\r\n\t\t console.error('No markers found in the cluster.');\r\n\t\t return;\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t const bounds = new window.google.maps.LatLngBounds();\r\n\r\n\t\t markers.forEach(marker => {\r\n\t\t\t\tbounds.extend(marker.getPosition());\r\n\t\t });\r\n\r\n\t\t bounds.extend(new google.maps.LatLng(siteConfig.optionalShowLocationClusterConfig.latitude, siteConfig.optionalShowLocationClusterConfig.longitude));\r\n\r\n\t\t if (mapRef.current) {\r\n\t\t\t\tmapRef.current.fitBounds(bounds);\r\n\t\t }\r\n\t\t}, 500);\r\n\t };\r\n\r\n\treturn (\r\n\t\t<Map\r\n\t\t\tzoom={zoom}\r\n\t\t\tcenter={center}\r\n\t\t\tmapContainerRef={mapContainerRef}\r\n\t\t\tonLoad={onLoad}\r\n\t\t\tonIdle={onIdle}\r\n\t\t\tmapInteracted={mapInteracted}\r\n\t\t\tpinIconUrl={pinIconUrl}\r\n\t\t\tsetMapInteracted={setMapInteracted}\r\n\t\t\tfitBounds={fitBounds}\r\n\t\t\tmapRef={mapRef}\r\n\t\t\tsetQuery={setQuery}\r\n\t\t\tfilteredListingsLength={filteredListings.length}\r\n\t\t\tsetSelectedFilters={setSelectedFilters}\r\n\t\t>\r\n\t\t\t<MarkerClustererF options={clusterOptions(clusterGridSize, markerConfigs.fillColor)} onClick={onClusterClick}>\r\n\t\t\t\t{clusterer => (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{mapItems.map(item => (\r\n\t\t\t\t\t\t\t<MapMarker\r\n\t\t\t\t\t\t\t\tkey={item.id}\r\n\t\t\t\t\t\t\t\titem={item}\r\n\t\t\t\t\t\t\t\tselectedLocation={location}\r\n\t\t\t\t\t\t\t\tmarkerRefs={markerRefs}\r\n\t\t\t\t\t\t\t\tinfoWindowClasses={infoWindowClasses}\r\n\t\t\t\t\t\t\t\tsetSelectedLocation={setLocation}\r\n\t\t\t\t\t\t\t\tmarkerClickHandler={markerClickHandler}\r\n\t\t\t\t\t\t\t\tclusterer={clusterer}\r\n\t\t\t\t\t\t\t\tmarkerIcon={markerIcon(markerConfigs)}\r\n\t\t\t\t\t\t\t\tmarkerIconSelected={markerIconSelected(markerConfigs)}\r\n\t\t\t\t\t\t\t\tsetMapInteracted={setMapInteracted}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{poiMarkers && poiMarkers.markers.map((marker, index) => (\r\n\t\t\t\t\t\t\t<PlaceMarker\r\n\t\t\t\t\t\t\t\tkey={`marker-${marker.title}-${index}`}\r\n\t\t\t\t\t\t\t\tmarker={marker}\r\n\t\t\t\t\t\t\t\tindex={index}\r\n\t\t\t\t\t\t\t\tselectedPlaceMarker={selectedPlaceMarker}\r\n\t\t\t\t\t\t\t\tplacesWindow={placesWindow}\r\n\t\t\t\t\t\t\t\tsetPlacesWindow={setPlacesWindow}\r\n\t\t\t\t\t\t\t\tsetSelectedPlaceMarker={setSelectedPlaceMarker}\r\n\t\t\t\t\t\t\t />\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t</MarkerClustererF>\r\n\t\t</Map>\r\n\t);\r\n};\r\n\r\nexport default MapContainer;\r\n"],"names":["MapContainer","_ref","markerConfigs","infoWindowClasses","_ref$clusterGridSize","clusterGridSize","_useMap","useMap","location","zoom","center","selectLocationEntity","setLocation","mapInteracted","setMapInteracted","_useMapList","useMapList","mapItems","filteredListings","setSelectedFilters","setQuery","siteConfig","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","onClusterClick","cluster","optionalShowLocationClusterConfig","showForZoomLevelLessThan","console","log","getMarkers","error","markers","setTimeout","marker","getPosition","React","createElement","Map","filteredListingsLength","MarkerClustererF","options","clusterOptions","onClick","clusterer","Fragment","MapMarker","key","id","selectedLocation","setSelectedLocation","markerIcon","markerIconSelected","index","PlaceMarker","concat","title"],"mappings":"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"}
|
|
@@ -14,7 +14,8 @@ var MapListContainer = function MapListContainer(_ref) {
|
|
|
14
14
|
specialFeatures = _ref.specialFeatures,
|
|
15
15
|
fieldNames = _ref.fieldNames,
|
|
16
16
|
showMap = _ref.showMap,
|
|
17
|
-
placeMappings = _ref.placeMappings
|
|
17
|
+
placeMappings = _ref.placeMappings,
|
|
18
|
+
mapPosition = _ref.mapPosition;
|
|
18
19
|
var listProps = {
|
|
19
20
|
fieldsShown: fieldsShown,
|
|
20
21
|
fieldNames: fieldNames,
|
|
@@ -38,7 +39,8 @@ var MapListContainer = function MapListContainer(_ref) {
|
|
|
38
39
|
filter: /*#__PURE__*/React__default.createElement(FilterContainer, {
|
|
39
40
|
showMap: showMap,
|
|
40
41
|
className: "md:hc-hidden"
|
|
41
|
-
})
|
|
42
|
+
}),
|
|
43
|
+
mapPosition: mapPosition
|
|
42
44
|
});
|
|
43
45
|
};
|
|
44
46
|
|
|
@@ -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 Map from '~/components/containers/maps/map-container';\nimport Filter from '~/components/containers/filter/filter-container';\nimport MapList from '~/components/modules/maps/map-list';\n\nconst MapListContainer = ({\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,\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\treturn (\n\t\t<MapList\n\t\t\tshowMap={showMap}\n\t\t\tloading={loading}\n\t\t\tlist={<List {...listProps} />}\n\t\t\tmap={<Map {...mapProps} />}\n\t\t\tfilter={<Filter showMap={showMap} className=\"md:hc-hidden\" />}\n\t\t/>\n\t);\n};\n\nexport default MapListContainer;\n"],"names":["MapListContainer","_ref","_ref$loading","loading","mapDetails","markerConfigs","itemExpandedContent","fieldsShown","specialFeatures","fieldNames","showMap","placeMappings","listProps","mapProps","clusterGridSize","React","createElement","MapList","list","List","map","Map","filter","Filter","className"],"mappings":";;;;;;AAOA,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,IAAA,
|
|
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 Map from '~/components/containers/maps/map-container';\nimport Filter from '~/components/containers/filter/filter-container';\nimport MapList from '~/components/modules/maps/map-list';\n\nconst MapListContainer = ({\n\tloading = false,\n\tmapDetails,\n\tmarkerConfigs,\n\titemExpandedContent,\n\tfieldsShown,\n\tspecialFeatures,\n\tfieldNames,\n\tshowMap,\n\tplaceMappings,\n\tmapPosition\n}) => {\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\treturn (\n\t\t<MapList\n\t\t\tshowMap={showMap}\n\t\t\tloading={loading}\n\t\t\tlist={<List {...listProps} />}\n\t\t\tmap={<Map {...mapProps} />}\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":["MapListContainer","_ref","_ref$loading","loading","mapDetails","markerConfigs","itemExpandedContent","fieldsShown","specialFeatures","fieldNames","showMap","placeMappings","mapPosition","listProps","mapProps","clusterGridSize","React","createElement","MapList","list","List","map","Map","filter","Filter","className"],"mappings":";;;;;;AAOA,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,IAAA,EAWhB;AAAA,EAAA,IAAAC,YAAA,GAAAD,IAAA,CAVLE,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;IACbC,WAAW,GAAAX,IAAA,CAAXW,WAAW,CAAA;AAGX,EAAA,IAAMC,SAAS,GAAG;AACjBN,IAAAA,WAAW,EAAXA,WAAW;AACXE,IAAAA,UAAU,EAAVA,UAAU;AACVH,IAAAA,mBAAmB,EAAnBA,mBAAmB;AACnBH,IAAAA,OAAO,EAAPA,OAAO;AACPO,IAAAA,OAAO,EAAPA,OAAO;AACPF,IAAAA,eAAe,EAAfA,eAAAA;GACA,CAAA;AAED,EAAA,IAAMM,QAAQ,GAAG;AAChBV,IAAAA,UAAU,EAAVA,UAAU;AACVC,IAAAA,aAAa,EAAbA,aAAa;AACbM,IAAAA,aAAa,EAAbA,aAAa;AACbI,IAAAA,eAAe,EAAE,EAAE;AACnBL,IAAAA,OAAO,EAAPA,OAAAA;GACA,CAAA;AAED,EAAA,oBACCM,cAAA,CAAAC,aAAA,CAACC,OAAO,EAAA;AACPR,IAAAA,OAAO,EAAEA,OAAQ;AACjBP,IAAAA,OAAO,EAAEA,OAAQ;IACjBgB,IAAI,eAAEH,cAAA,CAAAC,aAAA,CAACG,kBAAI,EAAKP,SAAY,CAAE;IAC9BQ,GAAG,eAAEL,cAAA,CAAAC,aAAA,CAACK,YAAG,EAAKR,QAAW,CAAE;AAC3BS,IAAAA,MAAM,eAAEP,cAAA,CAAAC,aAAA,CAACO,eAAM,EAAA;AAACd,MAAAA,OAAO,EAAEA,OAAQ;AAACe,MAAAA,SAAS,EAAC,cAAA;AAAc,KAAE,CAAE;AAC9Db,IAAAA,WAAW,EAAEA,WAAAA;AAAY,GACzB,CAAC,CAAA;AAEJ;;;;"}
|
|
@@ -2,7 +2,6 @@ import React__default from 'react';
|
|
|
2
2
|
|
|
3
3
|
var ShowAllButton = function ShowAllButton(_ref) {
|
|
4
4
|
var mapInteracted = _ref.mapInteracted,
|
|
5
|
-
markerConfigs = _ref.markerConfigs,
|
|
6
5
|
setMapInteracted = _ref.setMapInteracted,
|
|
7
6
|
fitBounds = _ref.fitBounds,
|
|
8
7
|
mapRef = _ref.mapRef,
|
|
@@ -10,7 +9,7 @@ var ShowAllButton = function ShowAllButton(_ref) {
|
|
|
10
9
|
setSelectedFilters = _ref.setSelectedFilters,
|
|
11
10
|
setQuery = _ref.setQuery,
|
|
12
11
|
listingCount = _ref.listingCount;
|
|
13
|
-
if (!mapInteracted
|
|
12
|
+
if (!mapInteracted) {
|
|
14
13
|
return null;
|
|
15
14
|
}
|
|
16
15
|
return /*#__PURE__*/React__default.createElement("button", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show-all-button.js","sources":["../../../../src/components/modules/buttons/show-all-button.js"],"sourcesContent":["import React from 'react';\r\n\r\nconst ShowAllButton = ({ mapInteracted,
|
|
1
|
+
{"version":3,"file":"show-all-button.js","sources":["../../../../src/components/modules/buttons/show-all-button.js"],"sourcesContent":["import React from 'react';\r\n\r\nconst ShowAllButton = ({ mapInteracted, setMapInteracted, fitBounds, mapRef, pinIconUrl, setSelectedFilters, setQuery, listingCount }) => {\r\n\tif (!mapInteracted) {\r\n\t\treturn null;\r\n\t}\r\n\treturn (\r\n\t\t<button\r\n\t\t\tstyle={{ fontFamily: 'Roboto, Arial, sans-serif', fontSize: '14px', fontWeight: '500' }}\r\n\t\t\tclassName=\"hc-absolute hc-bottom-10 hc-left-2.5 hc-z-10 hc-flex hc-items-center hc-justify-center hc-pl-2 hc-pb-1 hc-pt-1.5 hc-pr-3 hc-bg-white hc-text-black hc-border-none hc-rounded-full hc-shadow hc-cursor-pointer hc-text-sm hc-font-medium\"\r\n\t\t\tonClick={() => { setMapInteracted(false); fitBounds(mapRef.current, true); if (listingCount < 2) { setSelectedFilters({}); setQuery(null); }; }}\r\n\t\t>\r\n\t\t\t<img src={pinIconUrl} alt=\"Pin Icon\" className=\"hc-size-5\" />\r\n\t\t\tShow All\r\n\t\t</button>\r\n\t);\r\n};\r\n\r\nexport default ShowAllButton;\r\n"],"names":["ShowAllButton","_ref","mapInteracted","setMapInteracted","fitBounds","mapRef","pinIconUrl","setSelectedFilters","setQuery","listingCount","React","createElement","style","fontFamily","fontSize","fontWeight","className","onClick","current","src","alt"],"mappings":";;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAaA,CAAAC,IAAA,EAAuH;AAAA,EAAA,IAAjHC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IAAEC,gBAAgB,GAAAF,IAAA,CAAhBE,gBAAgB;IAAEC,SAAS,GAAAH,IAAA,CAATG,SAAS;IAAEC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IAAEC,UAAU,GAAAL,IAAA,CAAVK,UAAU;IAAEC,kBAAkB,GAAAN,IAAA,CAAlBM,kBAAkB;IAAEC,QAAQ,GAAAP,IAAA,CAARO,QAAQ;IAAEC,YAAY,GAAAR,IAAA,CAAZQ,YAAY,CAAA;EAClI,IAAI,CAACP,aAAa,EAAE;AACnB,IAAA,OAAO,IAAI,CAAA;AACZ,GAAA;EACA,oBACCQ,cAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,UAAU,EAAE,2BAA2B;AAAEC,MAAAA,QAAQ,EAAE,MAAM;AAAEC,MAAAA,UAAU,EAAE,KAAA;KAAQ;AACxFC,IAAAA,SAAS,EAAC,yOAAyO;IACnPC,OAAO,EAAE,SAAAA,OAAAA,GAAM;MAAEd,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAAEC,MAAAA,SAAS,CAACC,MAAM,CAACa,OAAO,EAAE,IAAI,CAAC,CAAA;MAAE,IAAIT,YAAY,GAAG,CAAC,EAAE;QAAEF,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAAEC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAAE,OAAA;AAAG,KAAA;GAE9IE,eAAAA,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKQ,IAAAA,GAAG,EAAEb,UAAW;AAACc,IAAAA,GAAG,EAAC,UAAU;AAACJ,IAAAA,SAAS,EAAC,WAAA;GAAa,CAAC,YAEtD,CAAC,CAAA;AAEX;;;;"}
|
|
@@ -6,10 +6,11 @@ var MapList = function MapList(_ref) {
|
|
|
6
6
|
loading = _ref.loading,
|
|
7
7
|
list = _ref.list,
|
|
8
8
|
map = _ref.map,
|
|
9
|
-
filter = _ref.filter
|
|
9
|
+
filter = _ref.filter,
|
|
10
|
+
mapPosition = _ref.mapPosition;
|
|
10
11
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
11
12
|
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")
|
|
12
|
-
}, /*#__PURE__*/React__default.createElement("div", null, list), /*#__PURE__*/React__default.createElement("div", null, showMap && map)), /*#__PURE__*/React__default.createElement("div", {
|
|
13
|
+
}, mapPosition && mapPosition === 'top' && showMap ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", null, map), /*#__PURE__*/React__default.createElement("div", null, list)) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", null, list), /*#__PURE__*/React__default.createElement("div", null, showMap && map))), /*#__PURE__*/React__default.createElement("div", {
|
|
13
14
|
className: "md:hc-hidden"
|
|
14
15
|
}, /*#__PURE__*/React__default.createElement(MapTabs, {
|
|
15
16
|
showMap: showMap,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-list.js","sources":["../../../../src/components/modules/maps/map-list.js"],"sourcesContent":["import React from 'react';\nimport Tabs from '~/components/modules/maps/tabs';\n\nconst MapList = ({ showMap, loading, list, map, filter }) => {\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>{list}</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}\n\t\t\t\t\tmap={!loading && showMap && map}\n\t\t\t\t\tfilter={filter}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default MapList;\n"],"names":["MapList","_ref","showMap","loading","list","map","filter","React","createElement","Fragment","className","concat","Tabs"],"mappings":";;;AAGA,IAAMA,OAAO,GAAG,SAAVA,OAAOA,CAAAC,IAAA,
|
|
1
|
+
{"version":3,"file":"map-list.js","sources":["../../../../src/components/modules/maps/map-list.js"],"sourcesContent":["import React from 'react';\nimport Tabs from '~/components/modules/maps/tabs';\n\nconst MapList = ({ showMap, loading, list, map, filter, mapPosition }) => {\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{mapPosition && mapPosition === 'top' && showMap ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div>{map}</div>\n\t\t\t\t\t\t<div>{list}</div>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div>{list}</div>\n\t\t\t\t\t\t<div>{showMap && map}</div>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\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}\n\t\t\t\t\tmap={!loading && showMap && map}\n\t\t\t\t\tfilter={filter}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default MapList;\n"],"names":["MapList","_ref","showMap","loading","list","map","filter","mapPosition","React","createElement","Fragment","className","concat","Tabs"],"mappings":";;;AAGA,IAAMA,OAAO,GAAG,SAAVA,OAAOA,CAAAC,IAAA,EAA6D;AAAA,EAAA,IAAvDC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IAAEC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IAAEC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IAAEC,GAAG,GAAAJ,IAAA,CAAHI,GAAG;IAAEC,MAAM,GAAAL,IAAA,CAANK,MAAM;IAAEC,WAAW,GAAAN,IAAA,CAAXM,WAAW,CAAA;EAClE,oBACCC,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EAAA,IAAA,eACCF,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IACCE,SAAS,EAAA,cAAA,CAAAC,MAAA,CACNV,OAAO,KAAK,KAAK,GAAG,yBAAyB,GAAG,6BAA6B,EAAA,wFAAA,CAAA;GAI/EK,EAAAA,WAAW,IAAIA,WAAW,KAAK,KAAK,IAAIL,OAAO,gBAC/CM,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EACCF,IAAAA,eAAAA,cAAA,CAAAC,aAAA,CAAMJ,KAAAA,EAAAA,IAAAA,EAAAA,GAAS,CAAC,eAChBG,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA,IAAA,EAAML,IAAU,CACf,CAAC,gBAEHI,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EAAA,IAAA,eACCF,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA,IAAA,EAAML,IAAU,CAAC,eACjBI,cAAA,CAAAC,aAAA,CAAMP,KAAAA,EAAAA,IAAAA,EAAAA,OAAO,IAAIG,GAAS,CACzB,CAGC,CAAC,eACNG,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKE,IAAAA,SAAS,EAAC,cAAA;AAAc,GAAA,eAC5BH,cAAA,CAAAC,aAAA,CAACI,OAAI,EAAA;AACJX,IAAAA,OAAO,EAAEA,OAAQ;AACjBE,IAAAA,IAAI,EAAEA,IAAK;AACXC,IAAAA,GAAG,EAAE,CAACF,OAAO,IAAID,OAAO,IAAIG,GAAI;AAChCC,IAAAA,MAAM,EAAEA,MAAAA;GACR,CACG,CACJ,CAAC,CAAA;AAEL;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sources":["../../../../src/components/modules/maps/map.js"],"sourcesContent":["import React from 'react';\nimport { GoogleMap } from \"@react-google-maps/api\";\nimport ShowAllButton from \"~/components/modules/buttons/show-all-button\";\n\nconst Map = ({\n\tzoom,\n\tcenter,\n\tmapContainerRef,\n\tonLoad,\n\tonIdle,\n\tmapInteracted,\n\tpinIconUrl,\n\tsetMapInteracted,\n\tfitBounds,\n\tmapRef,\n\tsetQuery,\n\tfilteredListingsLength,\n\tsetSelectedFilters,\n\tchildren\n}) => {\n\treturn (\n\t\t<>\n\t\t\t{zoom && center && (\n\t\t\t\t<div ref={mapContainerRef} className=\"hc-h-full hc-relative\">\n\t\t\t\t\t<GoogleMap\n\t\t\t\t\t\tzoom={zoom}\n\t\t\t\t\t\tonLoad={onLoad}\n\t\t\t\t\t\tonIdle={onIdle}\n\t\t\t\t\t\tcenter={center}\n\t\t\t\t\t\tmapContainerStyle={{\n\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\theight: \"100%\"\n\t\t\t\t\t\t}}\n\t\t\t\t\t\toptions={{\n\t\t\t\t\t\t\tstyles: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfeatureType: \"poi\",\n\t\t\t\t\t\t\t\t\telementType: \"labels\",\n\t\t\t\t\t\t\t\t\tstylers: [{ visibility: \"off\" }]\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\t\t{children}\n\t\t\t\t\t</GoogleMap>\n\t\t\t\t\t{mapInteracted && (\n\t\t\t\t\t\t<ShowAllButton\n\t\t\t\t\t\t\tmapInteracted={mapInteracted}\n\t\t\t\t\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\t\t\t\t\tfitBounds={fitBounds}\n\t\t\t\t\t\t\tmapRef={mapRef}\n\t\t\t\t\t\t\tpinIconUrl={pinIconUrl}\n\t\t\t\t\t\t\tsetQuery={setQuery}\n\t\t\t\t\t\t\tlistingCount={filteredListingsLength}\n\t\t\t\t\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nexport default Map;\n"],"names":["Map","_ref","zoom","center","mapContainerRef","onLoad","onIdle","mapInteracted","pinIconUrl","setMapInteracted","fitBounds","mapRef","setQuery","filteredListingsLength","setSelectedFilters","children","React","createElement","Fragment","ref","className","GoogleMap","mapContainerStyle","width","height","options","styles","featureType","elementType","stylers","visibility","ShowAllButton","listingCount"],"mappings":";;;;AAIA,IAAMA,GAAG,GAAG,SAANA,GAAGA,CAAAC,IAAA,EAeH;AAAA,EAAA,IAdLC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,MAAM,GAAAF,IAAA,CAANE,MAAM;IACNC,eAAe,GAAAH,IAAA,CAAfG,eAAe;IACfC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACNC,MAAM,GAAAL,IAAA,CAANK,MAAM;IACNC,aAAa,GAAAN,IAAA,CAAbM,aAAa;IACbC,UAAU,GAAAP,IAAA,CAAVO,UAAU;IACVC,gBAAgB,GAAAR,IAAA,CAAhBQ,gBAAgB;IAChBC,SAAS,GAAAT,IAAA,CAATS,SAAS;IACTC,MAAM,GAAAV,IAAA,CAANU,MAAM;IACNC,QAAQ,GAAAX,IAAA,CAARW,QAAQ;IACRC,sBAAsB,GAAAZ,IAAA,CAAtBY,sBAAsB;IACtBC,kBAAkB,GAAAb,IAAA,CAAlBa,kBAAkB;IAClBC,QAAQ,GAAAd,IAAA,CAARc,QAAQ,CAAA;AAER,EAAA,oBACCC,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EACEhB,IAAAA,EAAAA,IAAI,IAAIC,MAAM,iBACda,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKE,IAAAA,GAAG,EAAEf,eAAgB;AAACgB,IAAAA,SAAS,EAAC,uBAAA;AAAuB,GAAA,eAC3DJ,cAAA,CAAAC,aAAA,CAACI,SAAS,EAAA;AACTnB,IAAAA,IAAI,EAAEA,IAAK;AACXG,IAAAA,MAAM,EAAEA,MAAO;AACfC,IAAAA,MAAM,EAAEA,MAAO;AACfH,IAAAA,MAAM,EAAEA,MAAO;AACfmB,IAAAA,iBAAiB,EAAE;AAClBC,MAAAA,KAAK,EAAE,MAAM;AACbC,MAAAA,MAAM,EAAE,MAAA;KACP;AACFC,IAAAA,OAAO,EAAE;AACRC,MAAAA,MAAM,EAAE,CACP;AACCC,QAAAA,WAAW,EAAE,KAAK;AAClBC,QAAAA,WAAW,EAAE,QAAQ;AACrBC,QAAAA,OAAO,EAAE,CAAC;AAAEC,UAAAA,UAAU,EAAE,KAAA;SAAO,CAAA;OAC/B,CAAA;AAEH,KAAA;GAECf,EAAAA,QACS,CAAC,EACXR,aAAa,iBACbS,cAAA,CAAAC,aAAA,CAACc,aAAa,EAAA;AACbxB,IAAAA,aAAa,EAAEA,aAAc;AAC7BE,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCC,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,MAAM,EAAEA,MAAO;AACfH,IAAAA,UAAU,EAAEA,UAAW;AACvBI,IAAAA,QAAQ,EAAEA,QAAS;AACnBoB,IAAAA,YAAY,EAAEnB,sBAAuB;AACrCC,IAAAA,kBAAkB,EAAEA,kBAAAA;GACpB,CAEE,CAEL,CAAC,CAAA;AAEL;;;;"}
|
|
1
|
+
{"version":3,"file":"map.js","sources":["../../../../src/components/modules/maps/map.js"],"sourcesContent":["import React from 'react';\r\nimport { GoogleMap } from \"@react-google-maps/api\";\r\nimport ShowAllButton from \"~/components/modules/buttons/show-all-button\";\r\n\r\nconst Map = ({\r\n\tzoom,\r\n\tcenter,\r\n\tmapContainerRef,\r\n\tonLoad,\r\n\tonIdle,\r\n\tmapInteracted,\r\n\tpinIconUrl,\r\n\tsetMapInteracted,\r\n\tfitBounds,\r\n\tmapRef,\r\n\tsetQuery,\r\n\tfilteredListingsLength,\r\n\tsetSelectedFilters,\r\n\tchildren\r\n}) => {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{zoom && center && (\r\n\t\t\t\t<div ref={mapContainerRef} className=\"hc-h-full hc-relative\">\r\n\t\t\t\t\t<GoogleMap\r\n\t\t\t\t\t\tzoom={zoom}\r\n\t\t\t\t\t\tonLoad={onLoad}\r\n\t\t\t\t\t\tonIdle={onIdle}\r\n\t\t\t\t\t\tcenter={center}\r\n\t\t\t\t\t\tmapContainerStyle={{\r\n\t\t\t\t\t\t\twidth: \"100%\",\r\n\t\t\t\t\t\t\theight: \"100%\"\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\toptions={{\r\n\t\t\t\t\t\t\tstyles: [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfeatureType: \"poi\",\r\n\t\t\t\t\t\t\t\t\telementType: \"labels\",\r\n\t\t\t\t\t\t\t\t\tstylers: [{ visibility: \"off\" }]\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{children}\r\n\t\t\t\t\t</GoogleMap>\r\n\t\t\t\t\t{mapInteracted && (\r\n\t\t\t\t\t\t<ShowAllButton\r\n\t\t\t\t\t\t\tmapInteracted={mapInteracted}\r\n\t\t\t\t\t\t\tsetMapInteracted={setMapInteracted}\r\n\t\t\t\t\t\t\tfitBounds={fitBounds}\r\n\t\t\t\t\t\t\tmapRef={mapRef}\r\n\t\t\t\t\t\t\tpinIconUrl={pinIconUrl}\r\n\t\t\t\t\t\t\tsetQuery={setQuery}\r\n\t\t\t\t\t\t\tlistingCount={filteredListingsLength}\r\n\t\t\t\t\t\t\tsetSelectedFilters={setSelectedFilters}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n};\r\n\r\nexport default Map;\r\n"],"names":["Map","_ref","zoom","center","mapContainerRef","onLoad","onIdle","mapInteracted","pinIconUrl","setMapInteracted","fitBounds","mapRef","setQuery","filteredListingsLength","setSelectedFilters","children","React","createElement","Fragment","ref","className","GoogleMap","mapContainerStyle","width","height","options","styles","featureType","elementType","stylers","visibility","ShowAllButton","listingCount"],"mappings":";;;;AAIA,IAAMA,GAAG,GAAG,SAANA,GAAGA,CAAAC,IAAA,EAeH;AAAA,EAAA,IAdLC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,MAAM,GAAAF,IAAA,CAANE,MAAM;IACNC,eAAe,GAAAH,IAAA,CAAfG,eAAe;IACfC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACNC,MAAM,GAAAL,IAAA,CAANK,MAAM;IACNC,aAAa,GAAAN,IAAA,CAAbM,aAAa;IACbC,UAAU,GAAAP,IAAA,CAAVO,UAAU;IACVC,gBAAgB,GAAAR,IAAA,CAAhBQ,gBAAgB;IAChBC,SAAS,GAAAT,IAAA,CAATS,SAAS;IACTC,MAAM,GAAAV,IAAA,CAANU,MAAM;IACNC,QAAQ,GAAAX,IAAA,CAARW,QAAQ;IACRC,sBAAsB,GAAAZ,IAAA,CAAtBY,sBAAsB;IACtBC,kBAAkB,GAAAb,IAAA,CAAlBa,kBAAkB;IAClBC,QAAQ,GAAAd,IAAA,CAARc,QAAQ,CAAA;AAER,EAAA,oBACCC,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EACEhB,IAAAA,EAAAA,IAAI,IAAIC,MAAM,iBACda,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKE,IAAAA,GAAG,EAAEf,eAAgB;AAACgB,IAAAA,SAAS,EAAC,uBAAA;AAAuB,GAAA,eAC3DJ,cAAA,CAAAC,aAAA,CAACI,SAAS,EAAA;AACTnB,IAAAA,IAAI,EAAEA,IAAK;AACXG,IAAAA,MAAM,EAAEA,MAAO;AACfC,IAAAA,MAAM,EAAEA,MAAO;AACfH,IAAAA,MAAM,EAAEA,MAAO;AACfmB,IAAAA,iBAAiB,EAAE;AAClBC,MAAAA,KAAK,EAAE,MAAM;AACbC,MAAAA,MAAM,EAAE,MAAA;KACP;AACFC,IAAAA,OAAO,EAAE;AACRC,MAAAA,MAAM,EAAE,CACP;AACCC,QAAAA,WAAW,EAAE,KAAK;AAClBC,QAAAA,WAAW,EAAE,QAAQ;AACrBC,QAAAA,OAAO,EAAE,CAAC;AAAEC,UAAAA,UAAU,EAAE,KAAA;SAAO,CAAA;OAC/B,CAAA;AAEH,KAAA;GAECf,EAAAA,QACS,CAAC,EACXR,aAAa,iBACbS,cAAA,CAAAC,aAAA,CAACc,aAAa,EAAA;AACbxB,IAAAA,aAAa,EAAEA,aAAc;AAC7BE,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCC,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,MAAM,EAAEA,MAAO;AACfH,IAAAA,UAAU,EAAEA,UAAW;AACvBI,IAAAA,QAAQ,EAAEA,QAAS;AACnBoB,IAAAA,YAAY,EAAEnB,sBAAuB;AACrCC,IAAAA,kBAAkB,EAAEA,kBAAAA;GACpB,CAEE,CAEL,CAAC,CAAA;AAEL;;;;"}
|
package/dist/util/filterUtil.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { slicedToArray as _slicedToArray, defineProperty as _defineProperty, createForOfIteratorHelper as _createForOfIteratorHelper } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
|
+
import { toConsumableArray as _toConsumableArray, slicedToArray as _slicedToArray, defineProperty as _defineProperty, createForOfIteratorHelper as _createForOfIteratorHelper } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import { getDistinctItemsByProximity } from './mapUtil.js';
|
|
3
3
|
import Fuse from '../packages/hc-ui-components/node_modules/fuse.js/dist/fuse.js';
|
|
4
4
|
|
|
@@ -110,6 +110,31 @@ var generateFilterOptions = function generateFilterOptions(filteredListings, all
|
|
|
110
110
|
return filter.id === fieldName;
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
|
+
if (fieldName === 'entityName' && filterOptions !== null && filterOptions !== void 0 && filterOptions.locations) {
|
|
114
|
+
var cityIncluded = siteConfig.locationFiltersShown.includes('city');
|
|
115
|
+
var stateIncluded = siteConfig.locationFiltersShown.includes('state');
|
|
116
|
+
var cityStateIncluded = siteConfig.locationFiltersShown.includes('cityState');
|
|
117
|
+
var uniqueCities = cityIncluded ? _toConsumableArray(new Set(filteredListings.map(function (listing) {
|
|
118
|
+
return listing.fields.city;
|
|
119
|
+
}))) : [];
|
|
120
|
+
var uniqueStates = stateIncluded ? _toConsumableArray(new Set(filteredListings.map(function (listing) {
|
|
121
|
+
return listing.fields.state;
|
|
122
|
+
}))) : [];
|
|
123
|
+
var uniqueCityStates = cityStateIncluded ? _toConsumableArray(new Set(filteredListings.map(function (listing) {
|
|
124
|
+
return listing.fields.cityState;
|
|
125
|
+
}))) : [];
|
|
126
|
+
var filteredByLocation = allListings.filter(function (listing) {
|
|
127
|
+
var cityMatches = cityIncluded ? uniqueCities.includes(listing.fields.city) : true;
|
|
128
|
+
var stateMatches = stateIncluded ? uniqueStates.includes(listing.fields.state) : true;
|
|
129
|
+
var cityStateMatches = cityStateIncluded ? uniqueCityStates.includes(listing.fields.cityState) : true;
|
|
130
|
+
return cityMatches && stateMatches && cityStateMatches;
|
|
131
|
+
});
|
|
132
|
+
return {
|
|
133
|
+
id: fieldName,
|
|
134
|
+
title: siteConfig.fieldNames[fieldName],
|
|
135
|
+
items: getFilterOptions(allListings, filteredByLocation, fieldName, true)
|
|
136
|
+
};
|
|
137
|
+
}
|
|
113
138
|
return {
|
|
114
139
|
id: fieldName,
|
|
115
140
|
title: siteConfig.fieldNames[fieldName],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterUtil.js","sources":["../../src/util/filterUtil.js"],"sourcesContent":["import { getDistinctItemsByProximity } from '~/util/mapUtil';\n\nimport Fuse from 'fuse.js';\n\nexport const getFilterOptions = (listings, filteredListings, field, excludeZeroCount = null) => {\n\tconst options = new Set();\n\tlistings.forEach(listing => {\n\t\tif (listing.fields[field]) {\n\t\t\toptions.add(listing.fields[field]);\n\t\t}\n\t});\n\n\tconst optionCounts = {};\n\toptions.forEach(option => {\n\t\toptionCounts[option] = 0;\n\t});\n\n\tfilteredListings.forEach(listing => {\n\t\tconst value = listing.fields[field];\n\t\tif (value && optionCounts.hasOwnProperty(value)) {\n\t\t\toptionCounts[value] += 1;\n\t\t}\n\t});\n\n\treturn Array.from(options)\n\t\t.sort()\n\t\t.map(option => ({\n\t\t\tname: option,\n\t\t\tcount: optionCounts[option] || 0\n\t\t}))\n\t\t.filter(option => !(excludeZeroCount === true && option.count === 0));\n};\n\nexport const getSpecialFeatureOptions = (listings, filteredListings, siteConfig, favorites) => {\n\tconst specialFeatures = siteConfig.specialFeatures;\n\tconst featureCounts = Object.keys(specialFeatures).sort().reduce((acc, key) => {\n\t\tacc[specialFeatures[key]] = 0;\n\t\treturn acc;\n\t}, {});\n\n\tfilteredListings.forEach(listing => {\n\t\tObject.entries(specialFeatures).forEach(([featureKey, featureName]) => {\n\t\t\tif (listing.fields[featureKey] == 1) {\n\t\t\t\tfeatureCounts[featureName] += 1;\n\t\t\t}\n\t\t});\n\t});\n\n\tconst specialFeatureOptions = Object.entries(featureCounts).map(([name, count]) => ({\n\t\tname,\n\t\tcount\n\t}));\n\n\tfor (let option of specialFeatureOptions) {\n\t\tif (option.name === 'Favorite') {\n\t\t\toption.count = filteredListings.filter(x => favorites.includes(x.id)).length;\n\t\t}\n\t}\n\n\treturn specialFeatureOptions;\n};\n\nconst getPointsOfInterestOptions = pointsOfInterestNames => {\n\treturn Object.entries(pointsOfInterestNames).sort().map(([key, name]) => ({\n\t\tkey,\n\t\tname\n\t}));\n};\n\nexport const generateFilterOptions = (\n\tfilteredListings,\n\tallListings,\n\tsiteConfig,\n\tfilterOptions,\n\tparentField,\n\tfavorites\n) => {\n\tif (allListings.length > 0) {\n\t\tconst dynamicFilters = siteConfig.fieldFiltersShown.map(fieldName => {\n\t\t\tif (fieldName === parentField && filterOptions?.filters) {\n\t\t\t\treturn filterOptions.filters.find(filter => filter.id === fieldName);\n\t\t\t}\n\t\t\tif (fieldName == \"specialFeatures\") {\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getSpecialFeatureOptions(allListings, filteredListings, siteConfig, favorites).sort()\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tid: fieldName,\n\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName)\n\t\t\t};\n\t\t});\n\n\t\tconst locations =\n\t\t\tsiteConfig.locationFiltersShown.map((fieldName, index) => {\n\t\t\t\tif (index === 0 && filterOptions?.locations) {\n\t\t\t\t\treturn filterOptions.locations.find(filter => filter.id === fieldName);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, true)\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst pointsOfInterest = {\n\t\t\tid: \"pointsOfInterest\",\n\t\t\ttitle: siteConfig.pointsOfInterestConfig.title,\n\t\t\titems: getPointsOfInterestOptions(\n\t\t\t\tsiteConfig.pointsOfInterestConfig.pointsOfInterestNames\n\t\t\t)\n\t\t};\n\n\t\treturn {\n\t\t\tfilters: dynamicFilters,\n\t\t\tlocations: locations,\n\t\t\tpointsOfInterest: pointsOfInterest\n\t\t};\n\t}\n\n\treturn null;\n};\n\nexport const applyFilters = (\n\tallListings,\n\tselectedFilters,\n\tquery,\n\tlistingEntities,\n\tfavorites,\n\tsiteConfig\n) => {\n\tlet results = allListings;\n\tlet invertedSpecialFeaturesMap;\n\tif (siteConfig.specialFeatures) {\n\t\tinvertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce((acc, [key, value]) => {\n\t\t\tacc[value] = key;\n\t\t\treturn acc;\n\t\t}, {});\n\n\t}\n\tconst hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;\n\n\tif (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {\n\t\tresults = results.filter(x => favorites.includes(x.id));\n\t}\n\tvar favorite;\n\tif (hasFavorite) {\n\t\tfavorite = selectedFilters.specialFeatures.Favorite;\n\t\tdelete selectedFilters.specialFeatures.Favorite;\n\t}\n\tfor (const [field, filterItems] of Object.entries(selectedFilters)) {\n\t\tconst formattedField = field;\n\t\tif (field === \"pointsOfInterest\") continue;\n\t\tif (field === \"specialFeatures\" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing => {\n\t\t\t\treturn Object.entries(filterItems).some(([filterName, filterValue]) => {\n\t\t\t\t\tconst listingFieldName = invertedSpecialFeaturesMap[filterName];\n\t\t\t\t\treturn filterValue && listing.fields[listingFieldName] == 1;\n\t\t\t\t});\n\t\t\t});\n\t\t} else if (Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing =>\n\t\t\t\tfilterItems.hasOwnProperty(listing.fields[formattedField])\n\t\t\t);\n\t\t}\n\t}\n\tif (query) {\n\t\tresults = searchResults(results, query);\n\t}\n\tconst distinctItems = getDistinctItemsByProximity(results, listingEntities);\n\tif (hasFavorite) {\n\t\tselectedFilters.specialFeatures.Favorite = favorite;\n\t}\n\treturn { filteredListings: results, mapItems: distinctItems };\n};\n\nfunction searchResults(results, query) {\n\tconst fields = [\n\t\t'id',\n\t\t'fields.posted',\n\t\t'fields.subtitle',\n\t\t'fields.education',\n\t\t'fields.position',\n\t\t'fields.category',\n\t\t'fields.categoryclass',\n\t\t'fields.shift',\n\t\t'fields.citystate',\n\t\t'fields.city',\n\t\t'fields.state',\n\t\t'fields.schedule',\n\t\t'fields.customflag1',\n\t\t'fields.bonus',\n\t\t'fields.remote',\n\t\t'fields.useclientjoburl',\n\t\t'fields.datecreated',\n\t\t'fields.datelastedited'\n\t];\n\n\tconst options = {\n\t\tincludeScore: true,\n\t\tthreshold: 0.3,\n\t\tkeys: fields\n\t};\n\n\tconst fuse = new Fuse(results, options);\n\tconst lowerCaseQuery = query.toLowerCase();\n\tconst queryTerms = lowerCaseQuery.split(' ');\n\n\tconst exactIdMatch = results.find(result => result.id.toString() === query);\n\tif (exactIdMatch) {\n\t\treturn [exactIdMatch];\n\t}\n\n\tconst fuseQuery = queryTerms.map(term => ({\n\t\t$or: fields.map(field => ({ [field]: term }))\n\t}));\n\n\tconst fuseResults = fuse.search({ $and: fuseQuery });\n\n\treturn fuseResults.map(result => result.item);\n}\n\nexport const filterListingsByLocation = (\n\tallListings,\n\tselectedLocation,\n\tlistingEntities\n) => {\n\tlet results = allListings;\n\tif (selectedLocation !== null) {\n\t\tresults = results.filter(item =>\n\t\t\tselectedLocation.items.hasOwnProperty(item.id)\n\t\t);\n\t}\n\tconst mapItems = getDistinctItemsByProximity(results, listingEntities);\n\treturn { filteredListings: results, mapItems: mapItems };\n};\n"],"names":["getFilterOptions","listings","filteredListings","field","excludeZeroCount","arguments","length","undefined","options","Set","forEach","listing","fields","add","optionCounts","option","value","hasOwnProperty","Array","from","sort","map","name","count","filter","getSpecialFeatureOptions","siteConfig","favorites","specialFeatures","featureCounts","Object","keys","reduce","acc","key","entries","_ref","_ref2","_slicedToArray","featureKey","featureName","specialFeatureOptions","_ref3","_ref4","_iterator","_createForOfIteratorHelper","_step","s","n","done","x","includes","id","err","e","f","getPointsOfInterestOptions","pointsOfInterestNames","_ref5","_ref6","generateFilterOptions","allListings","filterOptions","parentField","dynamicFilters","fieldFiltersShown","fieldName","filters","find","title","fieldNames","items","locations","locationFiltersShown","index","pointsOfInterest","pointsOfInterestConfig","applyFilters","selectedFilters","query","listingEntities","results","invertedSpecialFeaturesMap","_ref7","_ref8","hasFavorite","Favorite","favorite","_loop","_Object$entries$_i","_Object$entries","_i","filterItems","formattedField","some","_ref9","_ref10","filterName","filterValue","listingFieldName","searchResults","distinctItems","getDistinctItemsByProximity","mapItems","includeScore","threshold","fuse","Fuse","lowerCaseQuery","toLowerCase","queryTerms","split","exactIdMatch","result","toString","fuseQuery","term","$or","_defineProperty","fuseResults","search","$and","item","filterListingsByLocation","selectedLocation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filterUtil.js","sources":["../../src/util/filterUtil.js"],"sourcesContent":["/* eslint-disable no-undef */\nimport { getDistinctItemsByProximity } from '~/util/mapUtil';\n\nimport Fuse from 'fuse.js';\n\nexport const getFilterOptions = (listings, filteredListings, field, excludeZeroCount = null) => {\n\tconst options = new Set();\n\tlistings.forEach(listing => {\n\t\tif (listing.fields[field]) {\n\t\t\toptions.add(listing.fields[field]);\n\t\t}\n\t});\n\n\tconst optionCounts = {};\n\toptions.forEach(option => {\n\t\toptionCounts[option] = 0;\n\t});\n\n\tfilteredListings.forEach(listing => {\n\t\tconst value = listing.fields[field];\n\t\tif (value && optionCounts.hasOwnProperty(value)) {\n\t\t\toptionCounts[value] += 1;\n\t\t}\n\t});\n\n\treturn Array.from(options)\n\t\t.sort()\n\t\t.map(option => ({\n\t\t\tname: option,\n\t\t\tcount: optionCounts[option] || 0\n\t\t}))\n\t\t.filter(option => !(excludeZeroCount === true && option.count === 0));\n};\n\nexport const getSpecialFeatureOptions = (listings, filteredListings, siteConfig, favorites) => {\n\tconst specialFeatures = siteConfig.specialFeatures;\n\tconst featureCounts = Object.keys(specialFeatures).sort().reduce((acc, key) => {\n\t\tacc[specialFeatures[key]] = 0;\n\t\treturn acc;\n\t}, {});\n\n\tfilteredListings.forEach(listing => {\n\t\tObject.entries(specialFeatures).forEach(([featureKey, featureName]) => {\n\t\t\tif (listing.fields[featureKey] == 1) {\n\t\t\t\tfeatureCounts[featureName] += 1;\n\t\t\t}\n\t\t});\n\t});\n\n\tconst specialFeatureOptions = Object.entries(featureCounts).map(([name, count]) => ({\n\t\tname,\n\t\tcount\n\t}));\n\n\tfor (let option of specialFeatureOptions) {\n\t\tif (option.name === 'Favorite') {\n\t\t\toption.count = filteredListings.filter(x => favorites.includes(x.id)).length;\n\t\t}\n\t}\n\n\treturn specialFeatureOptions;\n};\n\nconst getPointsOfInterestOptions = pointsOfInterestNames => {\n\treturn Object.entries(pointsOfInterestNames).sort().map(([key, name]) => ({\n\t\tkey,\n\t\tname\n\t}));\n};\n\nexport const generateFilterOptions = (\n\tfilteredListings,\n\tallListings,\n\tsiteConfig,\n\tfilterOptions,\n\tparentField,\n\tfavorites\n) => {\n\tif (allListings.length > 0) {\n\t\tconst dynamicFilters = siteConfig.fieldFiltersShown.map(fieldName => {\n\t\t\tif (fieldName === parentField && filterOptions?.filters) {\n\t\t\t\treturn filterOptions.filters.find(filter => filter.id === fieldName);\n\t\t\t}\n\t\t\tif (fieldName == \"specialFeatures\") {\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getSpecialFeatureOptions(allListings, filteredListings, siteConfig, favorites).sort()\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tid: fieldName,\n\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName)\n\t\t\t};\n\t\t});\n\n\t\tconst locations =\n\t\t\tsiteConfig.locationFiltersShown.map((fieldName, index) => {\n\t\t\t\tif (index === 0 && filterOptions?.locations) {\n\t\t\t\t\treturn filterOptions.locations.find(filter => filter.id === fieldName);\n\t\t\t\t}\n\t\t\t\t if (fieldName === 'entityName' && filterOptions?.locations) {\n\t\t\t\t\tconst cityIncluded = siteConfig.locationFiltersShown.includes('city');\n\t\t\t\t\tconst stateIncluded = siteConfig.locationFiltersShown.includes('state');\n\t\t\t\t\tconst cityStateIncluded = siteConfig.locationFiltersShown.includes('cityState');\n\t\t\t\t\tconst uniqueCities = cityIncluded ? [...new Set(filteredListings.map(listing => listing.fields.city))] : [];\n\t\t\t\t\tconst uniqueStates = stateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.state))] : [];\n\t\t\t\t\tconst uniqueCityStates = cityStateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.cityState))] : [];\n\t\t\t\t\tconst filteredByLocation = allListings.filter(listing => {\n\t\t\t\t\t\tconst cityMatches = cityIncluded ? uniqueCities.includes(listing.fields.city) : true;\n\t\t\t\t\t\tconst stateMatches = stateIncluded ? uniqueStates.includes(listing.fields.state) : true;\n\t\t\t\t\t\tconst cityStateMatches = cityStateIncluded ? uniqueCityStates.includes(listing.fields.cityState) : true;\n\t\t\t\t\t\treturn cityMatches && stateMatches && cityStateMatches;\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: fieldName,\n\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\t\titems: getFilterOptions(allListings, filteredByLocation, fieldName, true)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, true)\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst pointsOfInterest = {\n\t\t\tid: \"pointsOfInterest\",\n\t\t\ttitle: siteConfig.pointsOfInterestConfig.title,\n\t\t\titems: getPointsOfInterestOptions(\n\t\t\t\tsiteConfig.pointsOfInterestConfig.pointsOfInterestNames\n\t\t\t)\n\t\t};\n\n\t\treturn {\n\t\t\tfilters: dynamicFilters,\n\t\t\tlocations: locations,\n\t\t\tpointsOfInterest: pointsOfInterest\n\t\t};\n\t}\n\n\treturn null;\n};\n\nexport const applyFilters = (\n\tallListings,\n\tselectedFilters,\n\tquery,\n\tlistingEntities,\n\tfavorites,\n\tsiteConfig\n) => {\n\tlet results = allListings;\n\tlet invertedSpecialFeaturesMap;\n\tif (siteConfig.specialFeatures) {\n\t\tinvertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce((acc, [key, value]) => {\n\t\t\tacc[value] = key;\n\t\t\treturn acc;\n\t\t}, {});\n\n\t}\n\tconst hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;\n\n\tif (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {\n\t\tresults = results.filter(x => favorites.includes(x.id));\n\t}\n\tvar favorite;\n\tif (hasFavorite) {\n\t\tfavorite = selectedFilters.specialFeatures.Favorite;\n\t\tdelete selectedFilters.specialFeatures.Favorite;\n\t}\n\tfor (const [field, filterItems] of Object.entries(selectedFilters)) {\n\t\tconst formattedField = field;\n\t\tif (field === \"pointsOfInterest\") continue;\n\t\tif (field === \"specialFeatures\" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing => {\n\t\t\t\treturn Object.entries(filterItems).some(([filterName, filterValue]) => {\n\t\t\t\t\tconst listingFieldName = invertedSpecialFeaturesMap[filterName];\n\t\t\t\t\treturn filterValue && listing.fields[listingFieldName] == 1;\n\t\t\t\t});\n\t\t\t});\n\t\t} else if (Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing =>\n\t\t\t\tfilterItems.hasOwnProperty(listing.fields[formattedField])\n\t\t\t);\n\t\t}\n\t}\n\tif (query) {\n\t\tresults = searchResults(results, query);\n\t}\n\tconst distinctItems = getDistinctItemsByProximity(results, listingEntities);\n\tif (hasFavorite) {\n\t\tselectedFilters.specialFeatures.Favorite = favorite;\n\t}\n\treturn { filteredListings: results, mapItems: distinctItems };\n};\n\nfunction searchResults(results, query) {\n\tconst fields = [\n\t\t'id',\n\t\t'fields.posted',\n\t\t'fields.subtitle',\n\t\t'fields.education',\n\t\t'fields.position',\n\t\t'fields.category',\n\t\t'fields.categoryclass',\n\t\t'fields.shift',\n\t\t'fields.citystate',\n\t\t'fields.city',\n\t\t'fields.state',\n\t\t'fields.schedule',\n\t\t'fields.customflag1',\n\t\t'fields.bonus',\n\t\t'fields.remote',\n\t\t'fields.useclientjoburl',\n\t\t'fields.datecreated',\n\t\t'fields.datelastedited'\n\t];\n\n\tconst options = {\n\t\tincludeScore: true,\n\t\tthreshold: 0.3,\n\t\tkeys: fields\n\t};\n\n\tconst fuse = new Fuse(results, options);\n\tconst lowerCaseQuery = query.toLowerCase();\n\tconst queryTerms = lowerCaseQuery.split(' ');\n\n\tconst exactIdMatch = results.find(result => result.id.toString() === query);\n\tif (exactIdMatch) {\n\t\treturn [exactIdMatch];\n\t}\n\n\tconst fuseQuery = queryTerms.map(term => ({\n\t\t$or: fields.map(field => ({ [field]: term }))\n\t}));\n\n\tconst fuseResults = fuse.search({ $and: fuseQuery });\n\n\treturn fuseResults.map(result => result.item);\n}\n\nexport const filterListingsByLocation = (\n\tallListings,\n\tselectedLocation,\n\tlistingEntities\n) => {\n\tlet results = allListings;\n\tif (selectedLocation !== null) {\n\t\tresults = results.filter(item =>\n\t\t\tselectedLocation.items.hasOwnProperty(item.id)\n\t\t);\n\t}\n\tconst mapItems = getDistinctItemsByProximity(results, listingEntities);\n\treturn { filteredListings: results, mapItems: mapItems };\n};\n"],"names":["getFilterOptions","listings","filteredListings","field","excludeZeroCount","arguments","length","undefined","options","Set","forEach","listing","fields","add","optionCounts","option","value","hasOwnProperty","Array","from","sort","map","name","count","filter","getSpecialFeatureOptions","siteConfig","favorites","specialFeatures","featureCounts","Object","keys","reduce","acc","key","entries","_ref","_ref2","_slicedToArray","featureKey","featureName","specialFeatureOptions","_ref3","_ref4","_iterator","_createForOfIteratorHelper","_step","s","n","done","x","includes","id","err","e","f","getPointsOfInterestOptions","pointsOfInterestNames","_ref5","_ref6","generateFilterOptions","allListings","filterOptions","parentField","dynamicFilters","fieldFiltersShown","fieldName","filters","find","title","fieldNames","items","locations","locationFiltersShown","index","cityIncluded","stateIncluded","cityStateIncluded","uniqueCities","_toConsumableArray","city","uniqueStates","state","uniqueCityStates","cityState","filteredByLocation","cityMatches","stateMatches","cityStateMatches","pointsOfInterest","pointsOfInterestConfig","applyFilters","selectedFilters","query","listingEntities","results","invertedSpecialFeaturesMap","_ref7","_ref8","hasFavorite","Favorite","favorite","_loop","_Object$entries$_i","_Object$entries","_i","filterItems","formattedField","some","_ref9","_ref10","filterName","filterValue","listingFieldName","searchResults","distinctItems","getDistinctItemsByProximity","mapItems","includeScore","threshold","fuse","Fuse","lowerCaseQuery","toLowerCase","queryTerms","split","exactIdMatch","result","toString","fuseQuery","term","$or","_defineProperty","fuseResults","search","$and","item","filterListingsByLocation","selectedLocation"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -123,6 +123,7 @@ const HomeBody = ({ siteConfig, navigateToDetails, navigateToEasyApply, Link, li
|
|
|
123
123
|
size: siteConfig.pointsOfInterestConfig.placeMarkerSize
|
|
124
124
|
}
|
|
125
125
|
}}
|
|
126
|
+
mapPosition={siteConfig.mapPosition}
|
|
126
127
|
showMap={siteConfig.showMap}
|
|
127
128
|
fieldsShown={siteConfig.fieldsShown}
|
|
128
129
|
specialFeatures={siteConfig.specialFeatures}
|
|
@@ -1,206 +1,245 @@
|
|
|
1
|
-
import React, { useEffect, useRef } from 'react';
|
|
2
|
-
|
|
3
|
-
import MapMarker from "~/components/containers/maps/map-marker-container";
|
|
4
|
-
import PlaceMarker from "~/components/modules/maps/place-marker";
|
|
5
|
-
|
|
6
|
-
import { usePlaces } from "~/contexts/placesContext";
|
|
7
|
-
import { useMap } from "~/contexts/mapContext";
|
|
8
|
-
import { useMapList } from "~/contexts/mapListContext";
|
|
9
|
-
|
|
10
|
-
import { markerIconSelected, markerIcon, pinIcon } from "~/util/mapIconUtil";
|
|
11
|
-
|
|
12
|
-
import Map from "~/components/modules/maps/map";
|
|
13
|
-
import { MarkerClustererF } from "@react-google-maps/api";
|
|
14
|
-
import { clusterOptions } from "~/util/mapUtil";
|
|
15
|
-
|
|
16
|
-
const MapContainer = ({
|
|
17
|
-
markerConfigs,
|
|
18
|
-
infoWindowClasses,
|
|
19
|
-
clusterGridSize = 60
|
|
20
|
-
}) => {
|
|
21
|
-
const {
|
|
22
|
-
location,
|
|
23
|
-
zoom,
|
|
24
|
-
center,
|
|
25
|
-
selectLocationEntity,
|
|
26
|
-
setLocation,
|
|
27
|
-
mapInteracted,
|
|
28
|
-
setMapInteracted
|
|
29
|
-
} = useMap();
|
|
30
|
-
|
|
31
|
-
const {
|
|
32
|
-
mapItems, filteredListings, setSelectedFilters,
|
|
33
|
-
setQuery
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
mapContainerRef.current
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
google.maps.event.removeListener(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
let
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
mapRef.current
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
if (
|
|
141
|
-
mapRef.current
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import MapMarker from "~/components/containers/maps/map-marker-container";
|
|
4
|
+
import PlaceMarker from "~/components/modules/maps/place-marker";
|
|
5
|
+
|
|
6
|
+
import { usePlaces } from "~/contexts/placesContext";
|
|
7
|
+
import { useMap } from "~/contexts/mapContext";
|
|
8
|
+
import { useMapList } from "~/contexts/mapListContext";
|
|
9
|
+
|
|
10
|
+
import { markerIconSelected, markerIcon, pinIcon } from "~/util/mapIconUtil";
|
|
11
|
+
|
|
12
|
+
import Map from "~/components/modules/maps/map";
|
|
13
|
+
import { MarkerClustererF } from "@react-google-maps/api";
|
|
14
|
+
import { clusterOptions } from "~/util/mapUtil";
|
|
15
|
+
|
|
16
|
+
const MapContainer = ({
|
|
17
|
+
markerConfigs,
|
|
18
|
+
infoWindowClasses,
|
|
19
|
+
clusterGridSize = 60
|
|
20
|
+
}) => {
|
|
21
|
+
const {
|
|
22
|
+
location,
|
|
23
|
+
zoom,
|
|
24
|
+
center,
|
|
25
|
+
selectLocationEntity,
|
|
26
|
+
setLocation,
|
|
27
|
+
mapInteracted,
|
|
28
|
+
setMapInteracted
|
|
29
|
+
} = useMap();
|
|
30
|
+
|
|
31
|
+
const {
|
|
32
|
+
mapItems, filteredListings, setSelectedFilters,
|
|
33
|
+
setQuery,
|
|
34
|
+
siteConfig
|
|
35
|
+
} = useMapList();
|
|
36
|
+
|
|
37
|
+
const mapRef = useRef();
|
|
38
|
+
const markerRefs = useRef({});
|
|
39
|
+
const mapContainerRef = useRef(null);
|
|
40
|
+
const {
|
|
41
|
+
poiMarkers,
|
|
42
|
+
setCurrentCenter,
|
|
43
|
+
currentCenter,
|
|
44
|
+
setCurrentZoom,
|
|
45
|
+
currentZoom,
|
|
46
|
+
selectedPlaceMarker,
|
|
47
|
+
setSelectedPlaceMarker,
|
|
48
|
+
placesWindow,
|
|
49
|
+
setPlacesWindow } = usePlaces();
|
|
50
|
+
|
|
51
|
+
const onIdle = () => {
|
|
52
|
+
if (!currentCenter || !mapRef.current) return;
|
|
53
|
+
const newCenter = mapRef.current.getCenter().toJSON();
|
|
54
|
+
const newZoom = mapRef.current.zoom;
|
|
55
|
+
|
|
56
|
+
setCurrentCenter(newCenter);
|
|
57
|
+
|
|
58
|
+
if (newZoom !== currentZoom) {
|
|
59
|
+
setCurrentZoom(newZoom);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
if (mapContainerRef.current) {
|
|
65
|
+
const handleScroll = () => {
|
|
66
|
+
setMapInteracted(true);
|
|
67
|
+
};
|
|
68
|
+
var mapContainerRefCurrent = mapContainerRef.current;
|
|
69
|
+
mapContainerRef.current.addEventListener('wheel', handleScroll);
|
|
70
|
+
return () => mapContainerRefCurrent.removeEventListener('wheel', handleScroll);
|
|
71
|
+
}
|
|
72
|
+
}, [mapContainerRef.current]);
|
|
73
|
+
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
if (mapRef.current) {
|
|
76
|
+
const mapInstance = mapRef.current;
|
|
77
|
+
const dragStartListener = mapInstance.addListener('dragstart', () => setMapInteracted(true));
|
|
78
|
+
const mouseDownListener = mapInstance.addListener('mousedown', () => setMapInteracted(true));
|
|
79
|
+
return () => {
|
|
80
|
+
google.maps.event.removeListener(dragStartListener);
|
|
81
|
+
google.maps.event.removeListener(mouseDownListener);
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}, [mapRef.current, mapContainerRef.current]);
|
|
85
|
+
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
if ((mapItems && mapItems.length > 0 || poiMarkers.length > 0) && mapRef.current) {
|
|
88
|
+
fitBounds(mapRef.current);
|
|
89
|
+
}
|
|
90
|
+
}, [mapItems, mapRef.current, location]);
|
|
91
|
+
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
if ((mapItems && mapItems.length > 0 || poiMarkers.length > 0) && mapRef.current && mapInteracted) {
|
|
94
|
+
fitBounds(mapRef.current, true);
|
|
95
|
+
}
|
|
96
|
+
if (mapRef.current) {
|
|
97
|
+
let currZoom = mapRef.current.zoom;
|
|
98
|
+
let setZoomVal = currZoom < 13 ? currZoom : 12;
|
|
99
|
+
mapRef.current.setZoom(setZoomVal);
|
|
100
|
+
}
|
|
101
|
+
}, [filteredListings]);
|
|
102
|
+
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
if (!mapRef.current || !location || mapInteracted) return;
|
|
105
|
+
mapRef.current.panTo(
|
|
106
|
+
new google.maps.LatLng(location.latitude, location.longitude)
|
|
107
|
+
);
|
|
108
|
+
if (mapRef.current) {
|
|
109
|
+
let setZoomVal = zoom < 13 ? zoom : 12;
|
|
110
|
+
mapRef.current.setZoom(setZoomVal);
|
|
111
|
+
}
|
|
112
|
+
}, [location, zoom, mapRef.current]);
|
|
113
|
+
|
|
114
|
+
const fitBounds = (map, overload = false) => {
|
|
115
|
+
if ((mapInteracted === false || overload) && mapItems != null) {
|
|
116
|
+
const bounds = new window.google.maps.LatLngBounds();
|
|
117
|
+
mapItems.forEach(item => {
|
|
118
|
+
bounds.extend(new google.maps.LatLng(item.latitude, item.longitude));
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
if (!map) return;
|
|
122
|
+
const currentCenter = map.getCenter();
|
|
123
|
+
map.fitBounds(bounds);
|
|
124
|
+
const newCenter = bounds.getCenter();
|
|
125
|
+
if (currentCenter && newCenter) {
|
|
126
|
+
map.panTo(newCenter);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (mapRef.current.zoom > 17) {
|
|
130
|
+
mapRef.current.setZoom(16);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
const markerClickHandler = mapLocation => {
|
|
135
|
+
setMapInteracted(true);
|
|
136
|
+
selectLocationEntity(mapLocation);
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const onLoad = map => {
|
|
140
|
+
if (!location || location === null) {
|
|
141
|
+
mapRef.current = map;
|
|
142
|
+
fitBounds(map, true);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
mapRef.current = map;
|
|
146
|
+
|
|
147
|
+
if (mapInteracted === false) {
|
|
148
|
+
mapRef.current.panTo(
|
|
149
|
+
new google.maps.LatLng(location.latitude, location.longitude)
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
mapRef.current.setZoom(zoom);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
const pinIconUrl = pinIcon({
|
|
157
|
+
fillColor: markerConfigs.fillColor,
|
|
158
|
+
strokeColor: markerConfigs.strokeColor
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
const onClusterClick = cluster => {
|
|
162
|
+
if(!siteConfig.optionalShowLocationClusterConfig || (mapRef.current.zoom > siteConfig.optionalShowLocationClusterConfig.showForZoomLevelLessThan)) {
|
|
163
|
+
console.log("should return");
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (!cluster || typeof cluster.getMarkers !== 'function') {
|
|
167
|
+
console.error('Cluster object or getMarkers method not available.');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const markers = cluster.getMarkers();
|
|
172
|
+
|
|
173
|
+
if (!markers || markers.length === 0) {
|
|
174
|
+
console.error('No markers found in the cluster.');
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
setTimeout(() => {
|
|
179
|
+
const bounds = new window.google.maps.LatLngBounds();
|
|
180
|
+
|
|
181
|
+
markers.forEach(marker => {
|
|
182
|
+
bounds.extend(marker.getPosition());
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
bounds.extend(new google.maps.LatLng(siteConfig.optionalShowLocationClusterConfig.latitude, siteConfig.optionalShowLocationClusterConfig.longitude));
|
|
186
|
+
|
|
187
|
+
if (mapRef.current) {
|
|
188
|
+
mapRef.current.fitBounds(bounds);
|
|
189
|
+
}
|
|
190
|
+
}, 500);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
return (
|
|
194
|
+
<Map
|
|
195
|
+
zoom={zoom}
|
|
196
|
+
center={center}
|
|
197
|
+
mapContainerRef={mapContainerRef}
|
|
198
|
+
onLoad={onLoad}
|
|
199
|
+
onIdle={onIdle}
|
|
200
|
+
mapInteracted={mapInteracted}
|
|
201
|
+
pinIconUrl={pinIconUrl}
|
|
202
|
+
setMapInteracted={setMapInteracted}
|
|
203
|
+
fitBounds={fitBounds}
|
|
204
|
+
mapRef={mapRef}
|
|
205
|
+
setQuery={setQuery}
|
|
206
|
+
filteredListingsLength={filteredListings.length}
|
|
207
|
+
setSelectedFilters={setSelectedFilters}
|
|
208
|
+
>
|
|
209
|
+
<MarkerClustererF options={clusterOptions(clusterGridSize, markerConfigs.fillColor)} onClick={onClusterClick}>
|
|
210
|
+
{clusterer => (
|
|
211
|
+
<>
|
|
212
|
+
{mapItems.map(item => (
|
|
213
|
+
<MapMarker
|
|
214
|
+
key={item.id}
|
|
215
|
+
item={item}
|
|
216
|
+
selectedLocation={location}
|
|
217
|
+
markerRefs={markerRefs}
|
|
218
|
+
infoWindowClasses={infoWindowClasses}
|
|
219
|
+
setSelectedLocation={setLocation}
|
|
220
|
+
markerClickHandler={markerClickHandler}
|
|
221
|
+
clusterer={clusterer}
|
|
222
|
+
markerIcon={markerIcon(markerConfigs)}
|
|
223
|
+
markerIconSelected={markerIconSelected(markerConfigs)}
|
|
224
|
+
setMapInteracted={setMapInteracted}
|
|
225
|
+
/>
|
|
226
|
+
))}
|
|
227
|
+
{poiMarkers && poiMarkers.markers.map((marker, index) => (
|
|
228
|
+
<PlaceMarker
|
|
229
|
+
key={`marker-${marker.title}-${index}`}
|
|
230
|
+
marker={marker}
|
|
231
|
+
index={index}
|
|
232
|
+
selectedPlaceMarker={selectedPlaceMarker}
|
|
233
|
+
placesWindow={placesWindow}
|
|
234
|
+
setPlacesWindow={setPlacesWindow}
|
|
235
|
+
setSelectedPlaceMarker={setSelectedPlaceMarker}
|
|
236
|
+
/>
|
|
237
|
+
))}
|
|
238
|
+
</>
|
|
239
|
+
)}
|
|
240
|
+
</MarkerClustererF>
|
|
241
|
+
</Map>
|
|
242
|
+
);
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
export default MapContainer;
|
|
@@ -14,7 +14,8 @@ const MapListContainer = ({
|
|
|
14
14
|
specialFeatures,
|
|
15
15
|
fieldNames,
|
|
16
16
|
showMap,
|
|
17
|
-
placeMappings
|
|
17
|
+
placeMappings,
|
|
18
|
+
mapPosition
|
|
18
19
|
}) => {
|
|
19
20
|
|
|
20
21
|
const listProps = {
|
|
@@ -41,6 +42,7 @@ const MapListContainer = ({
|
|
|
41
42
|
list={<List {...listProps} />}
|
|
42
43
|
map={<Map {...mapProps} />}
|
|
43
44
|
filter={<Filter showMap={showMap} className="md:hc-hidden" />}
|
|
45
|
+
mapPosition={mapPosition}
|
|
44
46
|
/>
|
|
45
47
|
);
|
|
46
48
|
};
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
const ShowAllButton = ({ mapInteracted,
|
|
4
|
-
if (!mapInteracted
|
|
3
|
+
const ShowAllButton = ({ mapInteracted, setMapInteracted, fitBounds, mapRef, pinIconUrl, setSelectedFilters, setQuery, listingCount }) => {
|
|
4
|
+
if (!mapInteracted) {
|
|
5
5
|
return null;
|
|
6
6
|
}
|
|
7
|
-
|
|
8
7
|
return (
|
|
9
8
|
<button
|
|
10
9
|
style={{ fontFamily: 'Roboto, Arial, sans-serif', fontSize: '14px', fontWeight: '500' }}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import Tabs from '~/components/modules/maps/tabs';
|
|
3
3
|
|
|
4
|
-
const MapList = ({ showMap, loading, list, map, filter }) => {
|
|
4
|
+
const MapList = ({ showMap, loading, list, map, filter, mapPosition }) => {
|
|
5
5
|
return (
|
|
6
6
|
<>
|
|
7
7
|
<div
|
|
@@ -10,8 +10,18 @@ const MapList = ({ showMap, loading, list, map, filter }) => {
|
|
|
10
10
|
md:hc-grid md:hc-pt-4 hc-overflow-hidden hc-relative bg-gray-100
|
|
11
11
|
`}
|
|
12
12
|
>
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
{mapPosition && mapPosition === 'top' && showMap ? (
|
|
14
|
+
<>
|
|
15
|
+
<div>{map}</div>
|
|
16
|
+
<div>{list}</div>
|
|
17
|
+
</>
|
|
18
|
+
) : (
|
|
19
|
+
<>
|
|
20
|
+
<div>{list}</div>
|
|
21
|
+
<div>{showMap && map}</div>
|
|
22
|
+
</>
|
|
23
|
+
)}
|
|
24
|
+
|
|
15
25
|
</div>
|
|
16
26
|
<div className="md:hc-hidden">
|
|
17
27
|
<Tabs
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { GoogleMap } from "@react-google-maps/api";
|
|
3
|
-
import ShowAllButton from "~/components/modules/buttons/show-all-button";
|
|
4
|
-
|
|
5
|
-
const Map = ({
|
|
6
|
-
zoom,
|
|
7
|
-
center,
|
|
8
|
-
mapContainerRef,
|
|
9
|
-
onLoad,
|
|
10
|
-
onIdle,
|
|
11
|
-
mapInteracted,
|
|
12
|
-
pinIconUrl,
|
|
13
|
-
setMapInteracted,
|
|
14
|
-
fitBounds,
|
|
15
|
-
mapRef,
|
|
16
|
-
setQuery,
|
|
17
|
-
filteredListingsLength,
|
|
18
|
-
setSelectedFilters,
|
|
19
|
-
children
|
|
20
|
-
}) => {
|
|
21
|
-
return (
|
|
22
|
-
<>
|
|
23
|
-
{zoom && center && (
|
|
24
|
-
<div ref={mapContainerRef} className="hc-h-full hc-relative">
|
|
25
|
-
<GoogleMap
|
|
26
|
-
zoom={zoom}
|
|
27
|
-
onLoad={onLoad}
|
|
28
|
-
onIdle={onIdle}
|
|
29
|
-
center={center}
|
|
30
|
-
mapContainerStyle={{
|
|
31
|
-
width: "100%",
|
|
32
|
-
height: "100%"
|
|
33
|
-
}}
|
|
34
|
-
options={{
|
|
35
|
-
styles: [
|
|
36
|
-
{
|
|
37
|
-
featureType: "poi",
|
|
38
|
-
elementType: "labels",
|
|
39
|
-
stylers: [{ visibility: "off" }]
|
|
40
|
-
}
|
|
41
|
-
]
|
|
42
|
-
}}
|
|
43
|
-
>
|
|
44
|
-
{children}
|
|
45
|
-
</GoogleMap>
|
|
46
|
-
{mapInteracted && (
|
|
47
|
-
<ShowAllButton
|
|
48
|
-
mapInteracted={mapInteracted}
|
|
49
|
-
setMapInteracted={setMapInteracted}
|
|
50
|
-
fitBounds={fitBounds}
|
|
51
|
-
mapRef={mapRef}
|
|
52
|
-
pinIconUrl={pinIconUrl}
|
|
53
|
-
setQuery={setQuery}
|
|
54
|
-
listingCount={filteredListingsLength}
|
|
55
|
-
setSelectedFilters={setSelectedFilters}
|
|
56
|
-
/>
|
|
57
|
-
)}
|
|
58
|
-
</div>
|
|
59
|
-
)}
|
|
60
|
-
</>
|
|
61
|
-
);
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
export default Map;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { GoogleMap } from "@react-google-maps/api";
|
|
3
|
+
import ShowAllButton from "~/components/modules/buttons/show-all-button";
|
|
4
|
+
|
|
5
|
+
const Map = ({
|
|
6
|
+
zoom,
|
|
7
|
+
center,
|
|
8
|
+
mapContainerRef,
|
|
9
|
+
onLoad,
|
|
10
|
+
onIdle,
|
|
11
|
+
mapInteracted,
|
|
12
|
+
pinIconUrl,
|
|
13
|
+
setMapInteracted,
|
|
14
|
+
fitBounds,
|
|
15
|
+
mapRef,
|
|
16
|
+
setQuery,
|
|
17
|
+
filteredListingsLength,
|
|
18
|
+
setSelectedFilters,
|
|
19
|
+
children
|
|
20
|
+
}) => {
|
|
21
|
+
return (
|
|
22
|
+
<>
|
|
23
|
+
{zoom && center && (
|
|
24
|
+
<div ref={mapContainerRef} className="hc-h-full hc-relative">
|
|
25
|
+
<GoogleMap
|
|
26
|
+
zoom={zoom}
|
|
27
|
+
onLoad={onLoad}
|
|
28
|
+
onIdle={onIdle}
|
|
29
|
+
center={center}
|
|
30
|
+
mapContainerStyle={{
|
|
31
|
+
width: "100%",
|
|
32
|
+
height: "100%"
|
|
33
|
+
}}
|
|
34
|
+
options={{
|
|
35
|
+
styles: [
|
|
36
|
+
{
|
|
37
|
+
featureType: "poi",
|
|
38
|
+
elementType: "labels",
|
|
39
|
+
stylers: [{ visibility: "off" }]
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}}
|
|
43
|
+
>
|
|
44
|
+
{children}
|
|
45
|
+
</GoogleMap>
|
|
46
|
+
{mapInteracted && (
|
|
47
|
+
<ShowAllButton
|
|
48
|
+
mapInteracted={mapInteracted}
|
|
49
|
+
setMapInteracted={setMapInteracted}
|
|
50
|
+
fitBounds={fitBounds}
|
|
51
|
+
mapRef={mapRef}
|
|
52
|
+
pinIconUrl={pinIconUrl}
|
|
53
|
+
setQuery={setQuery}
|
|
54
|
+
listingCount={filteredListingsLength}
|
|
55
|
+
setSelectedFilters={setSelectedFilters}
|
|
56
|
+
/>
|
|
57
|
+
)}
|
|
58
|
+
</div>
|
|
59
|
+
)}
|
|
60
|
+
</>
|
|
61
|
+
);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export default Map;
|
package/src/util/filterUtil.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable no-undef */
|
|
1
2
|
import { getDistinctItemsByProximity } from '~/util/mapUtil';
|
|
2
3
|
|
|
3
4
|
import Fuse from 'fuse.js';
|
|
@@ -98,6 +99,25 @@ export const generateFilterOptions = (
|
|
|
98
99
|
siteConfig.locationFiltersShown.map((fieldName, index) => {
|
|
99
100
|
if (index === 0 && filterOptions?.locations) {
|
|
100
101
|
return filterOptions.locations.find(filter => filter.id === fieldName);
|
|
102
|
+
}
|
|
103
|
+
if (fieldName === 'entityName' && filterOptions?.locations) {
|
|
104
|
+
const cityIncluded = siteConfig.locationFiltersShown.includes('city');
|
|
105
|
+
const stateIncluded = siteConfig.locationFiltersShown.includes('state');
|
|
106
|
+
const cityStateIncluded = siteConfig.locationFiltersShown.includes('cityState');
|
|
107
|
+
const uniqueCities = cityIncluded ? [...new Set(filteredListings.map(listing => listing.fields.city))] : [];
|
|
108
|
+
const uniqueStates = stateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.state))] : [];
|
|
109
|
+
const uniqueCityStates = cityStateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.cityState))] : [];
|
|
110
|
+
const filteredByLocation = allListings.filter(listing => {
|
|
111
|
+
const cityMatches = cityIncluded ? uniqueCities.includes(listing.fields.city) : true;
|
|
112
|
+
const stateMatches = stateIncluded ? uniqueStates.includes(listing.fields.state) : true;
|
|
113
|
+
const cityStateMatches = cityStateIncluded ? uniqueCityStates.includes(listing.fields.cityState) : true;
|
|
114
|
+
return cityMatches && stateMatches && cityStateMatches;
|
|
115
|
+
});
|
|
116
|
+
return {
|
|
117
|
+
id: fieldName,
|
|
118
|
+
title: siteConfig.fieldNames[fieldName],
|
|
119
|
+
items: getFilterOptions(allListings, filteredByLocation, fieldName, true)
|
|
120
|
+
};
|
|
101
121
|
}
|
|
102
122
|
return {
|
|
103
123
|
id: fieldName,
|