@abcagency/hc-ui-components 1.5.2 → 1.5.3

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.
@@ -1,5 +1,5 @@
1
1
  import { extends as _extends, slicedToArray as _slicedToArray, objectWithoutProperties as _objectWithoutProperties, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../_virtual/_rollupPluginBabelHelpers.js';
2
- import React, { useState, useEffect } from 'react';
2
+ import React, { useEffect, useState } from 'react';
3
3
  import { useLoadScript } from '@react-google-maps/api';
4
4
  import Grid from './modules/grid.js';
5
5
  import FilterContainer from './containers/filter/filter-container.js';
@@ -11,6 +11,7 @@ import { TrackEventProvider } from '../contexts/trackEventContext.js';
11
11
  import { ThemeProvider } from '../contexts/themeContext.js';
12
12
  import { getMapConfig } from '../services/configService.js';
13
13
  import { setClientAuthKey } from '../clientToken.js';
14
+ import { initializeAlgoliaSearch } from '../util/algoliaSearchUtil.js';
14
15
 
15
16
  var _excluded = ["children", "siteConfig", "trackEvent", "googleMapsApiKey"];
16
17
 
@@ -176,12 +177,28 @@ var HireControlMap = function HireControlMap(_ref3) {
176
177
  _ref3$siteConfigurati = _ref3.siteConfiguration,
177
178
  siteConfiguration = _ref3$siteConfigurati === void 0 ? null : _ref3$siteConfigurati,
178
179
  _ref3$localStorageKey = _ref3.localStorageKey,
179
- localStorageKey = _ref3$localStorageKey === void 0 ? 'defaultKey.' : _ref3$localStorageKey;
180
+ localStorageKey = _ref3$localStorageKey === void 0 ? 'defaultKey.' : _ref3$localStorageKey,
181
+ _ref3$algoliaAppId = _ref3.algoliaAppId,
182
+ algoliaAppId = _ref3$algoliaAppId === void 0 ? null : _ref3$algoliaAppId,
183
+ _ref3$algoliaApiKey = _ref3.algoliaApiKey,
184
+ algoliaApiKey = _ref3$algoliaApiKey === void 0 ? null : _ref3$algoliaApiKey,
185
+ _ref3$algoliaIndexNam = _ref3.algoliaIndexName,
186
+ algoliaIndexName = _ref3$algoliaIndexNam === void 0 ? null : _ref3$algoliaIndexNam;
180
187
  // Load site configuration
181
188
  var _useSiteConfig = useSiteConfig(clientToken, siteConfiguration),
182
189
  siteConfig = _useSiteConfig.siteConfig,
183
190
  error = _useSiteConfig.error;
184
191
 
192
+ // Initialize Algolia if credentials are provided
193
+ useEffect(function () {
194
+ if (algoliaAppId && algoliaApiKey && algoliaIndexName) {
195
+ var initialized = initializeAlgoliaSearch(algoliaAppId, algoliaApiKey, algoliaIndexName);
196
+ if (initialized) {
197
+ console.log('Algolia search initialized successfully');
198
+ }
199
+ }
200
+ }, [algoliaAppId, algoliaApiKey, algoliaIndexName]);
201
+
185
202
  // Load Google Maps
186
203
  var _useLoadScript = useLoadScript({
187
204
  googleMapsApiKey: googleMapsApiKey,
@@ -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/components.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} localStorageKey={mapListProps.localStorageKey}>\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\thideMap = false, // Override to hide map even if siteConfig.showMap is true\n\thideFilters = false, // Hide the entire filter section\n\tnoEntities = false, // Skip entity fetching and hide entity-related filters\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\thideMap,\n\t\thideFilters,\n\t\tnoEntities\n\t};\n\n\t// Calculate effective showMap value (hideMap overrides siteConfig.showMap)\n\tconst effectiveShowMap = hideMap ? false : siteConfig.showMap;\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={hideFilters ? 'hc-grid-cols-1' : '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{!hideFilters && (\n\t\t\t\t\t<Grid.Item className='hc-bg-gray-100'>\n\t\t\t\t\t\t<Filter isDesktop={true} showMap={effectiveShowMap} className='hc-hidden md:hc-block' />\n\t\t\t\t\t</Grid.Item>\n\t\t\t\t)}\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={effectiveShowMap}\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","localStorageKey","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$hideMap","hideMap","_ref3$hideFilters","hideFilters","_ref3$noEntities","noEntities","_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","_useSiteConfig","_useLoadScript","useLoadScript","version","libraries","isMapsLoaded","isLoaded","loadError","className","effectiveShowMap","showMap","markerConfigs","process","env","GOOGLE_MAPS_API_KEY","Grid","as","id","columns","gap","autoRows","Item","Filter","isDesktop","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';\nimport { initializeAlgoliaSearch } from '~/util/algoliaSearchUtil';\n\nimport '../styles/components.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} localStorageKey={mapListProps.localStorageKey}>\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\thideMap = false, // Override to hide map even if siteConfig.showMap is true\n\thideFilters = false, // Hide the entire filter section\n\tnoEntities = false, // Skip entity fetching and hide entity-related filters\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\t// Algolia search configuration (optional)\n\talgoliaAppId = null,\n\talgoliaApiKey = null,\n\talgoliaIndexName = null\n}) => {\n\t// Load site configuration\n\tconst { siteConfig, error } = useSiteConfig(clientToken, siteConfiguration);\n\n\t// Initialize Algolia if credentials are provided\n\tuseEffect(() => {\n\t\tif (algoliaAppId && algoliaApiKey && algoliaIndexName) {\n\t\t\tconst initialized = initializeAlgoliaSearch(algoliaAppId, algoliaApiKey, algoliaIndexName);\n\t\t\tif (initialized) {\n\t\t\t\tconsole.log('Algolia search initialized successfully');\n\t\t\t}\n\t\t}\n\t}, [algoliaAppId, algoliaApiKey, algoliaIndexName]);\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\thideMap,\n\t\thideFilters,\n\t\tnoEntities\n\t};\n\n\t// Calculate effective showMap value (hideMap overrides siteConfig.showMap)\n\tconst effectiveShowMap = hideMap ? false : siteConfig.showMap;\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={hideFilters ? 'hc-grid-cols-1' : '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{!hideFilters && (\n\t\t\t\t\t<Grid.Item className='hc-bg-gray-100'>\n\t\t\t\t\t\t<Filter isDesktop={true} showMap={effectiveShowMap} className='hc-hidden md:hc-block' />\n\t\t\t\t\t</Grid.Item>\n\t\t\t\t)}\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={effectiveShowMap}\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","localStorageKey","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$hideMap","hideMap","_ref3$hideFilters","hideFilters","_ref3$noEntities","noEntities","_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","_ref3$algoliaAppId","algoliaAppId","_ref3$algoliaApiKey","algoliaApiKey","_ref3$algoliaIndexNam","algoliaIndexName","_useSiteConfig","initialized","initializeAlgoliaSearch","_useLoadScript","useLoadScript","version","libraries","isMapsLoaded","isLoaded","loadError","className","effectiveShowMap","showMap","markerConfigs","process","env","GOOGLE_MAPS_API_KEY","Grid","as","id","columns","gap","autoRows","Item","Filter","isDesktop","MapList","mapPosition","fieldsShown","specialFeatures","fieldNames"],"mappings":"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"}
@@ -137,11 +137,11 @@ const MapListProvider = ({ children, siteConfig, resetFilters, navigateToDetails
137
137
  handleFetchListings();
138
138
  }, [query, siteConfig, commuteLocation]);
139
139
  useEffect(() => {
140
- const processListings = () => {
140
+ const processListings = async () => {
141
141
  let filteredListings;
142
142
  let tempSelectedFilters = selectedFilters;
143
143
  let tempQuery = query;
144
- const { mapItems, filteredListings: tempFilteredListings } = applyFilters(allListings, tempSelectedFilters, tempQuery, listingEntities, favorites, siteConfig);
144
+ const { mapItems, filteredListings: tempFilteredListings } = await applyFilters(allListings, tempSelectedFilters, tempQuery, listingEntities, favorites, siteConfig);
145
145
  filteredListings = tempFilteredListings;
146
146
  if (filterByFavorites) {
147
147
  filteredListings = filteredListings.filter((x) => favorites.includes(x.id));
@@ -1 +1 @@
1
- {"version":3,"file":"mapListContext.js","sources":["../../src/contexts/mapListContext.tsx"],"sourcesContent":["import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react';\n\nimport { generateFilterOptions, applyFilters, filterListingsByLocation } from '~/util/filterUtil';\nimport { getStorageObject, setStorageObject } from '~/util/localStorageUtil';\nimport { updateURLWithFilters, filtersFromURL } from '~/util/urlFilterUtil';\n\nimport { getListingEntities } from \"~/services/listingEntityService\";\nimport fetchListings from '~/services/listingAggregatorService';\n\nimport { Listing } from '~/types/Listings';\nimport { ListingEntity } from '~/types/ListingEntity';\nimport { Recruiter } from '~/types/Recruiter';\nimport { MapConfig, MapConfig as SiteConfig } from '~/types/config/MapConfig';\nimport { get } from 'http';\n\ninterface MapListContextProps {\n loading: boolean;\n allListings: Listing[];\n filteredListings: Listing[];\n mapItems: any;\n query: string | null;\n setNewFilteredListings: (filteredListings: Listing[]) => void;\n setQuery: (query: string | null) => void;\n listingEntities: Record<number, ListingEntity> | null;\n selectedFilters: Record<string, any>;\n setSelectedFilters: (filters: Record<string, any>) => void;\n filterOptions: any;\n recruiters: Record<number, Recruiter>;\n handleFilterListingsByLocation: (selectedLocation: any) => void;\n filterDialogIsOpen: boolean;\n setFilterDialogIsOpen: (isOpen: boolean) => void;\n setMobileTab: (tab: string) => void;\n mobileTab: string;\n siteConfig: SiteConfig;\n favorites: number[];\n resetEntityFilter: () => void;\n handleSettingFavorites: (favorites: number[] | null) => void;\n setFilterByFavorites: (filter: boolean) => void;\n filterByFavorites: boolean;\n commuteLocation: any | null;\n setCommuteLocation: (location: any | null) => void;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n easyApplyUrl: string;\n easyApplyText: string;\n\tisIframe: boolean;\n sortSetting: { field: string; type: string };\n setSortSetting: (setting: { field: string; type: string }) => void;\n trackEvent: (event: string) => void;\n defaultFilters?: Record<string, any>;\n hiddenFilters?: string[];\n containerStyle?: any;\n ExpandListComponent?: React.ComponentType<{ listing: any }> | ((listing: any) => JSX.Element) | null;\n noEntities?: boolean;\n}\n\nconst MapListContext = createContext<MapListContextProps | undefined>(undefined);\n\nexport const useMapList = () => {\n\tconst context = useContext(MapListContext);\n\tif (!context) {\n\t\tthrow new Error('useMapList must be used within a MapListProvider');\n\t}\n\treturn context;\n};\n\nconst getQuery = (localStorageKey: string = ''): string | null => {\n\tlet query: string | null = null;\n\tif (typeof window !== 'undefined') {\n\t\tquery = localStorage.getItem(localStorageKey + 'query');\n\t}\n\treturn query;\n};\n\ninterface MapListProviderProps {\n children: ReactNode;\n siteConfig: MapConfig;\n resetFilters: boolean;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n easyApplyUrl: string;\n easyApplyText: string;\n\tisIframe: boolean;\n trackEvent: (event: string) => void;\n listings?: Listing[];\n\tentities?: ListingEntity[];\n setFiltersUrl?:boolean;\n hiddenFilters?: string[];\n handleUrlUpdate: (searchParams: string) => void;\n defaultFilters?: Record<string, any>;\n containerStyle?: any;\n\tlocalStorageKey: string;\n\tgetListingEntitiesCallback?: (origin?: string) => Promise<any>;\n ExpandListComponent?: React.ComponentType<{ listing: Listing }> | ((listing: Listing) => JSX.Element) | null;\n hideMap?: boolean;\n hideFilters?: boolean;\n noEntities?: boolean;\n}\n\nexport const MapListProvider: React.FC<MapListProviderProps> = ({\n\tchildren,\n\tsiteConfig,\n\tresetFilters,\n\tnavigateToDetails,\n\tnavigateToEasyApply,\n\tLink,\n\tlinkFormat,\n\teasyApplyUrl,\n\teasyApplyText,\n\tisIframe,\n\ttrackEvent,\n\tlistings = [],\n\tentities = [],\n\tsetFiltersUrl,\n\thiddenFilters,\n\thandleUrlUpdate,\n\tdefaultFilters,\n\tcontainerStyle,\n\tExpandListComponent,\n\tgetListingEntitiesCallback,\n\tlocalStorageKey,\n\thideMap = false,\n\thideFilters = false,\n\tnoEntities = false\n}) => {\n\tconst firstLoadFilters = () =>{\n\t\tlet urlFilters = filtersFromURL(window.location)?.filters;\n\t\treturn (setFiltersUrl === true && urlFilters && Object.keys(urlFilters).length > 0) ? urlFilters : getStorageObject(localStorageKey + 'selectedFilters', {}) || {}\n\t}\n\n\tconst firstLoadQuery = (): string | null => {\n\t\tif (resetFilters) return null;\n\t\t// Check URL first\n\t\tconst urlData = filtersFromURL(window.location);\n\t\tif (setFiltersUrl === true && urlData?.query) {\n\t\t\treturn urlData.query;\n\t\t}\n\t\t// Fall back to localStorage\n\t\treturn getQuery(localStorageKey);\n\t}\n\n\tconst [allListings, setAllListings] = useState<Listing[]>([]);\n\tconst [filteredListings, setFilteredListings] = useState<Listing[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(false);\n\tconst [mapItems, setMapItems] = useState<any>(getStorageObject(localStorageKey + 'mapItems', []) || []);\n\tconst [query, setQuery] = useState<string | null>(() => firstLoadQuery());\n\tconst [sortSetting, setSortSetting] = useState<{ field: string; type: string }>(getStorageObject(localStorageKey + 'sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' });\n\tconst [listingEntities, setListingEntities] = useState<Record<number, ListingEntity> | null>({});\n\tconst [firstLoad, setFirstLoad] = useState<boolean>(true);\n\tconst [commuteLocation, setCommuteLocation] = useState<any | null>(getStorageObject(localStorageKey + 'commuteLocation'));\n\tconst [selectedFilters, setSelectedFilters] = useState<Record<string, any>>(() => resetFilters ? {} : firstLoadFilters());\n\tconst [filterOptions, setFilterOptions] = useState<any>();\n\tconst [recruiters, setRecruiters] = useState<Record<number, Recruiter>>({});\n\tconst [filterDialogIsOpen, setFilterDialogIsOpen] = useState<boolean>(false);\n\tconst [mobileTab, setMobileTab] = useState<string>(\"listTab\");\n\tconst [favorites, setFavorites] = useState<number[]>([]);\n\tconst [filterByFavorites, setFilterByFavorites] = useState<boolean>(false);\n\n\tconst setNewFilteredListings = (filteredListings: Listing[]) => {\n\t\tsetFilteredListings(filteredListings);\n\t};\n\n\tuseEffect(() => {\n\t\tif (!sortSetting) return;\n\t\tlocalStorage.setItem(localStorageKey + 'sortSetting', JSON.stringify(sortSetting));\n\t\tsetNewFilteredListings(filteredListings);\n\t}, [sortSetting, localStorageKey, filteredListings]);\n\n\tuseEffect(() => {\n\t\tconst loadedFavorites = JSON.parse(localStorage.getItem(localStorageKey + 'favorites') || '[]');\n\t\tsetFavorites(loadedFavorites);\n\t}, [localStorageKey]);\n\n\tuseEffect(() => {\n\t\tsetStorageObject(localStorageKey + \"commuteLocation\", commuteLocation);\n\t}, [commuteLocation, localStorageKey]);\n\n\n\tuseEffect(() => {\n\t\tif (!commuteLocation || noEntities) return;\n\n\t\tasync function fetchEntities() {\n\t\t\ttry {\n\t\t\t\tlet fetchedEntities;\n\t\t\t\tif (getListingEntitiesCallback) {\n\t\t\t\t\tfetchedEntities = await getListingEntitiesCallback(`${commuteLocation.lat}, ${commuteLocation.lng}`);\n\t\t\t\t} else {\n\t\t\t\t\tfetchedEntities = await getListingEntities(`${commuteLocation.lat}, ${commuteLocation.lng}`);\n\t\t\t\t}\n\t\t\t\tsetListingEntities(fetchedEntities);\n\t\t\t\t// Update travelTime on listings\n\t\t\t\tconst newFilteredListings: Listing[] = [...filteredListings];\n\t\t\t\tfor (let i = 0; i < allListings.length; i++) {\n\t\t\t\t\tconst listing = newFilteredListings[i];\n\t\t\t\t\tif (\n\t\t\t\t\t\tlisting &&\n\t\t\t\t\t\tlisting.fields &&\n\t\t\t\t\t\tlisting.fields.entityKey &&\n\t\t\t\t\t\tlisting.fields.entityKey !== ''\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst entityKey = listing.fields.entityKey;\n\t\t\t\t\t\t// Try exact match first, then lowercase match for case-insensitive lookup\n\t\t\t\t\t\tconst travelTime = (fetchedEntities[entityKey] || fetchedEntities[entityKey.toLowerCase()])?.travelTime;\n\t\t\t\t\t\tif (travelTime !== undefined && listing.fields) {\n\t\t\t\t\t\t\tlisting.fields.travelTime = travelTime;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"Failed to fetch listing entities:\", error);\n\t\t\t}\n\t\t}\n\n\t\tfetchEntities();\n\t}, [commuteLocation, allListings, siteConfig.companyId, getListingEntitiesCallback, noEntities]);\n\n\tuseEffect(() => {\n\t\tconst handleFetchListings = async () => {\n\t\tif (!(getStorageObject(localStorageKey + 'listings', []) || []).length) {\n\t\t\tsetLoading(true);\n\t\t}\n\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tlistingsResult,\n\t\t\t\tentitiesByKey,\n\t\t\t\tdistinctItems\n\t\t\t} = await fetchListings(commuteLocation, entities, listings, getListingEntitiesCallback, noEntities);\n\t\t\tif (defaultFilters) {\n\t\t\t\tconst filteredListings = listingsResult.filter(listing => {\n\t\t\t\tif (!listing.fields) return false;\n\n\t\t\t\treturn Object.keys(defaultFilters).every(filterKey => {\n\t\t\t\t\tconst filterValues = defaultFilters[filterKey as keyof typeof defaultFilters];\n\t\t\t\t\tconst listingValue = listing.fields ? listing.fields[filterKey as keyof typeof listing.fields] : null;\n\t\t\t\t\treturn filterValues.includes(listingValue);\n\t\t\t\t});\n\t\t\t});\n\t\t\tsetAllListings(filteredListings);\n\t\t} else {\n\t\t\tsetAllListings(listingsResult);\n\t\t}\n\t\t\tsetListingEntities(entitiesByKey);\n\t\t\t\tsetMapItems(distinctItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(error);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t};\n\t\thandleFetchListings();\n\t}, [query, siteConfig, commuteLocation]);\n\n\tuseEffect(() => {\n\t\tconst processListings = () => {\n\t\t\tlet filteredListings: Listing[];\n\t\t\tlet tempSelectedFilters = selectedFilters;\n\t\t\tlet tempQuery = query;\n\n\t\t\tconst { mapItems, filteredListings: tempFilteredListings } = applyFilters(\n\t\t\t\tallListings,\n\t\t\t\ttempSelectedFilters,\n\t\t\t\ttempQuery,\n\t\t\t\tlistingEntities,\n\t\t\t\tfavorites,\n\t\t\t\tsiteConfig\n\t\t\t);\n\t\t\tfilteredListings = tempFilteredListings;\n\n\t\t\tif (filterByFavorites) {\n\t\t\t\tfilteredListings = filteredListings.filter((x: Listing) => favorites.includes(x.id));\n\t\t\t}\n\t\t\tsetNewFilteredListings(filteredListings);\n\t\t\tif (firstLoad && tempSelectedFilters) {\n\t\t\t\t// Update URL with filters if needed\n\t\t\t} else if (Object.keys(tempSelectedFilters).length === 0 && !firstLoad) {\n\t\t\t\tlocalStorage.removeItem(localStorageKey + 'selectedFilters');\n\t\t\t} else if (!firstLoad) {\n\t\t\t\tsetStorageObject(localStorageKey + 'selectedFilters', tempSelectedFilters);\n\t\t\t}\n\t\t\tif(setFiltersUrl === true)\n\t\t\t{\n\t\t\t\tupdateURLWithFilters(tempSelectedFilters, window.location, tempQuery, handleUrlUpdate);\n\t\t\t}\n\t\t\ttempQuery != null ? localStorage.setItem(localStorageKey + 'query', tempQuery) : localStorage.removeItem(localStorageKey + 'query');\n\t\t\tsetMapItems(mapItems);\n\n\t\t\tif (tempSelectedFilters) {\n\t\t\t\tconst keys = Object.keys(tempSelectedFilters);\n\t\t\t\tconst lastKey = keys[keys.length - 1];\n\t\t\t\tconst options = generateFilterOptions(\n\t\t\t\t\tfilteredListings,\n\t\t\t\t\tallListings,\n\t\t\t\t\tsiteConfig,\n\t\t\t\t\tfilterOptions,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tfavorites,\n\t\t\t\t\ttempSelectedFilters\n\t\t\t\t);\n\t\t\t\tif (options) {\n\t\t\t\t\tsetFilterOptions(options);\n\t\t\t\t\tif (firstLoad) setFirstLoad(false);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tprocessListings();\n\t}, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);\n\n\tconst handleFilterListingsByLocation = (selectedLocation: any) => {\n\t\tconst { filteredListings } = filterListingsByLocation(\n\t\t\tallListings,\n\t\t\tselectedLocation,\n\t\t\tlistingEntities\n\t\t);\n\t\tsetNewFilteredListings(filteredListings);\n\t};\n\n\tconst resetEntityFilter = () => {\n\t\tlet newFilters = {...selectedFilters};\n\t\tdelete newFilters.entityId;\n\t\tsetSelectedFilters(newFilters);\n\t}\n\n\tconst handleSettingFavorites = (newFavorites: number[] | null) => {\n\t\tif (newFavorites == null) {\n\t\t\tlocalStorage.removeItem(localStorageKey + 'favorites');\n\t\t} else {\n\t\t\tsetFavorites(newFavorites);\n\t\t\tlocalStorage.setItem(localStorageKey + 'favorites', JSON.stringify(newFavorites));\n\t\t}\n\t};\n\n\treturn (\n\t\t<MapListContext.Provider value={{\n\t\t\tloading,\n\t\t\tallListings,\n\t\t\tfilteredListings,\n\t\t\tmapItems,\n\t\t\tquery,\n\t\t\tsetNewFilteredListings,\n\t\t\tsetQuery,\n\t\t\tlistingEntities,\n\t\t\tselectedFilters,\n\t\t\tsetSelectedFilters,\n\t\t\tfilterOptions,\n\t\t\trecruiters,\n\t\t\thandleFilterListingsByLocation,\n\t\t\tfilterDialogIsOpen,\n\t\t\tsetFilterDialogIsOpen,\n\t\t\tsetMobileTab,\n\t\t\tmobileTab,\n\t\t\tsiteConfig,\n\t\t\tfavorites,\n\t\t\thandleSettingFavorites,\n\t\t\tresetEntityFilter,\n\t\t\tsetFilterByFavorites,\n\t\t\tfilterByFavorites,\n\t\t\tcommuteLocation,\n\t\t\tsetCommuteLocation,\n\t\t\tnavigateToDetails,\n\t\t\tnavigateToEasyApply,\n\t\t\tLink,\n\t\t\tlinkFormat,\n\t\t\teasyApplyUrl,\n\t\t\teasyApplyText,\n\t\t\tisIframe,\n\t\t\tsortSetting,\n\t\t\tsetSortSetting,\n\t\t\ttrackEvent,\n\t\t\tdefaultFilters,\n\t\t\thiddenFilters,\n\t\t\tcontainerStyle,\n\t\t\tExpandListComponent,\n\t\t\tnoEntities\n\t\t}}>\n\t\t\t{children}\n\t\t</MapListContext.Provider>\n\t);\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapListContext.js","sources":["../../src/contexts/mapListContext.tsx"],"sourcesContent":["import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react';\n\nimport { generateFilterOptions, applyFilters, filterListingsByLocation } from '~/util/filterUtil';\nimport { getStorageObject, setStorageObject } from '~/util/localStorageUtil';\nimport { updateURLWithFilters, filtersFromURL } from '~/util/urlFilterUtil';\n\nimport { getListingEntities } from \"~/services/listingEntityService\";\nimport fetchListings from '~/services/listingAggregatorService';\n\nimport { Listing } from '~/types/Listings';\nimport { ListingEntity } from '~/types/ListingEntity';\nimport { Recruiter } from '~/types/Recruiter';\nimport { MapConfig, MapConfig as SiteConfig } from '~/types/config/MapConfig';\nimport { get } from 'http';\n\ninterface MapListContextProps {\n loading: boolean;\n allListings: Listing[];\n filteredListings: Listing[];\n mapItems: any;\n query: string | null;\n setNewFilteredListings: (filteredListings: Listing[]) => void;\n setQuery: (query: string | null) => void;\n listingEntities: Record<number, ListingEntity> | null;\n selectedFilters: Record<string, any>;\n setSelectedFilters: (filters: Record<string, any>) => void;\n filterOptions: any;\n recruiters: Record<number, Recruiter>;\n handleFilterListingsByLocation: (selectedLocation: any) => void;\n filterDialogIsOpen: boolean;\n setFilterDialogIsOpen: (isOpen: boolean) => void;\n setMobileTab: (tab: string) => void;\n mobileTab: string;\n siteConfig: SiteConfig;\n favorites: number[];\n resetEntityFilter: () => void;\n handleSettingFavorites: (favorites: number[] | null) => void;\n setFilterByFavorites: (filter: boolean) => void;\n filterByFavorites: boolean;\n commuteLocation: any | null;\n setCommuteLocation: (location: any | null) => void;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n easyApplyUrl: string;\n easyApplyText: string;\n\tisIframe: boolean;\n sortSetting: { field: string; type: string };\n setSortSetting: (setting: { field: string; type: string }) => void;\n trackEvent: (event: string) => void;\n defaultFilters?: Record<string, any>;\n hiddenFilters?: string[];\n containerStyle?: any;\n ExpandListComponent?: React.ComponentType<{ listing: any }> | ((listing: any) => JSX.Element) | null;\n noEntities?: boolean;\n}\n\nconst MapListContext = createContext<MapListContextProps | undefined>(undefined);\n\nexport const useMapList = () => {\n\tconst context = useContext(MapListContext);\n\tif (!context) {\n\t\tthrow new Error('useMapList must be used within a MapListProvider');\n\t}\n\treturn context;\n};\n\nconst getQuery = (localStorageKey: string = ''): string | null => {\n\tlet query: string | null = null;\n\tif (typeof window !== 'undefined') {\n\t\tquery = localStorage.getItem(localStorageKey + 'query');\n\t}\n\treturn query;\n};\n\ninterface MapListProviderProps {\n children: ReactNode;\n siteConfig: MapConfig;\n resetFilters: boolean;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n easyApplyUrl: string;\n easyApplyText: string;\n\tisIframe: boolean;\n trackEvent: (event: string) => void;\n listings?: Listing[];\n\tentities?: ListingEntity[];\n setFiltersUrl?:boolean;\n hiddenFilters?: string[];\n handleUrlUpdate: (searchParams: string) => void;\n defaultFilters?: Record<string, any>;\n containerStyle?: any;\n\tlocalStorageKey: string;\n\tgetListingEntitiesCallback?: (origin?: string) => Promise<any>;\n ExpandListComponent?: React.ComponentType<{ listing: Listing }> | ((listing: Listing) => JSX.Element) | null;\n hideMap?: boolean;\n hideFilters?: boolean;\n noEntities?: boolean;\n}\n\nexport const MapListProvider: React.FC<MapListProviderProps> = ({\n\tchildren,\n\tsiteConfig,\n\tresetFilters,\n\tnavigateToDetails,\n\tnavigateToEasyApply,\n\tLink,\n\tlinkFormat,\n\teasyApplyUrl,\n\teasyApplyText,\n\tisIframe,\n\ttrackEvent,\n\tlistings = [],\n\tentities = [],\n\tsetFiltersUrl,\n\thiddenFilters,\n\thandleUrlUpdate,\n\tdefaultFilters,\n\tcontainerStyle,\n\tExpandListComponent,\n\tgetListingEntitiesCallback,\n\tlocalStorageKey,\n\thideMap = false,\n\thideFilters = false,\n\tnoEntities = false\n}) => {\n\tconst firstLoadFilters = () =>{\n\t\tlet urlFilters = filtersFromURL(window.location)?.filters;\n\t\treturn (setFiltersUrl === true && urlFilters && Object.keys(urlFilters).length > 0) ? urlFilters : getStorageObject(localStorageKey + 'selectedFilters', {}) || {}\n\t}\n\n\tconst firstLoadQuery = (): string | null => {\n\t\tif (resetFilters) return null;\n\t\t// Check URL first\n\t\tconst urlData = filtersFromURL(window.location);\n\t\tif (setFiltersUrl === true && urlData?.query) {\n\t\t\treturn urlData.query;\n\t\t}\n\t\t// Fall back to localStorage\n\t\treturn getQuery(localStorageKey);\n\t}\n\n\tconst [allListings, setAllListings] = useState<Listing[]>([]);\n\tconst [filteredListings, setFilteredListings] = useState<Listing[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(false);\n\tconst [mapItems, setMapItems] = useState<any>(getStorageObject(localStorageKey + 'mapItems', []) || []);\n\tconst [query, setQuery] = useState<string | null>(() => firstLoadQuery());\n\tconst [sortSetting, setSortSetting] = useState<{ field: string; type: string }>(getStorageObject(localStorageKey + 'sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' });\n\tconst [listingEntities, setListingEntities] = useState<Record<number, ListingEntity> | null>({});\n\tconst [firstLoad, setFirstLoad] = useState<boolean>(true);\n\tconst [commuteLocation, setCommuteLocation] = useState<any | null>(getStorageObject(localStorageKey + 'commuteLocation'));\n\tconst [selectedFilters, setSelectedFilters] = useState<Record<string, any>>(() => resetFilters ? {} : firstLoadFilters());\n\tconst [filterOptions, setFilterOptions] = useState<any>();\n\tconst [recruiters, setRecruiters] = useState<Record<number, Recruiter>>({});\n\tconst [filterDialogIsOpen, setFilterDialogIsOpen] = useState<boolean>(false);\n\tconst [mobileTab, setMobileTab] = useState<string>(\"listTab\");\n\tconst [favorites, setFavorites] = useState<number[]>([]);\n\tconst [filterByFavorites, setFilterByFavorites] = useState<boolean>(false);\n\n\tconst setNewFilteredListings = (filteredListings: Listing[]) => {\n\t\tsetFilteredListings(filteredListings);\n\t};\n\n\tuseEffect(() => {\n\t\tif (!sortSetting) return;\n\t\tlocalStorage.setItem(localStorageKey + 'sortSetting', JSON.stringify(sortSetting));\n\t\tsetNewFilteredListings(filteredListings);\n\t}, [sortSetting, localStorageKey, filteredListings]);\n\n\tuseEffect(() => {\n\t\tconst loadedFavorites = JSON.parse(localStorage.getItem(localStorageKey + 'favorites') || '[]');\n\t\tsetFavorites(loadedFavorites);\n\t}, [localStorageKey]);\n\n\tuseEffect(() => {\n\t\tsetStorageObject(localStorageKey + \"commuteLocation\", commuteLocation);\n\t}, [commuteLocation, localStorageKey]);\n\n\n\tuseEffect(() => {\n\t\tif (!commuteLocation || noEntities) return;\n\n\t\tasync function fetchEntities() {\n\t\t\ttry {\n\t\t\t\tlet fetchedEntities;\n\t\t\t\tif (getListingEntitiesCallback) {\n\t\t\t\t\tfetchedEntities = await getListingEntitiesCallback(`${commuteLocation.lat}, ${commuteLocation.lng}`);\n\t\t\t\t} else {\n\t\t\t\t\tfetchedEntities = await getListingEntities(`${commuteLocation.lat}, ${commuteLocation.lng}`);\n\t\t\t\t}\n\t\t\t\tsetListingEntities(fetchedEntities);\n\t\t\t\t// Update travelTime on listings\n\t\t\t\tconst newFilteredListings: Listing[] = [...filteredListings];\n\t\t\t\tfor (let i = 0; i < allListings.length; i++) {\n\t\t\t\t\tconst listing = newFilteredListings[i];\n\t\t\t\t\tif (\n\t\t\t\t\t\tlisting &&\n\t\t\t\t\t\tlisting.fields &&\n\t\t\t\t\t\tlisting.fields.entityKey &&\n\t\t\t\t\t\tlisting.fields.entityKey !== ''\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst entityKey = listing.fields.entityKey;\n\t\t\t\t\t\t// Try exact match first, then lowercase match for case-insensitive lookup\n\t\t\t\t\t\tconst travelTime = (fetchedEntities[entityKey] || fetchedEntities[entityKey.toLowerCase()])?.travelTime;\n\t\t\t\t\t\tif (travelTime !== undefined && listing.fields) {\n\t\t\t\t\t\t\tlisting.fields.travelTime = travelTime;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"Failed to fetch listing entities:\", error);\n\t\t\t}\n\t\t}\n\n\t\tfetchEntities();\n\t}, [commuteLocation, allListings, siteConfig.companyId, getListingEntitiesCallback, noEntities]);\n\n\tuseEffect(() => {\n\t\tconst handleFetchListings = async () => {\n\t\tif (!(getStorageObject(localStorageKey + 'listings', []) || []).length) {\n\t\t\tsetLoading(true);\n\t\t}\n\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tlistingsResult,\n\t\t\t\tentitiesByKey,\n\t\t\t\tdistinctItems\n\t\t\t} = await fetchListings(commuteLocation, entities, listings, getListingEntitiesCallback, noEntities);\n\t\t\tif (defaultFilters) {\n\t\t\t\tconst filteredListings = listingsResult.filter(listing => {\n\t\t\t\tif (!listing.fields) return false;\n\n\t\t\t\treturn Object.keys(defaultFilters).every(filterKey => {\n\t\t\t\t\tconst filterValues = defaultFilters[filterKey as keyof typeof defaultFilters];\n\t\t\t\t\tconst listingValue = listing.fields ? listing.fields[filterKey as keyof typeof listing.fields] : null;\n\t\t\t\t\treturn filterValues.includes(listingValue);\n\t\t\t\t});\n\t\t\t});\n\t\t\tsetAllListings(filteredListings);\n\t\t} else {\n\t\t\tsetAllListings(listingsResult);\n\t\t}\n\t\t\tsetListingEntities(entitiesByKey);\n\t\t\t\tsetMapItems(distinctItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(error);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t};\n\t\thandleFetchListings();\n\t}, [query, siteConfig, commuteLocation]);\n\n\tuseEffect(() => {\n\t\tconst processListings = async () => {\n\t\t\tlet filteredListings: Listing[];\n\t\t\tlet tempSelectedFilters = selectedFilters;\n\t\t\tlet tempQuery = query;\n\n\t\t\tconst { mapItems, filteredListings: tempFilteredListings } = await applyFilters(\n\t\t\t\tallListings,\n\t\t\t\ttempSelectedFilters,\n\t\t\t\ttempQuery,\n\t\t\t\tlistingEntities,\n\t\t\t\tfavorites,\n\t\t\t\tsiteConfig\n\t\t\t);\n\t\t\tfilteredListings = tempFilteredListings;\n\n\t\t\tif (filterByFavorites) {\n\t\t\t\tfilteredListings = filteredListings.filter((x: Listing) => favorites.includes(x.id));\n\t\t\t}\n\t\t\tsetNewFilteredListings(filteredListings);\n\t\t\tif (firstLoad && tempSelectedFilters) {\n\t\t\t\t// Update URL with filters if needed\n\t\t\t} else if (Object.keys(tempSelectedFilters).length === 0 && !firstLoad) {\n\t\t\t\tlocalStorage.removeItem(localStorageKey + 'selectedFilters');\n\t\t\t} else if (!firstLoad) {\n\t\t\t\tsetStorageObject(localStorageKey + 'selectedFilters', tempSelectedFilters);\n\t\t\t}\n\t\t\tif(setFiltersUrl === true)\n\t\t\t{\n\t\t\t\tupdateURLWithFilters(tempSelectedFilters, window.location, tempQuery, handleUrlUpdate);\n\t\t\t}\n\t\t\ttempQuery != null ? localStorage.setItem(localStorageKey + 'query', tempQuery) : localStorage.removeItem(localStorageKey + 'query');\n\t\t\tsetMapItems(mapItems);\n\n\t\t\tif (tempSelectedFilters) {\n\t\t\t\tconst keys = Object.keys(tempSelectedFilters);\n\t\t\t\tconst lastKey = keys[keys.length - 1];\n\t\t\t\tconst options = generateFilterOptions(\n\t\t\t\t\tfilteredListings,\n\t\t\t\t\tallListings,\n\t\t\t\t\tsiteConfig,\n\t\t\t\t\tfilterOptions,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tfavorites,\n\t\t\t\t\ttempSelectedFilters\n\t\t\t\t);\n\t\t\t\tif (options) {\n\t\t\t\t\tsetFilterOptions(options);\n\t\t\t\t\tif (firstLoad) setFirstLoad(false);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tprocessListings();\n\t}, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);\n\n\tconst handleFilterListingsByLocation = (selectedLocation: any) => {\n\t\tconst { filteredListings } = filterListingsByLocation(\n\t\t\tallListings,\n\t\t\tselectedLocation,\n\t\t\tlistingEntities\n\t\t);\n\t\tsetNewFilteredListings(filteredListings);\n\t};\n\n\tconst resetEntityFilter = () => {\n\t\tlet newFilters = {...selectedFilters};\n\t\tdelete newFilters.entityId;\n\t\tsetSelectedFilters(newFilters);\n\t}\n\n\tconst handleSettingFavorites = (newFavorites: number[] | null) => {\n\t\tif (newFavorites == null) {\n\t\t\tlocalStorage.removeItem(localStorageKey + 'favorites');\n\t\t} else {\n\t\t\tsetFavorites(newFavorites);\n\t\t\tlocalStorage.setItem(localStorageKey + 'favorites', JSON.stringify(newFavorites));\n\t\t}\n\t};\n\n\treturn (\n\t\t<MapListContext.Provider value={{\n\t\t\tloading,\n\t\t\tallListings,\n\t\t\tfilteredListings,\n\t\t\tmapItems,\n\t\t\tquery,\n\t\t\tsetNewFilteredListings,\n\t\t\tsetQuery,\n\t\t\tlistingEntities,\n\t\t\tselectedFilters,\n\t\t\tsetSelectedFilters,\n\t\t\tfilterOptions,\n\t\t\trecruiters,\n\t\t\thandleFilterListingsByLocation,\n\t\t\tfilterDialogIsOpen,\n\t\t\tsetFilterDialogIsOpen,\n\t\t\tsetMobileTab,\n\t\t\tmobileTab,\n\t\t\tsiteConfig,\n\t\t\tfavorites,\n\t\t\thandleSettingFavorites,\n\t\t\tresetEntityFilter,\n\t\t\tsetFilterByFavorites,\n\t\t\tfilterByFavorites,\n\t\t\tcommuteLocation,\n\t\t\tsetCommuteLocation,\n\t\t\tnavigateToDetails,\n\t\t\tnavigateToEasyApply,\n\t\t\tLink,\n\t\t\tlinkFormat,\n\t\t\teasyApplyUrl,\n\t\t\teasyApplyText,\n\t\t\tisIframe,\n\t\t\tsortSetting,\n\t\t\tsetSortSetting,\n\t\t\ttrackEvent,\n\t\t\tdefaultFilters,\n\t\t\thiddenFilters,\n\t\t\tcontainerStyle,\n\t\t\tExpandListComponent,\n\t\t\tnoEntities\n\t\t}}>\n\t\t\t{children}\n\t\t</MapListContext.Provider>\n\t);\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export function initializeAlgoliaSearch(appId: string, apiKey: string, indexName: string): boolean;
2
+ export function isAlgoliaAvailable(): boolean;
3
+ export function searchAlgolia(query: string): Promise<number[]>;
4
+ export function filterListingsByAlgoliaSearch(listings: any[], query: string): Promise<any[]>;
@@ -18,10 +18,10 @@ export function generateFilterOptions(filteredListings: any, allListings: any, s
18
18
  }[];
19
19
  };
20
20
  } | null;
21
- export function applyFilters(allListings: any, selectedFilters: any, query: any, listingEntities: any, favorites: any, siteConfig: any): {
21
+ export function applyFilters(allListings: any, selectedFilters: any, query: any, listingEntities: any, favorites: any, siteConfig: any): Promise<{
22
22
  filteredListings: any;
23
23
  mapItems: any[];
24
- };
24
+ }>;
25
25
  export function filterListingsByLocation(allListings: any, selectedLocation: any, listingEntities: any): {
26
26
  filteredListings: any;
27
27
  mapItems: any[];
@@ -0,0 +1,133 @@
1
+ import { asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { liteClient } from 'algoliasearch/lite';
3
+
4
+ var algoliaClient = null;
5
+ var algoliaIndexName = null;
6
+
7
+ /**
8
+ * Initialize Algolia search client
9
+ * @param {string} appId - Algolia Application ID
10
+ * @param {string} apiKey - Algolia Search API Key
11
+ * @param {string} indexName - Algolia Index Name
12
+ */
13
+ var initializeAlgoliaSearch = function initializeAlgoliaSearch(appId, apiKey, indexName) {
14
+ if (!appId || !apiKey || !indexName) {
15
+ console.warn('Algolia search not initialized: missing configuration');
16
+ return false;
17
+ }
18
+ try {
19
+ algoliaClient = liteClient(appId, apiKey);
20
+ algoliaIndexName = indexName;
21
+ return true;
22
+ } catch (error) {
23
+ console.error('Failed to initialize Algolia:', error);
24
+ return false;
25
+ }
26
+ };
27
+
28
+ /**
29
+ * Check if Algolia is initialized and available
30
+ */
31
+ var isAlgoliaAvailable = function isAlgoliaAvailable() {
32
+ return algoliaClient !== null && algoliaIndexName !== null;
33
+ };
34
+
35
+ /**
36
+ * Search using Algolia and return matching listing IDs
37
+ * @param {string} query - Search query
38
+ * @returns {Promise<number[]>} Array of listing IDs that match the search
39
+ */
40
+ var searchAlgolia = /*#__PURE__*/function () {
41
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(query) {
42
+ var _results$, _yield$algoliaClient$, results, hits, listingIds;
43
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
44
+ while (1) switch (_context.prev = _context.next) {
45
+ case 0:
46
+ if (isAlgoliaAvailable()) {
47
+ _context.next = 2;
48
+ break;
49
+ }
50
+ throw new Error('Algolia search is not initialized');
51
+ case 2:
52
+ _context.prev = 2;
53
+ _context.next = 5;
54
+ return algoliaClient.search({
55
+ requests: [{
56
+ indexName: algoliaIndexName,
57
+ query: query,
58
+ hitsPerPage: 1000 // Adjust based on your needs
59
+ }]
60
+ });
61
+ case 5:
62
+ _yield$algoliaClient$ = _context.sent;
63
+ results = _yield$algoliaClient$.results;
64
+ // Extract IDs from the results
65
+ hits = ((_results$ = results[0]) === null || _results$ === void 0 ? void 0 : _results$.hits) || [];
66
+ listingIds = hits.map(function (hit) {
67
+ // Algolia objectID might be the listing ID, or it might be in a field
68
+ // Adjust this based on your Algolia index structure
69
+ return hit.id || parseInt(hit.objectID);
70
+ }).filter(function (id) {
71
+ return !isNaN(id);
72
+ });
73
+ return _context.abrupt("return", listingIds);
74
+ case 12:
75
+ _context.prev = 12;
76
+ _context.t0 = _context["catch"](2);
77
+ console.error('Algolia search failed:', _context.t0);
78
+ throw _context.t0;
79
+ case 16:
80
+ case "end":
81
+ return _context.stop();
82
+ }
83
+ }, _callee, null, [[2, 12]]);
84
+ }));
85
+ return function searchAlgolia(_x) {
86
+ return _ref.apply(this, arguments);
87
+ };
88
+ }();
89
+
90
+ /**
91
+ * Filter listings by Algolia search results
92
+ * @param {Array} listings - All listings to filter
93
+ * @param {string} query - Search query
94
+ * @returns {Promise<Array>} Filtered listings
95
+ */
96
+ var filterListingsByAlgoliaSearch = /*#__PURE__*/function () {
97
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(listings, query) {
98
+ var matchingIds;
99
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
100
+ while (1) switch (_context2.prev = _context2.next) {
101
+ case 0:
102
+ if (!(!query || !isAlgoliaAvailable())) {
103
+ _context2.next = 2;
104
+ break;
105
+ }
106
+ return _context2.abrupt("return", listings);
107
+ case 2:
108
+ _context2.prev = 2;
109
+ _context2.next = 5;
110
+ return searchAlgolia(query);
111
+ case 5:
112
+ matchingIds = _context2.sent;
113
+ return _context2.abrupt("return", listings.filter(function (listing) {
114
+ return matchingIds.includes(listing.id);
115
+ }));
116
+ case 9:
117
+ _context2.prev = 9;
118
+ _context2.t0 = _context2["catch"](2);
119
+ console.error('Failed to filter by Algolia search, returning all listings:', _context2.t0);
120
+ return _context2.abrupt("return", listings);
121
+ case 13:
122
+ case "end":
123
+ return _context2.stop();
124
+ }
125
+ }, _callee2, null, [[2, 9]]);
126
+ }));
127
+ return function filterListingsByAlgoliaSearch(_x2, _x3) {
128
+ return _ref2.apply(this, arguments);
129
+ };
130
+ }();
131
+
132
+ export { filterListingsByAlgoliaSearch, initializeAlgoliaSearch, isAlgoliaAvailable, searchAlgolia };
133
+ //# sourceMappingURL=algoliaSearchUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algoliaSearchUtil.js","sources":["../../src/util/algoliaSearchUtil.js"],"sourcesContent":["import { liteClient as algoliasearch } from 'algoliasearch/lite';\n\nlet algoliaClient = null;\nlet algoliaIndexName = null;\n\n/**\n * Initialize Algolia search client\n * @param {string} appId - Algolia Application ID\n * @param {string} apiKey - Algolia Search API Key\n * @param {string} indexName - Algolia Index Name\n */\nexport const initializeAlgoliaSearch = (appId, apiKey, indexName) => {\n\tif (!appId || !apiKey || !indexName) {\n\t\tconsole.warn('Algolia search not initialized: missing configuration');\n\t\treturn false;\n\t}\n\t\n\ttry {\n\t\talgoliaClient = algoliasearch(appId, apiKey);\n\t\talgoliaIndexName = indexName;\n\t\treturn true;\n\t} catch (error) {\n\t\tconsole.error('Failed to initialize Algolia:', error);\n\t\treturn false;\n\t}\n};\n\n/**\n * Check if Algolia is initialized and available\n */\nexport const isAlgoliaAvailable = () => {\n\treturn algoliaClient !== null && algoliaIndexName !== null;\n};\n\n/**\n * Search using Algolia and return matching listing IDs\n * @param {string} query - Search query\n * @returns {Promise<number[]>} Array of listing IDs that match the search\n */\nexport const searchAlgolia = async (query) => {\n\tif (!isAlgoliaAvailable()) {\n\t\tthrow new Error('Algolia search is not initialized');\n\t}\n\n\ttry {\n\t\tconst { results } = await algoliaClient.search({\n\t\t\trequests: [\n\t\t\t\t{\n\t\t\t\t\tindexName: algoliaIndexName,\n\t\t\t\t\tquery: query,\n\t\t\t\t\thitsPerPage: 1000 // Adjust based on your needs\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\n\t\t// Extract IDs from the results\n\t\tconst hits = results[0]?.hits || [];\n\t\tconst listingIds = hits.map(hit => {\n\t\t\t// Algolia objectID might be the listing ID, or it might be in a field\n\t\t\t// Adjust this based on your Algolia index structure\n\t\t\treturn hit.id || parseInt(hit.objectID);\n\t\t}).filter(id => !isNaN(id));\n\n\t\treturn listingIds;\n\t} catch (error) {\n\t\tconsole.error('Algolia search failed:', error);\n\t\tthrow error;\n\t}\n};\n\n/**\n * Filter listings by Algolia search results\n * @param {Array} listings - All listings to filter\n * @param {string} query - Search query\n * @returns {Promise<Array>} Filtered listings\n */\nexport const filterListingsByAlgoliaSearch = async (listings, query) => {\n\tif (!query || !isAlgoliaAvailable()) {\n\t\treturn listings;\n\t}\n\n\ttry {\n\t\tconst matchingIds = await searchAlgolia(query);\n\t\t\n\t\t// Filter listings to only include those with matching IDs\n\t\treturn listings.filter(listing => matchingIds.includes(listing.id));\n\t} catch (error) {\n\t\tconsole.error('Failed to filter by Algolia search, returning all listings:', error);\n\t\treturn listings;\n\t}\n};\n"],"names":["algoliaClient","algoliaIndexName","initializeAlgoliaSearch","appId","apiKey","indexName","console","warn","algoliasearch","error","isAlgoliaAvailable","searchAlgolia","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","_results$","_yield$algoliaClient$","results","hits","listingIds","wrap","_callee$","_context","prev","next","Error","search","requests","hitsPerPage","sent","map","hit","id","parseInt","objectID","filter","isNaN","abrupt","t0","stop","_x","apply","arguments","filterListingsByAlgoliaSearch","_ref2","_callee2","listings","matchingIds","_callee2$","_context2","listing","includes","_x2","_x3"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { slicedToArray as _slicedToArray, typeof as _typeof, toConsumableArray as _toConsumableArray, defineProperty as _defineProperty, createForOfIteratorHelper as _createForOfIteratorHelper } from '../_virtual/_rollupPluginBabelHelpers.js';
1
+ import { slicedToArray as _slicedToArray, typeof as _typeof, toConsumableArray as _toConsumableArray, createForOfIteratorHelper as _createForOfIteratorHelper, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime, defineProperty as _defineProperty } from '../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import { getDistinctItemsByProximity } from './mapUtil.js';
3
+ import { isAlgoliaAvailable, filterListingsByAlgoliaSearch } from './algoliaSearchUtil.js';
3
4
  import Fuse from '../node_modules/fuse.js/dist/fuse.js';
4
5
 
5
6
  var getFilterOptions = function getFilterOptions(listings, filteredListings, field) {
@@ -203,66 +204,128 @@ var generateFilterOptions = function generateFilterOptions(filteredListings, all
203
204
  }
204
205
  return null;
205
206
  };
206
- var applyFilters = function applyFilters(allListings, selectedFilters, query, listingEntities, favorites, siteConfig) {
207
- var results = allListings;
208
- var invertedSpecialFeaturesMap;
209
- if (siteConfig.specialFeatures) {
210
- invertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce(function (acc, _ref9) {
211
- var _ref10 = _slicedToArray(_ref9, 2),
212
- key = _ref10[0],
213
- value = _ref10[1];
214
- acc[value] = key;
215
- return acc;
216
- }, {});
217
- }
218
- var hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;
219
- if (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {
220
- results = results.filter(function (x) {
221
- return favorites.includes(x.id);
222
- });
223
- }
224
- var favorite;
225
- if (hasFavorite) {
226
- favorite = selectedFilters.specialFeatures.Favorite;
227
- delete selectedFilters.specialFeatures.Favorite;
228
- }
229
- var _loop = function _loop() {
230
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
231
- field = _Object$entries$_i[0],
232
- filterItems = _Object$entries$_i[1];
233
- var formattedField = field;
234
- if (field === "pointsOfInterest") return 1; // continue
235
- if (field === "specialFeatures" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {
236
- results = results.filter(function (listing) {
237
- return Object.entries(filterItems).some(function (_ref11) {
238
- var _ref12 = _slicedToArray(_ref11, 2),
239
- filterName = _ref12[0],
240
- filterValue = _ref12[1];
241
- var listingFieldName = invertedSpecialFeaturesMap[filterName];
242
- return filterValue && listing.fields[listingFieldName] == 1;
243
- });
244
- });
245
- } else if (Object.keys(filterItems).length > 0) {
246
- results = results.filter(function (listing) {
247
- return filterItems.hasOwnProperty(listing.fields[formattedField]);
248
- });
249
- }
250
- };
251
- for (var _i = 0, _Object$entries = Object.entries(selectedFilters); _i < _Object$entries.length; _i++) {
252
- if (_loop()) continue;
253
- }
254
- if (query) {
255
- results = searchResults(results, query);
256
- }
257
- var distinctItems = getDistinctItemsByProximity(results, listingEntities);
258
- if (hasFavorite) {
259
- selectedFilters.specialFeatures.Favorite = favorite;
260
- }
261
- return {
262
- filteredListings: results,
263
- mapItems: distinctItems
207
+ var applyFilters = /*#__PURE__*/function () {
208
+ var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(allListings, selectedFilters, query, listingEntities, favorites, siteConfig) {
209
+ var results, invertedSpecialFeaturesMap, hasFavorite, favorite, _loop, _i, _Object$entries, distinctItems;
210
+ return _regeneratorRuntime().wrap(function _callee$(_context2) {
211
+ while (1) switch (_context2.prev = _context2.next) {
212
+ case 0:
213
+ results = allListings;
214
+ if (siteConfig.specialFeatures) {
215
+ invertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce(function (acc, _ref10) {
216
+ var _ref11 = _slicedToArray(_ref10, 2),
217
+ key = _ref11[0],
218
+ value = _ref11[1];
219
+ acc[value] = key;
220
+ return acc;
221
+ }, {});
222
+ }
223
+ hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;
224
+ if (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {
225
+ results = results.filter(function (x) {
226
+ return favorites.includes(x.id);
227
+ });
228
+ }
229
+ if (hasFavorite) {
230
+ favorite = selectedFilters.specialFeatures.Favorite;
231
+ delete selectedFilters.specialFeatures.Favorite;
232
+ }
233
+ _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() {
234
+ var _Object$entries$_i, field, filterItems, formattedField;
235
+ return _regeneratorRuntime().wrap(function _loop$(_context) {
236
+ while (1) switch (_context.prev = _context.next) {
237
+ case 0:
238
+ _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), field = _Object$entries$_i[0], filterItems = _Object$entries$_i[1];
239
+ formattedField = field;
240
+ if (!(field === "pointsOfInterest")) {
241
+ _context.next = 4;
242
+ break;
243
+ }
244
+ return _context.abrupt("return", 1);
245
+ case 4:
246
+ if (field === "specialFeatures" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {
247
+ results = results.filter(function (listing) {
248
+ return Object.entries(filterItems).some(function (_ref12) {
249
+ var _ref13 = _slicedToArray(_ref12, 2),
250
+ filterName = _ref13[0],
251
+ filterValue = _ref13[1];
252
+ var listingFieldName = invertedSpecialFeaturesMap[filterName];
253
+ return filterValue && listing.fields[listingFieldName] == 1;
254
+ });
255
+ });
256
+ } else if (Object.keys(filterItems).length > 0) {
257
+ results = results.filter(function (listing) {
258
+ return filterItems.hasOwnProperty(listing.fields[formattedField]);
259
+ });
260
+ }
261
+ case 5:
262
+ case "end":
263
+ return _context.stop();
264
+ }
265
+ }, _loop);
266
+ });
267
+ _i = 0, _Object$entries = Object.entries(selectedFilters);
268
+ case 7:
269
+ if (!(_i < _Object$entries.length)) {
270
+ _context2.next = 14;
271
+ break;
272
+ }
273
+ return _context2.delegateYield(_loop(), "t0", 9);
274
+ case 9:
275
+ if (!_context2.t0) {
276
+ _context2.next = 11;
277
+ break;
278
+ }
279
+ return _context2.abrupt("continue", 11);
280
+ case 11:
281
+ _i++;
282
+ _context2.next = 7;
283
+ break;
284
+ case 14:
285
+ if (!query) {
286
+ _context2.next = 29;
287
+ break;
288
+ }
289
+ if (!isAlgoliaAvailable()) {
290
+ _context2.next = 28;
291
+ break;
292
+ }
293
+ _context2.prev = 16;
294
+ _context2.next = 19;
295
+ return filterListingsByAlgoliaSearch(results, query);
296
+ case 19:
297
+ results = _context2.sent;
298
+ _context2.next = 26;
299
+ break;
300
+ case 22:
301
+ _context2.prev = 22;
302
+ _context2.t1 = _context2["catch"](16);
303
+ console.error('Algolia search failed, falling back to Fuse.js:', _context2.t1);
304
+ results = searchResults(results, query);
305
+ case 26:
306
+ _context2.next = 29;
307
+ break;
308
+ case 28:
309
+ results = searchResults(results, query);
310
+ case 29:
311
+ distinctItems = getDistinctItemsByProximity(results, listingEntities);
312
+ if (hasFavorite) {
313
+ selectedFilters.specialFeatures.Favorite = favorite;
314
+ }
315
+ return _context2.abrupt("return", {
316
+ filteredListings: results,
317
+ mapItems: distinctItems
318
+ });
319
+ case 32:
320
+ case "end":
321
+ return _context2.stop();
322
+ }
323
+ }, _callee, null, [[16, 22]]);
324
+ }));
325
+ return function applyFilters(_x, _x2, _x3, _x4, _x5, _x6) {
326
+ return _ref9.apply(this, arguments);
264
327
  };
265
- };
328
+ }();
266
329
  function searchResults(results, query) {
267
330
  var fields = ['id', 'uniqueId', 'fields.posted', 'fields.subtitle', 'fields.education', 'fields.title', 'fields.category', 'fields.subCategory', 'fields.shift', 'fields.citystate', 'fields.city', 'fields.state', 'fields.schedule', 'fields.customflag1', 'fields.bonus', 'fields.remote', 'fields.useclientjoburl', 'fields.datecreated', 'fields.datelastedited'];
268
331
  var options = {
@@ -1 +1 @@
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\tselectedFilters\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 == 'category'){\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, allListings, fieldName)\n\t\t\t\t};\n\t\t\t}\n\t\t\tif(fieldName == 'subCategory' && selectedFilters.category){\n\t\t\t\tconst categoryKeys = Object.keys(selectedFilters.category);\n\t\t\t\tconst filteredListings = allListings.filter(\n\t\t\t\t\tx => categoryKeys.includes(x.fields?.category)\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, false)\n\t\t\t\t};\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\tlet locationFilteredListings = allListings;\n\t\t\t\tlocationFilteredListings = allListings.filter(listing => {\n\t\t\t\t\treturn Object.entries(selectedFilters).every(([key, value]) => {\n\t\t\t\t\t\tif (siteConfig.locationFiltersShown.includes(key)) return true;\n\t\t\t\t\t\tif (value && typeof value === 'object' && value[listing.fields[key]] === true) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (index === 0) {\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, locationFilteredListings, fieldName, true)\n\t\t\t\t\t};\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 = locationFilteredListings.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\tif (fieldName === 'city') {\n\t\t\t\t\tif (siteConfig.locationFiltersShown.includes('state') && selectedFilters.state) {\n\t\t\t\t\t\tconst selectedStates = Object.keys(selectedFilters.state).filter(\n\t\t\t\t\t\t\tstate => selectedFilters.state[state] === true\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst filteredByLocation = locationFilteredListings.filter(listing =>\n\t\t\t\t\t\t\tselectedStates.includes(listing.fields.state)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: fieldName,\n\t\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\t\t\titems: getFilterOptions(allListings, filteredByLocation, fieldName, true)\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\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'uniqueId',\n\t\t'fields.posted',\n\t\t'fields.subtitle',\n\t\t'fields.education',\n\t\t'fields.title',\n\t\t'fields.category',\n\t\t'fields.subCategory',\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 || result.uniqueId === 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","selectedFilters","dynamicFilters","fieldFiltersShown","fieldName","filters","find","title","fieldNames","items","category","categoryKeys","_x$fields","locations","locationFiltersShown","index","locationFilteredListings","every","_ref7","_ref8","_typeof","cityIncluded","stateIncluded","cityStateIncluded","uniqueCities","_toConsumableArray","city","uniqueStates","state","uniqueCityStates","cityState","filteredByLocation","cityMatches","stateMatches","cityStateMatches","selectedStates","pointsOfInterest","pointsOfInterestConfig","applyFilters","query","listingEntities","results","invertedSpecialFeaturesMap","_ref9","_ref10","hasFavorite","Favorite","favorite","_loop","_Object$entries$_i","_Object$entries","_i","filterItems","formattedField","some","_ref11","_ref12","filterName","filterValue","listingFieldName","searchResults","distinctItems","getDistinctItemsByProximity","mapItems","includeScore","threshold","fuse","Fuse","lowerCaseQuery","toLowerCase","queryTerms","split","exactIdMatch","result","toString","uniqueId","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';\nimport { isAlgoliaAvailable, filterListingsByAlgoliaSearch } from '~/util/algoliaSearchUtil';\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\tselectedFilters\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 == 'category'){\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, allListings, fieldName)\n\t\t\t\t};\n\t\t\t}\n\t\t\tif(fieldName == 'subCategory' && selectedFilters.category){\n\t\t\t\tconst categoryKeys = Object.keys(selectedFilters.category);\n\t\t\t\tconst filteredListings = allListings.filter(\n\t\t\t\t\tx => categoryKeys.includes(x.fields?.category)\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, false)\n\t\t\t\t};\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\tlet locationFilteredListings = allListings;\n\t\t\t\tlocationFilteredListings = allListings.filter(listing => {\n\t\t\t\t\treturn Object.entries(selectedFilters).every(([key, value]) => {\n\t\t\t\t\t\tif (siteConfig.locationFiltersShown.includes(key)) return true;\n\t\t\t\t\t\tif (value && typeof value === 'object' && value[listing.fields[key]] === true) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (index === 0) {\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, locationFilteredListings, fieldName, true)\n\t\t\t\t\t};\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 = locationFilteredListings.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\tif (fieldName === 'city') {\n\t\t\t\t\tif (siteConfig.locationFiltersShown.includes('state') && selectedFilters.state) {\n\t\t\t\t\t\tconst selectedStates = Object.keys(selectedFilters.state).filter(\n\t\t\t\t\t\t\tstate => selectedFilters.state[state] === true\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst filteredByLocation = locationFilteredListings.filter(listing =>\n\t\t\t\t\t\t\tselectedStates.includes(listing.fields.state)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: fieldName,\n\t\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\t\t\titems: getFilterOptions(allListings, filteredByLocation, fieldName, true)\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\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 = async (\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\t// Use Algolia if available, otherwise fall back to Fuse.js\n\t\tif (isAlgoliaAvailable()) {\n\t\t\ttry {\n\t\t\t\tresults = await filterListingsByAlgoliaSearch(results, query);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Algolia search failed, falling back to Fuse.js:', error);\n\t\t\t\tresults = searchResults(results, query);\n\t\t\t}\n\t\t} else {\n\t\t\tresults = searchResults(results, query);\n\t\t}\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'uniqueId',\n\t\t'fields.posted',\n\t\t'fields.subtitle',\n\t\t'fields.education',\n\t\t'fields.title',\n\t\t'fields.category',\n\t\t'fields.subCategory',\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 || result.uniqueId === 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","selectedFilters","dynamicFilters","fieldFiltersShown","fieldName","filters","find","title","fieldNames","items","category","categoryKeys","_x$fields","locations","locationFiltersShown","index","locationFilteredListings","every","_ref7","_ref8","_typeof","cityIncluded","stateIncluded","cityStateIncluded","uniqueCities","_toConsumableArray","city","uniqueStates","state","uniqueCityStates","cityState","filteredByLocation","cityMatches","stateMatches","cityStateMatches","selectedStates","pointsOfInterest","pointsOfInterestConfig","applyFilters","_ref9","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","listingEntities","results","invertedSpecialFeaturesMap","hasFavorite","favorite","_loop","_i","_Object$entries","distinctItems","wrap","_callee$","_context2","prev","next","_ref10","_ref11","Favorite","_Object$entries$_i","filterItems","formattedField","_loop$","_context","abrupt","some","_ref12","_ref13","filterName","filterValue","listingFieldName","stop","delegateYield","t0","isAlgoliaAvailable","filterListingsByAlgoliaSearch","sent","t1","console","error","searchResults","getDistinctItemsByProximity","mapItems","_x","_x2","_x3","_x4","_x5","_x6","apply","includeScore","threshold","fuse","Fuse","lowerCaseQuery","toLowerCase","queryTerms","split","exactIdMatch","result","toString","uniqueId","fuseQuery","term","$or","_defineProperty","fuseResults","search","$and","item","filterListingsByLocation","selectedLocation"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abcagency/hc-ui-components",
3
- "version": "1.5.2",
3
+ "version": "1.5.3",
4
4
  "description": "UI Components for HireControl",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -14,6 +14,7 @@ import { ThemeProvider } from '~/contexts/themeContext';
14
14
 
15
15
  import { getMapConfig } from '~/services/configService';
16
16
  import { setClientAuthKey } from '~/clientToken.js';
17
+ import { initializeAlgoliaSearch } from '~/util/algoliaSearchUtil';
17
18
 
18
19
  import '../styles/components.css';
19
20
 
@@ -117,11 +118,25 @@ export const HireControlMap = ({
117
118
  defaultZoomOverride = null,
118
119
  //Default site configuration file passed here stops need to fetch from api
119
120
  siteConfiguration = null,
120
- localStorageKey = 'defaultKey.'
121
+ localStorageKey = 'defaultKey.',
122
+ // Algolia search configuration (optional)
123
+ algoliaAppId = null,
124
+ algoliaApiKey = null,
125
+ algoliaIndexName = null
121
126
  }) => {
122
127
  // Load site configuration
123
128
  const { siteConfig, error } = useSiteConfig(clientToken, siteConfiguration);
124
129
 
130
+ // Initialize Algolia if credentials are provided
131
+ useEffect(() => {
132
+ if (algoliaAppId && algoliaApiKey && algoliaIndexName) {
133
+ const initialized = initializeAlgoliaSearch(algoliaAppId, algoliaApiKey, algoliaIndexName);
134
+ if (initialized) {
135
+ console.log('Algolia search initialized successfully');
136
+ }
137
+ }
138
+ }, [algoliaAppId, algoliaApiKey, algoliaIndexName]);
139
+
125
140
  // Load Google Maps
126
141
  const { isLoaded: isMapsLoaded, loadError } = useLoadScript({
127
142
  googleMapsApiKey: googleMapsApiKey,
@@ -255,12 +255,12 @@ export const MapListProvider: React.FC<MapListProviderProps> = ({
255
255
  }, [query, siteConfig, commuteLocation]);
256
256
 
257
257
  useEffect(() => {
258
- const processListings = () => {
258
+ const processListings = async () => {
259
259
  let filteredListings: Listing[];
260
260
  let tempSelectedFilters = selectedFilters;
261
261
  let tempQuery = query;
262
262
 
263
- const { mapItems, filteredListings: tempFilteredListings } = applyFilters(
263
+ const { mapItems, filteredListings: tempFilteredListings } = await applyFilters(
264
264
  allListings,
265
265
  tempSelectedFilters,
266
266
  tempQuery,
@@ -0,0 +1,91 @@
1
+ import { liteClient as algoliasearch } from 'algoliasearch/lite';
2
+
3
+ let algoliaClient = null;
4
+ let algoliaIndexName = null;
5
+
6
+ /**
7
+ * Initialize Algolia search client
8
+ * @param {string} appId - Algolia Application ID
9
+ * @param {string} apiKey - Algolia Search API Key
10
+ * @param {string} indexName - Algolia Index Name
11
+ */
12
+ export const initializeAlgoliaSearch = (appId, apiKey, indexName) => {
13
+ if (!appId || !apiKey || !indexName) {
14
+ console.warn('Algolia search not initialized: missing configuration');
15
+ return false;
16
+ }
17
+
18
+ try {
19
+ algoliaClient = algoliasearch(appId, apiKey);
20
+ algoliaIndexName = indexName;
21
+ return true;
22
+ } catch (error) {
23
+ console.error('Failed to initialize Algolia:', error);
24
+ return false;
25
+ }
26
+ };
27
+
28
+ /**
29
+ * Check if Algolia is initialized and available
30
+ */
31
+ export const isAlgoliaAvailable = () => {
32
+ return algoliaClient !== null && algoliaIndexName !== null;
33
+ };
34
+
35
+ /**
36
+ * Search using Algolia and return matching listing IDs
37
+ * @param {string} query - Search query
38
+ * @returns {Promise<number[]>} Array of listing IDs that match the search
39
+ */
40
+ export const searchAlgolia = async (query) => {
41
+ if (!isAlgoliaAvailable()) {
42
+ throw new Error('Algolia search is not initialized');
43
+ }
44
+
45
+ try {
46
+ const { results } = await algoliaClient.search({
47
+ requests: [
48
+ {
49
+ indexName: algoliaIndexName,
50
+ query: query,
51
+ hitsPerPage: 1000 // Adjust based on your needs
52
+ }
53
+ ]
54
+ });
55
+
56
+ // Extract IDs from the results
57
+ const hits = results[0]?.hits || [];
58
+ const listingIds = hits.map(hit => {
59
+ // Algolia objectID might be the listing ID, or it might be in a field
60
+ // Adjust this based on your Algolia index structure
61
+ return hit.id || parseInt(hit.objectID);
62
+ }).filter(id => !isNaN(id));
63
+
64
+ return listingIds;
65
+ } catch (error) {
66
+ console.error('Algolia search failed:', error);
67
+ throw error;
68
+ }
69
+ };
70
+
71
+ /**
72
+ * Filter listings by Algolia search results
73
+ * @param {Array} listings - All listings to filter
74
+ * @param {string} query - Search query
75
+ * @returns {Promise<Array>} Filtered listings
76
+ */
77
+ export const filterListingsByAlgoliaSearch = async (listings, query) => {
78
+ if (!query || !isAlgoliaAvailable()) {
79
+ return listings;
80
+ }
81
+
82
+ try {
83
+ const matchingIds = await searchAlgolia(query);
84
+
85
+ // Filter listings to only include those with matching IDs
86
+ return listings.filter(listing => matchingIds.includes(listing.id));
87
+ } catch (error) {
88
+ console.error('Failed to filter by Algolia search, returning all listings:', error);
89
+ return listings;
90
+ }
91
+ };
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable no-undef */
2
2
  import { getDistinctItemsByProximity } from '~/util/mapUtil';
3
+ import { isAlgoliaAvailable, filterListingsByAlgoliaSearch } from '~/util/algoliaSearchUtil';
3
4
 
4
5
  import Fuse from 'fuse.js';
5
6
 
@@ -195,7 +196,7 @@ export const generateFilterOptions = (
195
196
  return null;
196
197
  };
197
198
 
198
- export const applyFilters = (
199
+ export const applyFilters = async (
199
200
  allListings,
200
201
  selectedFilters,
201
202
  query,
@@ -239,7 +240,17 @@ export const applyFilters = (
239
240
  }
240
241
  }
241
242
  if (query) {
242
- results = searchResults(results, query);
243
+ // Use Algolia if available, otherwise fall back to Fuse.js
244
+ if (isAlgoliaAvailable()) {
245
+ try {
246
+ results = await filterListingsByAlgoliaSearch(results, query);
247
+ } catch (error) {
248
+ console.error('Algolia search failed, falling back to Fuse.js:', error);
249
+ results = searchResults(results, query);
250
+ }
251
+ } else {
252
+ results = searchResults(results, query);
253
+ }
243
254
  }
244
255
  const distinctItems = getDistinctItemsByProximity(results, listingEntities);
245
256
  if (hasFavorite) {