{"version":3,"file":"chunks/Careers.4740.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 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\n // if this is a team page we should not list locations that don't have jobs for this team\n if (!filterToTeam || teamsToAdd.includes(filterToTeam)) {\n\n addToFilterCount(locationCountry);\n tags.forEach((tagItem) => {\n // Need to avoid adding duplicates\n if (tagItem != locationCountry) {\n addToFilterCount(tagItem);\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
\n Select the function and where you're eligible to work today, to see Remote eligible roles in your area.
\n Atlassian can hire people in any country where we have a legal entity, assuming candidates have eligible working rights, and a sufficient timezone overlap with their team. As our offices re-open, Atlassians can choose to work remotely or return to an office, unless it's necessary for the role to be performed in the office.\n
{numSearchResults} results
\n this.onSearchChange(e.target.value)}\n onClick={e => e.target.select()}\n value={searchStr}\n />\n