{"version":3,"file":"static/js/03157f0de878b3802788.bundle.js","mappings":"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","sources":["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/external var \"React\"?0d3b","webpack://mattressfirm/external var \"ReactDOM\"?853b"],"sourcesContent":["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, which end in .c. Check that a keyword is configured.\r\n if (!linkBase.endsWith('.c') || !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 return new RegExp(pattern, 'gi');\r\n } else {\r\n\r\n const pattern = `[^\\\\w\\\\&\\\\|]`;\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\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) {\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 } = 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) {\r\n event.preventDefault();\r\n const isExternal = link?.linkUrl.type === 'externalLink' ? true : false;\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: eventName,\r\n event_category: eventCategory,\r\n event_action: eventAction,\r\n 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): 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) {\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: 'outbound-social-link-click',\r\n event_category: 'outbound links',\r\n event_action: 'social link',\r\n 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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, onTelemetryClick } 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(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\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 && link.linkUrl && 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 }\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 (\n {link.linkText}\n );\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. All rights reserved.\n * See License.txt 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 (\n \n {this._renderElement(this.props)}\n \n );\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 (\n {' '}\n {heading}\n {' '}\n );\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","module.exports = React;","module.exports = ReactDOM;"],"names":["canonicalURL","requestContext","requestUrl","url","origin","path","pathname","toLowerCase","urlParts","split","splice","match","removePipeSignValue","removeKeywords","filteredPath","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","filteredLink","includeConfigList","includeConfig","pattern","RegExp","FooterItemView","React","constructor","props","super","handleLinkTextChange","event","this","linkText","target","value","handleLinkClick","linkTexT","onTelemetryClick","telemetryContent","payLoad","utag","preventDefault","isExternal","linkUrl","type","eventName","eventCategory","internalDestinationUrl","destinationUrl","location","host","internalLocalUrl","Msdyn365","window","href","eventAction","eventLabel","isOpenInNewTab","openInNewTab","event_category","event_action","event_label","event_noninteraction","open","context","request","getTelemetryObject","telemetryPageName","friendlyName","telemetry","getPayloadObject","render","FooterItem","Module","Object","_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","module","exports","ReactDOM"],"sourceRoot":""}