{"version":3,"sources":["webpack:///./src/js/react-modules/ms-header/carbon-ibm/logo.tsx","webpack:///./src/js/react-modules/ms-header/carbon-ibm/mastheadLeftNav.tsx","webpack:///./src/js/react-modules/ms-header/carbon-ibm/search.tsx","webpack:///./src/js/react-modules/ms-header/carbon-ibm/MegaMenu.tsx","webpack:///./src/js/react-modules/ms-header/carbon-ibm/mastheadTopNav.tsx","webpack:///./src/js/react-modules/ms-header/carbon-ibm/masthead.tsx","webpack:///./src/js/react-modules/ms-header/index.tsx"],"names":["prefix","settings","IbmLogo","autoid","logoData","isSearchActive","logo","window","header","useAlternateLogo","MastheadLogoAPI","setMastheadLogo","logoClasses","cx","className","ConditionalWrapper","condition","undefined","tooltip","wrapper","children","TooltipDefinition","tooltipText","aria-label","logoAltText","data-autoid","href","logoLinkUrl","dangerouslySetInnerHTML","__html","svg","role","alt","width","height","src","logoImage","propTypes","PropTypes","string","bool","shape","denyList","array","allowList","expire","path","stablePrefix","ddsSettings","MastheadLeftNav","matchFound","selectedItems","backButtonText","navigation","isSideNavExpanded","platform","rest","selectedUrlCheck","level0","level1","level2","menu","url","megapanelContent","quickLinks","links","key","parentItemUrl","currentUrlPath","root","location","i","length","k","useState","menuState","setMenuState","useEffect","sideNavRef","useRef","level0Items","level1Items","expanded","isPersistent","ref","onOverlayClick","navType","aria-haspopup","name","map","link","dataTitle","titleEnglish","replace","toLowerCase","hasL1Data","menuItems","menuSections","hasMenu","hasMegaPanel","title","push","parentKey","sections","selected","selectedMenuItem","onToggle","submenus","highlightedItems","items","forEach","item","highlighted","mobileTitle","mobileItem","sortedMenu","concat","highlightedCount","isSubmenu","id","heading","onBackClick","show","index","titleUrl","highlightedClass","_renderLevel1Submenus","level2Submenus","_renderLevel2Submenus","focusNode","current","parentNode","querySelector","sideNav","arrayOf","defaultProps","_redirectUrl","search","formAction","_getSuggestionValue","suggestion","_reducer","state","action","type","Object","assign","val","payload","suggestions","prevSuggestions","suggestionContainerVisible","isSearchOpen","lc","cc","openOnLoadFocus","MastheadSearch","placeHolderText","initialSearchTerm","searchOpenOnload","renderValue","searchAria","searchClosed","propIsSearchActive","onChangeSearchActive","handleHideSearch","event","dispatch","resetSearch","handleClickOutside","mastheadRef","closest","contains","target","handleChangeSearchActive","document","addEventListener","removeEventListener","useSearchVisible","_initialState","URLSearchParams","get","e","getValueFromQueryString","useReducer","setIsSearchActive","useCallback","newisSearchActive","isOpen","suggestionsList","setAttribute","abortController","AbortController","signal","abort","this","aborted","LocaleAPI","getLang","response","onSearchNoRedirect","suggestionValue","method","CustomEvent","bubbles","detail","value","currentTarget","dispatchEvent","inputProps","placeholder","onChange","newValue","onSearchValueChanged","getRedirect","encodeURIComponent","onSuggestionsFetchRequested","onSuggestionsClearRequested","getSuggestionValue","renderSuggestion","query","isHighlighted","MastheadSearchSuggestion","renderSuggestionsContainer","containerProps","onSuggestionSelected","searchNoRedirect","preventDefault","parent","focusInputOnSuggestionClick","renderInputComponent","componentInputProps","MastheadSearchInput","isActive","disableFocus","shouldRenderSuggestions","multiSection","renderSectionTitle","section","getSectionSuggestions","HeaderGlobalAction","onClick","onOpenSearch","onSearchButtonClicked","tabIndex","onSearchCloseClicked","searchIconRef","querySelectorAll","focus","func","number","oneOf","MegaMenu","React","forwardRef","props","viewAllLink","data","megaPanelViewAll","hasHighlights","customCategoryLink","highlightedLink","Fragment","description","image","viewAllLinkHref","viewAllLinkTarget","viewAllLinkTitle","copy","hasMenupanel","MastheadTopNav","topNavProps","overlay","setOverlay","childLinkChecker","hasCurrentUrl","removeAttribute","mastheadLinks","selectedUrlItem","hasMegapanel","HeaderMenu","menuLinkName","classnames","autoId","disableScroll","navItems","j","HeaderMenuItem","renderNav","data-selected","HeaderName","Masthead","hasSearch","hasProfile","mastheadL1Data","topRightLinks","mastheadProps","mastheadData","isMastheadSticky","stickyRef","mastheadL1Ref","mastheadSticky","headerSearchClasses","scrollY","expandedHelp","setExpandedHelp","expandedNotifications","setExpandedNotifications","expandedQuickLinks","setExpandedQuickLinks","expandedAccount","setExpandedAccount","handleMouseUp","classList","closeAllPanels","setisSideNavExpanded","onClickSideNavExpand","prev","body","remove","add","SkipToContent","HeaderMenuButton","primaryNav","hamburger","closeText","openText","onBlur","parentElement","firstMenuItem","lastMenuItem","relatedTarget","back","backText","navigationL1","mastheadLogo","altText","mastheadLogoAlt","filter","searchButtonLabel","closeButtonLabel","connect","label","Link","login","signup","Button","oneOfType","customProfileLogin","eyebrowText","eyebrowLink","customTypeaheadApi","Header","openSearchOnLoad","lastScrollY","pageYOffset","headerFirstChild","scrollDirection","setScrollDirection","useMemo","firstPrimary","nav","featuredList","featLinks","featuredLinks","featLink","headingLink","headingTarget","navLinks","linkList","linkJson","spotlightLink","arrayOfMenu","reduce","objNavLinks","obj","firstLink","menuItemsObj","connectLinkSideNav","loginLinkSideNav","signupLinkSideNav","updateScrollDirection"],"mappings":"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","file":"105.bundle.js?v=710db8d7489733bf9414","sourcesContent":["// @ts-nocheck\n// Ignore all typesript errors in this file. This file was originally created by the IBM Carbon team, but had to be modified to remove hardcoded IBM values\n/**\n * Copyright IBM Corp. 2016, 2021\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport ConditionalWrapper from '@carbon/ibmdotcom-react/es/internal/components/ConditionalWrapper/ConditionalWrapper';\nimport cx from 'classnames';\nimport MastheadLogoAPI from '@carbon/ibmdotcom-services/es/services/MastheadLogo/MastheadLogo';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport TooltipDefinition from '@carbon/ibmdotcom-react/es/internal/vendor/carbon-components-react/components/TooltipDefinition';\n\nconst { prefix } = settings;\n\ntype propTypesLogo = {\n autoid?: string;\n logoData?: {\n tooltip: string;\n svg: string;\n };\n isSearchActive?: boolean;\n};\n/**\n * IBM Logo 8-bar component.\n */\nconst IbmLogo = ({ autoid, logoData, isSearchActive }: propTypesLogo) => {\n const logo = window.header.logo;\n const useAlternateLogo = MastheadLogoAPI.setMastheadLogo(logoData);\n const logoClasses = cx({\n [`${prefix}--header__logo`]: true,\n [`${prefix}--search-active`]: isSearchActive\n });\n\n return (\n
\n (\n \n {children}\n \n )}\n >\n {useAlternateLogo ? (\n \n ) : (\n \n {!useAlternateLogo && (\n \n )}\n \n )}\n \n
\n );\n};\n\nexport default IbmLogo;\n\nIbmLogo.propTypes = {\n /**\n * data-autoid attribute for analytics\n */\n autoid: PropTypes.string,\n\n /**\n * `true` when search is active\n */\n isSearchActive: PropTypes.bool,\n\n /**\n * Masthead logo object\n * See [mastheadLogo](#mastheadlogo)\n * for details.\n */\n logoData: PropTypes.shape({\n svg: PropTypes.string,\n tooltip: PropTypes.string,\n denyList: PropTypes.array,\n allowList: PropTypes.array,\n expire: PropTypes.string,\n path: PropTypes.string\n })\n};\n","// @ts-nocheck\n// Ignore all typesript errors in this file. This file was originally created by the IBM Carbon team, but had to be modified to remove hardcoded IBM values\n/**\n * Copyright IBM Corp. 2016, 2021\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport React, { useEffect, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport ddsSettings from '@carbon/ibmdotcom-utilities/es/utilities/settings/settings';\nimport HeaderSideNavItems from '@carbon/ibmdotcom-react/lib/internal/vendor/carbon-components-react/components/UIShell/HeaderSideNavItems';\nimport PropTypes from 'prop-types';\nimport root from 'window-or-global';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport SideNav from '@carbon/ibmdotcom-react/lib/internal/vendor/carbon-components-react/components/UIShell/SideNav';\nimport SideNavItems from '@carbon/ibmdotcom-react/lib/internal/vendor/carbon-components-react/components/UIShell/SideNavItems';\nimport SideNavMenu from '@carbon/ibmdotcom-react/lib/components/carbon-components-react/UIShell/SideNavMenu';\nimport SideNavMenuItem from '@carbon/ibmdotcom-react/lib/internal/vendor/carbon-components-react/components/UIShell/SideNavMenuItem';\nimport SideNavMenuSection from '@carbon/ibmdotcom-react/lib/components/carbon-components-react/UIShell/SideNavMenuSection';\n\nconst { stablePrefix } = ddsSettings;\nconst { prefix } = settings;\n\n/**\n * Masthead left nav component.\n */\nconst MastheadLeftNav = ({\n backButtonText,\n navigation,\n isSideNavExpanded,\n platform,\n ...rest\n}) => {\n /**\n * checks if menu item's children url match the current url path, if so return the menu item and its children\n * will set the selected state for entire hierarchy of menu items\n *\n * @returns {object} selectedItems\n */\n // eslint-disable-next-line class-methods-use-this\n const _selectedLeftNavItems = () => {\n let matchFound = false;\n const selectedItems = { level0: '', level1: '', level2: '' };\n\n return ({\n menu = [\n { url: '', megapanelContent: { quickLinks: { links: [{ url: '' }] } } }\n ],\n key = '',\n parentItemUrl = ''\n }) => {\n const currentUrlPath = root.location?.href;\n if (!matchFound) {\n if (parentItemUrl === currentUrlPath) {\n selectedItems.level0 = `${key}`;\n matchFound = true;\n }\n // check if child url matches current url path\n else {\n for (let i = 0; i < menu?.length; i++) {\n if (menu[i]?.url === currentUrlPath) {\n selectedItems.level0 = `${key}`;\n selectedItems.level1 = `${key}-${i}`;\n matchFound = true;\n break;\n } else {\n const links = menu[i]?.megapanelContent?.quickLinks?.links;\n for (let k = 0; k < links?.length; k++) {\n if (links[k]?.url === currentUrlPath) {\n selectedItems.level0 = `${key}`;\n selectedItems.level1 = `${key}-${i}`;\n selectedItems.level2 = `${key}-${i}-${k}`;\n matchFound = true;\n break;\n }\n }\n }\n }\n }\n return selectedItems;\n }\n return selectedItems;\n };\n };\n\n const selectedUrlCheck = _selectedLeftNavItems();\n\n /**\n * Keep track of which menu section is visible/expanded and ties current visible panel\n * back to its parent menu panel\n *\n * Example interaction and menuState change:\n * 1. When left nav is first opened - default state --> {level0: -1, level1: -1}\n * 2. User then clicks on first menu item (item index is 0) --> {level0: 0, level1: -1}\n * 3. User then clicks on second menu item (item index is 1) of current visible panel --> {level0: 0, level1: 1}\n * 4. User then clicks back button --> {level0: 0, level1: -1}\n * 5. User then clicks back button again, going back to first panel --> {level0: -1, level1: -1}\n */\n const [menuState, setMenuState] = useState({ level0: -1, level1: -1 });\n\n // reset the left nav to default menu section when closed\n useEffect(() => {\n if (!isSideNavExpanded) {\n setMenuState({ level0: -1, level1: -1 });\n }\n }, [isSideNavExpanded]);\n\n const sideNavRef = useRef();\n\n const level0Items = [];\n const level1Items = [];\n\n const sideNav = () => {\n let selectedItems;\n\n navigation.map((link, i) => {\n const dataTitle = link.titleEnglish\n ? link.titleEnglish\n .replace(/[^-a-zA-Z0-9_ ]/g, '')\n .replace(/ +/g, '-')\n .toLowerCase()\n : null;\n\n const autoid = `${stablePrefix}--masthead-${rest.navType}-sidenav__${\n rest.hasL1Data ? 'l1' : 'l0'\n }-nav${i}`;\n\n const menuItems = link.menuSections[0]?.menuItems;\n selectedItems = selectedUrlCheck({\n menu: menuItems,\n key: i,\n parentItemUrl: link.url\n });\n\n if ((link.hasMenu || link.hasMegaPanel) && link.title) {\n level1Items.push({\n title: link.title,\n autoid,\n parentKey: i,\n sections: link.menuSections\n });\n\n level0Items.push(\n setMenuState({ ...menuState, level0: i })}\n isSideNavExpanded={i === menuState.level0 && menuState.level1 == -1}\n />\n );\n } else {\n level0Items.push(\n \n {link.title}\n \n );\n }\n });\n\n const level1 = _renderLevel1Submenus(\n level1Items,\n backButtonText,\n setMenuState,\n menuState,\n rest.navType,\n rest.selectedMenuItem,\n selectedItems\n );\n\n const level2Submenus = _renderLevel2Submenus(\n level1.submenus,\n backButtonText,\n setMenuState,\n menuState,\n rest.navType,\n rest.selectedMenuItem,\n selectedItems\n );\n\n return (\n
\n \n {level0Items}\n \n {level1.menuSections}\n {level2Submenus}\n
\n );\n };\n\n return (\n \n \n {platform && (\n \n {platform.name}\n \n )}\n \n {sideNav()}\n \n \n \n );\n};\n\n/**\n * Loops through and renders a list of links for the side nav\n *\n * @param {Array} menuItems menu items\n * @param {string} backButtonText back button text\n * @param {Function} setMenuState setState func\n * @param {object} menuState currrent menu that is visible\n * @param {string} navType navigation type\n * @param {string} selectedMenuItem inputted selected menu item\n * @param {object} selectedItems selected menu items based on url\n *\n * @returns {object} JSX object\n */\nfunction _renderLevel1Submenus(\n menuItems,\n backButtonText,\n setMenuState,\n menuState,\n navType,\n selectedMenuItem,\n selectedItems\n) {\n // gather submenu items for next level\n const submenus = [];\n\n const sideNavMenuSections = menuItems.map((menu, i) => {\n // get array of highlighted menu items to render first\n let highlightedItems = [];\n const items = [];\n\n menu.sections[0].menuItems.forEach(item => {\n if (item.highlighted) return highlightedItems.push(item);\n if (item.mobileTitle) {\n const mobileItem = { title: item.mobileTitle, url: item.url };\n return items.push(mobileItem);\n }\n return items.push(item);\n });\n\n const sortedMenu = highlightedItems.concat(items);\n const highlightedCount = highlightedItems.length;\n\n return (\n = 0\n })}\n id={`panel__(${menu.parentKey},-1)`}\n heading={menu.sections[0]?.heading}\n key={menu.title}\n title={menu.title}\n navType={navType}\n backButtonText={backButtonText}\n onBackClick={() => setMenuState({ level0: -1, level1: -1 })}\n show={menuState.level0 === menu.parentKey && menuState.level1 === -1}\n >\n {sortedMenu.map((item, index) => {\n if (!item.title) return;\n submenus.push({\n title: item.title,\n titleUrl: item.url,\n autoid: `${menu.autoid}-list${index}`,\n sections: item.megapanelContent?.quickLinks?.links,\n parentKey: menu.parentKey,\n index\n });\n\n const highlightedClass =\n (highlightedCount !== 0 &&\n index + 1 === highlightedCount &&\n `${prefix}--masthead__side-nav__last-highlighted`) ||\n null;\n\n if (item.megapanelContent) {\n return (\n setMenuState({ ...menuState, level1: index })}\n isSideNavExpanded={\n i === menuState.level0 && menuState.level1 == index\n }\n />\n );\n }\n\n return (\n \n {item.title}\n \n );\n })}\n \n );\n });\n\n return { menuSections: sideNavMenuSections, submenus };\n}\n\n/**\n * Loops through and renders a list of links for the side nav\n *\n * @param {Array} menuItems menu items\n * @param {string} backButtonText back button text\n * @param {Function} setMenuState setState func\n * @param {object} menuState currrent menu that is visible\n * @param {string} navType navigation type\n * @param {string} selectedMenuItem inputted selected menu item\n * @param {object} selectedItems selected menu items based on url\n *\n * @returns {object} JSX object\n */\nfunction _renderLevel2Submenus(\n menuItems,\n backButtonText,\n setMenuState,\n menuState,\n navType,\n selectedMenuItem,\n selectedItems\n) {\n return menuItems.map(menu => {\n return (\n setMenuState({ ...menuState, level1: -1 })}\n show={\n menuState.level0 === menu.parentKey && menuState.level1 === menu.index\n }\n >\n {menu.sections?.map((item, k) => {\n return (\n \n {item.title}\n \n );\n })}\n \n );\n });\n\n return sideNavMenuSections;\n}\n\nMastheadLeftNav.propTypes = {\n /**\n * Back button text\n */\n backButtonText: PropTypes.string,\n\n /**\n * Object containing left navigation elements.\n */\n navigation: PropTypes.arrayOf(\n PropTypes.shape({\n hasMenu: PropTypes.bool,\n title: PropTypes.string,\n url: PropTypes.string,\n menuSections: PropTypes.arrayOf(\n PropTypes.shape({\n menuItems: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string\n })\n )\n })\n )\n })\n ),\n /**\n * `true` to make the sidenav expanded.\n */\n isSideNavExpanded: PropTypes.bool,\n\n /**\n * Platform object with name and url\n */\n platform: PropTypes.shape({\n name: PropTypes.string,\n url: PropTypes.string\n })\n};\n\nMastheadLeftNav.defaultProps = {\n backButtonText: 'Back'\n};\n\nexport default MastheadLeftNav;\n","// @ts-nocheck\n// Ignore all typesript errors in this file. This file was originally created by the IBM Carbon team, but had to be modified to remove hardcoded IBM values\n/**\n * Copyright IBM Corp. 2016, 2021\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport React, {\n useCallback,\n useEffect,\n useReducer,\n useRef,\n useState\n} from 'react';\nimport Autosuggest from 'react-autosuggest';\nimport Close20 from '@carbon/icons-react/es/close/20';\nimport cx from 'classnames';\nimport ddsSettings from '@carbon/ibmdotcom-utilities/es/utilities/settings/settings';\nimport escapeRegExp from '@carbon/ibmdotcom-utilities/es/utilities/escaperegexp/escaperegexp';\nimport { HeaderGlobalAction } from 'carbon-components-react';\nimport LocaleAPI from '@carbon/ibmdotcom-services/es/services/Locale/Locale';\nimport MastheadSearchInput from '@carbon/ibmdotcom-react/es/components/Masthead/MastheadSearchInput';\nimport MastheadSearchSuggestion from '@carbon/ibmdotcom-react/es/components/Masthead/MastheadSearchSuggestion';\nimport PropTypes from 'prop-types';\nimport root from 'window-or-global';\nimport Search20 from '@carbon/icons-react/es/search/20';\nimport SearchTypeaheadAPI from '@carbon/ibmdotcom-services/es/services/SearchTypeahead/SearchTypeahead';\nimport settings from 'carbon-components/es/globals/js/settings';\n\nconst { stablePrefix } = ddsSettings;\nconst { prefix } = settings;\n\n/**\n * Sets up the redirect URL when a user selects a search suggestion\n *\n * @type {string}\n * @private\n */\nconst _redirectUrl = window.header.search?.formAction;\n\n/**\n * Converts the string to lower case and trims extra white space\n *\n * @param {string} valueString The text field\n * @returns {string} lower cased and trimmed text\n */\nconst _trimAndLower = (valueString: string) => valueString.toLowerCase().trim();\n\n/**\n * When a suggestion item is clicked, we populate the input with its name field\n *\n * @param {object} suggestion The individual object or key name from the data\n * @returns {*} The name val\n */\nconst _getSuggestionValue = (suggestion: any) =>\n suggestion[0] || suggestion.name;\n\n/**\n * Reducer for the useReducer hook\n *\n * @param {object} state The state\n * @param {object} action contains the type and payload\n * @returns {*} the new state value\n * @private\n */\nfunction _reducer(\n state: { prevSuggestions: {} },\n action: {\n type: string;\n payload: { val: string; prevSuggestions: {}; lc: string; cc: string };\n }\n) {\n switch (action.type) {\n case 'setVal':\n return Object.assign({}, state, { val: action.payload.val });\n case 'emptySuggestions':\n return Object.assign({}, state, { suggestions: [] });\n case 'setPrevSuggestions':\n return Object.assign({}, state, {\n prevSuggestions: action.payload.prevSuggestions\n });\n case 'setSuggestionsToPrevious':\n return Object.assign({}, state, { suggestions: state.prevSuggestions });\n case 'showSuggestionsContainer':\n return Object.assign({}, state, { suggestionContainerVisible: true });\n case 'hideSuggestionsContainer':\n return Object.assign({}, state, { suggestionContainerVisible: false });\n case 'setSearchOpen':\n return Object.assign({}, state, { isSearchOpen: true });\n case 'setSearchClosed':\n return Object.assign({}, state, { isSearchOpen: false });\n case 'setLc':\n return Object.assign({}, state, { lc: action.payload.lc });\n case 'setCc':\n return Object.assign({}, state, { cc: action.payload.cc });\n default:\n return state;\n }\n}\n\nlet openOnLoadFocus = true;\n\n/**\n * MastheadSearch component which includes autosuggestion results from the\n * SearchTypeaheadAPI.\n *\n * The search field utilizes \"react-autosuggest\". Documentation available here:\n * http://react-autosuggest.js.org/\n * https://github.com/moroshko/react-autosuggest\n */\n\ntype propTypesSearch = {\n placeHolderText?: string;\n initialSearchTerm?: string;\n renderValue?: number;\n searchOpenOnload?: boolean;\n navType?: any;\n isSearchActive?: boolean;\n onChangeSearchActive: any;\n searchAria: string;\n searchClosed: string;\n};\n\nconst MastheadSearch = ({\n placeHolderText,\n initialSearchTerm,\n renderValue,\n searchOpenOnload,\n navType,\n searchAria,\n searchClosed,\n isSearchActive: propIsSearchActive,\n onChangeSearchActive,\n ...rest\n}: propTypesSearch) => {\n const { ref } = useSearchVisible(false);\n\n /**\n * Initial state of the autocomplete component\n *\n * @type {{val: string, prevSuggestions: Array, suggestions: Array, suggestionContainerVisible: boolean}}\n * @private\n */\n const _initialState = {\n val: initialSearchTerm || getValueFromQueryString() || '',\n suggestions: [],\n prevSuggestions: [],\n suggestionContainerVisible: false,\n isSearchOpen: searchOpenOnload,\n lc: 'en',\n cc: 'us'\n };\n\n const [state, dispatch] = useReducer(_reducer, _initialState);\n\n const [isSearchActive, setIsSearchActive] = useState(searchOpenOnload);\n useEffect(() => {\n setIsSearchActive(propIsSearchActive);\n }, [propIsSearchActive]);\n\n const handleChangeSearchActive = useCallback(\n event => {\n const newisSearchActive = !isSearchActive;\n setIsSearchActive(newisSearchActive);\n openOnLoadFocus = false;\n onChangeSearchActive(event, { isOpen: newisSearchActive });\n },\n [isSearchActive, onChangeSearchActive]\n );\n\n // Sets aria-labelledby to suggestions list to suppress a11y errors.\n // Autosuggest package does not provide method to add attribute to this element.\n useEffect(() => {\n const suggestionsList = document.querySelector(\n '.react-autosuggest__suggestions-list'\n );\n suggestionsList &&\n suggestionsList.setAttribute('aria-label', 'Suggestions List');\n });\n\n useEffect(() => {\n const abortController =\n typeof AbortController !== 'undefined'\n ? new AbortController()\n : {\n signal: {},\n abort() {\n this.signal.aborted = true;\n }\n };\n abortController.abort();\n (async () => {\n const response = await LocaleAPI.getLang();\n if (!abortController.signal.aborted && response) {\n dispatch({ type: 'setLc', payload: { lc: response.lc } });\n dispatch({ type: 'setCc', payload: { cc: response.cc } });\n }\n })();\n return () => {\n abortController.abort();\n };\n }, []);\n\n /**\n * Event handlers to toggle visiblity of search\n *\n * @returns {*} search ref\n */\n function useSearchVisible() {\n const ref = useRef(null);\n /**\n * Close search entirely if autosuggestions collapsed\n *\n * @param {*} event Escape keypress\n */\n const handleHideSearch = (event: any) => {\n if (event.key === 'Escape') {\n if (!state.suggestionContainerVisible) {\n dispatch({ type: 'setSearchClosed' });\n resetSearch();\n }\n }\n };\n\n /**\n * Close search when click detected outside of component.\n * This is necessary otherwise search stays open even when\n * elements other than the close button and the\n * profile button are clicked.\n *\n * @param {*} event Click event outside masthead component\n */\n const handleClickOutside = (event: any) => {\n if (!searchOpenOnload) {\n const mastheadRef = ref.current?.closest(`.${prefix}--masthead`);\n if (mastheadRef && !mastheadRef.contains(event.target)) {\n // If a click was detected outside the Search ref but there is a text value in state, don't hide the Search.\n if (state.val.length === 0 && isSearchActive) {\n handleChangeSearchActive();\n resetSearch();\n }\n }\n }\n };\n\n useEffect(() => {\n root.document.addEventListener('keydown', handleHideSearch, true);\n root.document.addEventListener('click', handleClickOutside, true);\n return () => {\n root.document.removeEventListener('keydown', handleHideSearch, true);\n root.document.removeEventListener('click', handleClickOutside, true);\n };\n });\n\n return { ref };\n }\n\n const className = cx({\n [`${prefix}--masthead__search`]: true,\n [`${prefix}--masthead__search--active`]: isSearchActive\n });\n\n /**\n * Custom event emitted when search does not redirect to default url\n *\n * @param {event} event The callback event\n * @param {object} params Custom event parameters\n * @param {object} params.suggestion the selected suggestion in `react-autosuggest`\n * @param {string} params.suggestionValue The new val of the input\n * @param {string} params.method String describing how the change has occurred (data from `react-autosuggest`)\n */\n function onSearchNoRedirect(\n event: any,\n {\n suggestion,\n suggestionValue,\n method\n }: { suggestion: {}; suggestionValue: string; method: string }\n ) {\n const onSearchNoRedirect = new CustomEvent('onSearchNoRedirect', {\n bubbles: true,\n detail: {\n method,\n suggestion,\n value: suggestionValue\n }\n });\n\n event.currentTarget.dispatchEvent(onSearchNoRedirect);\n }\n\n /**\n * When the input field changes, we set the new val to our state\n *\n * @param {event} event The callback event\n * @param {string} newValue The new val of the input\n */\n function onChange(event, { newValue }) {\n // emit custom event for search input onchange\n const onSearchValueChanged = new CustomEvent('onSearchValueChanged', {\n bubbles: true,\n detail: { value: newValue }\n });\n\n event.currentTarget.dispatchEvent(onSearchValueChanged);\n dispatch({ type: 'setVal', payload: { val: newValue } });\n }\n\n /**\n * Autosuggest will pass through all these props to the input.\n *\n * @type {{placeholder: string, value: string, onChange: Function, className: string, 'aria-labelledby': string, role: string, 'aria-expanded': string}}\n */\n const inputProps = {\n placeholder: placeHolderText,\n value: state.val,\n onChange,\n className: `${prefix}--header__search--input`,\n 'aria-label': placeHolderText,\n role: 'combobox',\n 'aria-expanded': !!state.suggestions.length\n };\n\n /**\n * Autosuggest will pass through all these props to the container.\n * Set WAI-ARIA attributes to null to override default container\n * which is following outdated 1.1 specifications.\n *\n */\n const containerProps = {\n role: null,\n 'aria-haspopup': null,\n 'aria-owns': null,\n 'aria-expanded': null,\n 'aria-label': null\n };\n\n /**\n * Executes the logic for the search icon depending on search input state.\n * This will execute the search if the search is open, or will open the\n * search field if closed.\n *\n */\n function searchIconClick(event) {\n // emit custom event for search icon click when search is closed\n if (!isSearchActive) {\n const onOpenSearch = new CustomEvent('onOpenSearch', {\n bubbles: true\n });\n\n event.currentTarget.dispatchEvent(onOpenSearch);\n\n dispatch({ type: 'setSearchOpen' });\n handleChangeSearchActive();\n }\n\n // emit custom event for search icon click when search is open\n if (isSearchActive) {\n const onSearchButtonClicked = new CustomEvent('onSearchButtonClicked', {\n bubbles: true,\n detail: { value: state.val }\n });\n\n event.currentTarget.dispatchEvent(onSearchButtonClicked);\n }\n\n if (isSearchActive && state.val.length) {\n if (rest.searchNoRedirect) {\n onSearchNoRedirect(event, { suggestionValue: state.val });\n } else {\n root.parent.location.href = getRedirect(state.val);\n }\n } else {\n dispatch({ type: 'setSearchOpen' });\n }\n }\n\n /**\n * Clear search and clear input when called\n */\n const resetSearch = useCallback(() => {\n dispatch({ type: 'setSearchClosed' });\n dispatch({\n type: 'setVal',\n payload: { val: '' }\n });\n }, [dispatch]);\n\n /**\n * closeBtnAction resets and sets focus after search is closed\n */\n function closeBtnAction(event: any) {\n // emit custom event for search close button click\n const onSearchCloseClicked = new CustomEvent('onSearchCloseClicked', {\n bubbles: true\n });\n\n event.currentTarget.dispatchEvent(onSearchCloseClicked);\n\n resetSearch();\n const searchIconRef = root.document.querySelectorAll(\n `[data-autoid=\"${stablePrefix}--masthead-${navType}__l0-search\"]`\n );\n searchIconRef && searchIconRef[0].focus();\n handleChangeSearchActive();\n }\n\n /**\n * Renders the input bar with the search icon\n *\n * @param {object} componentInputProps contains the input props\n * @returns {*} The rendered component\n */\n function renderInputComponent(componentInputProps: {}) {\n return (\n \n );\n }\n\n /**\n * Returns the action/redirect value\n *\n * @param {string} value string value from the input or suggestions list\n * @returns {string} final redirect string\n */\n function getRedirect(value: string) {\n return `${_redirectUrl}?q=${encodeURIComponent(value)}`;\n }\n\n /**\n * Renders the Suggestion Value with the function for the adding the suggestion\n *\n * @param {object} suggestion The suggestion to render\n * @param {object} properties The property object of the incoming suggestion\n * @param {string} properties.query The query being searched for\n * @param {boolean} properties.isHighlighted Whether the suggestion is currently highlighted by the user\n * @returns {*} The suggestion value\n */\n function renderSuggestion(\n suggestion: {},\n { query, isHighlighted }: { query: string; isHighlighted: boolean }\n ) {\n return (\n \n );\n }\n\n /**\n * This function is called everytime we need new suggestions. If input has\n * changed, we fetch for new suggestions else we return the previous\n * suggestions\n *\n * Available reason values:\n * https://github.com/moroshko/react-autosuggest#onsuggestionsfetchrequested-required\n *\n * @param {object} request Object response from when onSuggestionsFetchRequested is called\n * @param {string} request.value the current value of the input\n * @param {string} request.reason string describing why onSuggestionsFetchRequested was called\n */\n\n async function onSuggestionsFetchRequest(request: {\n value: string;\n reason: string;\n }) {\n const searchValue = _trimAndLower(escapeRegExp(request.value));\n\n if (request.reason === 'input-changed') {\n // if the search input has changed\n let response = rest.customTypeaheadApi\n ? await rest.customTypeaheadApi(searchValue)\n : await SearchTypeaheadAPI.getResults(searchValue);\n\n if (response !== undefined) {\n dispatch({\n type: 'setPrevSuggestions',\n payload: { prevSuggestions: response }\n });\n dispatch({ type: 'setSuggestionsToPrevious' });\n dispatch({ type: 'showSuggestionsContainer' });\n }\n } else if (request.reason === 'escape-pressed') {\n onSuggestionsClearedRequested();\n } else {\n dispatch({ type: 'setSuggestionsToPrevious' });\n dispatch({ type: 'showSuggestionsContainer' });\n }\n }\n\n /**\n * Called every time we clear suggestions\n */\n function onSuggestionsClearedRequested() {\n dispatch({ type: 'emptySuggestions' });\n dispatch({ type: 'hideSuggestionsContainer' });\n }\n\n /**\n * Sends the user to the search results page when a suggestion is selected\n *\n * @param {object} event The event object\n * @param {object} params Param object coming from react-autosuggest\n * @param {string} params.suggestionValue Suggestion value\n * @param {string} params.method Method of selection (\"click\" or \"enter\")\n */\n function onSuggestionSelected(\n event: any,\n {\n suggestion,\n suggestionValue,\n method\n }: { suggestion: {}; suggestionValue: string; method: string }\n ) {\n if (rest.searchNoRedirect) {\n onSearchNoRedirect(event, { suggestion, suggestionValue, method });\n event.preventDefault();\n } else {\n root.parent.location.href = getRedirect(suggestionValue);\n }\n }\n\n /**\n * Only render suggestions if we have more than the renderValue\n *\n * @param {string} value Name of the suggestion\n * @returns {boolean} Whether or not to display the value\n */\n function shouldRenderSuggestions(value: string) {\n value;\n return false;\n }\n\n /**\n * Render section title\n *\n * @param {Array} section Array of section results\n * @returns {string} Section title\n */\n function renderSectionTitle(section: { items: []; title: string }) {\n return section.items.length > 0 && section.title ? (\n {section.title}\n ) : null;\n }\n\n /**\n * Render section results\n *\n * @param {Array} section Array of section results\n * @returns {object} Section items\n */\n function getSectionSuggestions(section: { items: string }) {\n return section.items;\n }\n\n /**\n * Get inital search term from query string\n *\n * @returns {string} Search term\n */\n function getValueFromQueryString() {\n try {\n return new URLSearchParams(root.location.search).get('q');\n } catch (e) {\n return '';\n }\n }\n\n /* eslint-disable react/prop-types */\n const renderSuggestionsContainer = ({\n containerProps,\n children\n }: {\n containerProps: any;\n children: any;\n }) => (\n
\n {children}\n
\n );\n\n return (\n \n {isSearchActive && (\n \n {}} // Method to fetch data (should be async call)\n onSuggestionsClearRequested={() => {}} // When input bar loses focus\n getSuggestionValue={_getSuggestionValue} // Name of suggestion\n renderSuggestion={renderSuggestion} // How to display a suggestion\n renderSuggestionsContainer={renderSuggestionsContainer}\n onSuggestionSelected={onSuggestionSelected} // When a suggestion is selected\n focusInputOnSuggestionClick={false}\n inputProps={inputProps}\n containerProps={containerProps}\n renderInputComponent={renderInputComponent}\n shouldRenderSuggestions={shouldRenderSuggestions}\n {...(rest.multiSection\n ? {\n multiSection: true,\n renderSectionTitle,\n getSectionSuggestions\n }\n : {})}\n />\n \n )}\n
\n \n \n \n \n \n \n
\n \n );\n};\n\nMastheadSearch.propTypes = {\n /**\n * Placeholder text for the search field.\n */\n placeHolderText: PropTypes.string,\n\n /**\n * Initial value for the search field.\n */\n initialSearchTerm: PropTypes.string,\n\n /**\n * Current state returned to \n */\n isSearchActive: PropTypes.bool,\n\n /**\n * Hook to toggle active state back to \n */\n onChangeSearchActive: PropTypes.func,\n\n /**\n * Number of characters to begin showing suggestions.\n */\n renderValue: PropTypes.number,\n\n /**\n * `true` to make the search field open in the initial state.\n */\n searchOpenOnload: PropTypes.bool,\n\n /**\n * navigation type for autoids\n */\n navType: PropTypes.oneOf(['default', 'alt', 'eco'])\n};\n\nMastheadSearch.defaultProps = {\n placeHolderText: 'Search',\n initialSearchTerm: '',\n renderValue: 3,\n searchOpenOnload: false\n};\n\n// Export the react component\nexport default MastheadSearch;\n","// @ts-nocheck\n// Ignore all typesript errors in this file. This file was originally created by the IBM Carbon team, but had to be modified to remove hardcoded IBM values\n/**\n * Copyright IBM Corp. 2016, 2021\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport CategoryGroup from '@carbon/ibmdotcom-react/lib/components/Masthead/MastheadMegaMenu/CategoryGroup';\nimport LeftNavigation from '@carbon/ibmdotcom-react/lib/components/Masthead/MastheadMegaMenu/LeftNavigation';\nimport NavigationGroup from '@carbon/ibmdotcom-react/lib/components/Masthead/MastheadMegaMenu/NavigationGroup';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport RightNavigation from '@carbon/ibmdotcom-react/lib/components/Masthead/MastheadMegaMenu/RightNavigation';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport { ArrowRight16 } from '@carbon/icons-react';\n\nconst { prefix } = settings;\n\n/**\n * Masthead megamenu component.\n */\nconst MegaMenu = React.forwardRef(function MegaMenu(props, ref) {\n const { data, ...rest } = props;\n let highlightedItems = [];\n let viewAllLink;\n let menuItems = [];\n\n data.menuSections[0].menuItems.forEach(item => {\n if (item.highlighted && item.title !== null)\n return highlightedItems.push(item);\n if (item.megaPanelViewAll) return (viewAllLink = item);\n else return menuItems.push(item);\n });\n\n const hasHighlights = highlightedItems.length !== 0;\n\n let heading = data.menuSections[0]?.heading;\n\n const customCategoryLink = (\n title,\n url,\n highlightedLink,\n target,\n key,\n autoid\n ) => {\n if (highlightedLink)\n return (\n \n \n {title}\n \n \n \n );\n else\n return (\n \n {title && (\n \n {title}\n \n )}\n \n );\n };\n\n return (\n \n {hasHighlights && highlightedItems.length > 0 && (\n \n {!!heading && (\n

{heading}

\n )}\n {highlightedItems.map((item, i) => (\n <>\n {!!item.title && (\n \n {item.megapanelContent?.description && (\n

\n {item.megapanelContent?.description}\n

\n )}\n {item.megapanelContent?.quickLinks?.links.map(\n ({ title, url, highlightedLink, target }, key) =>\n customCategoryLink(\n title,\n url,\n highlightedLink,\n target,\n key,\n `${rest.autoid}-list${i}`\n )\n )}\n \n )}\n {item.megapanelContent?.image?.url ? (\n \n \n \n ) : (\n item.megapanelContent?.image?.src && (\n
\n \n
\n )\n )}\n \n ))}\n
\n )}\n \n {menuItems.map((item, i) => (\n \n {item?.copy && (\n

{item?.copy}

\n )}\n {item.megapanelContent?.quickLinks?.links?.map(\n ({ title, url, target }, key) =>\n customCategoryLink(\n title,\n url,\n null,\n target,\n key,\n `${rest.autoid}-list${i + highlightedItems.length}`\n )\n // \n )}\n \n ))}\n \n
\n );\n});\n\nMegaMenu.propTypes = {\n /**\n * Object containing megamenu nav data\n */\n data: PropTypes.shape({\n hasMenupanel: PropTypes.bool,\n title: PropTypes.string,\n url: PropTypes.string,\n menuSections: PropTypes.arrayOf(\n PropTypes.shape({\n heading: PropTypes.string,\n menuItems: PropTypes.arrayOf(\n PropTypes.shape({\n highlighted: PropTypes.bool,\n title: PropTypes.string,\n url: PropTypes.string,\n megapanelContent: PropTypes.shape({\n quickLinks: PropTypes.shape({\n links: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string\n })\n )\n })\n })\n })\n )\n })\n )\n })\n};\n\nexport default MegaMenu;\n","// @ts-nocheck\n// Ignore all typesript errors in this file. This file was originally created by the IBM Carbon team, but had to be modified to remove hardcoded IBM values\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport React, { useEffect, useState } from 'react';\nimport classnames from 'classnames';\nimport ddsSettings from '@carbon/ibmdotcom-utilities/es/utilities/settings/settings';\nimport {\n HeaderMenu,\n HeaderMenuItem,\n HeaderName,\n HeaderNavigation\n} from 'carbon-components-react';\nimport HeaderNavContainer from '@carbon/ibmdotcom-react/lib/components/Masthead/HeaderNavContainer';\nimport MegaMenu from '../carbon-ibm/MegaMenu';\nimport PropTypes from 'prop-types';\nimport root from 'window-or-global';\nimport settings from 'carbon-components/es/globals/js/settings';\n\nconst { stablePrefix } = ddsSettings;\nconst { prefix } = settings;\n\n/**\n * Masthead top nav component.\n */\nconst MastheadTopNav = ({ navigation, ...topNavProps }) => {\n const [overlay, setOverlay] = useState(false);\n\n const childLinkChecker = topNavProps.hasCurrentUrl();\n\n useEffect(() => {\n document\n .querySelector(`.${prefix}--header__menu-bar`)\n ?.setAttribute('role', 'menu');\n document.querySelectorAll(`.${prefix}--header__menu-bar li`).forEach(e => {\n e.setAttribute('role', 'menuitem');\n e.querySelector('a').removeAttribute('role');\n });\n }, []);\n\n /**\n * Top masthead navigation\n *\n * @returns {*} Top masthead navigation\n */\n const mastheadLinks = navigation.map((link, i) => {\n const selectedUrlItem =\n childLinkChecker && childLinkChecker(link, root.location?.href);\n const autoid = `${stablePrefix}--masthead-${topNavProps.navType}__l0-nav${i}`;\n const selected = topNavProps.selectedMenuItem\n ? link.titleEnglish === topNavProps.selectedMenuItem\n : selectedUrlItem;\n const dataTitle = link.titleEnglish\n ? link.titleEnglish\n .replace(/[^-a-zA-Z0-9_ ]/g, '')\n .replace(/ +/g, '-')\n .toLowerCase()\n : null;\n\n if (link.hasMenu || link.hasMegapanel) {\n return (\n \n {renderNav(link, autoid)}\n \n );\n }\n\n return (\n \n {link.title}\n \n );\n });\n\n return (\n <>\n {topNavProps.platform && (\n
\n \n {topNavProps.platform.name}\n \n
\n )}\n \n \n {mastheadLinks}\n \n \n \n \n );\n};\n\n/**\n * Loops through and renders a list of links for the masthead nav\n *\n * @param {object} link A list of links to be rendered\n * @param {string} autoid autoid predecessor for megamenu items/menu items data-autoids\n * @returns {object} JSX object\n */\nfunction renderNav(link, autoid) {\n const navItems = [];\n if (link.hasMegapanel) {\n navItems.push();\n } else {\n link.menuSections.forEach((section, i) => {\n section.menuItems.forEach((item, j) => {\n navItems.push(\n \n {item.title}\n \n );\n });\n });\n }\n return navItems;\n}\n\nMastheadTopNav.propTypes = {\n /**\n * Object containing top navigation elements.\n */\n navigation: PropTypes.arrayOf(\n PropTypes.shape({\n hasMenu: PropTypes.bool,\n title: PropTypes.string,\n url: PropTypes.string,\n target: PropTypes.string,\n menuSections: PropTypes.arrayOf(\n PropTypes.shape({\n menuItems: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string\n })\n )\n })\n )\n })\n )\n};\n\nexport default MastheadTopNav;\n","// @ts-nocheck\n// Ignore all typesript errors in this file. This file was originally created by the IBM Carbon team, but had to be modified to remove hardcoded IBM values\n/**\n * Copyright IBM Corp. 2016, 2021\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport ddsSettings from '@carbon/ibmdotcom-utilities/es/utilities/settings/settings';\nimport {\n Header,\n HeaderMenuButton,\n SkipToContent,\n Link,\n Button\n} from 'carbon-components-react';\nimport PropTypes from 'prop-types';\nimport root from 'window-or-global';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport IbmLogo from '../carbon-ibm/logo';\nimport MastheadLeftNav from '../carbon-ibm/mastheadLeftNav';\nimport MastheadSearch from '../carbon-ibm/search';\nimport MastheadTopNav from '../carbon-ibm/mastheadTopNav';\n\nconst { stablePrefix } = ddsSettings;\nconst { prefix } = settings;\n\n/**\n * MastHead component\n *\n * @param {object} props React props object\n * @param {object} props.navigation Object containing navigation elements\n * @param {boolean} props.hasProfile Determines whether to render Profile component\n * @param {boolean} props.hasSearch Determines whether to render Search Bar\n * @param {boolean} props.searchOpenOnload Determines if the search field is open on page load\n * @param {string} props.placeHolderText Placeholder value for search input\n * @param {string} props.initialSearchTerm Initial value for search input\n * @param {object} props.platform Platform name that appears on L0.\n * @param {string} props.title Title for the masthead L1\n * @param {string} props.eyebrowText Text for the eyebrow link in masthead L1\n * @param {string} props.eyebrowLink URL for the eyebrow link in masthead L1\n * @param {string} props.selectedMenuItem L0/L1 menu item to render with selected state\n * @returns {*} Masthead component\n */\n\ntype propTypesMasthead = {\n navigation?: {};\n hasProfile?: boolean;\n hasSearch?: boolean;\n searchOpenOnload?: boolean;\n placeHolderText?: string;\n initialSearchTerm?: string;\n platform?: {\n name: string;\n url: string;\n };\n mastheadL1Data?: { navigationL1?: {} };\n topRightLinks: {\n connect: { url: string; label: string; target: string };\n login: { url: string; label: string; target: string };\n signup: { url: string; label: string; target: string };\n };\n selectedMenuItem?: any;\n mastheadLogo?: any;\n};\nconst Masthead = ({\n navigation,\n hasProfile,\n hasSearch,\n searchOpenOnload,\n placeHolderText,\n initialSearchTerm,\n platform,\n mastheadL1Data,\n selectedMenuItem,\n topRightLinks,\n ...mastheadProps\n}: propTypesMasthead) => {\n /**\n * Returns IBM.com authenticated status\n *\n * @param {boolean} isAuthenticated Whether the user is authenticated to IBM.com\n * @returns {*} The user status\n */\n const [isAuthenticated, setStatus] = useState(false);\n /**\n * Returns state of search status\n *\n * @param {boolean} isSearchActive Whether the search bar is open\n * @returns {*} The active search status\n */\n const [isSearchActive, setIsSearchActive] = useState(searchOpenOnload);\n const handleChangeSearchActive = useCallback((event, { isOpen }) => {\n setIsSearchActive(isOpen);\n }, []);\n\n /*useEffect(() => {\n // initialize global execution calls\n globalInit();\n /*}, []);*/\n\n /*useEffect(() => {\n let unmounted = false;\n (async () => {\n const status = await ProfileAPI.getUserStatus();\n if (!unmounted) {\n setStatus(status.user !== 'Unauthenticated');\n }\n })();\n return () => {\n unmounted = true;\n };\n }, []);*/\n\n let [mastheadData, setMastheadData] = useState([]);\n /*const [profileData, setProfileData] = useState({\n signedin: [],\n signedout: []\n });*/\n\n /*useEffect(() => {\n let unmounted = false;\n (async () => {\n try {\n const pageData = await TranslationAPI.getTranslation();\n if (!unmounted) {\n setMastheadData(pageData.mastheadNav.links);\n setProfileData(pageData.profileMenu);\n }\n } catch (error) {\n console.error('Error populating masthead data:', error);\n }\n })();\n return () => {\n unmounted = true;\n };\n }, []);*/\n\n /**\n * Forces profile menu position to fixed to prevent scrolling\n *\n */\n /*const _setProfileListPosition = () => {\n const profileMenuList = document.querySelector(\n `.${prefix}--masthead__profile-item`\n );\n profileMenuList.closest('ul').style.position = 'fixed';\n profileMenuList.closest('ul').style.top = '48px';\n };*/\n\n const [isMastheadSticky, setIsMastheadSticky] = useState(false);\n const stickyRef = useRef(null);\n const mastheadL1Ref = useRef(null);\n\n const mastheadSticky = cx({\n [`${prefix}--masthead--sticky`]: isMastheadSticky,\n [`${prefix}--masthead--sticky__l1`]: mastheadL1Ref.current != null\n });\n\n const headerSearchClasses = cx({\n [`${prefix}--masthead__platform`]: platform,\n [`${prefix}--masthead__header--search-active`]: isSearchActive\n });\n\n const [scrollOffset, setScrollOffset] = useState(root.scrollY);\n\n /*useEffect(() => {\n /**\n * Sets sticky masthead. If both L0 and L1 are present, L1 will be sticky.\n *\n */\n /*const handleScroll = root.addEventListener('scroll', () => {\n /**\n * L0 will hide on scroll down, show on scroll up\n *\n */\n /* if (mastheadL1Ref.current != null) {\n const prevOffset = scrollOffset;\n const currOffset = window.scrollY;\n setIsMastheadSticky(currOffset > prevOffset);\n setScrollOffset(currOffset);\n }\n });\n\n return () => {\n root.removeEventListener('scroll', () => handleScroll);\n };\n }, [scrollOffset]);*/\n\n //Add right side nav panel\n const [expandedHelp, setExpandedHelp] = useState(false);\n const [expandedNotifications, setExpandedNotifications] = useState(false);\n const [expandedQuickLinks, setExpandedQuickLinks] = useState(false);\n const [expandedAccount, setExpandedAccount] = useState(false);\n\n useEffect(() => {\n const handleMouseUp = root.addEventListener('mouseup', (e: any) => {\n if (!e.target.classList.contains('header__panel-int')) {\n closeAllPanels();\n }\n });\n\n return () => {\n root.removeEventListener('scroll', () => handleMouseUp);\n };\n }, [\n expandedHelp,\n expandedNotifications,\n expandedQuickLinks,\n expandedAccount\n ]);\n\n const closeAllPanels = () => {\n if (expandedHelp) {\n setExpandedHelp(!expandedHelp);\n }\n if (expandedNotifications) {\n setExpandedNotifications(!expandedNotifications);\n }\n if (expandedQuickLinks) {\n setExpandedQuickLinks(!expandedQuickLinks);\n }\n if (expandedAccount) {\n setExpandedAccount(!expandedAccount);\n }\n };\n\n if (navigation) {\n switch (typeof navigation) {\n case 'default':\n // eslint-disable-next-line\n mastheadData = mastheadData;\n break;\n case 'object':\n mastheadData = navigation;\n break;\n default:\n break;\n }\n }\n\n // set navigation type (default, alternate, or ecosystem) for autoids\n let navType: any;\n if (!navigation && !platform) {\n navType = 'alt';\n } else if (navigation && !platform) {\n navType = 'default';\n } else if (platform) {\n navType = 'eco';\n }\n\n /**\n * checks if there is a child item in the menu section that matches current url and returns true for first valid result\n *\n * @returns {boolean} function that returns true or false\n */\n // eslint-disable-next-line class-methods-use-this\n const _hasCurrentUrl = () => {\n let matchFound = false;\n\n return (sections: any, currentUrlPath: string) => {\n if (!matchFound) {\n if (sections.url === currentUrlPath) {\n matchFound = true;\n } else if (sections?.menuSections[0]) {\n const { menuItems } = sections?.menuSections[0];\n\n for (let i = 0; i < menuItems.length; i++) {\n if (\n menuItems[i]?.url === currentUrlPath ||\n menuItems[i]?.megapanelContent?.quickLinks?.links?.filter(\n (link: { url: string }) => link.url === currentUrlPath\n ).length\n ) {\n matchFound = true;\n }\n }\n }\n return matchFound;\n }\n return false;\n };\n };\n\n //manually do the set is nav expanded to avoid problem with header container and rerendering.\n const [isSideNavExpanded, setisSideNavExpanded] = useState(false);\n const onClickSideNavExpand = () => {\n setisSideNavExpanded(prev => !prev);\n if (isSideNavExpanded) {\n root.document?.body?.classList.remove(`${prefix}--body__lock-scroll`);\n } else {\n root.document?.body?.classList.add(`${prefix}--body__lock-scroll`);\n }\n };\n\n return (\n
\n
\n \n \n\n {(mastheadL1Data || navigation) && (\n {\n const platform = e.target.parentElement.querySelector(\n `nav .${prefix}--side-nav__submenu-platform`\n );\n\n const firstMenuItem =\n e.target.parentElement.querySelector(\n `.${prefix}--side-nav__menu-section--expanded li:first-of-type button`\n ) ||\n e.target.parentElement.querySelector(\n `.${prefix}--side-nav__menu-section--expanded li:first-of-type a`\n );\n\n const lastMenuItem =\n e.target.parentElement.querySelector(\n `.${prefix}--side-nav__menu-section--expanded li:last-of-type button`\n ) ||\n e.target.parentElement.querySelector(\n `.${prefix}--side-nav__menu-section--expanded li:last-of-type a`\n );\n\n if (\n e.relatedTarget &&\n e.relatedTarget !== firstMenuItem &&\n e.relatedTarget !== platform\n )\n return lastMenuItem.focus();\n }}\n />\n )}\n\n {(navigation || mastheadL1Data) && (\n \n )}\n\n \n\n
\n {navigation && !mastheadL1Data && (\n \n )}\n {hasSearch && (\n \n )}\n
\n\n
\n {topRightLinks.connect?.label && (\n \n {topRightLinks.connect.label}\n \n )}\n\n {topRightLinks.login?.label && (\n \n {topRightLinks.login.label}\n \n )}\n\n {topRightLinks.signup?.label && (\n \n {topRightLinks.signup.label}\n \n )}\n
\n \n
\n
\n );\n};\n\nMasthead.propTypes = {\n /**\n * Navigation data object/string for Masthead. These navigation properties belongs to the Masthead L0 Top navigation. Use one from below:\n *\n * | Behavior | Data Type | Description | Example |\n * | ------------------ | --------- | ------------------------------------------- | ----------------------------------- |\n * | default navigation | String | Default navigation data from IBM.com | `` |\n * | custom navigation | Object | Pass in custom navigation data as an object | `` |\n * | none | null | No navigation | `` |\n *\n * `Custom` navigation data must follow the same structure and key names as `default`.\n * See [this](https://1.www.s81c.com/common/carbon-for-ibm-dotcom/translations/masthead-footer/usen.json) for an example.\n */\n navigation: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(\n PropTypes.shape({\n hasMenu: PropTypes.bool,\n title: PropTypes.string,\n url: PropTypes.string,\n menuSections: PropTypes.arrayOf(\n PropTypes.shape({\n menuItems: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string\n })\n )\n })\n )\n })\n )\n ]),\n\n /**\n * `true` to render IBM Profile Menu component.\n */\n hasProfile: PropTypes.bool,\n\n /**\n * Custom login url in masthead profile menu (experimental)\n */\n customProfileLogin: PropTypes.string,\n\n /**\n * `true` to render SearchBar component.\n */\n hasSearch: PropTypes.bool,\n\n /**\n * `true` to have search field open on page load. Does not close `onBlur`\n */\n searchOpenOnload: PropTypes.bool,\n\n /**\n * Platform name that appears on L0.\n * Includes platform name (only available with `default` and `custom navigation`).\n * Object requires `name` and `url`.\n * See [docs](http://www.ibm.com/standards/carbon/react/?path=/docs/components-masthead--default#platform) for more details.\n */\n platform: PropTypes.shape({\n name: PropTypes.string,\n url: PropTypes.string\n }),\n\n /**\n * L0 menu item to render with selected state. Needs to match `titleEnglish` field from nav data.\n */\n selectedMenuItem: PropTypes.string,\n\n /**\n * Placeholder value for search input.\n */\n placeHolderText: PropTypes.string,\n\n /**\n * Initial value for search input.\n */\n initialSearchTerm: PropTypes.string,\n\n /**\n * All the data that goes to the L1 of the Masthead.\n */\n mastheadL1Data: PropTypes.shape({\n /**\n * Platform name that appears on L1.\n * Includes platform name\n * Object requires `name` and `url`.\n * See [docs](http://www.ibm.com/standards/carbon/react/?path=/docs/components-masthead--default#platform) for more details.\n */\n platform: PropTypes.shape({\n name: PropTypes.string,\n url: PropTypes.string\n }),\n\n /**\n * Text for the eyebrow link in masthead L1 (experimental).\n */\n eyebrowText: PropTypes.string,\n\n /**\n * URL for the eyebrow link in masthead L1 (experimental).\n */\n eyebrowLink: PropTypes.string,\n /**\n * Navigation data object/string for Masthead L1. Use one from below:\n *\n * | Behavior | Data Type | Description | Example |\n * | ------------------ | --------- | ------------------------------------------- | ----------------------------------- |\n * | default navigation | String | Default navigation data from IBM.com | `` |\n * | custom navigation | Object | Pass in custom navigation data as an object | `` |\n * | none | null | No navigation | `` |\n *\n * `Custom` navigation data must follow the same structure and key names as `default`.\n * See [this](https://1.www.s81c.com/common/carbon-for-ibm-dotcom/translations/masthead-footer/usen.json) for an example.\n */\n navigationL1: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(\n PropTypes.shape({\n hasMenu: PropTypes.bool,\n title: PropTypes.string,\n url: PropTypes.string,\n menuSections: PropTypes.arrayOf(\n PropTypes.shape({\n menuItems: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string\n })\n )\n })\n )\n })\n )\n ])\n }),\n\n /**\n * Custom typeahead API function\n */\n customTypeaheadApi: PropTypes.func,\n\n /**\n * Multiple search sections\n */\n multiSection: PropTypes.bool\n};\n\nMasthead.defaultProps = {\n hasProfile: true,\n hasSearch: true,\n searchOpenOnload: false,\n selectedMenuItem: '',\n platform: null,\n placeHolderText: 'Search',\n initialSearchTerm: '',\n mastheadL1Data: null\n};\n\nexport default Masthead;\n","import React, { useMemo, useEffect, useRef } from 'react';\nimport Masthead from './carbon-ibm/masthead';\ndeclare global {\n interface Window {\n header: any;\n }\n}\ninterface propTypesFeaturedLinks {\n heading?: string;\n headingLink?: string;\n headingTarget?: string;\n copy?: string;\n links?: { title: string; url: string; target: string }[];\n image?: { src: string; url: string; target: string };\n}\n\ninterface propTypesLinks {\n title?: string;\n mobileTitle?: string;\n url?: string;\n target?: string;\n copy?: string;\n links: {\n title: string;\n url: string;\n target?: string;\n }[];\n}\n\ninterface propHeaderProps {\n openSearchOnLoad: string;\n}\n\nconst Header = ({ openSearchOnLoad }: propHeaderProps) => {\n let lastScrollY = window.pageYOffset;\n\n const headerFirstChild = useRef(null);\n const [scrollDirection, setScrollDirection] = React.useState('up');\n\n const sortFeaturedList = (featuredList: propTypesFeaturedLinks) => {\n const featLinks = featuredList?.links\n ? featuredList.links.map(featLink => {\n const featLinkObj = {\n title: featLink.title,\n url: featLink.url,\n target: featLink.target,\n highlightedLink: true\n };\n return featLinkObj;\n })\n : [];\n\n const featLinksObj = {\n title: featuredList.heading ? featuredList.heading : null,\n ...(featuredList.headingLink\n ? { url: featuredList.headingLink }\n : { url: '' }),\n ...(featuredList.headingTarget\n ? { target: featuredList.headingTarget }\n : { target: '_self' }),\n highlighted: true,\n megapanelContent: {\n ...(featuredList.copy\n ? { description: featuredList.copy }\n : { description: '' }),\n quickLinks: {\n links: [...featLinks]\n },\n\n ...(featuredList.image\n ? {\n image: {\n ...(featuredList.image?.url\n ? { url: featuredList.image.url }\n : {}),\n src: featuredList.image.src\n }\n }\n : { image: '' })\n }\n };\n\n return featLinksObj;\n };\n\n const primaryNav = useMemo(() => {\n const firstPrimary = window.header?.primaryNav?.nav?.map(\n (nav: {\n title: string;\n url: string;\n target?: string;\n featuredList: propTypesFeaturedLinks;\n linkList: propTypesLinks[];\n spotlightLink: propTypesLinks;\n }) => {\n const featuredLinks = nav.featuredList\n ? sortFeaturedList(nav.featuredList)\n : null;\n\n const navLinks = nav.linkList\n ? nav.linkList.map((linkJson: propTypesLinks) => {\n const links = linkJson?.links?.map(link => {\n const linkObj = {\n title: link.title,\n url: link.url,\n target: link.target\n };\n return linkObj;\n });\n const linkColumnObj = {\n title: linkJson.title,\n url: linkJson.url,\n ...(linkJson.copy && { copy: linkJson.copy }),\n megapanelContent: {\n quickLinks: {\n ...(links ? { links: links } : null)\n }\n }\n };\n return linkColumnObj;\n })\n : [];\n\n const spotlightLink = nav.spotlightLink\n ? {\n title: nav.spotlightLink.title,\n mobileTitle: nav.spotlightLink.mobileTitle,\n url: nav.spotlightLink.url,\n target: nav.spotlightLink.target,\n megaPanelViewAll: true\n }\n : null;\n\n const menuItemsObj = () => {\n const arrayOfMenu = [];\n\n navLinks?.reduce((objNavLinks: {}[], obj: {}) => {\n objNavLinks.push(obj);\n return objNavLinks;\n }, []);\n\n if (featuredLinks || (navLinks.length && navLinks.length >= 2)) {\n if (featuredLinks) arrayOfMenu.push(featuredLinks);\n navLinks?.forEach((item: {}) => arrayOfMenu.push(item));\n } else {\n if (navLinks.length) {\n const firstLink = {\n title: navLinks[0].title,\n url: navLinks[0].url,\n target: navLinks[0].target\n };\n arrayOfMenu.push(firstLink);\n navLinks[0]?.megapanelContent?.quickLinks?.links?.forEach(link =>\n arrayOfMenu.push(link)\n );\n }\n }\n\n if (spotlightLink) {\n arrayOfMenu.push(spotlightLink);\n }\n return arrayOfMenu;\n };\n\n const itemMasthead = {\n title: nav.title,\n ...(nav.url ? { url: nav.url } : { url: '' }),\n ...(nav.target ? { target: nav.target } : { target: '_self' }),\n ...(nav.linkList ? { hasMenu: true } : { hasMenu: false }),\n ...(nav.featuredList || nav.linkList?.length >= 2\n ? { hasMegapanel: true }\n : { hasMegapanel: false }),\n menuSections: [\n {\n menuItems: menuItemsObj()\n }\n ]\n };\n return itemMasthead;\n }\n );\n\n const topRightLinks = window.header.topRightLinks;\n\n const connectLinkSideNav = {\n title: topRightLinks.connect.label,\n url: topRightLinks.connect.url,\n target: topRightLinks.connect.target,\n hasMenu: false,\n hasMegapanel: false,\n menuSections: [\n {\n menuItems: []\n }\n ]\n };\n\n const loginLinkSideNav = {\n title: topRightLinks.login.label,\n url: topRightLinks.login.url,\n target: topRightLinks.login.target,\n hasMenu: false,\n hasMegapanel: false,\n menuSections: [\n {\n menuItems: []\n }\n ]\n };\n\n const signupLinkSideNav = {\n title: topRightLinks.signup.label,\n url: topRightLinks.signup.url,\n target: topRightLinks.signup.target,\n hasMenu: false,\n hasMegapanel: false,\n menuSections: [\n {\n menuItems: []\n }\n ]\n };\n\n firstPrimary.push(connectLinkSideNav);\n firstPrimary.push(loginLinkSideNav);\n firstPrimary.push(signupLinkSideNav);\n\n return firstPrimary;\n }, [window.header.primaryNav]);\n\n const updateScrollDirection = () => {\n const scrollY = window.pageYOffset;\n const direction = scrollY > lastScrollY ? 'down' : 'up';\n setScrollDirection(direction);\n lastScrollY = scrollY > 0 ? scrollY : 0;\n };\n\n useEffect(() => {\n if (scrollDirection === 'down')\n headerFirstChild.current.parentNode.classList.add('ms-header--hidden');\n else\n headerFirstChild.current.parentNode.classList.remove('ms-header--hidden');\n\n window.addEventListener('scroll', updateScrollDirection); // add event listener\n return () => {\n window.removeEventListener('scroll', updateScrollDirection); // clean up\n };\n }, [scrollDirection]);\n\n return (\n
\n \n
\n );\n};\n\nexport default Header;\n"],"sourceRoot":""}