{"version":3,"file":"chunks/3eeead5673c577.js","mappings":"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","sources":["webpack:///./resources/js/react/cms-components/careers/careersConfig.ts","webpack:///./resources/js/react/cms-components/careers/careersUtils.ts","webpack:///./resources/js/react/cms-components/careers/JobListings.tsx","webpack:///./resources/js/react/cms-components/careers/FilterSet.tsx","webpack:///./resources/js/react/cms-components/careers/Careers.tsx"],"sourcesContent":["// here is a rundown of the logic for how jobs are categorized:\n// https://hello.atlassian.net/wiki/spaces/HR/pages/359990125/Career+Site+Job+Aid\n\n// this data originates from our 3rd party recruiting platform Lever\n// but is cached in Magnolia and delivered via our own endpoint at /.rest/postings\n\n// options for filtering by team on the 'all jobs' page\n// also each team has it's own page\nconst TEAMS = {\n ANALYTICS_AND_DATA_SCIENCE: 'Analytics & Data Science',\n CUSTOMER_EXPERIENCE: 'Customer Experience',\n ENGINEERING: 'Engineering',\n MARKETING: 'Marketing',\n PRODUCT_MANAGEMENT: 'Product Management',\n PROGRAM_MANAGEMENT: 'Program Management',\n SUPPORT: 'Support',\n GRADUATES: 'Graduates',\n SECURITY_ENGINEERING: 'Security',\n SRE: 'Site Reliability Engineering',\n IT: 'IT',\n PEOPLE: 'People',\n FINANCE_AND_ACCOUNTING: 'Finance & Accounting',\n SALES: 'Sales',\n LEGAL: 'Legal',\n INTERNS: 'Interns',\n OTHER: 'Other',\n};\n\n// for the pages that show a single team listings use a separate array that includes\n// 'Associate Product Manager' because it is not really a 'team' but has it's own page\nconst TEAMS_INDIVIDUAL_PAGE = {\n ...TEAMS\n};\n\n// options for filtering by location on the 'all jobs' page\n// also each location has it's own page\nconst LOCATIONS = [\n \"Amsterdam\", \n \"Ankara\", \n \"Austin\", \n \"Bengaluru\", \n \"Boston\",\n \"Georgetown\", \n \"Manila\", \n \"Mountain View\", \n \"New York\", \n \"San Francisco\", \n \"Sydney\", \n \"Yokohama\"\n];\n\nconst REGIONS = [\n \"Australia\",\n \"New Zealand\",\n \"France\",\n \"Germany\",\n \"India\",\n \"Japan\",\n \"Netherlands\",\n \"Poland\",\n \"Philippines\",\n \"Turkey\",\n \"United Kingdom\",\n \"Canada\",\n \"United States\"\n];\n\nconst is = test => value => ({\n result: test === value,\n logMessage: `matches '${test}'`\n});\n\n/**\n * \n * @param {array} testArray Array of test values\n * @returns {function} takes in a value to return an object\n */\nconst isInArray = testArray => value => ({\n result: testArray.map((x) => x.toLowerCase()).includes(value.trim().toLowerCase()),\n logMessage: `value of '${value}' is included in test array '${testArray}'`\n});\n\nconst CAREERS_CONFIG = {\n ['categories.team']: {\n [TEAMS.ANALYTICS_AND_DATA_SCIENCE]: is('Analytics & Data Science'),\n [TEAMS.CUSTOMER_EXPERIENCE]: is('Customer Experience'),\n [TEAMS.ENGINEERING]: is('Engineering'),\n [TEAMS.MARKETING]: is('Marketing'),\n [TEAMS.PRODUCT_MANAGEMENT]: is('Product Management'),\n [TEAMS.PROGRAM_MANAGEMENT]: is('Program Management'),\n [TEAMS.SUPPORT]: isInArray(['Support (CSS)', 'CSS', 'Support']),\n [TEAMS.GRADUATES]: is('Graduates'),\n [TEAMS.SECURITY_ENGINEERING]: is('Security'),\n [TEAMS.SRE]: is('SRE'),\n [TEAMS.IT]: is('IT'),\n [TEAMS.PEOPLE]: is('People'),\n [TEAMS.FINANCE_AND_ACCOUNTING]: is('Finance & Accounting'),\n [TEAMS.SALES]: is('Sales'),\n [TEAMS.LEGAL]: is('Legal'),\n [TEAMS.INTERNS]: is('Interns'),\n }\n};\n\nexport { CAREERS_CONFIG, TEAMS, TEAMS_INDIVIDUAL_PAGE, LOCATIONS, REGIONS };","import {\n CAREERS_CONFIG,\n TEAMS,\n TEAMS_INDIVIDUAL_PAGE,\n REGIONS\n} from \"./careersConfig\";\n\nconst getURLParamSet = set => escape(Array.from(set.values()).join(\",\"));\n\nconst updateURLParams = (team, location, search) => {\n window.history.replaceState(\n null,\n document.title,\n `?team=${getURLParamSet(team)}` +\n `&location=${getURLParamSet(location)}` +\n `&search=${search}`\n );\n}\n\nconst escapeRegExpKeyword = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst getFilteredPostingsState = ({\n searchStr,\n allTeams,\n postingIdsByTeam,\n team: selectedTeamFilters,\n location: selectedLocationFilters,\n postingsById,\n searchTextById\n}) => {\n const uniqueIds = new Set();\n const newFilteredPostingIdsByTeam = {};\n\n allTeams\n .filter(filter => checkFilter(selectedTeamFilters, filter))\n .forEach(\n team =>\n postingIdsByTeam[team] &&\n postingIdsByTeam[team].forEach(id => {\n const { locationCountry: postingLocationCountry, tags: regionList } = postingsById[id];\n\n let isCheckFilter = false;\n // check if the selected filter is one of the values in tags\n regionList.forEach((regionTag) => {\n isCheckFilter = isCheckFilter || checkFilter(selectedLocationFilters, regionTag);\n });\n // just in case tags doesn't exist check to see if the posting location matches\n isCheckFilter = isCheckFilter || checkFilter(selectedLocationFilters, postingLocationCountry);\n\n const match =\n isCheckFilter &&\n (!searchStr ||\n searchStr\n .trim()\n .split(\" \")\n .some(keyword =>\n searchTextById.get(id).match(new RegExp(escapeRegExpKeyword(keyword), \"i\"))\n ));\n\n if (match) {\n uniqueIds.add(id);\n\n newFilteredPostingIdsByTeam[team]\n ? newFilteredPostingIdsByTeam[team].push(id)\n : (newFilteredPostingIdsByTeam[team] = [id]);\n }\n })\n );\n\n return {\n numSearchResults: uniqueIds.size,\n filteredPostingIdsByTeam: newFilteredPostingIdsByTeam\n };\n};\n\n// log each time a job is categorized and why\nlet logJobCategorizations = false;\n\n// given a dot delimited path and a JS object return the child object (if it exists),\n// for example the 'costcenter' object from \"requisition.customfields.costcenter\"\nconst getObjFromPath = (path, src) => {\n let pathParts = path.split(\".\");\n do {\n src = src[pathParts.shift()];\n } while (pathParts.length && src);\n\n return src;\n};\n\n// use the careers config object to determine which teams each job should be categorized under\nconst getTeamsToAdd = (posting, teamsList) =>\n Object.keys(CAREERS_CONFIG).reduce((addedTeams, path) => {\n const teamMap = CAREERS_CONFIG[path];\n const testValue = getObjFromPath(path, posting);\n\n if (testValue)\n for (let teamKey of Object.keys(teamMap)) {\n if (!teamsList.includes(teamKey)) return addedTeams; // only include teams we are actually showing\n\n const { result, logMessage } = teamMap[teamKey](testValue, posting);\n if (result) {\n if (logJobCategorizations)\n \n logTableData.push({\n id: posting.id,\n title: posting.text,\n team: teamKey,\n reason:\n `${path.slice(path.lastIndexOf(\".\") + 1)} ` +\n `is '${testValue}' ${logMessage}`\n });\n\n addedTeams = addedTeams.concat(teamKey);\n }\n }\n\n return addedTeams;\n }, []);\n\nconst getFilterMap = (filterKeys, filterValues) =>\n filterKeys.reduce(\n (filterMap, filterKey) => ({\n ...filterMap,\n [filterKey]: filterValues.has(filterKey)\n }),\n {}\n );\n\nconst checkFilter = (filterSet, filter) =>\n filterSet.size === 0 || filterSet.has(filter);\n\nconst splitAddToSet = (set, valuesStr) =>\n valuesStr && valuesStr.split(\",\").forEach(value => set.add(value));\n\n// for displaying number of postings in each filter category (both locations and teams)\nconst numPostingsByFilter = new Map();\nREGIONS.forEach(region => numPostingsByFilter.set(region, 0));\n\nconst addToFilterCount = filterKey =>\n numPostingsByFilter.set(\n filterKey,\n (numPostingsByFilter.get(filterKey) || 0) + 1\n );\n\n// add job to a team if it has not already been added\nconst addIdToTeam = (team, id, idsByTeam) => {\n const existingTeamList = idsByTeam[team];\n const exists = existingTeamList && existingTeamList.includes(id);\n\n if (existingTeamList && !exists) existingTeamList.push(id);\n else if (!existingTeamList) idsByTeam[team] = [id];\n\n if (!exists) addToFilterCount(team);\n};\n\n// store job categorization data if logging is enabled\nconst logTableData = [];\n\n// build map of posting id to text to search on\nconst searchTextById = new Map();\n\n// categorize jobs by team while assembling list of teams and locations\nconst processJobPostings = (\n postings,\n filterToTeam,\n filterToLocation,\n debug\n) => {\n const postingsById = {};\n const postingIdsByTeam = {};\n\n const allLocations = REGIONS.slice();\n\n const teamsMap = filterToTeam ? TEAMS_INDIVIDUAL_PAGE : TEAMS;\n const teamsList = Object.keys(teamsMap).map(key => teamsMap[key]);\n const allTeams = new Set(teamsList);\n\n logJobCategorizations = !!debug;\n\n postings.forEach(posting => {\n const [city, country] = posting.categories.location.split(\",\");\n const location = city;\n const locationCountry = country ? country.trim() : '';\n const tags = posting.tags;\n posting.location = location;\n posting.locationCountry = locationCountry;\n\n // if this is a location page we should not list teams that have no jobs at the location\n const addTeamToAllTeams =\n !filterToLocation || location === filterToLocation;\n\n const teamsToAdd = getTeamsToAdd(posting, teamsList);\n const lowerCasedTeamToAdd = teamsToAdd.map((team: string) => team.trim().toLowerCase());\n const nonNullFilterToTeam = filterToTeam ?? '';\n\n // if this is a team page we should not list locations that don't have jobs for this team\n nonNullFilterToTeam.split(\",\").forEach((filterTeamItem: string) => {\n const lowerCasedAndTrimedFilterTeamItem = filterTeamItem.trim().toLowerCase();\n if (!lowerCasedAndTrimedFilterTeamItem || lowerCasedTeamToAdd.includes(lowerCasedAndTrimedFilterTeamItem)) {\n\n addToFilterCount(locationCountry);\n tags.forEach((tagItem) => {\n const listOfJobCategories = Object.values(TEAMS).map(team => team.toLocaleLowerCase());\n const isJobCategory = listOfJobCategories.includes(tagItem.toLowerCase());\n // Need to avoid adding duplicates\n if (tagItem != locationCountry && !isJobCategory) {\n addToFilterCount(tagItem);\n }\n });\n }\n });\n \n // if there no teams for this job to be added to add it the 'Other' team\n const id = posting.id;\n (teamsToAdd.length ? teamsToAdd : [TEAMS.OTHER]).forEach(team => {\n if (logJobCategorizations && team === TEAMS.OTHER)\n logTableData.push({\n id,\n title: posting.text,\n team: TEAMS.OTHER,\n reason: posting.requisition\n ? \"has requisition but meets no criteria\"\n : \"has no requisition and meets no other criteria\"\n });\n\n // use the textContent property of an HTMLElement to strip HTML tags\n const listsEl = document.createElement(\"div\");\n listsEl.innerHTML = posting.content.lists\n .map(({ content }) => content)\n .join(\" \");\n\n const listsText = Array.from(listsEl.childNodes).reduce(\n (outputText, { textContent }) => `${outputText} ${textContent}`,\n \"\"\n );\n\n const searchText = `${posting.text} ${\n posting.content.description\n } ${listsText}`;\n\n searchTextById.set(id, searchText.replace(\"(\\n\", \" \"));\n\n addIdToTeam(team, id, postingIdsByTeam);\n if (addTeamToAllTeams) {\n allTeams.add(team);\n }\n });\n\n postingsById[id] = posting;\n });\n\n if (logJobCategorizations) {\n console.groupCollapsed(\"job postings raw data\");\n Object.keys(postingsById).forEach(postingId => {\n console.groupCollapsed(postingId);\n console.dir(postingsById[postingId]);\n console.groupEnd();\n });\n console.groupEnd();\n\n console.group(\"job postings categorization table\");\n console.table(\n logTableData.sort(({ team: teamA }, { team: teamB }) =>\n teamA < teamB ? -1 : 1\n )\n );\n console.groupEnd();\n }\n\n return {\n postingsById,\n postingIdsByTeam,\n numPostingsByFilter,\n searchTextById,\n\n allLocations: allLocations.sort(),\n allTeams: [...allTeams].sort()\n };\n};\n\nexport {\n updateURLParams,\n getFilteredPostingsState,\n processJobPostings,\n getFilterMap,\n checkFilter,\n splitAddToSet\n};\n","import React, { Component } from \"react\";\n\nconst KEY_POSITION_SORT = \"text\";\nconst KEY_LOCATION_SORT = \"location\";\n\nconst timeZoneMap = {\n pt: 'America/Los_Angeles',\n ct: 'America/Chicago',\n et: 'America/New_York'\n}\n\nconst listOfModfiedTags = [\n 'remote pt',\n 'remote ct',\n 'remote et'\n]\n\nclass JobListings extends Component {\n constructor(props) {\n super(props);\n\n this.setSort = this.setSort.bind(this);\n this.getSortClass = this.getSortClass.bind(this);\n\n this.state = {\n sortOnKey: KEY_LOCATION_SORT,\n sortDir: 1\n };\n }\n\n setSort(sortOnKey) {\n this.setState({\n sortOnKey,\n sortDir: sortOnKey === this.state.sortOnKey ? this.state.sortDir * -1 : 1\n });\n }\n\n getSortClass(key) {\n return this.state.sortOnKey === key\n ? this.state.sortDir === 1\n ? \"asc\"\n : \"desc\"\n : \"\";\n }\n\n getRemoteTag(tags) {\n const isRemoteEligible = tags.filter(tag => tag.trim().toLowerCase().includes('remote'));\n const remoteTag = isRemoteEligible.length > 0 \n ? this.getModifiedRemoteTag(isRemoteEligible[0])\n : '';\n return remoteTag;\n }\n\n getModifiedRemoteTag(tag) {\n let returnTagText = tag;\n const isTimeZoneSpecific = listOfModfiedTags.includes(tag.trim().toLowerCase());\n if (isTimeZoneSpecific) {\n const timeZoneOptionKey = tag.split(\" \")[1].trim().toLowerCase();\n const dateTimeTimeZone = new Intl.DateTimeFormat('en-US', {\n timeZone: timeZoneMap[timeZoneOptionKey],\n timeZoneName: 'short'\n }).formatToParts(new Date())\n .filter(dateTimeParts => dateTimeParts.type === \"timeZoneName\");\n if(dateTimeTimeZone) {\n const timeZoneAbbre = dateTimeTimeZone[0].value;\n returnTagText = `Remote ${timeZoneAbbre}`;\n }\n }\n return ` or ${returnTagText}`;\n }\n\n render() {\n const { team, postings } = this.props;\n const { sortOnKey, sortDir } = this.state;\n\n return (\n postings.length != 0 && (\n
this.setSort(key)}\n >\n {label}\n | \n ))}\n|
---|---|
\n {text}\n | \n{location}{remoteText} | \n
{numSearchResults} results
\n this.onSearchChange(e.target.value)}\n onClick={e => e.target.select()}\n value={searchStr}\n />\n