{"version":3,"sources":["webpack:///../node_modules/@ux/bookends/dist/es/index-60e748fa.js","webpack:///../node_modules/@ux/bookends/dist/es/utils-2cbabf7b.js","webpack:///../node_modules/@ux/bookends/dist/es/sales-header-83031bcd.js","webpack:///../node_modules/@ux/bookends/dist/es/ConnectedHeader-30fa9f3b.js"],"names":["SalesHeader","enhance","props","createElement","addPromoLabel","label","intl","link","promo","promoLabel","messages","addSubmenuLabels","illustrationKey","title","body","formatLabels","links","externalConfig","map","_result$submenu$items","_result$submenu","result","key","submenu","items","item","withFormattedLabels","ConnectedSalesHeader","_props$links","isEcommerce","showBasket","showAccount","colorway","supplementaryLinks","contactLinks","shortcutNav","location","refresh","withFormattedLabels$1","enhance$1","normalizeLinkProp","language","prop","_props$$language","_props$","value","normalizeLinkUrl","useBookendsConfig","useColorway","config","_config$sales","_config$sales$header","sales","header","useHelpUrl","brandConfig","data","lang","normalize","support","url","useLinks","_config$sales$header$","_config$sales2","_config$sales2$header","menu","menuItem","_menuItem$submenu$ite","_menuItem$submenu","useAccountLinks","_config$sales$header$2","_config$sales3","_config$sales3$header","_config$sales3$header2","_config$sales3$header3","account","useSupplementaryLinks","_config$sales$header$3","_config$sales4","_config$sales4$header","_config$sales4$header2","_config$sales4$header3","supplementary","slice","useContactLinks","_config$sales$header$4","_config$sales5","_config$sales5$header","_config$sales5$header2","_config$sales5$header3","contact","useShortcuts","to","icon","analyticsKey","filter","Boolean","Desktop","Mobile","Header","brand","externalRoutes","basketItemCount","isMinMd","Header$1","logo","basketUrl","homeUrl","setHeight"],"mappings":"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","file":"pex-static/16/73.bda9d904aada06be02ff.chunk.js","sourcesContent":["import React, { useEffect } from 'react';\nimport { withProps, omitProps, tap } from '@team-griffin/rehook';\nimport { puree, mush, withHooks } from '@ux/pure-enhance';\nimport { useLocation } from 'react-router';\nimport { u as useIsEcommerce, a as useRefreshBasketCount } from './index-7a407b2e.js';\nimport { u as useColorway, a as useLinks, b as useSupplementaryLinks, c as useContactLinks, d as useShortcuts } from './sales-header-83031bcd.js';\nimport { H as Header } from './ConnectedHeader-30fa9f3b.js';\nimport { injectIntl } from 'react-intl';\nimport 'react-jpex';\nimport '@ux/language';\nimport 'jpex';\nimport 'browser-cookies';\nimport '@ux/drivers';\nimport 'react-query';\nimport 'react-with-suspense-lazy';\nimport '@ux/whitelabel';\nimport '@ux/accounts-client';\nimport '@ux/bus';\nimport './utils-2cbabf7b.js';\nimport '@ux/responsive';\n\nconst enhance = puree('SalesHeader')();\n\nconst PureSalesHeader = props => /*#__PURE__*/React.createElement(Header, props);\n\nvar SalesHeader = enhance(PureSalesHeader);\n\n/**\n * If the menu item has `promo`\n * add the promo label using cascading intl message\n */\nconst addPromoLabel = (label, intl) => link => {\n if (link.promo) {\n return { ...link,\n promoLabel: intl.messages[label] ? label : 'bks.menu.promo'\n };\n }\n\n return link;\n};\n/**\n * If the submenu has `illustrationKey`\n * add the title & body labels using cascading intl message\n */\n\n\nconst addSubmenuLabels = label => link => {\n if (link.illustrationKey) {\n return { ...link,\n title: `${label}.title`,\n body: `${label}.body`\n };\n }\n\n return link;\n};\n/**\n * We offer a maximum of 9 top menu messages, and 81 submenu messages\n * as each top menu item can contain 9 submenu items\n *\n * The top level menu items use the lexicon IDs\n * bks.menu.items.[0-8].label\n *\n * The submenu items use the lexicon IDs\n * bks.menu.submenu.items.[0-80].title\n * bks.menu.submenu.items.[0-80].body\n *\n * Rather than using an array index, each of the top menu and submenu items\n * contain a `key` from brandpilot:\n * 0-9 for top level items, 0-80 for submenu items\n *\n * This means the menu can be easily re-ordered within bpt\n * by adjusting the order of the yaml\n */\n\n\nconst formatLabels = (links, intl, externalConfig = false) => {\n return links.map(link => {\n var _result$submenu$items, _result$submenu;\n\n let result = { ...link,\n label: externalConfig ? link.label : `bks.menu.items.${link.key}.label`\n };\n result = addPromoLabel(`bks.menu.items.${link.key}.promo`, intl)(result);\n result = { ...result,\n submenu: { ...result.submenu,\n items: ((_result$submenu$items = (_result$submenu = result.submenu) === null || _result$submenu === void 0 ? void 0 : _result$submenu.items) != null ? _result$submenu$items : []).map(item => {\n let result = {\n title: `bks.menu.submenu.items.${item.key}.title`,\n body: `bks.menu.submenu.items.${item.key}.body`,\n ...item\n };\n result = addPromoLabel(`bks.menu.submenu.items.${item.key}.promo`, intl)(result);\n return result;\n })\n }\n };\n result = { ...result,\n submenu: addSubmenuLabels(`bks.menu.items.${link.key}.submenu`)(result.submenu)\n };\n return result;\n });\n};\nconst withFormattedLabels = mush('withFormattedLabels')(injectIntl, withHooks(withProps(({\n links,\n intl,\n externalConfig\n}) => ({\n links: formatLabels(links, intl, externalConfig)\n})), omitProps(['externalConfig'])));\nvar withFormattedLabels$1 = (() => withFormattedLabels);\n\nconst enhance$1 = mush('ConnectedSalesHeader')(withHooks(withProps(props => {\n var _props$links;\n\n const isEcommerce = useIsEcommerce();\n return {\n showBasket: isEcommerce,\n showAccount: isEcommerce,\n colorway: useColorway(),\n links: (_props$links = props.links) != null ? _props$links : useLinks(),\n supplementaryLinks: useSupplementaryLinks(),\n contactLinks: useContactLinks(),\n shortcutNav: useShortcuts(),\n externalConfig: props.links != null\n };\n}), tap(({\n showBasket\n}) => {\n // we also want to refetch the basket whenever the location changes...\n const location = useLocation();\n const refresh = useRefreshBasketCount();\n useEffect(() => {\n // Do not refetch the basket if it's not displayed (non ecommerce apps)\n if (showBasket) {\n refresh();\n }\n }, [location, refresh, showBasket]);\n})), withFormattedLabels$1());\nvar ConnectedSalesHeader = enhance$1(SalesHeader);\n\nexport default ConnectedSalesHeader;\n","const normalizeLinkProp = (language, prop) => props => {\n var _props$$language, _props$;\n\n const value = (_props$$language = (_props$ = props[`${prop}s`]) === null || _props$ === void 0 ? void 0 : _props$[language]) != null ? _props$$language : props[prop];\n const result = { ...props,\n [prop]: value\n };\n delete result[`${prop}s`];\n return result;\n};\nconst normalizeLinkUrl = language => normalizeLinkProp(language, 'url');\n\nexport { normalizeLinkProp as a, normalizeLinkUrl as n };\n","import { useMemo } from 'react';\nimport { useAppConfig, useBrandConfig } from '@ux/whitelabel';\nimport { useLanguage } from '@ux/language';\nimport { b as useControlPanelUrl } from './index-7a407b2e.js';\nimport { n as normalizeLinkUrl } from './utils-2cbabf7b.js';\n\n/* eslint-disable react-hooks/rules-of-hooks */\n\nconst useBookendsConfig = () => useAppConfig('bks');\n\nconst useColorway = (config = useBookendsConfig()) => {\n var _config$sales, _config$sales$header;\n\n return (_config$sales = config.sales) === null || _config$sales === void 0 ? void 0 : (_config$sales$header = _config$sales.header) === null || _config$sales$header === void 0 ? void 0 : _config$sales$header.colorway;\n};\nconst useHelpUrl = (brandConfig = useBrandConfig(), {\n data: lang\n} = useLanguage()) => {\n return useMemo(() => {\n const normalize = normalizeLinkUrl(lang);\n const support = brandConfig.support;\n return normalize(support).url;\n }, [lang, brandConfig]);\n};\nconst useLinks = (config = useBookendsConfig(), {\n data: lang\n} = useLanguage()) => {\n return useMemo(() => {\n var _config$sales$header$, _config$sales2, _config$sales2$header;\n\n const normalize = normalizeLinkUrl(lang);\n return ((_config$sales$header$ = config === null || config === void 0 ? void 0 : (_config$sales2 = config.sales) === null || _config$sales2 === void 0 ? void 0 : (_config$sales2$header = _config$sales2.header) === null || _config$sales2$header === void 0 ? void 0 : _config$sales2$header.menu) != null ? _config$sales$header$ : []).map(normalize).map(menuItem => {\n var _menuItem$submenu$ite, _menuItem$submenu;\n\n if (!menuItem.submenu) {\n return menuItem;\n }\n\n const items = ((_menuItem$submenu$ite = menuItem === null || menuItem === void 0 ? void 0 : (_menuItem$submenu = menuItem.submenu) === null || _menuItem$submenu === void 0 ? void 0 : _menuItem$submenu.items) != null ? _menuItem$submenu$ite : []).map(normalize);\n return { ...menuItem,\n submenu: { ...menuItem.submenu,\n items\n }\n };\n });\n }, [config, lang]);\n};\nconst useAccountLinks = (config = useBookendsConfig(), {\n data: lang\n} = useLanguage()) => {\n return useMemo(() => {\n var _config$sales$header$2, _config$sales3, _config$sales3$header, _config$sales3$header2, _config$sales3$header3;\n\n return ((_config$sales$header$2 = config === null || config === void 0 ? void 0 : (_config$sales3 = config.sales) === null || _config$sales3 === void 0 ? void 0 : (_config$sales3$header = _config$sales3.header) === null || _config$sales3$header === void 0 ? void 0 : (_config$sales3$header2 = _config$sales3$header.account) === null || _config$sales3$header2 === void 0 ? void 0 : (_config$sales3$header3 = _config$sales3$header2.menu) === null || _config$sales3$header3 === void 0 ? void 0 : _config$sales3$header3.items) != null ? _config$sales$header$2 : []).map(normalizeLinkUrl(lang));\n }, [config, lang]);\n};\nconst useSupplementaryLinks = (config = useBookendsConfig(), {\n data: lang\n} = useLanguage()) => {\n return useMemo(() => {\n var _config$sales$header$3, _config$sales4, _config$sales4$header, _config$sales4$header2, _config$sales4$header3;\n\n return ((_config$sales$header$3 = config === null || config === void 0 ? void 0 : (_config$sales4 = config.sales) === null || _config$sales4 === void 0 ? void 0 : (_config$sales4$header = _config$sales4.header) === null || _config$sales4$header === void 0 ? void 0 : (_config$sales4$header2 = _config$sales4$header.supplementary) === null || _config$sales4$header2 === void 0 ? void 0 : (_config$sales4$header3 = _config$sales4$header2.menu) === null || _config$sales4$header3 === void 0 ? void 0 : _config$sales4$header3.items) != null ? _config$sales$header$3 : []).slice(0, 5).map(normalizeLinkUrl(lang));\n }, [config, lang]);\n};\nconst useContactLinks = (config = useBookendsConfig(), {\n data: lang\n} = useLanguage()) => {\n return useMemo(() => {\n var _config$sales$header$4, _config$sales5, _config$sales5$header, _config$sales5$header2, _config$sales5$header3;\n\n return ((_config$sales$header$4 = config === null || config === void 0 ? void 0 : (_config$sales5 = config.sales) === null || _config$sales5 === void 0 ? void 0 : (_config$sales5$header = _config$sales5.header) === null || _config$sales5$header === void 0 ? void 0 : (_config$sales5$header2 = _config$sales5$header.contact) === null || _config$sales5$header2 === void 0 ? void 0 : (_config$sales5$header3 = _config$sales5$header2.menu) === null || _config$sales5$header3 === void 0 ? void 0 : _config$sales5$header3.items) != null ? _config$sales$header$4 : []).map(normalizeLinkUrl(lang));\n }, [config, lang]);\n};\nconst useShortcuts = (url = useControlPanelUrl()) => {\n // Urls may not be set on non-ecommerce brands so we must filter them out\n return useMemo(() => {\n return [{\n label: 'bks.masthead.controlPanel',\n to: url,\n icon: 'controls',\n analyticsKey: 'control-panel'\n }].filter(({\n to\n }) => Boolean(to));\n }, [url]);\n};\n\nexport { useLinks as a, useSupplementaryLinks as b, useContactLinks as c, useShortcuts as d, useHelpUrl as e, useAccountLinks as f, useColorway as u };\n","import { defaultProps, withProps } from '@team-griffin/rehook';\nimport { puree } from '@ux/pure-enhance';\nimport { c as useLogos, d as useBasketUrl, e as useHomeUrl, f as useBasketCount, g as useHeaderHeightState } from './index-7a407b2e.js';\nimport React from 'react';\nimport { withSuspenseLazy } from 'react-with-suspense-lazy';\nimport { withBreakpointsHook } from '@ux/responsive';\n\nconst Desktop = withSuspenseLazy(() => import('./Desktop-befaad69.js'));\nconst Mobile = withSuspenseLazy(() => import('./Mobile-c42d4275.js'));\nconst enhance = puree('Header')(defaultProps({\n links: [],\n supplementaryLinks: [],\n contactLinks: [],\n brand: '',\n externalRoutes: [],\n basketItemCount: 0\n}), withBreakpointsHook);\nconst PureSalesHeader = props => props.isMinMd ? /*#__PURE__*/React.createElement(Desktop, props) : /*#__PURE__*/React.createElement(Mobile, props);\nvar Header = enhance(PureSalesHeader);\n\nconst enhance$1 = puree('ConnectedHeader')(withProps(() => {\n const logo = useLogos();\n const basketUrl = useBasketUrl();\n const homeUrl = useHomeUrl();\n return {\n logo,\n basketUrl,\n homeUrl\n };\n}), withProps(() => {\n const {\n data: basketItemCount\n } = useBasketCount();\n const [, setHeight] = useHeaderHeightState();\n return {\n basketItemCount,\n setHeight\n };\n})); // @ts-ignore\n\nvar Header$1 = enhance$1(Header);\n\nexport { Header$1 as H };\n"],"sourceRoot":""}