{"version":3,"file":"static/js/a1529fe268d80db0520a.bundle.js","mappings":";itBAAA,MAAMA,EAAU,CAAEC,QAAS,GAAIC,YAAa,IAEvCF,EAAQC,QAAQ,qBAAuB,CACpCE,EAAGA,IAAMC,EAAQ,MACjBC,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,oBAEHC,IAAK,GAGLC,GAAI,gGAKRC,OAAOC,aAAeD,OAAOC,cAAgB,GAC7CD,OAAOC,aAAab,QAAOc,EAAAA,EAAA,GACpBF,OAAOC,aAAab,SAAW,IAC/BD,EAAQC,SAGXY,OAAOC,aAAaZ,YAAWa,EAAAA,EAAA,GAC5BF,OAAOC,aAAaZ,aAAe,IACnCF,EAAQE,aAEY,MAAMc,EAAiB,GAC9BA,EAAe,4FAA8F,CACrHb,EAAGA,IAAMC,EAAQ,MACjBa,GAAI,kEAEpBJ,OAAOC,aAAeD,OAAOC,cAAgB,GAC7CD,OAAOC,aAAaE,eAAcD,EAAAA,EAAA,GACPF,OAAOC,aAAaE,gBAAkB,IACtCA,kHCnBpB,MAAME,EAAwEC,IAKhF,IALiF,wBAClFC,EAAuB,6BACvBC,EAA4B,iBAC5BC,EAAgB,QAChBC,GACHJ,EACG,MAAMK,GAAoBC,EAAAA,EAAAA,kBAAiB,QAASH,EAAmB,kBACjEI,GAAaC,EAAAA,EAAAA,wBAAuBL,EAAmBE,GAE7D,OACII,EAAAA,cAAA,SAAAC,OAAAC,OAAA,CACIC,KAAK,SACLC,UAAU,8CAA6C,aAC3CX,EACZY,QAASV,GACLG,GAEHN,SCbN,MAAMc,UAA8BN,EAAAA,cAA3CO,cAAA,oBAeqB,KAAAC,kBAAqBC,IAClC,IAAKA,GAAgC,IAApBA,EAASC,OACtB,OAAO,KAEX,MAAMC,EAAuC,GAoB7C,OAnBAF,EAASG,SAAQ,CAACC,EAAMC,KAEpB,MAAMlB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASkB,KAAKC,MAAMtB,iBAAkB,GAAI,IACrEuB,EAAWJ,EAAKI,SAAWJ,EAAKI,SAAW,GACjDrB,EAAQsB,cAAcC,MAAQF,EAC9B,MAAMnB,GAAaC,EAAAA,EAAAA,wBAAuBgB,KAAKC,MAAMtB,iBAAkBE,GACjEwB,EAAoC,CACtCC,UAAWR,EAAKQ,UAChBjB,UAAW,OACXa,SAAUJ,EAAKI,SACfK,QAAST,EAAKS,QAAQC,eACtBC,aAAcX,EAAKW,aACnBC,KAAM,OACNC,qBAAsB5B,EACtBO,SAASsB,EAAAA,EAAAA,kBAAiBZ,KAAKC,MAAMtB,iBAAkBE,EAASqB,IAEpEN,EAAciB,KAAKR,MAGhBT,GAtCJkB,SACH,MAAMlB,EAAgBI,KAAKP,kBAAkBO,KAAKC,MAAMc,OACxD,OACI9B,EAAAA,cAAA,QAAMI,UAAU,mCACXO,GAAiBA,EAAcD,OAAS,EACrCV,EAAAA,cAAC+B,EAAAA,GAAc,CACXD,MAAOnB,EACPqB,UAAW,CAAEC,aAAclB,KAAKC,MAAMiB,aAAcC,eAAgBnB,KAAKC,MAAMkB,kBAEnF,4kBCOpB,MAAMC,UAAyBnC,EAAAA,cAS3BO,YAAmBS,GACfoB,MAAMpB,GAPO,KAAAtB,kBAAsC2C,EAAAA,EAAAA,oBACnDtB,KAAKC,MAAMsB,QAAQC,QAAQC,kBAC3BzB,KAAKC,MAAMyB,aACX1B,KAAKC,MAAM0B,WA2FR,KAAAC,qBAAwBC,GAAuBC,IAA8C,IAAAC,EAC/D,QAAjCA,EAAI/B,KAAKC,MAAM+B,OAAOC,mBAAW,IAAAF,GAA7BA,EAAgCF,KAChC7B,KAAKC,MAAM+B,OAAOC,YAAYJ,GAAW3B,SAAW4B,EAAMI,OAAOC,QAQlE,KAAAC,oBAAuBN,IAC1B9B,KAAKC,MAAM+B,OAAOK,QAAUP,EAAMI,OAAOC,OAjGzCnC,KAAKsC,MAAQ,CAAEC,SAAS,GACxBvC,KAAKwC,UAAYvD,EAAAA,YACjBe,KAAKyC,WAAazC,KAAKyC,WAAWC,KAAK1C,MAGpC2C,oBACH,MAAM,QAAEpB,GAAYvB,KAAKC,MAErBsB,GAAWA,EAAQC,SAAWD,EAAQC,QAAQoB,UAAYrB,EAAQC,QAAQoB,QAAQC,kBAClF7C,KAAK8C,SAAS,CAAEP,SAAS,IAI1BzB,SACH,MAAM,OAAEkB,EAAM,QAAET,EAAO,UAAEwB,EAAS,UAAEpB,GAAc3B,KAAKC,OACjD,wBAAExB,EAAuB,uBAAEuE,GAA2BD,GACtD,QAAER,GAAYvC,KAAKsC,MAEnBO,EAAiBtB,GAAWA,EAAQC,SAAWD,EAAQC,QAAQoB,SAAWrB,EAAQC,QAAQoB,QAAQC,iBACxG,IAAII,EAEJ,IACIA,EAAejB,EACjB,MAAOkB,GAEL,OADAvB,EAAUuB,MAAM,+DAA+DA,KACxEjE,EAAAA,cAAA,WAAMiE,GAGjB,GAAIL,IAAmBN,EAEnB,OADAvC,KAAKC,MAAMsB,QAAQI,UAAUuB,MAAM,2DAC5B,KAGX,IAAKC,EAAAA,GAA0BC,UAC3B,OAAOnE,EAAAA,cAAAA,EAAAA,SAAA,MAGX,MAAMoE,EAASjF,EAAAA,EAAA,GACR4B,KAAKC,OAAK,IACbqD,UAAWtD,KAAKyC,WAChBc,uBAAwB,CACpBC,YAAaxD,KAAKC,MAClBZ,UAAWoE,GAAAA,CAAW,uBAAwBR,EAAa5D,WAC3DqE,IAAK1D,KAAKwC,WAEdmB,WAAY,CACRtE,UAAW,kCACXuE,MAAO,QACPC,MAAM,GAEVC,QAAS,CACLzE,UAAW,iCAEf0E,KAAMd,EAAaZ,SACfpD,EAAAA,cAACkE,EAAAA,GAA0B,CACvB9D,UAAU,6BACV0E,KAAMd,EAAaZ,QACnBpB,UAAW,CAAE+C,OAAQhE,KAAKoC,oBAAqBjB,eAAgBnB,KAAKC,MAAMsB,QAAQC,WAG1FT,MAAOkD,EAAAA,gBAAgBC,YAAYjB,EAAahB,cAC5ChD,EAAAA,cAACM,EAAqB,CAClBwB,MAAOkC,EAAahB,YACpBf,aAAclB,KAAK4B,qBACnBT,eAAgBnB,KAAKC,MAAMsB,QAAQC,QACnC7C,iBAAkBqB,KAAKrB,mBAG/BwF,aACIlF,EAAAA,cAACV,EAA4B,CACzBK,QAASoB,KAAKyC,WACdhE,wBAAyBA,EACzBC,6BAA8BsE,EAC9BrE,iBAAkBqB,KAAKrB,qBAKnC,OAAOqB,KAAKC,MAAMmE,WAAWf,GAsBzBZ,aACJ,MAAM,QAAElB,GAAYvB,KAAKC,MAErBsB,GAAWA,EAAQC,SAAWD,EAAQC,QAAQoB,UAC9CrB,EAAQC,QAAQoB,QAAQyB,mBACxBC,SAASC,UAEbvE,KAAK8C,SAAS,CAAEP,SAAS,KAIjC,+ECxJA,MAeA,EAfmEtC,IAC/D,MAAM,uBAAEsD,EAAsB,WAAEI,EAAU,QAAEG,EAAO,aAAEK,EAAY,KAAEJ,EAAI,MAAEhD,GAAUd,EAEnF,OACIhB,EAAAA,cAACuF,EAAAA,OAAMtF,OAAAC,OAAA,GAAKoE,GACRtE,EAAAA,cAACwF,EAAAA,MAAK,CAACpF,UAAWsE,EAAWtE,UAAWuE,MAAOD,EAAWC,MAAOC,KAAMF,EAAWE,MAC9E5E,EAAAA,cAACyF,EAAAA,KAAIxF,OAAAC,OAAA,GAAK2E,GACLC,EACAhD,GAEJoD,YCpBjBQ,EAAOC,QAAU3F,cCAjB0F,EAAOC,QAAUC","sources":["webpack://jansen-adventureworks/./lib/cookie-compliance/module-registration.js?a5ea","webpack://jansen-adventureworks/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://jansen-adventureworks/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://jansen-adventureworks/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://jansen-adventureworks/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://jansen-adventureworks/external var \"React\"?0d3b","webpack://jansen-adventureworks/external var \"ReactDOM\"?853b"],"sourcesContent":["const binding = { modules: {}, dataActions: {} };\n\n    (binding.modules['cookie-compliance'] = {\n        c: () => require('@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance'),\n        $type: 'contentModule',\n        da: [],\n        \n        iNM: true,\n        ns: '@msdyn365-commerce-modules',\n        n: 'cookie-compliance',\n        p: 'cookie-compliance',\n        \n        pdp: '',\n        \n        \n        md: 'node_modules/@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance'\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|cookie-compliance|modules|cookie-compliance|cookie-compliance'] = {\n                c: () => require('@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance.view.js'),\n                cn: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance'\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, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n    acceptCookiesButtonText?: string;\n    acceptCookiesButtonAriaLabel?: string;\n\n    /**\n     * The telemetry content\n     */\n    telemetryContent?: ITelemetryContent;\n    onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC<ICookieComplianceAcceptButton> = ({\n    acceptCookiesButtonText,\n    acceptCookiesButtonAriaLabel,\n    telemetryContent,\n    onClose\n}) => {\n    const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n    return (\n        <button\n            type='button'\n            className='ms-cookie-compliance__accept-button msc-btn'\n            aria-label={acceptCookiesButtonAriaLabel}\n            onClick={onClose}\n            {...attributes}\n        >\n            {acceptCookiesButtonText}\n        </button>\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 Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n    links: IActionLinksData[];\n    requestContext: Msdyn365.IRequestContext;\n    telemetryContent: ITelemetryContent;\n    onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent<IContentCardLinks>}\n */\nexport class CookieComplianceLinks extends React.PureComponent<ICookieComplianceLinks> {\n    public render(): JSX.Element {\n        const editableLinks = this._mapEditableLinks(this.props.links);\n        return (\n            <span className='ms-cookie-compliance__cta-layer'>\n                {editableLinks && editableLinks.length > 0 ? (\n                    <Msdyn365.Links\n                        links={editableLinks}\n                        editProps={{ onTextChange: this.props.onTextChange, requestContext: this.props.requestContext }}\n                    />\n                ) : null}\n            </span>\n        );\n    }\n\n    private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n        if (!linkdata || linkdata.length === 0) {\n            return null;\n        }\n        const editableLinks: Msdyn365.ILinksData[] = [];\n        linkdata.forEach((link, index) => {\n            // Construct telemetry attribute to render\n            const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n            const linkText = link.linkText ? link.linkText : '';\n            payLoad.contentAction.etext = linkText;\n            const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n            const editableLink: Msdyn365.ILinksData = {\n                ariaLabel: link.ariaLabel,\n                className: 'link',\n                linkText: link.linkText,\n                linkUrl: link.linkUrl.destinationUrl,\n                openInNewTab: link.openInNewTab,\n                role: 'link',\n                additionalProperties: attributes,\n                onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n            };\n            editableLinks.push(editableLink);\n        });\n\n        return editableLinks;\n    };\n}\n\nexport default CookieComplianceLinks;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n    visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n    CookieComplianceBanner: IModuleProps;\n    AlertProps: IAlertProps;\n    Content: INodeProps;\n    text?: React.ReactNode;\n    links?: React.ReactNode;\n    acceptButton?: React.ReactNode;\n    className: string;\n    onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent<ICookieComplianceProps<IHeroConfig>>}\n */\nclass CookieCompliance extends React.PureComponent<ICookieComplianceProps<ICookieComplianceConfig>, IAlertState> {\n    private readonly cookieRef: React.RefObject<HTMLInputElement>;\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 constructor(props: ICookieComplianceProps<ICookieComplianceConfig>) {\n        super(props);\n        this.state = { visible: false };\n        this.cookieRef = React.createRef();\n        this._onDismiss = this._onDismiss.bind(this);\n    }\n\n    public componentDidMount(): void {\n        const { context } = this.props;\n\n        if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n            this.setState({ visible: true });\n        }\n    }\n\n    public render(): JSX.Element | null {\n        const { config, context, resources, telemetry } = this.props;\n        const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n        const { visible } = this.state;\n\n        const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n        let moduleConfig: ICookieComplianceConfig;\n\n        try {\n            moduleConfig = config;\n        } catch (error) {\n            telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n            return <div>{error}</div>;\n        }\n\n        if (isConsentGiven && !visible) {\n            this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n            return null;\n        }\n\n        if (!MsDyn365.msdyn365Commerce.isBrowser) {\n            return <></>;\n        }\n\n        const viewProps = {\n            ...this.props,\n            onDismiss: this._onDismiss,\n            CookieComplianceBanner: {\n                moduleProps: this.props,\n                className: classnames('ms-cookie-compliance', moduleConfig.className),\n                ref: this.cookieRef\n            },\n            AlertProps: {\n                className: 'ms-cookie-compliance__container',\n                color: 'white',\n                fade: false\n            },\n            Content: {\n                className: 'ms-cookie-compliance__content'\n            },\n            text: moduleConfig.content && (\n                <MsDyn365.RichTextComponent\n                    className='ms-cookie-compliance__text'\n                    text={moduleConfig.content}\n                    editProps={{ onEdit: this.handleContentChange, requestContext: this.props.context.request }}\n                />\n            ),\n            links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n                <CookieComplianceLinks\n                    links={moduleConfig.actionLinks}\n                    onTextChange={this.handleLinkTextChange}\n                    requestContext={this.props.context.request}\n                    telemetryContent={this.telemetryContent}\n                />\n            ),\n            acceptButton: (\n                <CookieComplianceAcceptButton\n                    onClose={this._onDismiss}\n                    acceptCookiesButtonText={acceptCookiesButtonText}\n                    acceptCookiesButtonAriaLabel={acceptCookiesAriaLabel}\n                    telemetryContent={this.telemetryContent}\n                />\n            )\n        };\n\n        return this.props.renderView(viewProps) as React.ReactElement;\n    }\n\n    /**\n     * Handles Link content change event.\n     * @param linkIndex - Index of link in linkarray.\n     * @returns Void.\n     */\n    public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n        if (this.props.config.actionLinks?.[linkIndex]) {\n            this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n        }\n    };\n\n    /**\n     * Handles content change event.\n     * @param event - Event.\n     */\n    public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n        this.props.config.content = event.target.value;\n    };\n\n    private _onDismiss(): void {\n        const { context } = this.props;\n\n        if (context && context.request && context.request.cookies) {\n            context.request.cookies.setConsentCookie();\n            location.reload();\n        }\n        this.setState({ visible: false });\n    }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC<ICookieComplianceViewProps> = props => {\n    const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n    return (\n        <Module {...CookieComplianceBanner}>\n            <Alert className={AlertProps.className} color={AlertProps.color} fade={AlertProps.fade}>\n                <Node {...Content}>\n                    {text}\n                    {links}\n                </Node>\n                {acceptButton}\n            </Alert>\n        </Module>\n    );\n};\nexport default CookieComplianceView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","window","__bindings__","_objectSpread","viewDictionary","cn","CookieComplianceAcceptButton","_ref","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","telemetryContent","onClose","payLoad","getPayloadObject","attributes","getTelemetryAttributes","React","Object","assign","type","className","onClick","CookieComplianceLinks","constructor","_mapEditableLinks","linkdata","length","editableLinks","forEach","link","index","this","props","linkText","contentAction","etext","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onTelemetryClick","push","render","links","Msdyn365","editProps","onTextChange","requestContext","CookieCompliance","super","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleLinkTextChange","linkIndex","event","_this$props$config$ac","config","actionLinks","target","value","handleContentChange","content","state","visible","cookieRef","_onDismiss","bind","componentDidMount","cookies","isConsentGiven","setState","resources","acceptCookiesAriaLabel","moduleConfig","error","MsDyn365","isBrowser","viewProps","onDismiss","CookieComplianceBanner","moduleProps","classnames","ref","AlertProps","color","fade","Content","text","onEdit","ArrayExtensions","hasElements","acceptButton","renderView","setConsentCookie","location","reload","Module","Alert","Node","module","exports","ReactDOM"],"sourceRoot":""}