{"version":3,"file":"web/static/js/search.bundle.js","sources":["webpack://website/./frontend/utils/axios.ts","webpack://website/./web/assets/js/modules/tomselect-cities-auto-suggest.ts","webpack://website/./web/assets/js/shared/utilities.ts","webpack://website/./web/assets/js/templates/search/index.ts","webpack://website/webpack/runtime/compat_get_default_export","webpack://website/webpack/runtime/create_fake_namespace_object","webpack://website/webpack/runtime/define_property_getters","webpack://website/webpack/runtime/has_own_property","webpack://website/webpack/runtime/make_namespace_object","webpack://website/webpack/runtime/on_chunk_loaded","webpack://website/webpack/runtime/rspack_version","webpack://website/webpack/runtime/runtime_id","webpack://website/webpack/runtime/jsonp_chunk_loading","webpack://website/webpack/runtime/rspack_unique_id"],"sourcesContent":["import axios from \"axios\";\n\nconst api = axios.create({\n  xsrfCookieName: \"csrftoken\",\n  xsrfHeaderName: \"X-CSRFToken\",\n});\n\napi.interceptors.request.use(async (config) => {\n  if (window.AwsWafIntegration) {\n    try {\n      const token = await window.AwsWafIntegration.getToken();\n      if (token) {\n        config.headers.set(\"x-aws-waf-token\", token);\n      }\n    } catch (error) {\n      console.error(\"Error getting token:\", error);\n    }\n  }\n  return config;\n});\n\nexport default api;\n","import TomSelect from \"tom-select\";\nimport { TomInput } from \"tom-select/dist/types/types\";\n\nimport axios from \"@utils/axios\";\n\nimport { components } from \"../../../../website-openapi\";\n\nconst searchBasePath: string = JSON.parse(\n  document.getElementById(\"search_base_path\")?.textContent || '\"\"',\n);\n\nconst url = new URL(window.location.href);\n\nconst nextQuery = new URLSearchParams(url.search.slice(1));\n\nconst executeQuery = () => {\n  window.location.href = `${searchBasePath}?${nextQuery}`;\n};\n\ntype City = components[\"schemas\"][\"City\"];\n\nconst createCitiesSelect = (cities: City[]) => {\n  const element = document.getElementById(\"cities_suggest\");\n  if (element) {\n    // eslint-disable-next-line no-new\n    new TomSelect(element as TomInput, {\n      maxItems: null,\n      hideSelected: true,\n      hidePlaceholder: true,\n      openOnFocus: false,\n      closeAfterSelect: true,\n      maxOptions: 3,\n      valueField: \"title\",\n      labelField: \"title\",\n      searchField: [\"title\"],\n      options: cities,\n      create: false,\n      onItemAdd(value: string | number) {\n        if (\n          nextQuery\n            .getAll(\"location\")\n            .includes(`${value.toString().toLowerCase()}`)\n        ) {\n          executeQuery();\n        } else {\n          nextQuery.append(\"location\", `${value.toString().toLowerCase()}`);\n          executeQuery();\n        }\n      },\n    });\n    element.remove();\n  }\n};\n\naxios\n  .get(\"/lookups/public-cities/\")\n  .then((resp) => createCitiesSelect(resp.data))\n  .catch(() => createCitiesSelect([]));\n","import { timer } from \"./lib\";\n\nexport const withTimeout = <T>(\n  promise: Promise<T>,\n  timeout: number,\n  // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n): Promise<T | void> => {\n  return Promise.race([promise, timer(timeout)]);\n};\n\nconst elementIterator = (\n  toSet: Element | Element[],\n  setCallback: (el: Element) => void,\n) => {\n  if (toSet) {\n    if (toSet instanceof Element) {\n      setCallback(toSet);\n    } else {\n      toSet.forEach((el) => setCallback(el));\n    }\n  }\n};\n\nexport const hide = (toHide: Element | Element[]): void => {\n  elementIterator(toHide, (el: Element) => {\n    el.classList.add(\"bn-hide\");\n  });\n};\n\nexport const show = (toShow: Element | Element[]): void => {\n  elementIterator(toShow, (el: Element) => {\n    el.classList.remove(\"bn-hide\");\n  });\n};\n\nexport const toggle = (\n  toToggle: Element | Element[],\n  className: string,\n): void => {\n  elementIterator(toToggle, (el: Element) => {\n    el.classList.toggle(className);\n  });\n};\n\nexport function waitForElement<T extends Element = HTMLElement>(\n  selector: string,\n  parentElement: Element | null = null,\n): Promise<T> {\n  return new Promise<T>((resolve) => {\n    if (parentElement && parentElement.querySelector(selector)) {\n      resolve(parentElement.querySelector(selector) as T);\n    } else if (document.querySelector(selector)) {\n      resolve(document.querySelector(selector) as T);\n    }\n\n    const observer = new MutationObserver(() => {\n      if (parentElement && parentElement.querySelector(selector)) {\n        resolve(parentElement.querySelector(selector) as T);\n      } else if (document.querySelector(selector)) {\n        resolve(document.querySelector(selector) as T);\n        observer.disconnect();\n      }\n    });\n\n    observer.observe(document.body, {\n      childList: true,\n      subtree: true,\n    });\n  });\n}\n\nexport function getElement<T extends Element = HTMLElement>(\n  selector: string,\n  parentElement: Element | null = null,\n): T {\n  if (parentElement && parentElement.querySelector(selector)) {\n    return parentElement.querySelector(selector) as T;\n  }\n  if (document.querySelector(selector)) {\n    return document.querySelector(selector) as T;\n  }\n  throw new Error(`No element found for selector ${selector}`);\n}\n\nexport function getElementWithId<T extends HTMLElement = HTMLElement>(\n  selector: string,\n): T {\n  if (document.getElementById(selector) !== null) {\n    return document.getElementById(selector) as T;\n  }\n  throw new Error(`No element found for selector ${selector}`);\n}\n\nexport function getAllElements<T extends Element = HTMLElement>(\n  selector: string,\n  parentElement: Element | null = null,\n): T[] {\n  if (parentElement && parentElement.querySelectorAll(selector)) {\n    return [...parentElement.querySelectorAll<T>(selector)];\n  }\n  if (document.querySelectorAll(selector)) {\n    return [...document.querySelectorAll<T>(selector)];\n  }\n  throw new Error(`No elements found for selector ${selector}`);\n}\n\nexport const isMobileScreenSize = (): boolean =>\n  window.matchMedia(\"screen and (max-width: 992px)\").matches;\n\nexport const getURLParams = (url: string): string | null => {\n  const urlParams = new URLSearchParams(window.location.search);\n  return urlParams.get(url);\n};\n\nexport function setupModal(dialogBox: HTMLDialogElement) {\n  const clickAwayToClose = (e: MouseEvent) => {\n    // The dialog must have a value of zero padding for this\n    // to work. Basically if we have a div on the inside of\n    // the dialog box which fills it complete, all clicks inside\n    // the box will be registered to the div or its children.\n    // Otherwise the click will be on the dialog box's backdrop\n    // (the faded background the users sees when the dialog is open)\n    // which the browser considers to be the dialog box itself. So\n    // any time we get a click on the dialog box itself, we know\n    // it's a click outside the dialog box and we can close it.\n    const isInside = e.target !== dialogBox;\n\n    if (dialogBox.open && !isInside) {\n      dialogBox.close();\n    }\n  };\n\n  const observeCB = () => {\n    if (dialogBox.open) {\n      document.body.addEventListener(\"mousedown\", clickAwayToClose);\n    } else {\n      document.body.removeEventListener(\"mousedown\", clickAwayToClose);\n    }\n  };\n\n  const observer = new MutationObserver(observeCB);\n  observer.observe(dialogBox, { attributeFilter: [\"open\"] });\n  const closeBtn = dialogBox.querySelector(\".btn-close\") as HTMLButtonElement;\n  closeBtn?.addEventListener(\"click\", () => {\n    dialogBox.close();\n  });\n\n  closeBtn?.addEventListener(\"keydown\", (e) => {\n    if (e.key === \"Enter\") {\n      dialogBox.close();\n    }\n  });\n\n  dialogBox.addEventListener(\"keydown\", (e) => {\n    if (e.key === \"Escape\") {\n      e.preventDefault();\n      e.stopPropagation();\n      dialogBox.close();\n    }\n  });\n\n  return dialogBox;\n}\n","import \"../../modules/tomselect-cities-auto-suggest\";\n\nimport { isMobileScreenSize } from \"../../shared/utilities\";\n\nconst CLASS_MOBILE_ACTIVE = \"mobile-active\";\nconst CLASS_MOBILE_INACTIVE = \"mobile-inactive\";\n\nconst typesSearchedForByTitles = [\n  \"sectors\",\n  \"career_path_sectors\",\n  \"career_path_subsector\",\n  \"employers\",\n  \"job_types\",\n  \"universities\",\n  \"degree_subject_groups\",\n];\n\n/*\n * List of all the elements forcing `no_automatic_faceting` on the next query.\n * if this array have at least one item, automatic faceting should be disabled on next query.\n */\nconst noAutomaticFacetingsOrigin: HTMLElement[] = [];\n\nconst removeElementFromArray = (array: string[], value: string) => {\n  return array.filter((v) => v !== value);\n};\n\nconst searchBasePath: string = JSON.parse(\n  document.getElementById(\"search_base_path\")?.textContent || '\"\"',\n);\nconst searchBaseParams: Record<string, string | string[]> = JSON.parse(\n  document.getElementById(\"search_base_params\")?.textContent || \"{}\",\n);\n\nconst nextQuery = new URLSearchParams();\n\nObject.entries(searchBaseParams).forEach(([key, value]) => {\n  if (Array.isArray(value)) {\n    value.forEach((arrItem) => nextQuery.append(key, arrItem));\n  } else {\n    nextQuery.set(key, value);\n  }\n});\n\nconst executeQuery = () => {\n  window.location.href = `${searchBasePath}?${nextQuery}`;\n};\n\n// Define selectors\n\nconst applyButtons =\n  document.querySelectorAll<HTMLButtonElement>(\".apply-filters\");\nconst facetItems = document.querySelectorAll<HTMLElement>(\".facet-item\");\nconst clearFiltersButton = document.getElementById(\n  \"mobile-clear-filters-anchor\",\n) as HTMLElement;\nconst facetGroups = document.querySelectorAll<HTMLElement>(\".facet-group\");\nconst searchResultRows =\n  document.querySelectorAll<HTMLElement>(\".search-result-row\");\n\nconst searchResultLinks =\n  document.querySelectorAll<HTMLAnchorElement>(\".result-link\");\nconst universityCheckbox = document.getElementById(\"university-checkbox\");\n\nconst isActive = (facetElement: HTMLElement) =>\n  facetElement.dataset.active === \"True\";\n\nconst hasNoAutomaticFaceting = (facetElement: HTMLElement) =>\n  facetElement.dataset.noAutomaticFaceting === \"True\";\n\n/**\n * Updates no_automatic_faceting query parameter\n */\nconst updateAutomaticFaceting = () => {\n  if (noAutomaticFacetingsOrigin.length > 0) {\n    nextQuery.set(\"no_automatic_faceting\", \"true\");\n  } else {\n    nextQuery.delete(\"no_automatic_faceting\");\n  }\n};\n\n/**\n * Makes a facet inactive (mobile-only)\n */\nconst setFacetElementAsInactiveOnMobile = (facetElement: HTMLElement) => {\n  const { facetType, facetValue } = facetElement.dataset as Record<\n    string,\n    string\n  >;\n\n  // DOM update\n  facetElement.classList.add(CLASS_MOBILE_INACTIVE);\n  facetElement.classList.remove(CLASS_MOBILE_ACTIVE);\n  // eslint-disable-next-line no-param-reassign\n  delete facetElement.dataset.active;\n\n  // Automatic Faceting:\n  if (hasNoAutomaticFaceting(facetElement) && facetValue) {\n    if (!noAutomaticFacetingsOrigin.includes(facetElement)) {\n      noAutomaticFacetingsOrigin.push(facetElement);\n    }\n  }\n  updateAutomaticFaceting();\n\n  let parameterName = facetType;\n  let parameterValue = facetValue;\n  if (facetType === \"cities\") {\n    if (facetValue === \"virtual\" || facetValue === \"remote\") {\n      parameterName = facetValue === \"virtual\" ? \"is_virtual\" : \"is_remote\";\n      parameterValue = \"true\";\n    } else {\n      parameterName = \"location\";\n    }\n  }\n  // Query update:\n  const allParametersOfThisType = nextQuery.getAll(parameterName);\n\n  nextQuery.delete(parameterName);\n\n  const newParametersOfThisType = removeElementFromArray(\n    allParametersOfThisType,\n    typesSearchedForByTitles.includes(facetType)\n      ? facetElement.dataset?.facetTitle || \"\"\n      : parameterValue,\n  );\n\n  newParametersOfThisType.forEach((param) => {\n    nextQuery.append(parameterName, param);\n  });\n};\n\n/**\n * Makes a facet active (mobile-only)\n */\nconst setFacetElementAsActiveOnMobile = (facetElement: HTMLElement) => {\n  const { facetType, facetValue } = facetElement.dataset as Record<\n    string,\n    string\n  >;\n\n  facetElement.classList.add(CLASS_MOBILE_ACTIVE);\n  facetElement.classList.remove(CLASS_MOBILE_INACTIVE);\n  // eslint-disable-next-line no-param-reassign\n  facetElement.dataset.active = \"True\";\n\n  // Automatic Faceting:\n  if (hasNoAutomaticFaceting(facetElement) && facetValue) {\n    noAutomaticFacetingsOrigin.splice(\n      noAutomaticFacetingsOrigin.indexOf(facetElement),\n      1,\n    );\n  }\n  updateAutomaticFaceting();\n  let parameterName = facetType;\n  if (facetType === \"cities\") {\n    if (facetValue === \"virtual\" || facetValue === \"remote\") {\n      parameterName = facetValue === \"virtual\" ? \"is_virtual\" : \"is_remote\";\n    } else {\n      parameterName = \"location\";\n    }\n  }\n\n  let parameterValue = typesSearchedForByTitles.includes(facetType)\n    ? facetElement.dataset.facetTitle || \"\"\n    : facetValue;\n\n  if (parameterName === \"is_virtual\" || parameterName === \"is_remote\") {\n    parameterValue = \"true\";\n  }\n  // Query update:\n  nextQuery.append(parameterName, parameterValue);\n};\n\nconst deselectAllFacetElementsInSection = (\n  allFacetElementsInSection: HTMLCollection | NodeList | undefined,\n) => {\n  if (allFacetElementsInSection) {\n    Array.from(allFacetElementsInSection).forEach((facet: HTMLElement) =>\n      setFacetElementAsInactiveOnMobile(facet),\n    );\n  }\n};\n\n/**\n * Handler for mobile clicks where standard navigation is prevented\n */\nconst handleFacetClickOnMobile = (event: MouseEvent) => {\n  const { facetType, facetValue } = (event.currentTarget as HTMLElement)\n    .dataset as Record<string, string>;\n\n  const facetElementId = `facet-${facetType}-${facetValue}`;\n  const facetElement = document.getElementById(facetElementId) as HTMLElement;\n\n  // for subsectors, the all element is the sector parent\n  let theAllElement = null;\n  let allFacetElementsInThisSection = null;\n  let allSectorsAndSubsectorsElement = null;\n\n  if (\n    facetType === \"career_path_subsector\" ||\n    (facetType === \"career_path_sectors\" && facetValue)\n  ) {\n    // if this is a subsector facet, the all element is the parent sector\n    theAllElement = facetElement.closest(\".facet-group__list\")\n      ?.firstChild as HTMLElement;\n\n    // selecting a sector or subsector should deselect the parent \"All\"\n    allSectorsAndSubsectorsElement = document.getElementById(\n      \"facet-career_path_sectors-all\",\n    ) as HTMLElement;\n    allFacetElementsInThisSection =\n      facetElement.closest(\".facet-group__list\")?.children;\n  } else {\n    theAllElement = document.getElementById(\n      `facet-${facetType}-all`,\n    ) as HTMLElement;\n\n    // if this is the all sectors element, it should deselect all sectors and subsectors\n    if (facetType === \"career_path_sectors\") {\n      allFacetElementsInThisSection = document.querySelectorAll<HTMLElement>(\n        \"[id^=facet-career_path_]\",\n      );\n    } else {\n      allFacetElementsInThisSection = document.querySelectorAll<HTMLElement>(\n        `[id^=facet-${facetType}-]`,\n      );\n    }\n  }\n\n  if (!facetValue) {\n    // De-select all facets within this section\n    deselectAllFacetElementsInSection(allFacetElementsInThisSection);\n\n    // Mark \"all\" as selected\n    setFacetElementAsActiveOnMobile(theAllElement);\n    nextQuery.delete(facetType);\n    return;\n  }\n\n  if (facetType === \"content_types\") {\n    // De-select all facets within this section\n    deselectAllFacetElementsInSection(allFacetElementsInThisSection);\n  }\n\n  // Toggle single element\n\n  // sector elements are all elements in disguise\n  if (facetElement === theAllElement) {\n    deselectAllFacetElementsInSection(allFacetElementsInThisSection);\n  }\n\n  setFacetElementAsInactiveOnMobile(theAllElement);\n\n  // if we're selecting a sector or subsector deselect the sector \"All\" element\n  if (allSectorsAndSubsectorsElement) {\n    setFacetElementAsInactiveOnMobile(allSectorsAndSubsectorsElement);\n  }\n\n  if (!isActive(facetElement)) {\n    setFacetElementAsActiveOnMobile(facetElement);\n  } else {\n    setFacetElementAsInactiveOnMobile(facetElement);\n  }\n};\n\n/**\n * Expand accordion (mobile & desktop)\n */\nconst expandFacetGroup = (facetGroup: HTMLElement) => {\n  // Mark the button as expanded\n  const toggleButton =\n    facetGroup.getElementsByClassName(\"facet-group__title\")[0];\n  toggleButton.setAttribute(\"aria-expanded\", \"true\");\n\n  // Show the content\n  const facetOptionContainer = facetGroup.getElementsByClassName(\n    \"facet-group__list-container\",\n  )[0] as HTMLElement;\n  facetOptionContainer.classList.add(\"show\");\n\n  // is this facet group a subgroup, if so expand its parent as well\n  const parentTopLevelMenuSection: HTMLElement | null = facetGroup.closest(\n    \"#search-side-menu > section\",\n  );\n  if (parentTopLevelMenuSection && facetGroup !== parentTopLevelMenuSection) {\n    expandFacetGroup(parentTopLevelMenuSection);\n  }\n};\n\n// Handlers\n\nconst handleFacetClick = (event: MouseEvent) => {\n  if (isMobileScreenSize()) {\n    event.preventDefault();\n    handleFacetClickOnMobile(event);\n  }\n};\n\n/**\n  Handle click on \"Clear Filters\" (mobile-only)\n  */\nconst handleClearFiltersClick = () => {\n  // Clear the next query parameters\n  nextQuery.forEach((_, key) => {\n    nextQuery.delete(key);\n  });\n  // DOM change\n  facetItems.forEach((facetItem) =>\n    setFacetElementAsInactiveOnMobile(facetItem),\n  );\n};\n\n/**\n  Handle click on \"Apply\" (mobile-only)\n  */\napplyButtons.forEach((applyButton) => {\n  applyButton.addEventListener(\"click\", () => {\n    executeQuery();\n  });\n});\n\nclearFiltersButton.addEventListener(\"click\", () => handleClearFiltersClick());\n\nfacetGroups.forEach((facetGroup) => {\n  const activeFacetItemClassNames = \"facet-item active\";\n  const activeFacetElements = facetGroup.getElementsByClassName(\n    activeFacetItemClassNames,\n  ) as HTMLCollectionOf<HTMLElement>;\n\n  const activeFacet = activeFacetElements[0]\n    ? activeFacetElements[0].dataset.facetValue\n    : null;\n  if (activeFacet) {\n    expandFacetGroup(facetGroup);\n  }\n});\n\nfacetItems.forEach((facetItem) => {\n  facetItem.addEventListener(\"click\", handleFacetClick);\n});\n\n/*\n * Mobile search result click listener\n */\nsearchResultRows.forEach((searchResultRow) => {\n  searchResultRow.addEventListener(\"click\", async () => {\n    if (isMobileScreenSize()) {\n      const resultPath = searchResultRow.dataset.href as string;\n      document.location.href = resultPath;\n    }\n  });\n});\n\n/*\n * Desktop search result click listener\n */\nsearchResultLinks.forEach((searchResultLink) => {\n  searchResultLink.addEventListener(\"click\", async (e) => {\n    // Search result links to behave independently from the row click redirect.\n    e.stopPropagation();\n  });\n});\n\nif (universityCheckbox) {\n  // Success Stories page\n  universityCheckbox.addEventListener(\"click\", (e) => {\n    document.location.href = (e.currentTarget as HTMLElement).dataset\n      .href as string;\n  });\n}\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n  __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n        if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n            Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n        }\n    }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif (chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--)\n\t\t\tdeferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (\n\t\t\t\t(priority & (1 === 0) || notFulfilled >= priority) &&\n\t\t\t\tObject.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))\n\t\t\t) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif (priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif (fulfilled) {\n\t\t\tdeferred.splice(i--, 1);\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};\n","__webpack_require__.rv = () => (\"1.3.12\")","__webpack_require__.j = \"662\";","\n      // object to store loaded and loading chunks\n      // undefined = chunk not loaded, null = chunk preloaded/prefetched\n      // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\n      var installedChunks = {\"662\": 0,};\n      __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif (chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor (moduleId in moreModules) {\n\t\t\tif (__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif (runtime) var result = runtime(__webpack_require__);\n\t}\n\tif (parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor (; i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif (\n\t\t\t__webpack_require__.o(installedChunks, chunkId) &&\n\t\t\tinstalledChunks[chunkId]\n\t\t) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n};\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkwebsite\"] = globalThis[\"webpackChunkwebsite\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));\n","__webpack_require__.ruid = \"bundler=rspack@1.3.12\";\n"],"names":["api","axios","config","window","token","error","console","searchBasePath","JSON","document","nextQuery","URLSearchParams","url","URL","executeQuery","createCitiesSelect","cities","element","TomSelect","value","resp","isMobileScreenSize","CLASS_MOBILE_ACTIVE","CLASS_MOBILE_INACTIVE","typesSearchedForByTitles","noAutomaticFacetingsOrigin","removeElementFromArray","array","v","searchBaseParams","Object","key","Array","arrItem","applyButtons","facetItems","clearFiltersButton","facetGroups","searchResultRows","searchResultLinks","universityCheckbox","isActive","facetElement","hasNoAutomaticFaceting","updateAutomaticFaceting","setFacetElementAsInactiveOnMobile","facetType","facetValue","parameterName","parameterValue","allParametersOfThisType","newParametersOfThisType","param","setFacetElementAsActiveOnMobile","deselectAllFacetElementsInSection","allFacetElementsInSection","facet","handleFacetClickOnMobile","event","facetElementId","theAllElement","allFacetElementsInThisSection","allSectorsAndSubsectorsElement","expandFacetGroup","facetGroup","toggleButton","facetOptionContainer","parentTopLevelMenuSection","handleFacetClick","handleClearFiltersClick","_","facetItem","applyButton","activeFacetElements","activeFacet","searchResultRow","resultPath","searchResultLink","e","Symbol","n","c","i","globalThis"],"mappings":"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"}