{"version":3,"file":"static/js/ae99cb188fc62fc192fa.bundle.js","mappings":"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","sources":["webpack://mattressfirm/./src/Utilities/isExternalLink.ts?57de","webpack://mattressfirm/./src/Utilities/plp-url-utils.ts?728b","webpack://mattressfirm/./src/themes/mattressfirm/views/footer-item.view.tsx?4bf9","webpack://mattressfirm/./lib/footer-item/module-registration.js?3ce3","webpack://mattressfirm/./src/modules/footer-item/footer-item.tsx?074a","webpack://mattressfirm/./src/modules/footer-item/footer-item.view.tsx?c5af","webpack://mattressfirm/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.string.match.js?a69e","webpack://mattressfirm/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.string.split.js?9fc2","webpack://mattressfirm/external var \"React\"?0d3b","webpack://mattressfirm/external var \"ReactDOM\"?853b"],"sourcesContent":["export const isExternalLink = (url: any) => {\r\n const tmp = document.createElement('a');\r\n tmp.href = url;\r\n return tmp.host !== window.location.host;\r\n};","import { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IRequestContext } from '@msdyn365-commerce/core';\r\nimport { ProductRefinerValue } from '@msdyn365-commerce/retail-proxy';\r\nexport interface IVirtualRefinersConfig {\r\n order: number;\r\n refinerName: string;\r\n enableForMattresses: boolean;\r\n enableForOtherCategories: boolean;\r\n allowDuplicate: boolean;\r\n}\r\n\r\n/**\r\n * This will create the canonicalURL as per 7924 requirement\r\n * @param requestContext\r\n * @returns string of canonical URL\r\n */\r\nexport const canonicalURL = (requestContext: IRequestContext): string => {\r\n const requestUrl = requestContext.url.requestUrl;\r\n const origin = requestUrl.origin;\r\n const path = requestUrl.pathname.toLowerCase();\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('/').splice(1);\r\n\r\n // remove double values containing pipe sign\r\n if (path.match(/%7c/)) {\r\n urlParts = removePipeSignValue(urlParts);\r\n }\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n const filteredPath = urlParts?.join('/');\r\n\r\n return `${origin}/${filteredPath}`;\r\n};\r\n\r\nexport const filteredURL = (requestContext: IRequestContext): string => {\r\n const requestUrl = requestContext.url.requestUrl;\r\n const path = requestUrl.pathname.toLowerCase();\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('/').splice(1);\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n const filteredPath = urlParts?.join('/');\r\n\r\n return `/${filteredPath}`;\r\n};\r\n\r\n/**\r\n * This will create the canonicalURL as per 7924 requirement\r\n * @param requestContext\r\n * @returns string of canonical URL\r\n */\r\nexport const canonicalURLWithoutBaseUrl = (requestContext: IRequestContext): string => {\r\n const requestUrl = requestContext.url.requestUrl;\r\n const path = requestUrl.pathname.toLowerCase();\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('\\/').splice(1);\r\n\r\n // remove double values containing pipe sign\r\n if (path.match(/%7c/)) {\r\n urlParts = removePipeSignValue(urlParts);\r\n }\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n return urlParts?.join('\\/');\r\n};\r\n\r\n/**\r\n * This will remove the Pipe sign value set from urlParts\r\n * @param urlParts\r\n * @returns\r\n */\r\nexport const removePipeSignValue = (urlParts: string[]) => {\r\n // urlParts.forEach((part, index) => {\r\n // const indexOfValue = urlParts.indexOf('%7c');\r\n // if (indexOfValue !== -1) {\r\n // urlParts.splice(indexOfValue, 1);\r\n // }\r\n // });\r\n\r\n if (urlParts !== undefined && urlParts.length > 0) {\r\n urlParts = urlParts.filter(urlPart => urlPart.indexOf('%7c') === -1);\r\n }\r\n\r\n return urlParts;\r\n};\r\n\r\n/**\r\n * This will remove the keywords from urlParts array which were received from\r\n * the app.settings.json/CMS Extensions\r\n * @param urlParts\r\n * @param requestContext\r\n * @returns urlParts array filtered\r\n */\r\nexport const removeKeywords = (urlParts: string[], requestContext: IRequestContext): string[] => {\r\n const removeKeywordFromUrl = requestContext.app.config.removeKeywordFromUrl;\r\n\r\n if (urlParts.length > 0 && removeKeywordFromUrl && removeKeywordFromUrl.length > 0) {\r\n const removeKeywordFromUrlArray: string[] = removeKeywordFromUrl?.trim().split(',');\r\n removeKeywordFromUrlArray?.length > 0 &&\r\n urlParts.forEach(_part => {\r\n removeKeywordFromUrlArray.forEach(removeKeyword => {\r\n const trimmedKeyword = removeKeyword.trim().toLowerCase();\r\n const indexOfValue = urlParts.indexOf(trimmedKeyword);\r\n if (trimmedKeyword.length > 0 && indexOfValue !== -1) {\r\n urlParts.splice(indexOfValue, 1);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return urlParts;\r\n};\r\n\r\n/**\r\n * This will sort the Virtual refiner config based on order and return\r\n * only active virtual refiner configs based on isMattress category will\r\n * be returned\r\n * @param requestContext\r\n * @param isMattressesCategory boolean | undefined\r\n * @returns IVirtualRefinersConfig[] | undefined\r\n */\r\nexport const getSortedVirtualRefinerConfig = (\r\n requestContext: IRequestContext,\r\n isMattressesCategory: boolean | undefined\r\n): IVirtualRefinersConfig[] | undefined => {\r\n let appConfigSorted = getVirtualRefinerConfig(requestContext);\r\n\r\n // sort the config by provided config\r\n if (appConfigSorted) {\r\n if (isMattressesCategory === true) {\r\n appConfigSorted = appConfigSorted.filter(appConfig => {\r\n return appConfig.enableForMattresses;\r\n });\r\n } else if (isMattressesCategory === false) {\r\n appConfigSorted = appConfigSorted.filter(appConfig => {\r\n return appConfig.enableForOtherCategories;\r\n });\r\n }\r\n appConfigSorted.sort((a: IVirtualRefinersConfig, b: IVirtualRefinersConfig) => {\r\n return a.order - b.order;\r\n });\r\n }\r\n\r\n return appConfigSorted;\r\n};\r\n\r\n/**\r\n * Virtual refiner names from the app.settings.json will be returned which can be used\r\n * to filter out refiners data based upon active virtual refiners\r\n * @param requestContext\r\n * @param isMattressesCategory boolean | undefined\r\n * @returns string[]\r\n */\r\nexport const getVirtualRefinerNames = (requestContext: IRequestContext, isMattressesCategory: boolean | undefined): string[] => {\r\n const sortedVirtualRefinerConfig = getSortedVirtualRefinerConfig(requestContext, isMattressesCategory);\r\n\r\n const appConfigRefinerNames: string[] = [];\r\n\r\n sortedVirtualRefinerConfig &&\r\n sortedVirtualRefinerConfig.forEach(sortedConfig => {\r\n appConfigRefinerNames.push(sortedConfig.refinerName.trim().toLowerCase());\r\n });\r\n\r\n return appConfigRefinerNames;\r\n};\r\n\r\n/**\r\n * This will return the value of virtual refiner configuration\r\n * @param requestContext\r\n * @returns IVirtualRefinersConfig[] | undefined\r\n */\r\nexport const getVirtualRefinerConfig = (requestContext: IRequestContext): IVirtualRefinersConfig[] => {\r\n return requestContext.app.config.urlModifications;\r\n};\r\n\r\nexport async function getVirtualRefinerValues(\r\n requestContext: IRequestContext,\r\n virtualRefiners: IProductRefinerHierarchy[]\r\n): Promise {\r\n const virtualRefinerValues: ProductRefinerValue[] = [];\r\n if (virtualRefiners.length === 0) {\r\n return virtualRefinerValues;\r\n }\r\n const requestUrl = requestContext.url.requestUrl;\r\n // const origin = requestUrl.origin;\r\n const path = requestUrl.pathname;\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('/').splice(1);\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n // remove category id {categoryid}.c\r\n const categoryIdToken = requestContext.urlTokens.recordId;\r\n const categoryId = categoryIdToken ? `${categoryIdToken}.c` : undefined;\r\n\r\n if (categoryId) {\r\n urlParts.splice(-1);\r\n }\r\n\r\n // run loop for each url part and get values from refiners for further usage\r\n const finalizedUrlParts: string[] = [];\r\n urlParts.forEach(plainUrlPart => {\r\n const urlPart = decodeURIComponent(plainUrlPart);\r\n if (urlPart.indexOf('|') !== -1) {\r\n const splitOnPipeSign = urlPart?.split('|');\r\n const filteredParts = splitOnPipeSign.filter(part => part.length > 0);\r\n filteredParts.forEach(filteredPart => {\r\n finalizedUrlParts.push(filteredPart.toLowerCase().trim());\r\n });\r\n }\r\n finalizedUrlParts.push(urlPart);\r\n });\r\n finalizedUrlParts.forEach((urlPart) => {\r\n virtualRefiners.forEach((mainRefiner) => {\r\n mainRefiner.Values.forEach((refinerValue) => {\r\n const refinerValueKeyName = refinerValue.LeftValueBoundString?.toLowerCase().trim().split(' ')?.join('-')?.replace(/\\&/g, 'and')?.replace(regExSpecialChars(requestContext.app.config.canonicalUrlspecialCharIncludeList), '-');\r\n if (refinerValueKeyName && refinerValueKeyName === urlPart) {\r\n virtualRefinerValues.push(refinerValue);\r\n }\r\n });\r\n });\r\n });\r\n\r\n return virtualRefinerValues;\r\n}\r\n\r\n/**\r\n * For navigation menu links, it will remove keywords configured in global configurations from the navigation link\r\n * and clp link and return url path string\r\n * @param link\r\n * @param requestContext\r\n * @returns string\r\n */\r\nexport const navLinkKeywordRemoval = (link: string, requestContext: IRequestContext): string => {\r\n // Using the rest operator in case there is a weirdly formatted URL with multiple question marks.\r\n const [linkBase, ...linkParams] = link?.split('?');\r\n\r\n // Only apply to category links and product links, which end in .c or .p. Check that a keyword is configured.\r\n if (!linkBase.endsWith('.c') && !linkBase.endsWith('.p') || !requestContext.app.config) {\r\n return link;\r\n }\r\n\r\n // Separate out url parts split on forward /\r\n let urlParts = linkBase?.split('\\/');\r\n\r\n // Remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n // Glue the URL params back together\r\n const linkParam = linkParams.map(param => `?${param}`)?.join('');\r\n\r\n // Rebuild URL by joining with forward slash and appending any URL parameters\r\n const filteredLink = `${urlParts?.join('/')}${linkParam}`;\r\n return `${filteredLink}`;\r\n};\r\nexport const regExSpecialChars = (includeConfigList: string): RegExp => {\r\n let includeConfig = '';\r\n if (includeConfigList !== undefined && includeConfigList !== '') {\r\n includeConfig = includeConfigList?.trim().split(',')?.join('\\\\\\\\');\r\n includeConfig = includeConfig && includeConfig !== '' ? `\\\\\\\\${includeConfig}` : '';\r\n const pattern = `[^\\\\w\\\\&\\\\|${includeConfig}]`;\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n return new RegExp(pattern, 'gi');\r\n } else {\r\n\r\n const pattern = `[^\\\\w\\\\&\\\\|]`;\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n return new RegExp(pattern, 'gi');\r\n }\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { navLinkKeywordRemoval } from '../../../Utilities/plp-url-utils';\r\nimport { isExternalLink } from '../../../Utilities/isExternalLink';\r\nimport { IFooterItemProps } from '../definition-extensions/footer-item.ext.props.autogenerated';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent> {\r\n private telemetryContent: ITelemetryContent;\r\n private payLoad: IPayLoad;\r\n private attributes: Msdyn365.IDictionary | undefined;\r\n constructor(props: IFooterViewProps & IFooterItemProps<{}>) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n // Construct telemetry attribute to render\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return {this._renderElement(this.props)};\r\n }\r\n\r\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\r\n\r\n public handleLinkClick = (event: React.MouseEvent) => {\r\n const { link, tealiumEvent } = this.props.config;\r\n const linkTexT = link && link.linkText ? link.linkText : '';\r\n onTelemetryClick(this.telemetryContent, this.payLoad, linkTexT);\r\n // @ts-ignore\r\n if ('utag' in window) {\r\n event.preventDefault();\r\n const isExternal = isExternalLink(link?.linkUrl.destinationUrl);\r\n const eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n const eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n const internalDestinationUrl =\r\n link?.linkUrl.destinationUrl === '/' ? '/' : link?.linkUrl.destinationUrl.split(location.host)[1];\r\n const internalLocalUrl =\r\n Msdyn365.msdyn365Commerce.isBrowser && window.location.href === '/'\r\n ? '/'\r\n : window.location.href.split(location.host)[1].split('?')[0];\r\n const eventAction = isExternal ? `to: ${link?.linkUrl.destinationUrl}` : `to: ${internalDestinationUrl}`;\r\n const eventLabel = isExternal ? `from footer: ${window.location.href}` : `from footer: ${internalLocalUrl}`;\r\n const isOpenInNewTab = link?.openInNewTab;\r\n // @ts-ignore\r\n // tslint:disable-next-line: object-literal-key-quotes\r\n utag.link({\r\n event: tealiumEvent?.event ? tealiumEvent.event : eventName,\r\n event_category: tealiumEvent?.event_category ? tealiumEvent.event_category : eventCategory,\r\n event_action: tealiumEvent?.event_action ? tealiumEvent.event_action : eventAction,\r\n event_label: tealiumEvent?.event_label ? tealiumEvent.event_label : eventLabel,\r\n event_noninteraction: 'false'\r\n });\r\n !isOpenInNewTab\r\n ? (window.location.href = navLinkKeywordRemoval(link?.linkUrl.destinationUrl!, this.props.context.request))\r\n : window.open(navLinkKeywordRemoval(link?.linkUrl.destinationUrl!, this.props.context.request));\r\n }\r\n };\r\n\r\n private _renderElement(props: IFooterViewProps & IFooterItemProps<{}>): React.ReactNode | null {\r\n const { heading, HeadingContainer, Link, linkText, image, text, context, config } = props;\r\n if (heading) {\r\n return {heading} ;\r\n } else if (Link && image) {\r\n return (\r\n ) => {\r\n // @ts-ignore\r\n if ('utag' in window) {\r\n event.preventDefault();\r\n const isOpenInNewTab = this.props.config.link?.openInNewTab;\r\n // @ts-ignore\r\n // tslint:disable-next-line: object-literal-key-quotes max-line-length\r\n utag.link({\r\n event: config.tealiumEvent?.event ? config.tealiumEvent.event : 'outbound-social-link-click',\r\n event_category: config.tealiumEvent?.event_category ? config.tealiumEvent.event_category : 'outbound links',\r\n event_action: config.tealiumEvent?.event_action ? config.tealiumEvent.event_action :'social link',\r\n event_label: config.tealiumEvent?.event_label ? config.tealiumEvent.event_label : `to: ${navLinkKeywordRemoval(config.link?.linkUrl.destinationUrl!, context.request)}`,\r\n event_noninteraction: 'false'\r\n });\r\n !isOpenInNewTab\r\n ? (window.location.href = navLinkKeywordRemoval(config.link?.linkUrl.destinationUrl!, context.request))\r\n : window.open(navLinkKeywordRemoval(config.link?.linkUrl.destinationUrl!, context.request));\r\n }\r\n }}\r\n >\r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n const { link } = this.props.config;\r\n if (link) {\r\n const linkTexT = link.linkText ? link.linkText : '';\r\n // TODO: Update the inner tag in the anchor link to span\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-footer__link',\r\n linkText: linkTexT,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: this.attributes!,\r\n onClick: this.handleLinkClick\r\n };\r\n return (\r\n \r\n );\r\n }\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['footer-item'] = {\n c: () => require('@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item'),\n $type: 'moduleDefinition',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'footer-item',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item'\n });\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|themes|mattressfirm|views|footer-item'] = {\n c: () => require('partner/themes/mattressfirm/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['@msdyn365-commerce-modules|footer|modules|footer-item|footer-item'] = {\n c: () => require('@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item.view.js'),\n cn: '@msdyn365-commerce-modules-footer-footer-item'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","module.exports = React;","module.exports = ReactDOM;"],"names":["isExternalLink","url","tmp","document","createElement","href","host","window","location","canonicalURL","requestContext","requestUrl","origin","path","pathname","toLowerCase","urlParts","split","splice","match","removePipeSignValue","removeKeywords","join","filteredURL","undefined","length","filter","urlPart","indexOf","removeKeywordFromUrl","app","config","removeKeywordFromUrlArray","trim","forEach","_part","removeKeyword","trimmedKeyword","indexOfValue","getSortedVirtualRefinerConfig","isMattressesCategory","appConfigSorted","getVirtualRefinerConfig","appConfig","enableForMattresses","enableForOtherCategories","sort","a","b","order","getVirtualRefinerNames","sortedVirtualRefinerConfig","appConfigRefinerNames","sortedConfig","push","refinerName","urlModifications","async","getVirtualRefinerValues","virtualRefiners","virtualRefinerValues","categoryIdToken","urlTokens","recordId","finalizedUrlParts","plainUrlPart","decodeURIComponent","part","filteredPart","mainRefiner","Values","refinerValue","refinerValueKeyName","LeftValueBoundString","replace","regExSpecialChars","canonicalUrlspecialCharIncludeList","navLinkKeywordRemoval","link","linkBase","linkParams","endsWith","linkParam","map","param","includeConfigList","includeConfig","RegExp","FooterItemView","React","constructor","props","super","handleLinkTextChange","event","this","linkText","target","value","handleLinkClick","tealiumEvent","linkTexT","onTelemetryClick","telemetryContent","payLoad","preventDefault","isExternal","linkUrl","destinationUrl","eventName","eventCategory","internalDestinationUrl","internalLocalUrl","Msdyn365","eventAction","eventLabel","isOpenInNewTab","openInNewTab","utag","event_category","event_action","event_label","event_noninteraction","open","context","request","getTelemetryObject","telemetryPageName","friendlyName","telemetry","getPayloadObject","render","FooterItem","Module","_renderElement","heading","HeadingContainer","Link","image","text","Node","onClick","editableLink","ariaLabel","className","role","additionalProperties","attributes","editProps","onTextChange","binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","handleHeadingChange","handleTextChange","footerItemClassName","classnames","contentAction","etext","getTelemetryAttributes","viewProps","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","moduleProps","ItemContainer","tag","title","renderView","onEdit","item","ariaHiddenAttr","src","gridSettings","imageSettings","viewports","xs","q","w","h","lg","lazyload","loadFailureBehavior","key","shouldSkipToMainImage","call","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","toLength","toString","requireObjectCoercible","getMethod","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","O","matcher","string","rx","S","res","done","global","fullUnicode","unicode","lastIndex","result","A","matchStr","apply","uncurryThis","isRegExp","speciesConstructor","arraySlice","callRegExpExec","regexpExec","stickyHelpers","fails","UNSUPPORTED_Y","MAX_UINT32","min","Math","$push","exec","stringSlice","slice","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","output","flags","ignoreCase","multiline","sticky","lastLastIndex","separatorCopy","source","index","splitter","C","unicodeMatching","e","z","i","re","originalExec","arguments","module","exports","ReactDOM"],"sourceRoot":""}