{"version":3,"file":"static/js/3f8766d2ee9ad6f4d997.bundle.js","mappings":"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","sources":["webpack://bestseller.commerce.online/external var \"React\"?0d3b","webpack://bestseller.commerce.online/external var \"ReactDOM\"?853b","webpack://bestseller.commerce.online/./lib/breadcrumb/module-registration.js?ed67","webpack://bestseller.commerce.online/./src/modules/breadcrumb/components/link.tsx?d232","webpack://bestseller.commerce.online/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://bestseller.commerce.online/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://bestseller.commerce.online/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d"],"sourcesContent":["module.exports = React;","module.exports = ReactDOM;","const binding = { modules: {}, dataActions: {} };\n\n    const registerActionId = (actionPath) => {\n        if (binding.dataActions[actionPath] &&\n            binding.dataActions[actionPath].default &&\n            binding.dataActions[actionPath].default.prototype &&\n            binding.dataActions[actionPath].default.prototype.id) {\n            binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n        } else {\n            Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n                if (binding.dataActions[actionPath][exportName] &&\n                    binding.dataActions[actionPath][exportName].prototype &&\n                    binding.dataActions[actionPath][exportName].prototype.Action) {\n                    binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n                }\n            })\n        }\n    };\n\n    const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n        if (process.env.NODE_ENV === 'development') {\n            if (!dataAction.default) {\n                throw new Error('Data action path does not have a default export');\n            }\n            if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n                binding.dataActions[sanitizedActionPath] = dataAction;\n            }\n        } else {\n            binding.dataActions[sanitizedActionPath] = dataAction;\n            if (!binding.dataActions[sanitizedActionPath].default) {\n                throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n            }\n            binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n            if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n                binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n            }\n        }\n    };\n    \n\n    (binding.modules['breadcrumb'] = {\n        c: () => require('@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb'),\n        $type: 'contentModule',\n        da: [{name:'categoryHierarchy',  path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'categoryPaths',  path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths', runOn: 0},{name:'product',  path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n        \n        iNM: true,\n        ns: '@msdyn365-commerce-modules',\n        n: 'breadcrumb',\n        p: 'breadcrumb',\n        \n        pdp: '',\n        \n        \n        md: 'node_modules/@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb'\n    });\n        \n\n        {\n            const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths';\n            let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths');\n            registerSanitizedActionPath(sanitizedActionPath, dataAction);\n        }\n            \n\n        {\n            const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n            let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n            registerSanitizedActionPath(sanitizedActionPath, dataAction);\n        }\n            \n\n        {\n            const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n            let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n            registerSanitizedActionPath(sanitizedActionPath, dataAction);\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['@msdyn365-commerce-modules|breadcrumb|modules|breadcrumb|breadcrumb'] = {\n                c: () => require('@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb.view.js'),\n                cn: '@msdyn365-commerce-modules-breadcrumb-breadcrumb'\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n    className?: string;\n    text?: string;\n    href?: string;\n    ariaLabel?: string;\n    index: string;\n    noclick?: boolean;\n    telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC<ILink> = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n    const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n    const linkText = text !== undefined ? text : '';\n    payLoad.contentAction.etext = linkText;\n\n    // Construct telemetry attribute to render\n    const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n    return (\n        <a\n            {...attribute}\n            className={className}\n            href={href}\n            aria-label={ariaLabel}\n            onClick={onTelemetryClick(telemetryContent, payLoad, linkText)}\n            {...(noclick && { 'data-no-click': true })}\n        >\n            <span itemProp='name'>{linkText}</span>\n            <meta itemProp='position' content={index} />\n        </a>\n    );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface ISeparator {\n    separator: string;\n}\n\nexport const Separator: React.FC<ISeparator> = ({ separator }) => (\n    <span aria-hidden='true'>\n        {` `}\n        {separator}\n        {` `}\n    </span>\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps<IBreadcrumbData> {\n    root?: React.ReactNode;\n    links?: React.ReactNode[];\n    backButton?: React.ReactNode;\n    separator?: React.ReactNode;\n    BreadcrumbContainer: IModuleProps;\n    BreadcrumbList: INodeProps;\n    BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component.\n * @extends {React.PureComponent<IBreadcrumbProps<IBreadcrumbData>>}\n */\nclass Breadcrumb extends React.PureComponent<IBreadcrumbProps<IBreadcrumbData>> {\n    private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\n\n    private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n        this.props.context.request.telemetryPageName!,\n        this.props.friendlyName,\n        this.props.telemetry\n    );\n\n    public render(): JSX.Element | null {\n        const { className } = this.props.config;\n        let rootLink = null;\n        let breadcrumbLinks = null;\n        let backButtonComponent = null;\n        rootLink = this._getRootLink();\n        const itemPosition = rootLink ? 1 : 0;\n        if (this._pageType === 'Category') {\n            breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n            if (!breadcrumbLinks) {\n                breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n            }\n        } else if (this._pageType === 'Product') {\n            breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n            if (!breadcrumbLinks) {\n                const breaCrumbType = this.props.context.app.config.breadcrumbType;\n                if (breaCrumbType === 'category') {\n                    breadcrumbLinks = this._getPDPLinks(itemPosition);\n                }\n                if (breaCrumbType === 'categoryAndBack') {\n                    backButtonComponent = this._getPDPBackButton();\n                    breadcrumbLinks = this._getPDPLinks(itemPosition);\n                }\n                if (breaCrumbType === 'back') {\n                    backButtonComponent = this._getPDPBackButton();\n                    if (backButtonComponent === null) {\n                        breadcrumbLinks = this._getPDPLinks(itemPosition);\n                    }\n                }\n            }\n        } else {\n            breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n        }\n        const linkSeparator = <Separator separator='/' />;\n\n        const breadcrumbViewProps = {\n            ...this.props,\n            BreadcrumbContainer: {\n                moduleProps: this.props,\n                className: classnames('ms-breadcrumb', className),\n                tag: 'nav',\n                role: 'navigation'\n            },\n            BreadcrumbList: {\n                tag: 'ol' as NodeTag,\n                className: 'ms-breadcrumb_list'\n            },\n            BreadcrumbListItem: {\n                tag: 'li',\n                className: 'ms-breadcrumb_item'\n            },\n            root: rootLink,\n            links: breadcrumbLinks,\n            backButton: backButtonComponent,\n            separator: linkSeparator\n        };\n        return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n    }\n\n    private readonly _getRootLink = (): JSX.Element | null => {\n        const { root } = this.props.config;\n        if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n            this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n            return null;\n        }\n        return (\n            <Link\n                text={root.linkText}\n                ariaLabel={root.ariaLabel || root.linkText}\n                href={root.linkUrl && root.linkUrl.destinationUrl}\n                index='1'\n                className='ms-breadcrumb_link'\n                telemetryContent={this.telemetryContent}\n            />\n        );\n    };\n\n    private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n        const { links } = this.props.config;\n\n        if (!links || links.length === 0) {\n            this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n            return null;\n        }\n        const defaultValueToSubtract = 1;\n        return links.map((value: ILinksData, index: number) => {\n            itemPosition++;\n            const keyIndex = index;\n            return index !== links.length - defaultValueToSubtract ? (\n                <Link\n                    key={index}\n                    text={value.linkText}\n                    ariaLabel={value.ariaLabel || value.linkText}\n                    href={value.linkUrl && value.linkUrl.destinationUrl}\n                    index={{ itemPosition }.toString()}\n                    className='ms-breadcrumb_link'\n                    telemetryContent={this.telemetryContent}\n                />\n            ) : (\n                <div key={keyIndex} className='ms-breadcrumb_link ms-breadcrumb-no-link-text'>\n                    {value.linkText}\n                </div>\n            );\n        });\n    };\n\n    private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n        const { data } = this.props;\n        const categoryHierarchy = data.categoryHierarchy.result;\n        if (!categoryHierarchy) {\n            this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n            return null;\n        }\n        return categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n            itemPosition++;\n\n            const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\n\n            return (\n                <Link\n                    key={index}\n                    text={friendlyName}\n                    ariaLabel={friendlyName}\n                    href={value.Url}\n                    index={itemPosition.toString()}\n                    className='ms-breadcrumb_link'\n                    noclick={index === categoryHierarchy.length - 1}\n                    telemetryContent={this.telemetryContent}\n                />\n            );\n        });\n    };\n\n    /**\n     * The function to get translation name for the locale.\n     * @param locale - The locale information.\n     * @param nameTranslations - The name translations names.\n     * @returns - The translation name for the locale.\n     */\n    private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n        let nameTranslation: TextValueTranslation | undefined;\n        if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\n            nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n        }\n\n        // If friendly name for current locale is null, should use default locale.\n        if (nameTranslation === undefined && ArrayExtensions.hasElements(nameTranslations)) {\n            nameTranslation = nameTranslations[0];\n        }\n\n        return nameTranslation?.Text;\n    };\n\n    private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n        const { data, config } = this.props;\n        const categoryHierarchy = data.categoryPaths.result;\n        const product = data.product.result;\n        const url = this.props.context.request.url.requestUrl.href;\n        if (!categoryHierarchy) {\n            this.props.context.telemetry.error('Category path content is empty for the product');\n            return null;\n        }\n        const links: JSX.Element[] = [];\n\n        categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n            itemPosition++;\n            links.push(\n                <Link\n                    key={index}\n                    text={value.Name}\n                    ariaLabel={value.Name}\n                    href={value.Url}\n                    index={itemPosition.toString()}\n                    className='ms-breadcrumb_link'\n                    telemetryContent={this.telemetryContent}\n                />\n            );\n        });\n        if (product && !config.hideProductName) {\n            itemPosition++;\n            links.push(\n                <Link\n                    text={product.Name}\n                    ariaLabel={product.Name}\n                    href={url}\n                    index={itemPosition.toString()}\n                    noclick\n                    className='ms-breadcrumb_link'\n                    telemetryContent={this.telemetryContent}\n                />\n            );\n        }\n        return links;\n    };\n\n    private readonly _goBack = (): void => {\n        window.history.back();\n    };\n\n    private readonly _getPDPBackButton = (): JSX.Element | null => {\n        const isBackAllowed =\n            this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n        if (!isBackAllowed) {\n            return null;\n        }\n        if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n            return null;\n        }\n        return (\n            <a\n                className='ms-breadcrumb-back-button'\n                role='button'\n                href='javascript:void(0);'\n                onClick={this._goBack}\n                aria-label={this.props.resources.backToResultsText}\n            >\n                {this.props.resources.backToResultsText}\n            </a>\n        );\n    };\n}\n\nexport default Breadcrumb;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC<IBreadcrumbViewProps> = props => {\n    const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n    if (!root && !links && !backButton) {\n        props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n        return null;\n    }\n    return (\n        <Module {...BreadcrumbContainer}>\n            <Node {...BreadcrumbList}>\n                {root && (\n                    <Node {...BreadcrumbListItem}>\n                        {root}\n                        {links && separator}\n                    </Node>\n                )}\n                {backButton && <Node {...BreadcrumbListItem}>{backButton}</Node>}\n                {links &&\n                    links.map((link, index) => (\n                        <React.Fragment key={index}>\n                            <Node\n                                {...BreadcrumbListItem}\n                                className={classnames(\n                                    BreadcrumbListItem.className,\n                                    index === links.length - 1 ? 'breadcrumb_item-current' : ''\n                                )}\n                            >\n                                {link}\n                                {links[index + 1] && separator}\n                            </Node>\n                        </React.Fragment>\n                    ))}\n            </Node>\n        </Module>\n    );\n};\n\nexport default BreadCrumbView;\n"],"names":["module","exports","React","ReactDOM","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","id","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","_objectSpread","viewDictionary","cn","Link","_ref","text","className","href","ariaLabel","index","noclick","telemetryContent","payLoad","getPayloadObject","linkText","undefined","contentAction","etext","attribute","getTelemetryAttributes","Object","assign","onClick","onTelemetryClick","itemProp","content","Separator","separator","Breadcrumb","constructor","_pageType","this","props","context","request","urlTokens","pageType","getTelemetryObject","telemetryPageName","friendlyName","telemetry","_getRootLink","root","config","linkUrl","destinationUrl","error","_getCustomBreadcrumbLinks","itemPosition","links","length","map","value","keyIndex","key","toString","_getCategoryHierarchy","data","categoryHierarchy","result","_getFriendlyName","locale","NameTranslations","Url","nameTranslations","_nameTranslation","nameTranslation","ArrayExtensions","hasElements","find","item","Language","toLowerCase","Text","_getPDPLinks","categoryPaths","product","url","requestUrl","push","Name","hideProductName","_goBack","history","back","_getPDPBackButton","query","MsDyn365","isBrowser","document","referrer","role","resources","backToResultsText","render","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","moduleProps","classnames","tag","BreadcrumbList","BreadcrumbListItem","backButton","renderView","Module","Node","link"],"sourceRoot":""}