{"version":3,"file":"static/js/1b86b89ea43e60e33cb0.bundle.js","mappings":"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","sources":["webpack://mattressfirm/./src/Utilities/countdown-schedule.ts?0d48","webpack://mattressfirm/./src/Utilities/get-view-port.tsx?4210","webpack://mattressfirm/./src/Utilities/plp-url-utils.ts?728b","webpack://mattressfirm/./src/modules/d5-mfrm-content-reel/featured-content.tsx?f2e9","webpack://mattressfirm/./src/modules/d5-mfrm-content-reel/d5-mfrm-content-reel.tsx?7e65","webpack://mattressfirm/./src/modules/d5-mfrm-content-reel/d5-mfrm-content-reel.view.tsx?af4b","webpack://mattressfirm/./lib/d5-mfrm-content-reel/module-registration.js?e910","webpack://mattressfirm/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.string.match.js?a69e","webpack://mattressfirm/external var \"React\"?0d3b","webpack://mattressfirm/external var \"ReactDOM\"?853b"],"sourcesContent":["import dayjs from 'dayjs';\r\nconst format = 'M/D/YYYY H:m:s';\r\n\r\nexport interface IScheduleData {\r\n enableCountdown?: boolean;\r\n startDate?: string;\r\n endDate?: string;\r\n startTime?: string;\r\n endTime?: string;\r\n timeZone?: string | undefined;\r\n}\r\n\r\n// convert timezone choice to matching timezone in moment-timezone\r\nexport const getTimeZone = (timeZone: string): string | undefined => {\r\n switch (timeZone) {\r\n case 'hawaii':\r\n return 'America/Adak';\r\n case 'alaska':\r\n return 'America/Anchorage';\r\n case 'pacific':\r\n return 'America/Los_Angeles';\r\n case 'mountain':\r\n return 'America/Denver';\r\n case 'central':\r\n return 'America/Chicago';\r\n case 'eastern':\r\n return 'America/New_York';\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\n// convert time to local time\r\nexport const convertToLocal = (time: dayjs.Dayjs, schedule: IScheduleData): dayjs.Dayjs | undefined => {\r\n const timeZone = schedule.timeZone;\r\n\r\n return !timeZone ? time : dayjs(time.format(format), format).tz(timeZone).local();\r\n};\r\n\r\n// checks if countdown/banner is currently scheduled\r\nexport const isScheduled = (schedule: IScheduleData, showExpired = false): Boolean => {\r\n if (!schedule.enableCountdown) {\r\n return false;\r\n }\r\n // let isScheduled = false;\r\n\r\n let start = schedule.startDate && schedule.startTime && dayjs(`${schedule.startDate} ${schedule.startTime}`, format);\r\n let end = schedule.endDate && schedule.endTime && dayjs(`${schedule.endDate} ${schedule.endTime}`, format);\r\n\r\n // check if schedule is valid\r\n const validStart = start && start.isValid();\r\n const validEnd = end && end.isValid();\r\n\r\n if (!validStart || !validEnd) {\r\n return false;\r\n }\r\n\r\n const now = dayjs();\r\n\r\n // convert to local time\r\n start = start && convertToLocal(start, schedule);\r\n end = end && convertToLocal(end, schedule);\r\n\r\n if (showExpired) {\r\n return now.isAfter(start);\r\n } else {\r\n return now.isBetween(start, end);\r\n }\r\n};\r\n","import MsDyn365, { ICoreContext } from '@msdyn365-commerce/core';\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nconst _getViewPort = (context: ICoreContext): GridSize => {\r\n if (MsDyn365.isBrowser && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n return 'xs';\r\n};\r\n\r\nexport default _getViewPort;\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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365, { getRichTextHtml, IGridSettings, IImageData, Image, RichText, RichTextComponent } from '@msdyn365-commerce/core';\r\n\r\nimport * as React from 'react';\r\n\r\nimport Badge from 'mfcl/Badge';\r\nimport Countdown, { CountdownRenderProps, zeroPad } from 'react-countdown';\r\n\r\ninterface ISaleData {\r\n image: IImageData;\r\n carouselIndex: number;\r\n title: RichText;\r\n gridSettings: IGridSettings;\r\n description: RichText | undefined;\r\n promoBadge: string | undefined;\r\n countdown: Date | undefined;\r\n linkTo: string;\r\n salesTitle: boolean;\r\n}\r\n\r\nexport default (props: ISaleData) => {\r\n const styles = 'd5-mfrm-content-reel__';\r\n const { image, title, gridSettings, description, promoBadge = '', countdown = '', linkTo, salesTitle } = props;\r\n\r\n const handleAnalytics = () => {\r\n // @todo Update the analytic setup once requirement is provided\r\n if (MsDyn365.isBrowser) {\r\n window.location.href = linkTo;\r\n }\r\n };\r\n\r\n const featuredSaleRefSale = React.useRef();\r\n React.useEffect(() => {\r\n featuredSaleRefSale.current && featuredSaleRefSale.current.addEventListener('click', handleClick);\r\n }, []);\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n handleAnalytics();\r\n };\r\n\r\n const [countdownRunning, setCountdownRunning] = React.useState(!!countdown);\r\n const renderer = ({ days, hours, minutes, seconds, completed }: CountdownRenderProps) => {\r\n if (completed) {\r\n setCountdownRunning(false);\r\n return <>;\r\n } else {\r\n return (\r\n \r\n {days ? `${zeroPad(days, 2)}:` : null}\r\n {zeroPad(hours, 2)}:{zeroPad(minutes, 2)}:{zeroPad(seconds, 2)}\r\n \r\n );\r\n }\r\n };\r\n return (\r\n \r\n
\r\n {image?.altText}\r\n
\r\n {title &&
}\r\n {description && }\r\n
\r\n\r\n {promoBadge && {promoBadge}}\r\n {countdown && countdownRunning && (\r\n \r\n \r\n \r\n )}\r\n
\r\n \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\n\r\nimport * as React from 'react';\r\n\r\nimport { convertToLocal, getTimeZone, isScheduled } from '../../Utilities/countdown-schedule';\r\nimport FeaturedProduct from './featured-content';\r\nimport { ID5MfrmContentReelData } from './d5-mfrm-content-reel.data';\r\nimport { ICountdownScheduleData, ID5MfrmContentReelProps } from './d5-mfrm-content-reel.props.autogenerated';\r\n\r\nimport dayjs from 'dayjs';\r\nimport { navLinkKeywordRemoval } from '../../Utilities/plp-url-utils';\r\nconst format = 'M/D/YYYY H:m:s';\r\n\r\nexport interface ID5MfrmContentReelViewProps extends ID5MfrmContentReelProps {\r\n carouselItems: React.ReactNode[];\r\n}\r\n\r\n/**\r\n *\r\n * MfrmContentReel component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass D5MfrmContentReel extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n if (!this.props.config.featuredContentList) {\r\n return null;\r\n }\r\n\r\n const viewProps: ID5MfrmContentReelViewProps = {\r\n ...(this.props as ID5MfrmContentReelProps),\r\n carouselItems: this._getCarouselItems()\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private _getNewCountdown = (countdownSchedule: ICountdownScheduleData) => {\r\n const { enableCountdown, startDate, endDate, startTime, endTime, timeZone = '' } = countdownSchedule;\r\n\r\n const formattedSchedule = {\r\n enableCountdown,\r\n startDate,\r\n endDate,\r\n startTime,\r\n endTime,\r\n timeZone: getTimeZone(timeZone)\r\n };\r\n // check if countdown is scheduled to show\r\n if (!isScheduled(formattedSchedule, true)) {\r\n return;\r\n }\r\n let countdown;\r\n\r\n const scheduleEnd = dayjs(`${endDate} ${endTime}`, format);\r\n const scheduleEndLocal = scheduleEnd && convertToLocal(scheduleEnd, formattedSchedule);\r\n if (scheduleEndLocal) {\r\n countdown = scheduleEndLocal.toDate();\r\n }\r\n return countdown;\r\n };\r\n\r\n private _getCarouselItems = (): React.ReactNode[] => {\r\n const {\r\n config: { featuredContentList, salesTitle = false },\r\n context: {\r\n request: { gridSettings }\r\n }\r\n } = this.props;\r\n\r\n return featuredContentList.map((sale, index) => {\r\n const { title: saleTitle, image, description, promoBadge, link, countdownSchedule } = sale;\r\n\r\n const countdown = countdownSchedule ? this._getNewCountdown(countdownSchedule) : undefined;\r\n\r\n return (\r\n \r\n );\r\n });\r\n };\r\n}\r\n\r\nexport default D5MfrmContentReel;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport Carousel from 'mfcl/Carousel';\r\nimport * as React from 'react';\r\nimport _getViewPort from '../../Utilities/get-view-port';\r\nimport { ID5MfrmContentReelViewProps } from './d5-mfrm-content-reel';\r\n\r\nexport default (props: ID5MfrmContentReelViewProps) => {\r\n const [loaded, setIsLoaded] = React.useState(false);\r\n const hideLoader = () => {\r\n setIsLoaded(true);\r\n };\r\n const styles = 'd5-mfrm-content-reel__';\r\n const {\r\n config: { heading },\r\n carouselItems\r\n } = props;\r\n const mobile = _getViewPort(props.context) === 'sm';\r\n const hideSideArrowsForDesktopCss = carouselItems.length > 4 ? '' : 'min-desktop';\r\n\r\n let headingDisplay = null;\r\n if (heading && heading.text) {\r\n const HeadingTag = heading.tag ? (`${heading.tag}` as keyof JSX.IntrinsicElements) : 'h2';\r\n headingDisplay = (\r\n
\r\n {heading.text}\r\n
\r\n );\r\n }\r\n\r\n React.useEffect(hideLoader, []);\r\n return (\r\n
\r\n {headingDisplay}\r\n
\r\n {mobile ? (\r\n
\r\n \r\n {carouselItems}\r\n \r\n
\r\n ) : (\r\n \r\n {carouselItems}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n","const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['d5-mfrm-content-reel'] = {\n c: () => require('partner/modules/d5-mfrm-content-reel/d5-mfrm-content-reel.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'd5-mfrm-content-reel',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/d5-mfrm-content-reel'\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__|modules|d5-mfrm-content-reel|d5-mfrm-content-reel'] = {\n c: () => require('partner/modules/d5-mfrm-content-reel/d5-mfrm-content-reel.view.tsx'),\n cn: '__local__-__local__-d5-mfrm-content-reel'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\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","module.exports = React;","module.exports = ReactDOM;"],"names":["format","getTimeZone","timeZone","convertToLocal","time","schedule","dayjs","tz","local","isScheduled","showExpired","arguments","length","undefined","enableCountdown","start","startDate","startTime","end","endDate","endTime","validStart","isValid","validEnd","now","isAfter","isBetween","context","MsDyn365","isBrowser","window","innerWidth","gridSettings","request","xs","w","sm","md","lg","canonicalURL","requestContext","_urlParts","requestUrl","url","origin","path","pathname","toLowerCase","urlParts","split","splice","match","removePipeSignValue","removeKeywords","join","filteredURL","_urlParts2","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","_refinerValue$LeftVal","refinerValueKeyName","LeftValueBoundString","replace","regExSpecialChars","canonicalUrlspecialCharIncludeList","navLinkKeywordRemoval","link","_linkParams$map","_urlParts4","linkBase","linkParams","endsWith","linkParam","map","param","includeConfigList","includeConfig","_includeConfigList$tr","RegExp","props","styles","image","title","description","promoBadge","countdown","linkTo","salesTitle","featuredSaleRefSale","React","current","addEventListener","handleClick","event","preventDefault","location","href","countdownRunning","setCountdownRunning","className","ref","Image","Object","assign","alt","altText","src","dangerouslySetInnerHTML","getRichTextHtml","RichTextComponent","text","Badge","type","Countdown","date","renderer","_ref","days","hours","minutes","seconds","completed","zeroPad","D5MfrmContentReel","constructor","_getNewCountdown","countdownSchedule","formattedSchedule","scheduleEnd","scheduleEndLocal","toDate","_getCarouselItems","featuredContentList","this","sale","index","_link$linkUrl","saleTitle","FeaturedProduct","key","carouselIndex","linkUrl","destinationUrl","render","viewProps","_objectSpread","carouselItems","renderView","loaded","setIsLoaded","heading","mobile","_getViewPort","hideSideArrowsForDesktopCss","headingDisplay","HeadingTag","tag","hideLoader","Carousel","itemsToShow","ariaLabel","hideIndicators","hideControls","disableControls","disableAutoShift","controlStyle","controlClass","disableEndButtons","variableWidth","infinite","responsive","breakpoint","layoutGap","binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","__bindings__","viewDictionary","cn","call","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","toLength","toString","requireObjectCoercible","getMethod","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","O","matcher","string","rx","S","res","done","value","global","fullUnicode","unicode","lastIndex","result","A","matchStr","module","exports","ReactDOM"],"sourceRoot":""}