@abcagency/hc-ui-components 1.4.8 → 1.4.9

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.
@@ -12,7 +12,7 @@ import { ThemeProvider } from '../contexts/themeContext.js';
12
12
  import { getMapConfig } from '../services/configService.js';
13
13
  import { setClientAuthKey } from '../clientToken.js';
14
14
 
15
- var _excluded = ["children", "siteConfig", "trackEvent"];
15
+ var _excluded = ["children", "siteConfig", "trackEvent", "googleMapsApiKey"];
16
16
 
17
17
  // Libraries for Google Maps
18
18
  var LIBRARIES = ['places'];
@@ -84,6 +84,7 @@ var ContextProviders = function ContextProviders(_ref2) {
84
84
  var children = _ref2.children,
85
85
  siteConfig = _ref2.siteConfig,
86
86
  trackEvent = _ref2.trackEvent,
87
+ googleMapsApiKey = _ref2.googleMapsApiKey,
87
88
  mapListProps = _objectWithoutProperties(_ref2, _excluded);
88
89
  return /*#__PURE__*/React__default.createElement(TrackEventProvider, {
89
90
  trackEvent: trackEvent
@@ -102,6 +103,7 @@ var ContextProviders = function ContextProviders(_ref2) {
102
103
  }, /*#__PURE__*/React__default.createElement(PlacesProvider, {
103
104
  placeMappings: (_siteConfig$pointsOfI = siteConfig.pointsOfInterestConfig.placeMappings) !== null && _siteConfig$pointsOfI !== void 0 ? _siteConfig$pointsOfI : {},
104
105
  additionalMapMarkers: mapListProps.additionalMapMarkers,
106
+ googleMapsApiKey: googleMapsApiKey,
105
107
  markerColors: {
106
108
  fillColor: siteConfig.colors.primary,
107
109
  strokeColor: siteConfig.colors.primaryDark,
@@ -120,6 +122,7 @@ var ContextProviders = function ContextProviders(_ref2) {
120
122
  var HireControlMap = function HireControlMap(_ref3) {
121
123
  var _siteConfig$pointsOfI2;
122
124
  var clientToken = _ref3.clientToken,
125
+ googleMapsApiKey = _ref3.googleMapsApiKey,
123
126
  _ref3$containerStyle = _ref3.containerStyle,
124
127
  containerStyle = _ref3$containerStyle === void 0 ? {
125
128
  height: '100vh'
@@ -173,11 +176,32 @@ var HireControlMap = function HireControlMap(_ref3) {
173
176
  error = _useSiteConfig.error;
174
177
 
175
178
  // Load Google Maps
176
- useLoadScript({
177
- googleMapsApiKey: "AIzaSyAXPlfaoMCrmjNV1u-vFYdLBi7GkGeh4S4",
179
+ var _useLoadScript = useLoadScript({
180
+ googleMapsApiKey: googleMapsApiKey,
178
181
  version: 'quarterly',
179
182
  libraries: LIBRARIES
180
- });
183
+ }),
184
+ isMapsLoaded = _useLoadScript.isLoaded,
185
+ loadError = _useLoadScript.loadError;
186
+
187
+ // Show loading state or error if Google Maps hasn't loaded yet
188
+ if (!googleMapsApiKey) {
189
+ console.error('Google Maps API key is required');
190
+ return /*#__PURE__*/React__default.createElement("div", {
191
+ className: "hc-p-4"
192
+ }, "Google Maps API key is required");
193
+ }
194
+ if (loadError) {
195
+ console.error('Google Maps failed to load:', loadError);
196
+ return /*#__PURE__*/React__default.createElement("div", {
197
+ className: "hc-p-4"
198
+ }, "Error loading Google Maps");
199
+ }
200
+ if (!isMapsLoaded) {
201
+ return /*#__PURE__*/React__default.createElement("div", {
202
+ className: "hc-p-4"
203
+ }, "Loading Maps...");
204
+ }
181
205
  if (error || !siteConfig) {
182
206
  return /*#__PURE__*/React__default.createElement("div", {
183
207
  className: "hc-p-4"
@@ -224,7 +248,8 @@ var HireControlMap = function HireControlMap(_ref3) {
224
248
  //Desktop view of filter used below
225
249
  return /*#__PURE__*/React__default.createElement(ContextProviders, _extends({
226
250
  siteConfig: siteConfig,
227
- trackEvent: trackEvent
251
+ trackEvent: trackEvent,
252
+ googleMapsApiKey: googleMapsApiKey || process.env.GOOGLE_MAPS_API_KEY
228
253
  }, mapListProps), /*#__PURE__*/React__default.createElement(Grid, {
229
254
  as: "section",
230
255
  id: "job-search-interface",
@@ -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\n// Context imports\nimport { MapProvider } from '~/contexts/mapContext';\nimport { PlacesProvider } from '~/contexts/placesContext';\nimport { MapListProvider } from '~/contexts/mapListContext';\nimport { TrackEventProvider } from '~/contexts/trackEventContext';\nimport { ThemeProvider } from '~/contexts/themeContext';\n\nimport { getMapConfig } from '~/services/configService';\nimport { setClientAuthKey } from '~/clientToken.js';\n\nimport '../styles/index.css';\n\n// Libraries for Google Maps\nconst LIBRARIES = ['places'];\n\n// Custom hook to fetch site configuration\nfunction useSiteConfig(clientToken, siteConfiguration = null) {\n\tconst [siteConfig, setSiteConfig] = useState(siteConfiguration);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState(null);\n\n\tuseEffect(() => {\n\t\tconst fetchSiteConfig = async () => {\n\t\t\ttry {\n\t\t\t\tsetClientAuthKey(clientToken);\n\t\t\t\tconst configData = await getMapConfig(clientToken);\n\t\t\t\tsetSiteConfig(configData);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error('Failed to fetch site configuration:', err);\n\t\t\t\tsetError(err);\n\t\t\t} finally {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t};\n\t\tif(!siteConfig){\n\t\t\tfetchSiteConfig();\n\t\t}\n\t}, [clientToken]);\n\n\treturn { siteConfig, isLoading, error };\n}\n\n// Component to handle all context providers\nconst ContextProviders = ({ children, siteConfig, trackEvent, ...mapListProps }) => { return(\n\t<TrackEventProvider trackEvent={trackEvent}>\n\t\t<ThemeProvider\n\t\t\tuiText={siteConfig.colors.uiText}\n\t\t\tuiAccent={siteConfig.colors.uiAccent}\n\t\t\tprimary={siteConfig.colors.primary}\n\t\t\tprimaryDark={siteConfig.colors.primaryDark}\n\t\t\tsecondary={siteConfig.colors.secondary}\n\t\t\tsecondaryDark={siteConfig.colors.secondaryDark}\n\t\t>\n\t\t\t<MapListProvider siteConfig={siteConfig} {...mapListProps}>\n\t\t\t\t<MapProvider resetFilters={mapListProps.resetFilters} defaultZoomOverride={mapListProps.defaultZoomOverride}>\n\t\t\t\t\t<PlacesProvider\n\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\tadditionalMapMarkers={mapListProps.additionalMapMarkers}\n\t\t\t\t\t\tmarkerColors={{\n\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\n\t\t\t\t\t\t\t}\n\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</PlacesProvider>\n\t\t\t\t</MapProvider>\n\t\t\t</MapListProvider>\n\t\t</ThemeProvider>\n\t</TrackEventProvider>\n);};\n\n// Main component\n//\nexport const HireControlMap = ({\n\tclientToken,\n\tcontainerStyle = { height: '100vh' },\n\tnavigateToDetails = null,\n\tnavigateToEasyApply = null,\n\thandleUrlUpdate = null,\n\tLink = null,\n\tlinkFormat = '/jobs/[slug]',\n\teasyApplyUrl = null,\n\teasyApplyText = 'Easy Apply',\n\tisIframe = false,\n\ttrackEvent = (eventType, eventObj) => {\n\t\tconsole.log(eventType);\n\t\tconsole.log(eventObj);\n\t},\n\t//providing listings entities and a getListingEntities function should negate the need for map code to fetch data\n\tlistings = [],\n\tentities = [],\n\tgetListingEntitiesCallback = null,\n\tdefaultFilters = null,\n\thiddenFilters = null,\n\tsetFiltersUrl = null,\n\tExpandListComponent = null,\n\tadditionalMapMarkers = [],\n\tdefaultZoomOverride = null,\n\t//Default site configuration file passed here stops need to fetch from api\n\tsiteConfiguration = null,\n\tlocalStorageKey = 'defaultKey.'\n}) => {\n\t// Load site configuration\n\tconst { siteConfig, error } = useSiteConfig(clientToken, siteConfiguration);\n\n\t// Load Google Maps\n\tconst { isLoaded: isMapsLoaded } = useLoadScript({\n\t\tgoogleMapsApiKey: process.env.GOOGLE_MAPS_API_KEY,\n\t\tversion: 'quarterly',\n\t\tlibraries: LIBRARIES\n\t});\n\n\tif (error || !siteConfig) {\n\t\treturn <div className=\"hc-p-4\"></div>;\n\t}\n\n\t// Prepare props for MapListProvider\n\tconst mapListProps = {\n\t\tresetFilters: false,\n\t\tnavigateToDetails,\n\t\tnavigateToEasyApply,\n\t\tLink,\n\t\tlinkFormat,\n\t\teasyApplyUrl,\n\t\teasyApplyText,\n\t\tlistings,\n\t\tentities,\n\t\tsiteConfig,\n\t\tgetListingEntitiesCallback,\n\t\tsetFiltersUrl,\n\t\thiddenFilters,\n\t\thandleUrlUpdate,\n\t\tdefaultFilters,\n\t\tdefaultZoomOverride, // will usually fit bounds\n\t\tcontainerStyle,\n\t\tExpandListComponent: ExpandListComponent ?? null,\n\t\tadditionalMapMarkers,\n\t\tisIframe,\n\t\tlocalStorageKey\n\t};\n\n\t// Prepare marker configuration\n\tconst markerConfigs = {\n\t\tfillColor: siteConfig.colors.primary,\n\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\tplaceMarkers: {\n\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\n\t\t}\n\t};\n\t//Desktop view of filter used below\n\treturn (\n\t\t<ContextProviders\n\t\t\tsiteConfig={siteConfig}\n\t\t\ttrackEvent={trackEvent}\n\t\t\t{...mapListProps}\n\t\t>\n\t\t\t<Grid\n\t\t\t\tas='section'\n\t\t\t\tid='job-search-interface'\n\t\t\t\tcolumns='md:hc-grid-cols-[1fr_2.5fr] lg:hc-grid-cols-[1fr_3.5fr]'\n\t\t\t\tgap='hc-gap-0'\n\t\t\t\tautoRows={false}\n\t\t\t\tclassName={'hc-bundle hc-items-stretch hc-divide-x hc-divide-uiAccent/20'}\n\t\t\t>\n\t\t\t\t<Grid.Item className='hc-bg-gray-100'>\n\t\t\t\t\t<Filter isDesktop={true} showMap={siteConfig.showMap} className='hc-hidden md:hc-block' />\n\t\t\t\t</Grid.Item>\n\t\t\t\t<MapList\n\t\t\t\t\tcontainerStyle={containerStyle}\n\t\t\t\t\tmapPosition={siteConfig.mapPosition}\n\t\t\t\t\tshowMap={siteConfig.showMap}\n\t\t\t\t\tfieldsShown={siteConfig.fieldsShown}\n\t\t\t\t\tspecialFeatures={siteConfig.specialFeatures}\n\t\t\t\t\tfieldNames={siteConfig.fieldNames}\n\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\tmarkerConfigs={markerConfigs}\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</ContextProviders>\n\t);\n};\n\nexport default HireControlMap;\n"],"names":["LIBRARIES","useSiteConfig","clientToken","siteConfiguration","arguments","length","undefined","_useState","useState","_useState2","_slicedToArray","siteConfig","setSiteConfig","_useState3","_useState4","isLoading","setIsLoading","_useState5","_useState6","error","setError","useEffect","fetchSiteConfig","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","configData","wrap","_callee$","_context","prev","next","setClientAuthKey","getMapConfig","sent","t0","console","finish","stop","apply","ContextProviders","_ref2","_siteConfig$pointsOfI","children","trackEvent","mapListProps","_objectWithoutProperties","_excluded","React","createElement","TrackEventProvider","ThemeProvider","uiText","colors","uiAccent","primary","primaryDark","secondary","secondaryDark","MapListProvider","_extends","MapProvider","resetFilters","defaultZoomOverride","PlacesProvider","placeMappings","pointsOfInterestConfig","additionalMapMarkers","markerColors","fillColor","strokeColor","selectedFillColor","selectedStrokeColor","placeMarkers","placeMarkerColors","size","placeMarkerSize","HireControlMap","_ref3","_siteConfig$pointsOfI2","_ref3$containerStyle","containerStyle","height","_ref3$navigateToDetai","navigateToDetails","_ref3$navigateToEasyA","navigateToEasyApply","_ref3$handleUrlUpdate","handleUrlUpdate","_ref3$Link","Link","_ref3$linkFormat","linkFormat","_ref3$easyApplyUrl","easyApplyUrl","_ref3$easyApplyText","easyApplyText","_ref3$isIframe","isIframe","_ref3$trackEvent","eventType","eventObj","log","_ref3$listings","listings","_ref3$entities","entities","_ref3$getListingEntit","getListingEntitiesCallback","_ref3$defaultFilters","defaultFilters","_ref3$hiddenFilters","hiddenFilters","_ref3$setFiltersUrl","setFiltersUrl","_ref3$ExpandListCompo","ExpandListComponent","_ref3$additionalMapMa","_ref3$defaultZoomOver","_ref3$siteConfigurati","_ref3$localStorageKey","localStorageKey","_useSiteConfig","useLoadScript","googleMapsApiKey","version","libraries","className","markerConfigs","Grid","as","id","columns","gap","autoRows","Item","Filter","isDesktop","showMap","MapList","mapPosition","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\n// Context imports\nimport { MapProvider } from '~/contexts/mapContext';\nimport { PlacesProvider } from '~/contexts/placesContext';\nimport { MapListProvider } from '~/contexts/mapListContext';\nimport { TrackEventProvider } from '~/contexts/trackEventContext';\nimport { ThemeProvider } from '~/contexts/themeContext';\n\nimport { getMapConfig } from '~/services/configService';\nimport { setClientAuthKey } from '~/clientToken.js';\n\nimport '../styles/index.css';\n\n// Libraries for Google Maps\nconst LIBRARIES = ['places'];\n\n// Custom hook to fetch site configuration\nfunction useSiteConfig(clientToken, siteConfiguration = null) {\n\tconst [siteConfig, setSiteConfig] = useState(siteConfiguration);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState(null);\n\n\tuseEffect(() => {\n\t\tconst fetchSiteConfig = async () => {\n\t\t\ttry {\n\t\t\t\tsetClientAuthKey(clientToken);\n\t\t\t\tconst configData = await getMapConfig(clientToken);\n\t\t\t\tsetSiteConfig(configData);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error('Failed to fetch site configuration:', err);\n\t\t\t\tsetError(err);\n\t\t\t} finally {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t};\n\t\tif(!siteConfig){\n\t\t\tfetchSiteConfig();\n\t\t}\n\t}, [clientToken]);\n\n\treturn { siteConfig, isLoading, error };\n}\n\n// Component to handle all context providers\nconst ContextProviders = ({ children, siteConfig, trackEvent, googleMapsApiKey, ...mapListProps }) => { return(\n\t<TrackEventProvider trackEvent={trackEvent}>\n\t\t<ThemeProvider\n\t\t\tuiText={siteConfig.colors.uiText}\n\t\t\tuiAccent={siteConfig.colors.uiAccent}\n\t\t\tprimary={siteConfig.colors.primary}\n\t\t\tprimaryDark={siteConfig.colors.primaryDark}\n\t\t\tsecondary={siteConfig.colors.secondary}\n\t\t\tsecondaryDark={siteConfig.colors.secondaryDark}\n\t\t>\n\t\t\t<MapListProvider siteConfig={siteConfig} {...mapListProps}>\n\t\t\t\t<MapProvider resetFilters={mapListProps.resetFilters} defaultZoomOverride={mapListProps.defaultZoomOverride}>\n\t\t\t\t\t<PlacesProvider\n\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\tadditionalMapMarkers={mapListProps.additionalMapMarkers}\n\t\t\t\t\t\tgoogleMapsApiKey={googleMapsApiKey}\n\t\t\t\t\t\tmarkerColors={{\n\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\n\t\t\t\t\t\t\t}\n\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</PlacesProvider>\n\t\t\t\t</MapProvider>\n\t\t\t</MapListProvider>\n\t\t</ThemeProvider>\n\t</TrackEventProvider>\n);};\n\n// Main component\n//\nexport const HireControlMap = ({\n\tclientToken,\n\tgoogleMapsApiKey, // Required: Google Maps API key from Next.js\n\tcontainerStyle = { height: '100vh' },\n\tnavigateToDetails = null,\n\tnavigateToEasyApply = null,\n\thandleUrlUpdate = null,\n\tLink = null,\n\tlinkFormat = '/jobs/[slug]',\n\teasyApplyUrl = null,\n\teasyApplyText = 'Easy Apply',\n\tisIframe = false,\n\ttrackEvent = (eventType, eventObj) => {\n\t\tconsole.log(eventType);\n\t\tconsole.log(eventObj);\n\t},\n\t//providing listings entities and a getListingEntities function should negate the need for map code to fetch data\n\tlistings = [],\n\tentities = [],\n\tgetListingEntitiesCallback = null,\n\tdefaultFilters = null,\n\thiddenFilters = null,\n\tsetFiltersUrl = null,\n\tExpandListComponent = null,\n\tadditionalMapMarkers = [],\n\tdefaultZoomOverride = null,\n\t//Default site configuration file passed here stops need to fetch from api\n\tsiteConfiguration = null,\n\tlocalStorageKey = 'defaultKey.'\n}) => {\n\t// Load site configuration\n\tconst { siteConfig, error } = useSiteConfig(clientToken, siteConfiguration);\n\n\t// Load Google Maps\n\tconst { isLoaded: isMapsLoaded, loadError } = useLoadScript({\n\t\tgoogleMapsApiKey: googleMapsApiKey,\n\t\tversion: 'quarterly',\n\t\tlibraries: LIBRARIES\n\t});\n\n\t// Show loading state or error if Google Maps hasn't loaded yet\n\tif (!googleMapsApiKey) {\n\t\tconsole.error('Google Maps API key is required');\n\t\treturn <div className=\"hc-p-4\">Google Maps API key is required</div>;\n\t}\n\n\tif (loadError) {\n\t\tconsole.error('Google Maps failed to load:', loadError);\n\t\treturn <div className=\"hc-p-4\">Error loading Google Maps</div>;\n\t}\n\n\tif (!isMapsLoaded) {\n\t\treturn <div className=\"hc-p-4\">Loading Maps...</div>;\n\t}\n\n\tif (error || !siteConfig) {\n\t\treturn <div className=\"hc-p-4\"></div>;\n\t}\n\n\t// Prepare props for MapListProvider\n\tconst mapListProps = {\n\t\tresetFilters: false,\n\t\tnavigateToDetails,\n\t\tnavigateToEasyApply,\n\t\tLink,\n\t\tlinkFormat,\n\t\teasyApplyUrl,\n\t\teasyApplyText,\n\t\tlistings,\n\t\tentities,\n\t\tsiteConfig,\n\t\tgetListingEntitiesCallback,\n\t\tsetFiltersUrl,\n\t\thiddenFilters,\n\t\thandleUrlUpdate,\n\t\tdefaultFilters,\n\t\tdefaultZoomOverride, // will usually fit bounds\n\t\tcontainerStyle,\n\t\tExpandListComponent: ExpandListComponent ?? null,\n\t\tadditionalMapMarkers,\n\t\tisIframe,\n\t\tlocalStorageKey\n\t};\n\n\t// Prepare marker configuration\n\tconst markerConfigs = {\n\t\tfillColor: siteConfig.colors.primary,\n\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\tplaceMarkers: {\n\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\n\t\t}\n\t};\n\t//Desktop view of filter used below\n\treturn (\n\t\t<ContextProviders\n\t\t\tsiteConfig={siteConfig}\n\t\t\ttrackEvent={trackEvent}\n\t\t\tgoogleMapsApiKey={googleMapsApiKey || process.env.GOOGLE_MAPS_API_KEY}\n\t\t\t{...mapListProps}\n\t\t>\n\t\t\t<Grid\n\t\t\t\tas='section'\n\t\t\t\tid='job-search-interface'\n\t\t\t\tcolumns='md:hc-grid-cols-[1fr_2.5fr] lg:hc-grid-cols-[1fr_3.5fr]'\n\t\t\t\tgap='hc-gap-0'\n\t\t\t\tautoRows={false}\n\t\t\t\tclassName={'hc-bundle hc-items-stretch hc-divide-x hc-divide-uiAccent/20'}\n\t\t\t>\n\t\t\t\t<Grid.Item className='hc-bg-gray-100'>\n\t\t\t\t\t<Filter isDesktop={true} showMap={siteConfig.showMap} className='hc-hidden md:hc-block' />\n\t\t\t\t</Grid.Item>\n\t\t\t\t<MapList\n\t\t\t\t\tcontainerStyle={containerStyle}\n\t\t\t\t\tmapPosition={siteConfig.mapPosition}\n\t\t\t\t\tshowMap={siteConfig.showMap}\n\t\t\t\t\tfieldsShown={siteConfig.fieldsShown}\n\t\t\t\t\tspecialFeatures={siteConfig.specialFeatures}\n\t\t\t\t\tfieldNames={siteConfig.fieldNames}\n\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\tmarkerConfigs={markerConfigs}\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</ContextProviders>\n\t);\n};\n\nexport default HireControlMap;\n"],"names":["LIBRARIES","useSiteConfig","clientToken","siteConfiguration","arguments","length","undefined","_useState","useState","_useState2","_slicedToArray","siteConfig","setSiteConfig","_useState3","_useState4","isLoading","setIsLoading","_useState5","_useState6","error","setError","useEffect","fetchSiteConfig","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","configData","wrap","_callee$","_context","prev","next","setClientAuthKey","getMapConfig","sent","t0","console","finish","stop","apply","ContextProviders","_ref2","_siteConfig$pointsOfI","children","trackEvent","googleMapsApiKey","mapListProps","_objectWithoutProperties","_excluded","React","createElement","TrackEventProvider","ThemeProvider","uiText","colors","uiAccent","primary","primaryDark","secondary","secondaryDark","MapListProvider","_extends","MapProvider","resetFilters","defaultZoomOverride","PlacesProvider","placeMappings","pointsOfInterestConfig","additionalMapMarkers","markerColors","fillColor","strokeColor","selectedFillColor","selectedStrokeColor","placeMarkers","placeMarkerColors","size","placeMarkerSize","HireControlMap","_ref3","_siteConfig$pointsOfI2","_ref3$containerStyle","containerStyle","height","_ref3$navigateToDetai","navigateToDetails","_ref3$navigateToEasyA","navigateToEasyApply","_ref3$handleUrlUpdate","handleUrlUpdate","_ref3$Link","Link","_ref3$linkFormat","linkFormat","_ref3$easyApplyUrl","easyApplyUrl","_ref3$easyApplyText","easyApplyText","_ref3$isIframe","isIframe","_ref3$trackEvent","eventType","eventObj","log","_ref3$listings","listings","_ref3$entities","entities","_ref3$getListingEntit","getListingEntitiesCallback","_ref3$defaultFilters","defaultFilters","_ref3$hiddenFilters","hiddenFilters","_ref3$setFiltersUrl","setFiltersUrl","_ref3$ExpandListCompo","ExpandListComponent","_ref3$additionalMapMa","_ref3$defaultZoomOver","_ref3$siteConfigurati","_ref3$localStorageKey","localStorageKey","_useSiteConfig","_useLoadScript","useLoadScript","version","libraries","isMapsLoaded","isLoaded","loadError","className","markerConfigs","process","env","GOOGLE_MAPS_API_KEY","Grid","as","id","columns","gap","autoRows","Item","Filter","isDesktop","showMap","MapList","mapPosition","fieldsShown","specialFeatures","fieldNames"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime, createForOfIteratorHelper as _createForOfIteratorHelper } from '../_virtual/_rollupPluginBabelHelpers.js';
2
- import React__default, { useState, useEffect, createContext, useContext } from 'react';
2
+ import React__default, { useState, useCallback, useEffect, createContext, useContext } from 'react';
3
3
  import { markerIconProps } from '../util/mapIconUtil.js';
4
4
  import { useMap } from './mapContext.js';
5
5
  import { searchNearbyPlaces } from '../services/googlePlacesNearbyService.js';
@@ -12,7 +12,8 @@ var PlacesProvider = function PlacesProvider(_ref) {
12
12
  var children = _ref.children,
13
13
  placeMappings = _ref.placeMappings,
14
14
  markerColors = _ref.markerColors,
15
- additionalMapMarkers = _ref.additionalMapMarkers;
15
+ additionalMapMarkers = _ref.additionalMapMarkers,
16
+ googleMapsApiKey = _ref.googleMapsApiKey;
16
17
  var _useMap = useMap(),
17
18
  selectedPlaces = _useMap.selectedPlaces,
18
19
  zoom = _useMap.zoom,
@@ -40,7 +41,7 @@ var PlacesProvider = function PlacesProvider(_ref) {
40
41
  _useState10 = _slicedToArray(_useState9, 2),
41
42
  selectedPlaceMarker = _useState10[0],
42
43
  setSelectedPlaceMarker = _useState10[1];
43
- var getRadiusForZoom = function getRadiusForZoom() {
44
+ var getRadiusForZoom = useCallback(function () {
44
45
  if (currentZoom >= 18) return 1000;
45
46
  if (currentZoom <= 10) return 0;
46
47
  var tempZoom = Math.pow(19 - currentZoom, 4.85);
@@ -49,7 +50,7 @@ var PlacesProvider = function PlacesProvider(_ref) {
49
50
  var maxRadius = 800000;
50
51
  if (radius < minRadius) radius = minRadius;else if (radius > maxRadius) radius = maxRadius;
51
52
  return radius;
52
- };
53
+ }, [currentZoom]);
53
54
  useEffect(function () {
54
55
  if (!selectedPlaces || !selectedPlaces.length > 0 || !center || currentZoom < 12) {
55
56
  setPoiMarkers({
@@ -76,7 +77,7 @@ var PlacesProvider = function PlacesProvider(_ref) {
76
77
  };
77
78
  _context.prev = 5;
78
79
  _context.next = 8;
79
- return searchNearbyPlaces(poiTypes, location, radius);
80
+ return searchNearbyPlaces(poiTypes, location, radius, googleMapsApiKey || process.env.GOOGLE_MAPS_API_KEY);
80
81
  case 8:
81
82
  response = _context.sent;
82
83
  newMarkers = response.places.map(function (place) {
@@ -133,7 +134,7 @@ var PlacesProvider = function PlacesProvider(_ref) {
133
134
  };
134
135
  }();
135
136
  fetchPlaces();
136
- }, [selectedPlaces, currentZoom, currentCenter]);
137
+ }, [selectedPlaces, currentZoom, currentCenter, placeMappings, markerColors.placeMarkers, googleMapsApiKey, getRadiusForZoom, center]);
137
138
  return /*#__PURE__*/React__default.createElement(PlacesContext.Provider, {
138
139
  value: {
139
140
  poiMarkers: poiMarkers,
@@ -1 +1 @@
1
- {"version":3,"file":"placesContext.js","sources":["../../src/contexts/placesContext.js"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState } from 'react';\n\nimport { markerIconProps } from '~/util/mapIconUtil';\n\nimport { useMap } from '~/contexts/mapContext';\n\nimport { searchNearbyPlaces } from '~/services/googlePlacesNearbyService';\n\nconst PlacesContext = createContext();\n\nexport const usePlaces = () => useContext(PlacesContext);\n\nexport const PlacesProvider = ({ children, placeMappings, markerColors, additionalMapMarkers }) => {\n\tconst { selectedPlaces, zoom, center } = useMap();\n\tconst [poiMarkers, setPoiMarkers] = useState({ markers: [], icon: null });\n\tconst [currentCenter, setCurrentCenter] = useState(center);\n\tconst [currentZoom, setCurrentZoom] = useState(zoom);\n\tconst [placesWindow, setPlacesWindow] = useState(false);\n\tconst [selectedPlaceMarker, setSelectedPlaceMarker] = useState(null);\n\n\tconst getRadiusForZoom = () => {\n\t\tif (currentZoom >= 18) return 1000;\n\t\tif (currentZoom <= 10) return 0;\n\n\t\tlet tempZoom = Math.pow(19 - currentZoom, 4.85);\n\t\tlet radius = tempZoom;\n\t\tlet minRadius = 1500;\n\t\tlet maxRadius = 800000;\n\n\t\tif (radius < minRadius) radius = minRadius;\n\t\telse if (radius > maxRadius) radius = maxRadius;\n\n\t\treturn radius;\n\t};\n\n\tuseEffect(() => {\n\t\tif (!selectedPlaces || (!selectedPlaces.length > 0) || !center || currentZoom < 12) {\n\t\t\tsetPoiMarkers({ markers: [], icon: null });\n\t\t\treturn;\n\t\t}\n\t\tconst fetchPlaces = async () => {\n\t\t\tlet poiTypes = [];\n\t\t\tconst selectedPOICategories = selectedPlaces;\n\t\t\tselectedPOICategories.forEach(pointOfInterest => {\n\t\t\t\tpoiTypes = poiTypes.concat(placeMappings[pointOfInterest]);\n\t\t\t});\n\n\t\t\tconst radius = getRadiusForZoom();\n\t\t\tconst location = { latitude: currentCenter.lat, longitude: currentCenter.lng };\n\n\t\t\ttry {\n\t\t\t\tconst response = await searchNearbyPlaces(poiTypes, location, radius);\n\t\t\t\tconst newMarkers = response.places.map(place => {\n\t\t\t\t\tconst getParentCategory = types => {\n\t\t\t\t\t\tconst selectedTypes = selectedPOICategories.reduce((acc, category) => {\n\t\t\t\t\t\t\treturn acc.concat(placeMappings[category]);\n\t\t\t\t\t\t}, []);\n\n\t\t\t\t\t\tfor (const type of types) {\n\t\t\t\t\t\t\tif (!selectedTypes.includes(type)) continue;\n\t\t\t\t\t\t\tfor (const category in placeMappings) {\n\t\t\t\t\t\t\t\tif (placeMappings[category].includes(type)) {\n\t\t\t\t\t\t\t\t\treturn category;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tconst icon = markerIconProps(markerColors.placeMarkers, getParentCategory(place.types));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tposition: { lat: place.location.latitude, lng: place.location.longitude },\n\t\t\t\t\t\ttitle: place.displayName.text,\n\t\t\t\t\t\ticon: icon\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tsetPoiMarkers({ markers: newMarkers, icon: null });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to fetch places:', error);\n\t\t\t}\n\t\t};\n\n\t\tfetchPlaces();\n\t}, [selectedPlaces, currentZoom, currentCenter]);\n\n\treturn (\n\t\t<PlacesContext.Provider value={{\n\t\t\tpoiMarkers,\n\t\t\tsetCurrentCenter,\n\t\t\tcurrentCenter,\n\t\t\tsetCurrentZoom,\n\t\t\tcurrentZoom,\n\t\t\tplacesWindow,\n\t\t\tsetPlacesWindow,\n\t\t\tselectedPlaceMarker,\n\t\t\tsetSelectedPlaceMarker,\n\t\t\tadditionalMapMarkers\n\t\t}}>\n\t\t\t{children}\n\t\t</PlacesContext.Provider>\n\t);\n};\n"],"names":["PlacesContext","createContext","usePlaces","useContext","PlacesProvider","_ref","children","placeMappings","markerColors","additionalMapMarkers","_useMap","useMap","selectedPlaces","zoom","center","_useState","useState","markers","icon","_useState2","_slicedToArray","poiMarkers","setPoiMarkers","_useState3","_useState4","currentCenter","setCurrentCenter","_useState5","_useState6","currentZoom","setCurrentZoom","_useState7","_useState8","placesWindow","setPlacesWindow","_useState9","_useState10","selectedPlaceMarker","setSelectedPlaceMarker","getRadiusForZoom","tempZoom","Math","pow","radius","minRadius","maxRadius","useEffect","length","fetchPlaces","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","poiTypes","selectedPOICategories","location","response","newMarkers","wrap","_callee$","_context","prev","next","forEach","pointOfInterest","concat","latitude","lat","longitude","lng","searchNearbyPlaces","sent","places","map","place","getParentCategory","types","selectedTypes","reduce","acc","category","_iterator","_createForOfIteratorHelper","_step","s","n","done","type","value","includes","err","e","f","markerIconProps","placeMarkers","position","title","displayName","text","t0","console","error","stop","apply","arguments","React","createElement","Provider"],"mappings":"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"}
1
+ {"version":3,"file":"placesContext.js","sources":["../../src/contexts/placesContext.js"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState, useCallback } from 'react';\n\nimport { markerIconProps } from '~/util/mapIconUtil';\n\nimport { useMap } from '~/contexts/mapContext';\n\nimport { searchNearbyPlaces } from '~/services/googlePlacesNearbyService';\n\nconst PlacesContext = createContext();\n\nexport const usePlaces = () => useContext(PlacesContext);\n\nexport const PlacesProvider = ({ children, placeMappings, markerColors, additionalMapMarkers, googleMapsApiKey }) => {\n\tconst { selectedPlaces, zoom, center } = useMap();\n\tconst [poiMarkers, setPoiMarkers] = useState({ markers: [], icon: null });\n\tconst [currentCenter, setCurrentCenter] = useState(center);\n\tconst [currentZoom, setCurrentZoom] = useState(zoom);\n\tconst [placesWindow, setPlacesWindow] = useState(false);\n\tconst [selectedPlaceMarker, setSelectedPlaceMarker] = useState(null);\n\n\tconst getRadiusForZoom = useCallback(() => {\n\t\tif (currentZoom >= 18) return 1000;\n\t\tif (currentZoom <= 10) return 0;\n\n\t\tlet tempZoom = Math.pow(19 - currentZoom, 4.85);\n\t\tlet radius = tempZoom;\n\t\tlet minRadius = 1500;\n\t\tlet maxRadius = 800000;\n\n\t\tif (radius < minRadius) radius = minRadius;\n\t\telse if (radius > maxRadius) radius = maxRadius;\n\n\t\treturn radius;\n\t}, [currentZoom]);\n\n\tuseEffect(() => {\n\t\tif (!selectedPlaces || (!selectedPlaces.length > 0) || !center || currentZoom < 12) {\n\t\t\tsetPoiMarkers({ markers: [], icon: null });\n\t\t\treturn;\n\t\t}\n\t\tconst fetchPlaces = async () => {\n\t\t\tlet poiTypes = [];\n\t\t\tconst selectedPOICategories = selectedPlaces;\n\t\t\tselectedPOICategories.forEach(pointOfInterest => {\n\t\t\t\tpoiTypes = poiTypes.concat(placeMappings[pointOfInterest]);\n\t\t\t});\n\n\t\t\tconst radius = getRadiusForZoom();\n\t\t\tconst location = { latitude: currentCenter.lat, longitude: currentCenter.lng };\n\n\t\t\ttry {\n\t\t\t\tconst response = await searchNearbyPlaces(poiTypes, location, radius, googleMapsApiKey || process.env.GOOGLE_MAPS_API_KEY);\n\t\t\t\tconst newMarkers = response.places.map(place => {\n\t\t\t\t\tconst getParentCategory = types => {\n\t\t\t\t\t\tconst selectedTypes = selectedPOICategories.reduce((acc, category) => {\n\t\t\t\t\t\t\treturn acc.concat(placeMappings[category]);\n\t\t\t\t\t\t}, []);\n\n\t\t\t\t\t\tfor (const type of types) {\n\t\t\t\t\t\t\tif (!selectedTypes.includes(type)) continue;\n\t\t\t\t\t\t\tfor (const category in placeMappings) {\n\t\t\t\t\t\t\t\tif (placeMappings[category].includes(type)) {\n\t\t\t\t\t\t\t\t\treturn category;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tconst icon = markerIconProps(markerColors.placeMarkers, getParentCategory(place.types));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tposition: { lat: place.location.latitude, lng: place.location.longitude },\n\t\t\t\t\t\ttitle: place.displayName.text,\n\t\t\t\t\t\ticon: icon\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tsetPoiMarkers({ markers: newMarkers, icon: null });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to fetch places:', error);\n\t\t\t}\n\t\t};\n\n\t\tfetchPlaces();\n\t}, [selectedPlaces, currentZoom, currentCenter, placeMappings, markerColors.placeMarkers, googleMapsApiKey, getRadiusForZoom, center]);\n\n\treturn (\n\t\t<PlacesContext.Provider value={{\n\t\t\tpoiMarkers,\n\t\t\tsetCurrentCenter,\n\t\t\tcurrentCenter,\n\t\t\tsetCurrentZoom,\n\t\t\tcurrentZoom,\n\t\t\tplacesWindow,\n\t\t\tsetPlacesWindow,\n\t\t\tselectedPlaceMarker,\n\t\t\tsetSelectedPlaceMarker,\n\t\t\tadditionalMapMarkers\n\t\t}}>\n\t\t\t{children}\n\t\t</PlacesContext.Provider>\n\t);\n};\n"],"names":["PlacesContext","createContext","usePlaces","useContext","PlacesProvider","_ref","children","placeMappings","markerColors","additionalMapMarkers","googleMapsApiKey","_useMap","useMap","selectedPlaces","zoom","center","_useState","useState","markers","icon","_useState2","_slicedToArray","poiMarkers","setPoiMarkers","_useState3","_useState4","currentCenter","setCurrentCenter","_useState5","_useState6","currentZoom","setCurrentZoom","_useState7","_useState8","placesWindow","setPlacesWindow","_useState9","_useState10","selectedPlaceMarker","setSelectedPlaceMarker","getRadiusForZoom","useCallback","tempZoom","Math","pow","radius","minRadius","maxRadius","useEffect","length","fetchPlaces","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","poiTypes","selectedPOICategories","location","response","newMarkers","wrap","_callee$","_context","prev","next","forEach","pointOfInterest","concat","latitude","lat","longitude","lng","searchNearbyPlaces","process","env","GOOGLE_MAPS_API_KEY","sent","places","map","place","getParentCategory","types","selectedTypes","reduce","acc","category","_iterator","_createForOfIteratorHelper","_step","s","n","done","type","value","includes","err","e","f","markerIconProps","placeMarkers","position","title","displayName","text","t0","console","error","stop","apply","arguments","React","createElement","Provider"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- const searchNearbyPlaces = async (typesArray, location, radius) => {
1
+ const searchNearbyPlaces = async (typesArray, location, radius, apiKey) => {
2
2
  const url = 'https://places.googleapis.com/v1/places:searchNearby';
3
3
  const headers = {
4
4
  'Content-Type': 'application/json',
5
- 'X-Goog-Api-Key': "AIzaSyAXPlfaoMCrmjNV1u-vFYdLBi7GkGeh4S4",
5
+ 'X-Goog-Api-Key': apiKey || process.env.GOOGLE_MAPS_API_KEY,
6
6
  'X-Goog-FieldMask': 'places.location,places.displayName,places.types'
7
7
  };
8
8
  const data = {
@@ -1 +1 @@
1
- {"version":3,"file":"googlePlacesNearbyService.js","sources":["../../src/services/googlePlacesNearbyService.ts"],"sourcesContent":["export interface Location {\n\tlatitude: number;\n\tlongitude: number;\n}\n\nexport const searchNearbyPlaces = async (\n\ttypesArray: string[],\n\tlocation: Location,\n\tradius: number\n): Promise<any> => {\n\tconst url = 'https://places.googleapis.com/v1/places:searchNearby';\n\tconst headers = {\n\t\t'Content-Type': 'application/json',\n\t\t'X-Goog-Api-Key': process.env.GOOGLE_MAPS_API_KEY as string,\n\t\t'X-Goog-FieldMask': 'places.location,places.displayName,places.types'\n\t};\n\tconst data = {\n\t\tincludedTypes: typesArray,\n\t\tmaxResultCount: 20,\n\t\tlocationRestriction: {\n\t\t\tcircle: {\n\t\t\t\tcenter: location,\n\t\t\t\tradius: radius\n\t\t\t}\n\t\t}\n\t};\n\n\ttry {\n\t\tconst response = await fetch(url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: headers,\n\t\t\tbody: JSON.stringify(data)\n\t\t});\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t\t}\n\t\treturn await response.json();\n\t} catch (error) {\n\t\tconsole.error('Error making the Nearby Search request:', error);\n\t\tthrow error;\n\t}\n};\n"],"names":[],"mappings":"AAKO,MAAM,kBAAkB,GAAG,OACjC,UAAoB,EACpB,QAAkB,EAClB,MAAc,KACG;IACjB,MAAM,GAAG,GAAG,sDAAsD,CAAC;AACnE,IAAA,MAAM,OAAO,GAAG;AACf,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,gBAAgB,EAAE,yCAAyC;AAC3D,QAAA,kBAAkB,EAAE,iDAAiD;KACrE,CAAC;AACF,IAAA,MAAM,IAAI,GAAG;AACZ,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,mBAAmB,EAAE;AACpB,YAAA,MAAM,EAAE;AACP,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,MAAM;AACd,aAAA;AACD,SAAA;KACD,CAAC;IAEF,IAAI;AACH,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;AACjC,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,QAAQ,CAAC,MAAM,CAAE,CAAA,CAAC,CAAC;AAC1D,SAAA;AACD,QAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC7B,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACf,QAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AAChE,QAAA,MAAM,KAAK,CAAC;AACZ,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"googlePlacesNearbyService.js","sources":["../../src/services/googlePlacesNearbyService.ts"],"sourcesContent":["export interface Location {\n\tlatitude: number;\n\tlongitude: number;\n}\n\nexport const searchNearbyPlaces = async (\n\ttypesArray: string[],\n\tlocation: Location,\n\tradius: number,\n\tapiKey?: string\n): Promise<any> => {\n\tconst url = 'https://places.googleapis.com/v1/places:searchNearby';\n\tconst headers = {\n\t\t'Content-Type': 'application/json',\n\t\t'X-Goog-Api-Key': apiKey || (process.env.GOOGLE_MAPS_API_KEY as string),\n\t\t'X-Goog-FieldMask': 'places.location,places.displayName,places.types'\n\t};\n\tconst data = {\n\t\tincludedTypes: typesArray,\n\t\tmaxResultCount: 20,\n\t\tlocationRestriction: {\n\t\t\tcircle: {\n\t\t\t\tcenter: location,\n\t\t\t\tradius: radius\n\t\t\t}\n\t\t}\n\t};\n\n\ttry {\n\t\tconst response = await fetch(url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: headers,\n\t\t\tbody: JSON.stringify(data)\n\t\t});\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t\t}\n\t\treturn await response.json();\n\t} catch (error) {\n\t\tconsole.error('Error making the Nearby Search request:', error);\n\t\tthrow error;\n\t}\n};\n"],"names":[],"mappings":"AAKO,MAAM,kBAAkB,GAAG,OACjC,UAAoB,EACpB,QAAkB,EAClB,MAAc,EACd,MAAe,KACE;IACjB,MAAM,GAAG,GAAG,sDAAsD,CAAC;AACnE,IAAA,MAAM,OAAO,GAAG;AACf,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,gBAAgB,EAAE,MAAM,IAAK,OAAO,CAAC,GAAG,CAAC,mBAA8B;AACvE,QAAA,kBAAkB,EAAE,iDAAiD;KACrE,CAAC;AACF,IAAA,MAAM,IAAI,GAAG;AACZ,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,mBAAmB,EAAE;AACpB,YAAA,MAAM,EAAE;AACP,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,MAAM;AACd,aAAA;AACD,SAAA;KACD,CAAC;IAEF,IAAI;AACH,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;AACjC,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,QAAQ,CAAC,MAAM,CAAE,CAAA,CAAC,CAAC;AAC1D,SAAA;AACD,QAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC7B,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACf,QAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AAChE,QAAA,MAAM,KAAK,CAAC;AACZ,KAAA;AACF;;;;"}
@@ -2,4 +2,4 @@ export interface Location {
2
2
  latitude: number;
3
3
  longitude: number;
4
4
  }
5
- export declare const searchNearbyPlaces: (typesArray: string[], location: Location, radius: number) => Promise<any>;
5
+ export declare const searchNearbyPlaces: (typesArray: string[], location: Location, radius: number, apiKey?: string) => Promise<any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abcagency/hc-ui-components",
3
- "version": "1.4.8",
3
+ "version": "1.4.9",
4
4
  "description": "UI Components for HireControl",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -9,7 +9,12 @@
9
9
  ],
10
10
  "scripts": {
11
11
  "build": "cross-env NODE_ENV=production rollup -c",
12
- "test": "echo \"Error: no test specified\" && exit 1"
12
+ "test": "echo \"Error: no test specified\" && exit 1",
13
+ "prepublishOnly": "npm run build",
14
+ "release:patch": "npm version patch && npm run build && npm publish",
15
+ "release:minor": "npm version minor && npm run build && npm publish",
16
+ "release:major": "npm version major && npm run build && npm publish",
17
+ "version": "npm run build && git add dist/"
13
18
  },
14
19
  "keywords": [
15
20
  "hirecontrol",
@@ -48,7 +48,7 @@ function useSiteConfig(clientToken, siteConfiguration = null) {
48
48
  }
49
49
 
50
50
  // Component to handle all context providers
51
- const ContextProviders = ({ children, siteConfig, trackEvent, ...mapListProps }) => { return(
51
+ const ContextProviders = ({ children, siteConfig, trackEvent, googleMapsApiKey, ...mapListProps }) => { return(
52
52
  <TrackEventProvider trackEvent={trackEvent}>
53
53
  <ThemeProvider
54
54
  uiText={siteConfig.colors.uiText}
@@ -63,6 +63,7 @@ const ContextProviders = ({ children, siteConfig, trackEvent, ...mapListProps })
63
63
  <PlacesProvider
64
64
  placeMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}
65
65
  additionalMapMarkers={mapListProps.additionalMapMarkers}
66
+ googleMapsApiKey={googleMapsApiKey}
66
67
  markerColors={{
67
68
  fillColor: siteConfig.colors.primary,
68
69
  strokeColor: siteConfig.colors.primaryDark,
@@ -87,6 +88,7 @@ const ContextProviders = ({ children, siteConfig, trackEvent, ...mapListProps })
87
88
  //
88
89
  export const HireControlMap = ({
89
90
  clientToken,
91
+ googleMapsApiKey, // Required: Google Maps API key from Next.js
90
92
  containerStyle = { height: '100vh' },
91
93
  navigateToDetails = null,
92
94
  navigateToEasyApply = null,
@@ -118,12 +120,27 @@ export const HireControlMap = ({
118
120
  const { siteConfig, error } = useSiteConfig(clientToken, siteConfiguration);
119
121
 
120
122
  // Load Google Maps
121
- const { isLoaded: isMapsLoaded } = useLoadScript({
122
- googleMapsApiKey: process.env.GOOGLE_MAPS_API_KEY,
123
+ const { isLoaded: isMapsLoaded, loadError } = useLoadScript({
124
+ googleMapsApiKey: googleMapsApiKey,
123
125
  version: 'quarterly',
124
126
  libraries: LIBRARIES
125
127
  });
126
128
 
129
+ // Show loading state or error if Google Maps hasn't loaded yet
130
+ if (!googleMapsApiKey) {
131
+ console.error('Google Maps API key is required');
132
+ return <div className="hc-p-4">Google Maps API key is required</div>;
133
+ }
134
+
135
+ if (loadError) {
136
+ console.error('Google Maps failed to load:', loadError);
137
+ return <div className="hc-p-4">Error loading Google Maps</div>;
138
+ }
139
+
140
+ if (!isMapsLoaded) {
141
+ return <div className="hc-p-4">Loading Maps...</div>;
142
+ }
143
+
127
144
  if (error || !siteConfig) {
128
145
  return <div className="hc-p-4"></div>;
129
146
  }
@@ -169,6 +186,7 @@ export const HireControlMap = ({
169
186
  <ContextProviders
170
187
  siteConfig={siteConfig}
171
188
  trackEvent={trackEvent}
189
+ googleMapsApiKey={googleMapsApiKey || process.env.GOOGLE_MAPS_API_KEY}
172
190
  {...mapListProps}
173
191
  >
174
192
  <Grid
@@ -1,4 +1,4 @@
1
- import React, { createContext, useContext, useEffect, useState } from 'react';
1
+ import React, { createContext, useContext, useEffect, useState, useCallback } from 'react';
2
2
 
3
3
  import { markerIconProps } from '~/util/mapIconUtil';
4
4
 
@@ -10,7 +10,7 @@ const PlacesContext = createContext();
10
10
 
11
11
  export const usePlaces = () => useContext(PlacesContext);
12
12
 
13
- export const PlacesProvider = ({ children, placeMappings, markerColors, additionalMapMarkers }) => {
13
+ export const PlacesProvider = ({ children, placeMappings, markerColors, additionalMapMarkers, googleMapsApiKey }) => {
14
14
  const { selectedPlaces, zoom, center } = useMap();
15
15
  const [poiMarkers, setPoiMarkers] = useState({ markers: [], icon: null });
16
16
  const [currentCenter, setCurrentCenter] = useState(center);
@@ -18,7 +18,7 @@ export const PlacesProvider = ({ children, placeMappings, markerColors, addition
18
18
  const [placesWindow, setPlacesWindow] = useState(false);
19
19
  const [selectedPlaceMarker, setSelectedPlaceMarker] = useState(null);
20
20
 
21
- const getRadiusForZoom = () => {
21
+ const getRadiusForZoom = useCallback(() => {
22
22
  if (currentZoom >= 18) return 1000;
23
23
  if (currentZoom <= 10) return 0;
24
24
 
@@ -31,7 +31,7 @@ export const PlacesProvider = ({ children, placeMappings, markerColors, addition
31
31
  else if (radius > maxRadius) radius = maxRadius;
32
32
 
33
33
  return radius;
34
- };
34
+ }, [currentZoom]);
35
35
 
36
36
  useEffect(() => {
37
37
  if (!selectedPlaces || (!selectedPlaces.length > 0) || !center || currentZoom < 12) {
@@ -49,7 +49,7 @@ export const PlacesProvider = ({ children, placeMappings, markerColors, addition
49
49
  const location = { latitude: currentCenter.lat, longitude: currentCenter.lng };
50
50
 
51
51
  try {
52
- const response = await searchNearbyPlaces(poiTypes, location, radius);
52
+ const response = await searchNearbyPlaces(poiTypes, location, radius, googleMapsApiKey || process.env.GOOGLE_MAPS_API_KEY);
53
53
  const newMarkers = response.places.map(place => {
54
54
  const getParentCategory = types => {
55
55
  const selectedTypes = selectedPOICategories.reduce((acc, category) => {
@@ -82,7 +82,7 @@ export const PlacesProvider = ({ children, placeMappings, markerColors, addition
82
82
  };
83
83
 
84
84
  fetchPlaces();
85
- }, [selectedPlaces, currentZoom, currentCenter]);
85
+ }, [selectedPlaces, currentZoom, currentCenter, placeMappings, markerColors.placeMarkers, googleMapsApiKey, getRadiusForZoom, center]);
86
86
 
87
87
  return (
88
88
  <PlacesContext.Provider value={{
@@ -6,12 +6,13 @@ export interface Location {
6
6
  export const searchNearbyPlaces = async (
7
7
  typesArray: string[],
8
8
  location: Location,
9
- radius: number
9
+ radius: number,
10
+ apiKey?: string
10
11
  ): Promise<any> => {
11
12
  const url = 'https://places.googleapis.com/v1/places:searchNearby';
12
13
  const headers = {
13
14
  'Content-Type': 'application/json',
14
- 'X-Goog-Api-Key': process.env.GOOGLE_MAPS_API_KEY as string,
15
+ 'X-Goog-Api-Key': apiKey || (process.env.GOOGLE_MAPS_API_KEY as string),
15
16
  'X-Goog-FieldMask': 'places.location,places.displayName,places.types'
16
17
  };
17
18
  const data = {