{"version":3,"sources":["webpack:///./apps/jump-to/webservice/genericSearch.js","webpack:///./apps/jump-to/components/JumpToInput.js","webpack:///./apps/jump-to/components/Hint.js","webpack:///./apps/jump-to/helpers.js","webpack:///./apps/jump-to/sitenavData.js","webpack:///./apps/jump-to/JumpTo.js","webpack:///./apps/jump-to/getLogonProfile.js","webpack:///./apps/jump-to/index.js","webpack:///./hooks/useDebounce.js"],"names":["genericSearch","keyword","a","axios","get","res","data","console","error","LargerInput","styled","Autocomplete","Input","PrefixBoxStyled","TextFieldStyled","JumpToInput","forwardRef","ref","withFocus","props","prefixContent","propTypes","PropTypes","bool","isRequired","Instructions","Box","KeyboardHint","DropdownHint","SearchTypeWrapper","SearchType","span","Key","Hint","hasText","p","mb","pr","window","navigator","platform","includes","groupedMap","list","key","reduce","entryMap","e","set","Map","DOMAINS_WITHOUT_EXPENSE","USER_TYPE","traveler","admin","ACCOUNT_LEVEL","JUMP_TO_TYPE","Dropdown","Wrapper","div","ZINDEX","POPOVER","SearchWrapper","NoResults","GreyPalette","JumpTo","themeName","getLogonProfile","useState","results","setResults","setWithFocus","userData","updateUserData","navData","updateNavData","isWaiting","setIsWaiting","setIsWaitingWithTimeout","isWait","setTimeout","setWithFocusOn","setWithFocusOff","useEffect","then","viewSettings","accountLevel","pathname","search","host","navReportsLevel","reportsPermissionAdminOnly","reportsPermissionAdminOrTraveler","dataType","document","location","navReports","type","title","url","metadata","keywords","isActive","isVisible","sectionTitle","navFlights","navHotels","navCars","indexOf","navMyTrips","navMeetingInvites","navExpenseReports","navTravelerDashboard","navMeetingManage","navUsers","navApproveTrips","navCompanySettings","navTravelPolicy","navMyProfile","newWindow","category","filter","item","err","InputEl","useRef","useHotkeys","preventDefault","stopPropagation","current","focus","filterPreventDefault","inputChangeHandler","val","filteredItems","length","toLocaleLowerCase","concat","jumpToItem","bookForList","some","bookPerson","nameNum","useDebounce","debouncedText","inputText","setInputText","regexHtmlTags","Medium","labelKey","items","onInputValueChange","txt","itemToString","onChange","t","sanitizedURL","replace","open","href","defaultHighlightedIndex","defaultSelectedItem","dsProps","ddProps","getInputProps","getItemProps","isOpen","highlightedIndex","resolvedSelectedItem","selectedItem","undefined","mappedResults","slice","numberOfSiteNavigation","numberOfResultsProfiles","numberOfKnowledgeBase","matchedNav","has","SectionTitle","Options","map","index","highlighted","Option","isSelected","subtitle","matchedProfiles","adjustedIndex","OptionPerson","initials","imgUrl","profileImageUrl","matchedKnowledgeBase","matchedBookings","description","lastName","id","placeholder","onKeyDown","nativeEvent","preventDownshiftDefault","target","blur","autoComplete","value","onFocus","onBlur","string","func","process","intervalId","resolveLogonProfile","rejectLogonProfile","payload","eventListener","theme","querySelector","dataset","ReactDOM","render","Promise","resolve","reject","setInterval","clearInterval","getElementById","callback","delay","newValue","setNewValue","debouncedValue","setDebouncedValue","handler","clearTimeout"],"mappings":"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","file":"jump-to.bundle.js","sourcesContent":["import axios from 'axios';\r\n\r\nexport const genericSearch = async (keyword) => {\r\n try {\r\n const res = await axios.get(`/api/v1/genericsearch?keyword=${keyword}`);\r\n return res.data;\r\n } catch (err) {\r\n console.error(err);\r\n throw err;\r\n }\r\n};\r\n","import React, { forwardRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { TextFieldStyled, Autocomplete, PrefixBoxStyled } from '@amtrav/view-components';\r\n\r\nconst LargerInput = styled(Autocomplete.Input)`\r\n font-size: 15px;\r\n background: white;\r\n\r\n ${PrefixBoxStyled} {\r\n font-size: 14px;\r\n padding: 0 12px 0 4px;\r\n }\r\n\r\n ${TextFieldStyled} {\r\n line-height: 1.6;\r\n padding-left: 0;\r\n }\r\n`;\r\n\r\n// forwardRef is needed to that we can access the native input from TextInput\r\nconst JumpToInput = forwardRef(({ withFocus, ...props }, ref) => {\r\n return : null} {...props} />;\r\n});\r\n\r\nJumpToInput.propTypes = {\r\n withFocus: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default JumpToInput;\r\n","import React from 'react';\r\nimport { Box } from '@rebass/grid';\r\nimport styled from 'styled-components';\r\nimport PropTypes from 'prop-types';\r\nimport { Autocomplete } from '@amtrav/view-components';\r\n\r\nconst Instructions = styled(Box)`\r\n font-size: 14px;\r\n opacity: 0.6;\r\n`;\r\n\r\nconst KeyboardHint = styled(Autocomplete.DropdownHint)`\r\n padding: 8px 16px;\r\n margin: 24px -16px -16px;\r\n`;\r\n\r\nconst SearchTypeWrapper = styled(Box)`\r\n overflow: hidden;\r\n`;\r\n\r\nconst SearchType = styled.span`\r\n border: 1px solid #ddd;\r\n display: inline-flex;\r\n padding: 6px;\r\n border-radius: 4px;\r\n white-space: nowrap;\r\n`;\r\n\r\nconst Key = styled.span`\r\n display: inline-block;\r\n padding: 3px 5px;\r\n color: black;\r\n vertical-align: middle;\r\n background-color: #fff;\r\n border-bottom-color: #bbb;\r\n border: 1px solid #bbb;\r\n border-radius: 6px;\r\n box-shadow: inset 0 -1px 0 #bbb;\r\n margin: 0 3px 0;\r\n min-width: 24px;\r\n text-align: center;\r\n`;\r\n\r\nconst Hint = ({ hasText = false }) => (\r\n \r\n {hasText ? 'Continue' : 'Begin'} typing to...\r\n \r\n navigate to a page\r\n \r\n \r\n search the knowledge base\r\n \r\n \r\n go to a person's profile\r\n \r\n \r\n look up a booking number\r\n \r\n \r\n \r\n Open Quick search with\r\n \r\n {window.navigator.platform.includes('Mac') ? : Ctrl} + K\r\n \r\n \r\n);\r\n\r\nHint.propTypes = {\r\n hasText: PropTypes.bool,\r\n};\r\n\r\nexport default Hint;\r\n","// https://stackoverflow.com/a/47752730/5627920\r\nexport const groupedMap = (list, key) => {\r\n return list.reduce((entryMap, e) => entryMap.set(e[key], [...(entryMap.get(e[key]) || []), e]), new Map());\r\n};\r\n\r\nexport default { groupedMap };\r\n","const DOMAINS_WITHOUT_EXPENSE = [\r\n 'ea.amtrav.com',\r\n 'certify.amtrav.com',\r\n 'certifydemo.amtrav.com',\r\n 'sutisoft.amtrav.com',\r\n];\r\n\r\nconst USER_TYPE = {\r\n traveler: 'T',\r\n admin: 'A',\r\n};\r\n\r\nconst ACCOUNT_LEVEL = { premium: 4 };\r\n\r\nexport default (viewSettings, accountLevel) => {\r\n const { pathname, search } = document.location;\r\n const { host } = window.location;\r\n const { navReports: navReportsLevel } = viewSettings;\r\n const reportsPermissionAdminOnly = USER_TYPE.admin === navReportsLevel;\r\n const reportsPermissionAdminOrTraveler = [USER_TYPE.admin, USER_TYPE.traveler].includes(navReportsLevel);\r\n const dataType = 'SiteNav';\r\n return [\r\n {\r\n type: dataType,\r\n title: 'Home',\r\n url: '/',\r\n metadata: {\r\n keywords: 'home, homepage',\r\n isActive: false,\r\n isVisible: true,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Flights & Rail',\r\n url: '/flights/',\r\n metadata: {\r\n sectionTitle: 'Go',\r\n keywords: 'flights, rail, search, go',\r\n isActive: pathname.includes('/flights'),\r\n isVisible: viewSettings.navFlights,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Hotels',\r\n url: '/hotels/',\r\n metadata: {\r\n sectionTitle: 'Go',\r\n keywords: 'hotels, search, go',\r\n isActive: pathname.includes('/hotels'),\r\n isVisible: viewSettings.navHotels,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Cars',\r\n url: '/cars/',\r\n metadata: {\r\n sectionTitle: 'Go',\r\n keywords: 'cars, search, go',\r\n isActive: pathname.includes('/cars'),\r\n isVisible: viewSettings.navCars,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Trips',\r\n url: '/trips/',\r\n metadata: {\r\n sectionTitle: 'See',\r\n keywords: 'trips, bookings',\r\n isActive: pathname.includes('/trips') && search.indexOf('approve:!') === -1,\r\n isVisible: viewSettings.navMyTrips,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Invites',\r\n url: '/invites/',\r\n metadata: {\r\n sectionTitle: 'See',\r\n keywords: 'invites, meeting',\r\n isActive: pathname.includes('/invites'),\r\n isVisible: viewSettings.navMeetingInvites,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Expense Reports',\r\n url: '/expenses/',\r\n metadata: {\r\n sectionTitle: 'See',\r\n keywords: 'expenses, receipt',\r\n isActive: pathname.includes('/expenses'),\r\n isVisible: viewSettings.navExpenseReports && DOMAINS_WITHOUT_EXPENSE.indexOf(host) === -1,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Unused Tickets',\r\n url: '/reports/?jsr=(historyReportId:7)',\r\n metadata: {\r\n sectionTitle: 'See',\r\n keywords: 'unused, tickets',\r\n isActive: search.indexOf('historyReportId:7') !== -1,\r\n isVisible:\r\n (viewSettings.navTravelerDashboard && viewSettings.navReports === USER_TYPE.traveler) ||\r\n viewSettings.navReports === USER_TYPE.admin,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Travel Reports',\r\n url: '/reports/',\r\n metadata: {\r\n sectionTitle: 'See',\r\n keywords: 'travel, reports, dashboard',\r\n isActive: pathname.includes('/reports') && search.indexOf('historyReportId:7') === -1,\r\n isVisible:\r\n (viewSettings.navTravelerDashboard && viewSettings.navReports === USER_TYPE.traveler) ||\r\n viewSettings.navReports === USER_TYPE.admin,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Tracking & Safety',\r\n url: '/safety/?jsr=(dt:1,historyReportId:61)',\r\n metadata: {\r\n sectionTitle: 'See',\r\n keywords: 'tracking, safety, reports, dashboard',\r\n isActive: pathname.includes('/safety'),\r\n isVisible: viewSettings.navReports === USER_TYPE.admin,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Meetings',\r\n url: '/gather/',\r\n metadata: {\r\n sectionTitle: 'Gather',\r\n keywords: 'meetings, gather, travel',\r\n isActive: pathname.includes('/gather'),\r\n isVisible: viewSettings.navMeetingManage,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Guest Travel',\r\n url: '/gather/',\r\n metadata: {\r\n sectionTitle: 'Gather',\r\n keywords: 'guest, meetings, gather, travel',\r\n isActive: false,\r\n isVisible: viewSettings.navMeetingManage,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'People',\r\n url: '/users/',\r\n metadata: {\r\n sectionTitle: 'Manage',\r\n keywords: 'people, team, users',\r\n isActive: pathname.includes('/users'),\r\n isVisible: viewSettings.navUsers,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Approvals',\r\n url: '/trips/?jsr=(approve:!t)',\r\n metadata: {\r\n sectionTitle: 'Manage',\r\n keywords: 'approvals, trips',\r\n isActive: pathname.includes('/trips') && search.indexOf('approve:!') !== -1,\r\n isVisible: viewSettings.navApproveTrips,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Company Settings',\r\n url: '/account/',\r\n metadata: {\r\n sectionTitle: 'Manage',\r\n keywords: 'company, settings',\r\n isActive: pathname.includes('/account'),\r\n isVisible: viewSettings.navCompanySettings,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Travel Policy',\r\n url: '/policies/',\r\n metadata: {\r\n sectionTitle: 'Manage',\r\n keywords: 'travel, policy',\r\n isActive: pathname.includes('/policies'),\r\n isVisible: viewSettings.navTravelPolicy,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'My Profile',\r\n url: '/profile/',\r\n metadata: {\r\n keywords: 'my, profile',\r\n isActive: false,\r\n isVisible: viewSettings.navMyProfile,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'COVID Resource Center',\r\n url: '/resource-center',\r\n metadata: {\r\n keywords: 'covid, resource center',\r\n isActive: false,\r\n isVisible: true,\r\n newWindow: true,\r\n },\r\n },\r\n // travel report links\r\n {\r\n type: dataType,\r\n title: 'Dashboard',\r\n url: '/reports/?jsr=(historyReportId:11)',\r\n metadata: {\r\n category: 'Travel Reports / Overview',\r\n keywords: 'travel report, overview, dashboard',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Trip Success',\r\n url: '/reports/?jsr=(historyReportId:12)',\r\n metadata: {\r\n category: 'Travel Reports / Overview',\r\n keywords: 'travel report, overview, trip success',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'CO2 Report',\r\n url: '/reports/?jsr=(historyReportId:13)',\r\n metadata: {\r\n category: 'Travel Reports / Overview',\r\n keywords: 'travel report, overview, co2 report',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Total Trip',\r\n url: '/reports/?jsr=(historyReportId:24)',\r\n metadata: {\r\n category: 'Travel Reports / Spend',\r\n keywords: 'travel reports, spend, total trip',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Other',\r\n url: '/reports/?jsr=(historyReportId:25)',\r\n metadata: {\r\n category: 'Travel Reports / Spend',\r\n keywords: 'travel reports, spend, other',\r\n isVisible: reportsPermissionAdminOnly,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Fees',\r\n url: '/reports/?jsr=(historyReportId:26)',\r\n metadata: {\r\n category: 'Travel Reports / Spend',\r\n keywords: 'travel reports, spend, fees',\r\n isVisible: reportsPermissionAdminOnly,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Monthly',\r\n url: '/reports/?jsr=(historyReportId:27)',\r\n metadata: {\r\n category: 'Travel Reports / Spend',\r\n keywords: 'travel reports, spend, monthly',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Credit Card Reconciliation',\r\n url: '/reports/?jsr=(historyReportId:28)',\r\n metadata: {\r\n category: 'Travel Reports / Spend',\r\n keywords: 'travel reports, spend, credit card reconciliation',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Booked Vs Actual',\r\n url: '/reports/?jsr=(historyReportId:29)',\r\n metadata: {\r\n category: 'Travel Reports / Spend',\r\n keywords: 'travel reports, spend, booked vs actual',\r\n isVisible: reportsPermissionAdminOnly,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Air Spend',\r\n url: '/reports/?jsr=(historyReportId:31)',\r\n metadata: {\r\n category: 'Travel Reports / Air',\r\n keywords: 'travel reports, air, air spend',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Air Ticket',\r\n url: '/reports/?jsr=(historyReportId:32)',\r\n metadata: {\r\n category: 'Travel Reports / Air',\r\n keywords: 'travel reports, air, air ticket',\r\n isVisible: reportsPermissionAdminOnly,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Airline',\r\n url: '/reports/?jsr=(historyReportId:33)',\r\n metadata: {\r\n category: 'Travel Reports / Air',\r\n keywords: 'travel reports, air, airline',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Air City Pair',\r\n url: '/reports/?jsr=(historyReportId:34)',\r\n metadata: {\r\n category: 'Travel Reports / Air',\r\n keywords: 'travel reports, air, air city pair',\r\n isVisible: reportsPermissionAdminOnly,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Car Spend',\r\n url: '/reports/?jsr=(historyReportId:41)',\r\n metadata: {\r\n category: 'Travel Reports / Car',\r\n keywords: 'travel reports, car, car spend',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Car Vendor',\r\n url: '/reports/?jsr=(historyReportId:42)',\r\n metadata: {\r\n category: 'Travel Reports / Car',\r\n keywords: 'travel reports, car, car vendor',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Hotel Spend',\r\n url: '/reports/?jsr=(historyReportId:51)',\r\n metadata: {\r\n category: 'Travel Reports / Hotel',\r\n keywords: 'travel reports, hotel, hotel spend',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Hotel Chain',\r\n url: '/reports/?jsr=(historyReportId:52)',\r\n metadata: {\r\n category: 'Travel Reports / Hotel',\r\n keywords: 'travel reports, hotel, hotel chain',\r\n isVisible: reportsPermissionAdminOrTraveler,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Traveler Activity',\r\n url: '/reports/?jsr=(historyReportId:64)',\r\n metadata: {\r\n category: 'Travel Reports / Travelers',\r\n keywords: 'travel reports, travelers, traveler activity',\r\n isVisible: reportsPermissionAdminOnly,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Registered Traveler',\r\n url: '/reports/?jsr=(historyReportId:65)',\r\n metadata: {\r\n category: 'Travel Reports / Travelers',\r\n keywords: 'travel reports, travelers, registered traveler',\r\n isVisible: reportsPermissionAdminOnly,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Policy Compliance Summary',\r\n url: '/reports/?jsr=(historyReportId:81)',\r\n metadata: {\r\n category: 'Travel Reports / Compliance',\r\n keywords: 'travel reports, compliance, policy compliance summary',\r\n isVisible: reportsPermissionAdminOnly,\r\n },\r\n },\r\n {\r\n type: dataType,\r\n title: 'Out of Policy Log',\r\n url: '/reports/?jsr=(historyReportId:82)',\r\n metadata: {\r\n category: 'Travel Reports / Compliance',\r\n keywords: 'travel reports, compliance, out of policy log',\r\n isVisible: accountLevel === ACCOUNT_LEVEL.premium,\r\n },\r\n },\r\n ];\r\n};\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { hot } from 'react-hot-loader/root';\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { Box } from '@rebass/grid';\r\nimport { ThemeSystemProvider } from '@amtrav/theme-system';\r\nimport { DynamicThemeProvider, ZINDEX, MatchMedia, GreyPalette } from '@amtrav/themes';\r\nimport { AutocompleteRenderer, FullPageOverlay, Autocomplete } from '@amtrav/view-components';\r\nimport { useHotkeys } from 'react-hotkeys-hook';\r\nimport { genericSearch } from './webservice/genericSearch';\r\nimport { useDebounce } from '../../hooks';\r\nimport JumpToInput from './components/JumpToInput';\r\nimport Hint from './components/Hint';\r\nimport { groupedMap } from './helpers';\r\nimport siteNavData from './sitenavData';\r\n\r\nconst JUMP_TO_TYPE = {\r\n profile: 'Profile',\r\n knowledgeBase: 'KnowledgeBase',\r\n siteNavigation: 'SiteNav',\r\n booking: 'Booking',\r\n};\r\n\r\nconst Dropdown = styled(Autocomplete.Dropdown)`\r\n position: unset;\r\n`;\r\n\r\nconst Wrapper = styled.div`\r\n position: relative;\r\n height: 40px;\r\n z-index: ${({ withFocus }) => (withFocus ? ZINDEX.POPOVER : 0)};\r\n width: 200px;\r\n box-shadow: ${({ withFocus }) =>\r\n withFocus ? '0 4px 20px 4px rgba(0, 20, 60, 0.1), 0 4px 80px -8px rgba(0, 20, 60, 0.2);' : 'none'};\r\n`;\r\n\r\nconst SearchWrapper = styled.div`\r\n position: absolute;\r\n width: ${({ withFocus }) => (withFocus ? '520px' : '200px')};\r\n z-index: ${ZINDEX.POPOVER};\r\n transition: width 0.2s;\r\n top: 0;\r\n right: 0;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst NoResults = styled(Box)`\r\n font-weight: bold;\r\n background: ${GreyPalette['200']};\r\n font-size: 15px;\r\n`;\r\n\r\nconst JumpTo = ({ themeName, getLogonProfile }) => {\r\n const [results, setResults] = useState([]);\r\n const [withFocus, setWithFocus] = useState(false);\r\n const [userData, updateUserData] = useState(null);\r\n const [navData, updateNavData] = useState([]);\r\n const [isWaiting, setIsWaiting] = useState(false);\r\n\r\n const setIsWaitingWithTimeout = (isWait) => {\r\n setTimeout(() => {\r\n setIsWaiting(isWait);\r\n }, 500);\r\n };\r\n\r\n const setWithFocusOn = () => {\r\n setWithFocus(true);\r\n };\r\n const setWithFocusOff = () => {\r\n setWithFocus(false);\r\n };\r\n\r\n useEffect(() => {\r\n getLogonProfile()\r\n .then((data) => {\r\n updateUserData(data);\r\n // navigation items are filtered so only applicable ones are shown to the user (isVisible flag)\r\n updateNavData(siteNavData(data?.viewSettings, data?.accountLevel).filter((item) => item?.metadata?.isVisible));\r\n })\r\n .catch((err) => {\r\n // eslint-disable-next-line no-console\r\n console.error(err);\r\n });\r\n }, [getLogonProfile]);\r\n\r\n const InputEl = useRef();\r\n\r\n useHotkeys(\r\n 'ctrl+k, command+k',\r\n (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n InputEl.current.focus();\r\n },\r\n {\r\n filterPreventDefault: false,\r\n },\r\n );\r\n\r\n const onChange = (t) => {\r\n setWithFocusOff();\r\n if (t?.url) {\r\n const sanitizedURL = t.url.replace(/'/g, '');\r\n\r\n if (t?.type === JUMP_TO_TYPE.knowledgeBase || t?.type === JUMP_TO_TYPE.booking || t?.metadata?.newWindow) {\r\n window.open(sanitizedURL, '_blank');\r\n } else {\r\n document.location.href = sanitizedURL;\r\n }\r\n }\r\n };\r\n\r\n const filterProfiles = (data) => {\r\n // Only return profiles that a user has permission to manage (i.e. are in the bookForList)\r\n return data.filter((jumpToItem) =>\r\n jumpToItem.type === JUMP_TO_TYPE.profile\r\n ? userData.bookForList.some((bookPerson) => bookPerson.nameNum === jumpToItem.metadata.nameNum)\r\n : true,\r\n );\r\n };\r\n\r\n const inputChangeHandler = (val) => {\r\n if (val) {\r\n genericSearch(val)\r\n .then((res) => {\r\n setIsWaitingWithTimeout(false);\r\n // navData need to be filtered with the input\r\n const filteredItems = navData\r\n .filter((item) => {\r\n return val.length >= 2 && item?.metadata?.keywords.toLocaleLowerCase().includes(val.toLocaleLowerCase());\r\n })\r\n .concat(filterProfiles(res?.results));\r\n\r\n setResults(filteredItems || []);\r\n })\r\n .catch((err) => {\r\n setIsWaitingWithTimeout(false);\r\n // eslint-disable-next-line no-console\r\n console.error(err);\r\n });\r\n } else {\r\n setResults([]);\r\n }\r\n };\r\n\r\n const [inputText, setInputText] = useDebounce(\r\n '',\r\n (debouncedText) => {\r\n inputChangeHandler(debouncedText);\r\n },\r\n 220,\r\n );\r\n\r\n /* We only want to send the first argument to setInputText(), otherwise React will\r\n throw an error \"Hooks don't support the second callback argument.\" This occurs because\r\n Downshift will blindly send all arguments to the callback from onInputValueChange. The \r\n solution is to wrap the call in another function only sending the first argument. */\r\n const onInputValueChange = (txt) => {\r\n setIsWaiting(true); // webservice call is made on each input value change\r\n return setInputText(txt);\r\n };\r\n\r\n const itemToString = () => '';\r\n\r\n const MAX_DISPLAYED_OPTIONS = 10;\r\n\r\n const regexHtmlTags = /(<([^>]+)>)/gi;\r\n\r\n // prevent JumpTo navigation from rendering if userData is empty\r\n if (!userData) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {(dsProps, ddProps) => {\r\n const { getInputProps, getItemProps, isOpen, highlightedIndex } = dsProps;\r\n const { selectedItem: ddSelectedItem } = ddProps;\r\n\r\n const resolvedSelectedItem = ddSelectedItem || undefined;\r\n\r\n // groupedMap will give us a JavaScript set to group the results by 'type'\r\n const mappedResults = groupedMap(results.slice(0, MAX_DISPLAYED_OPTIONS), 'type');\r\n\r\n const numberOfSiteNavigation = mappedResults.get(JUMP_TO_TYPE.siteNavigation)?.length || 0;\r\n const numberOfResultsProfiles = mappedResults.get(JUMP_TO_TYPE.profile)?.length || 0;\r\n const numberOfKnowledgeBase = mappedResults.get(JUMP_TO_TYPE.knowledgeBase)?.length || 0;\r\n\r\n const matchedNav = mappedResults.has(JUMP_TO_TYPE.siteNavigation) ? (\r\n <>\r\n Site Navigation\r\n \r\n {mappedResults.get(JUMP_TO_TYPE.siteNavigation).map((item, index) => {\r\n const highlighted = highlightedIndex === index;\r\n\r\n return (\r\n \r\n {item.title}\r\n \r\n );\r\n })}\r\n \r\n \r\n ) : null;\r\n\r\n const matchedProfiles = mappedResults.has(JUMP_TO_TYPE.profile) ? (\r\n <>\r\n People\r\n \r\n {mappedResults.get(JUMP_TO_TYPE.profile).map((item, index) => {\r\n // index needs to be offset by previous results\r\n const adjustedIndex = index + numberOfSiteNavigation;\r\n const highlighted = highlightedIndex === adjustedIndex;\r\n\r\n return (\r\n \r\n {item?.title}\r\n \r\n );\r\n })}\r\n \r\n \r\n ) : null;\r\n\r\n const matchedKnowledgeBase = mappedResults.has(JUMP_TO_TYPE.knowledgeBase) ? (\r\n <>\r\n Knowledge Base\r\n \r\n {mappedResults.get(JUMP_TO_TYPE.knowledgeBase).map((item, index) => {\r\n // index needs to be offset by previous results\r\n const adjustedIndex = index + numberOfSiteNavigation + numberOfResultsProfiles;\r\n const highlighted = highlightedIndex === adjustedIndex;\r\n\r\n return (\r\n \r\n {item.title.replace(regexHtmlTags, '')}\r\n \r\n );\r\n })}\r\n \r\n \r\n ) : null;\r\n\r\n const matchedBookings = mappedResults.has(JUMP_TO_TYPE.booking) ? (\r\n <>\r\n Bookings\r\n \r\n {mappedResults.get(JUMP_TO_TYPE.booking).map((item, index) => {\r\n // index needs to be offset by previous results\r\n const adjustedIndex =\r\n index + numberOfSiteNavigation + numberOfResultsProfiles + numberOfKnowledgeBase;\r\n const highlighted = highlightedIndex === adjustedIndex;\r\n\r\n return (\r\n \r\n {item.description.replace(regexHtmlTags, '')}\r\n \r\n );\r\n })}\r\n \r\n \r\n ) : null;\r\n\r\n return (\r\n <>\r\n {withFocus ? : null}\r\n \r\n {\r\n if (key === 'Home' || key === 'End') {\r\n // eslint-disable-next-line no-param-reassign\r\n nativeEvent.preventDownshiftDefault = true;\r\n }\r\n if (key === 'Escape') {\r\n // eslint-disable-next-line no-param-reassign\r\n nativeEvent?.target?.blur();\r\n }\r\n },\r\n autoComplete: 'off',\r\n value: inputText,\r\n onFocus: setWithFocusOn,\r\n onBlur: setWithFocusOff,\r\n withFocus,\r\n isOpen,\r\n })}\r\n ref={InputEl}\r\n />\r\n {isOpen && results.length && withFocus ? (\r\n \r\n {matchedNav}\r\n {matchedProfiles}\r\n {matchedKnowledgeBase}\r\n {matchedBookings}\r\n \r\n ) : null}\r\n {results.length === 0 && withFocus ? (\r\n \r\n {inputText.length >= 4 && !isWaiting ? (\r\n No results matched your search\r\n ) : null}\r\n 0} />\r\n \r\n ) : null}\r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nJumpTo.propTypes = {\r\n themeName: PropTypes.string.isRequired,\r\n getLogonProfile: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default process.env.USE_HMR ? hot(JumpTo) : JumpTo;\r\n","let resolveLogonProfile = false;\r\nlet rejectLogonProfile = false;\r\nlet payload = null;\r\nlet intervalId;\r\n\r\nwindow.eventListener(document, 'ATS_LOGON_PROFILE_SUCCESS', (data) => {\r\n payload = data;\r\n resolveLogonProfile = true;\r\n});\r\n\r\nwindow.eventListener(document, 'ATS_LOGON_PROFILE_FAILED', (error) => {\r\n payload = error;\r\n rejectLogonProfile = true;\r\n});\r\n\r\nexport default () => {\r\n return new Promise((resolve, reject) => {\r\n intervalId = setInterval(() => {\r\n if (resolveLogonProfile) {\r\n clearInterval(intervalId);\r\n resolve(payload);\r\n }\r\n\r\n if (rejectLogonProfile) {\r\n clearInterval(intervalId);\r\n reject(payload);\r\n }\r\n }, 100);\r\n });\r\n};\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport JumpTo from './JumpTo';\r\nimport getLogonProfile from './getLogonProfile';\r\n\r\nconst { theme } = document.querySelector('body').dataset;\r\n\r\nReactDOM.render(, document.getElementById('jumpToApp'));\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport default function useDebounce(value, callback, delay) {\r\n const [newValue, setNewValue] = useState(value);\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n useEffect(() => {\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(newValue);\r\n callback(newValue);\r\n }, delay);\r\n\r\n return () => clearTimeout(handler);\r\n }, [newValue]);\r\n\r\n // In most cases the debounced value isn't needed but we can return it anyway\r\n return [newValue, setNewValue, debouncedValue];\r\n}\r\n"],"sourceRoot":""}