{"version":3,"sources":["webpack:///./lib/promo-banner/module-registration.js?d732","webpack:///src/modules/promo-banner/promo-banner.view.tsx?d069","webpack:///external \"React\"?c481","webpack:///external \"ReactDOM\"?4b2d","webpack:///src/modules/promo-banner/components/close-button.tsx?939d","webpack:///src/modules/promo-banner/components/links.tsx?3133","webpack:///src/modules/promo-banner/components/text.tsx?834e","webpack:///src/modules/promo-banner/promo-banner.tsx?958e"],"names":["binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn","PromoBannerView","props","promoBannerProps","contentProps","closeButton","bannerMessages","promoBannerTextProps","promoBannerLinksProps","carouselProps","promoBannerText","handleLinks","handleText","slides","map","message","index","React","Node","Object","key","role","className","text","onClick","links","length","Module","items","module","exports","ReactDOM","PromoBannerCloseButton","closeButtonAriaLabel","label","telemetryContent","onClose","payLoad","getPayloadObject","TelemetryConstant","PromoBannerClose","attributes","getTelemetryAttributes","PromoBannerLinks","requestContext","onTextChange","editableLinks","_mapEditableLinks","Msdyn365","editProps","linkdata","forEach","link","linkText","contentAction","etext","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","push","PromoBannerText","tag","onEdit","PromoBanner","constructor","state","animating","isVisible","activeIndex","getTelemetryObject","this","context","request","telemetryPageName","friendlyName","telemetry","handleTextChange","event","config","target","value","handleLinkTextChange","linkIndex","_next","nextIndex","_isLastItem","_goToIndex","_previous","_isFirstItem","setState","_onDismiss","render","dismissEnabled","interval","hideFlipper","autoplay","closeButtonLabel","bannerText","resources","error","viewProps","classnames","onDismiss","moduleProps","Carousel","next","previous","onIndicatorsClickHandler","hideIndicator","renderView"],"mappings":"wvBAAA,MAAMA,EAAU,CAAEC,QAAS,GAAIC,YAAa,IAEvCF,EAAQC,QAAQ,gBAAkB,CAC/BE,EAAG,IAAMC,EAAQ,QACjBC,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,sFAKRC,OAAOC,aAAeD,OAAOC,cAAgB,GAC7CD,OAAOC,aAAab,QAApB,OACOY,OAAOC,aAAab,SAAW,IAC/BD,EAAQC,SAGXY,OAAOC,aAAaZ,YAApB,OACGW,OAAOC,aAAaZ,aAAe,IACnCF,EAAQE,aAEY,MAAMa,EAAiB,GAC9BA,EAAe,6EAA+E,CACtGZ,EAAG,IAAMC,EAAQ,QACjBY,GAAI,wDAEpBH,OAAOC,aAAeD,OAAOC,cAAgB,GAC7CD,OAAOC,aAAaC,eAApB,OAC2BF,OAAOC,aAAaC,gBAAkB,IACtCA,I,iFCSZE,UArC0CC,IACrD,MAAM,iBACFC,EADE,aAEFC,EAFE,YAGFC,EAHE,eAIFC,EAJE,qBAKFC,EALE,sBAMFC,EANE,cAOFC,EAPE,gBAQFC,EARE,YASFC,EATE,WAUFC,GACAV,EAEEW,EAASP,GAAkBA,EAAeQ,IAAI,CAACC,EAASC,IAEtDC,gBAACC,OAAIC,iBACGf,EAAY,CAChBgB,IAAKJ,EAAK,YACA,SACVK,KAAK,YACLJ,wBAAMK,UAAU,WACXZ,GAEJK,EAAQQ,MAAQN,gBAACC,OAAIC,iBAAKZ,EAAoB,CAAEgB,KAAMR,EAAQQ,KAAMC,QAASZ,KAC7EG,EAAQU,OAASV,EAAQU,MAAMC,OAAS,GAAKT,gBAACC,OAAIC,iBAAKX,EAAqB,CAAEiB,MAAOV,EAAQU,MAAOD,QAASb,OAK1H,OACIM,gBAACU,SAAMR,iBAAKhB,GACRc,gBAACC,OAAIC,iBAAKV,EAAa,CAAEmB,MAAOf,KAC/BR,K,mBC3CbwB,EAAOC,QAAUb,O,mBCAjBY,EAAOC,QAAUC,U,kJCgBV,MAAMC,EAA4D,IAA+D,IAA9D,qBAAEC,EAAF,MAAwBC,EAAxB,iBAA+BC,EAA/B,QAAiDC,GAAa,EACpI,MAAMC,EAAUC,2BAAiB,QAASH,EAAmBI,oBAAkBC,kBACzEC,EAAaC,iCAAuBP,EAAmBE,GAC7D,OACIpB,wCACIK,UAAU,gCAA+B,aAAaW,EAAsBT,QAASY,GACjFK,GACJxB,wBAAMK,UAAU,uCAAsC,kBACjDY,K,gBCNV,MAAMS,EAAgD,IAA8D,IAA7D,MAAElB,EAAF,eAASmB,EAAT,aAAyBC,EAAzB,iBAAuCV,GAAsB,EACvH,MAAMW,EAAgBC,EAAkBtB,EAAOU,GAC/C,OACIlB,wBAAMK,UAAU,0BACXwB,GAAiBA,EAAcpB,OAAS,EAAIT,gBAAC+B,IAAc,CACxDvB,MAAOqB,EACPG,UAAW,CAAEJ,eAAcD,oBAC1B,OAKXG,EAAoB,CAACG,EAAwBf,KAC/C,IAAKe,GAAgC,IAApBA,EAASxB,OACtB,OAAO,KAEX,MAAMoB,EAAuC,GAoB7C,OAnBAI,EAASC,QAAQ,CAACC,EAAMpC,KAEpB,MAAMqB,EAAUC,2BAAiB,QAASH,EAAkB,GAAI,IAC1DkB,EAAWD,EAAKC,SAAWD,EAAKC,SAAW,GACjDhB,EAAQiB,cAAcC,MAAQF,EAC9B,MAAMZ,EAAaC,iCAAuBP,EAAkBE,GACtDmB,EAAoC,CACtCC,UAAWL,EAAKK,UAChBnC,UAAW,wBACX+B,SAAUD,EAAKC,SACfK,QAASN,EAAKM,QAAQC,eACtBC,aAAcR,EAAKQ,aACnBvC,KAAM,OACNwC,qBAAsBpB,EACtBjB,QAASsC,2BAAiB3B,EAAkBE,EAASgB,IAEzDP,EAAciB,KAAKP,KAGhBV,GCxCEkB,EAA8C,IAA2C,IAA1C,KAAEzC,EAAF,aAAQsB,EAAR,eAAsBD,GAAoB,EAClG,OACI3B,gBAAC+B,IAAa,CACV1B,UAAU,wBACV2C,IAAI,OACJ1C,KAAMA,EACN0B,UAAW,CAAEiB,OAAQrB,EAAcD,qB,ykBCqB/C,MAAMuB,UAAoBlD,gBAA1BmD,kCACW,KAAAC,MAA2B,CAC9BC,WAAW,EACXC,WAAW,EACXC,YAAa,GAGA,KAAArC,iBAAsCsC,6BAAmBC,KAAKxE,MAAMyE,QAAQC,QAAQC,kBACjGH,KAAKxE,MAAM4E,aACXJ,KAAKxE,MAAM6E,WAoDR,KAAAC,iBAAoBC,IACnBP,KAAKxE,MAAMgF,OAAO5E,gBAAkBoE,KAAKxE,MAAMgF,OAAO5E,eAAe,KACrEoE,KAAKxE,MAAMgF,OAAO5E,eAAe,GAAGiB,KAAO0D,EAAME,OAAOC,QAIzD,KAAAC,qBAAwBC,GAAuBL,IAClD,GAAIP,KAAKxE,MAAMgF,OAAO5E,gBAAkBoE,KAAKxE,MAAMgF,OAAO5E,eAAe,GAAI,CACzE,MAAMmB,EAAQiD,KAAKxE,MAAMgF,OAAO5E,eAAe,GAAGmB,MAC9CA,IACAA,EAAM6D,GAAWjC,SAAW4B,EAAME,OAAOC,SAKpC,KAAAG,MAAQ,KACrB,MAAMC,EAAYd,KAAKe,cAAgB,EAAIf,KAAKL,MAAMG,YAAc,EACpEE,KAAKgB,WAAWF,IAGH,KAAAG,UAAY,KACzB,MAAMH,EAAYd,KAAKkB,eAAkBlB,KAAKxE,MAAMgF,OAAO5E,eAAiBoE,KAAKxE,MAAMgF,OAAO5E,eAAeoB,OAAS,EAAI,EAAKgD,KAAKL,MAAMG,YAAc,EACxJE,KAAKgB,WAAWF,IAGH,KAAAE,WAAc1E,IACvB0D,KAAKL,MAAMC,WAGfI,KAAKmB,SAAS,CAAErB,YAAaxD,KAGhB,KAAA4E,aAAe,IAAiC,IAA3BlB,KAAKL,MAAMG,YAEhC,KAAAiB,YAAc,IAAMf,KAAKxE,MAAMgF,OAAO5E,gBAAkBoE,KAAKL,MAAMG,cAAgBE,KAAKxE,MAAMgF,OAAO5E,eAAeoB,OAAS,EAE7H,KAAAoE,WAAa,KAC1BpB,KAAKmB,SAAS,CAAEtB,WAAW,KAvFxBwB,SACH,MAAM,eAAEzF,EAAF,eAAkB0F,EAAlB,SAAkCC,EAAlC,YAA4CC,EAA5C,SAAyDC,EAAzD,UAAmE7E,EAAY,IAAOoD,KAAKxE,MAAMgF,QACjG,qBAAEjD,EAAF,iBAAwBmE,EAAxB,WAA0CC,GAAe3B,KAAKxE,MAAMoG,WACpE,UAAE/B,EAAF,YAAaC,GAAgBE,KAAKL,MAExC,IAAKE,EAED,OADAG,KAAKxE,MAAMyE,QAAQI,UAAUwB,MAAM,sDAC5B,KAGX,MAAMC,EAAS,OAGR9B,KAAKxE,OAHG,IAIXoB,UAAWmF,IAAW,kBAAmBnF,GACzCiD,YACAmC,UAAWhC,KAAKoB,WAChBnF,YAAa+D,KAAKW,qBAClBzE,WAAY8D,KAAKM,iBAEjB7E,iBAAkB,CAAEmB,UAAWmF,IAAW,kBAAmBnF,GAAYqF,YAAajC,KAAKxE,MAAOmB,KAAM,UACxGd,qBAAsB,CAClB0D,IAAKD,GAETxD,sBAAuB,CACnByD,IAAKtB,EACLR,iBAAkBuC,KAAKvC,kBAE3B/B,aAAc,CAAEkB,UAAW,4BAC3BZ,gBAAiB2F,EACjB/F,iBACAkE,cACA/D,cAAe,CACXwD,IAAK2C,WACLtF,UAAW,4BACXkD,cACAqC,KAAMnC,KAAKa,MACXuB,SAAUpC,KAAKiB,UACfoB,yBAA0BrC,KAAKgB,WAC/BsB,cAAed,EACfD,WACAC,cACAC,YAEJ9F,YAAa2F,GAAkB/E,gBAACe,EAAsBb,iBAAK,CAAEiB,QAASsC,KAAKoB,WAAY5D,MAAOkE,EAAkBnE,uBAAsBE,iBAAkBuC,KAAKvC,sBAGjK,OAAOuC,KAAKxE,MAAM+G,WAAWT,IA4CtBrC,c","file":"static/js/162.b93dccc6e0d7e27f062c.chunk.js","sourcesContent":["const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['promo-banner'] = {\n c: () => require('@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'promo-banner',\n p: 'promo-banner',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner'\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|promo-banner|modules|promo-banner|promo-banner'] = {\n c: () => require('@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner.view.js'),\n cn: '@msdyn365-commerce-modules-promo-banner-promo-banner'\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IPromoBannerViewProps } from './promo-banner';\n\nconst PromoBannerView: React.FC = props => {\n const {\n promoBannerProps,\n contentProps,\n closeButton,\n bannerMessages,\n promoBannerTextProps,\n promoBannerLinksProps,\n carouselProps,\n promoBannerText,\n handleLinks,\n handleText\n } = props;\n\n const slides = bannerMessages && bannerMessages.map((message, index) => {\n return (\n \n \n {promoBannerText}\n \n {message.text && }\n {message.links && message.links.length > 0 && }\n \n );\n });\n\n return (\n \n \n {closeButton}\n \n );\n};\nexport default PromoBannerView;\n","module.exports = React;","module.exports = ReactDOM;","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPromoBannerCloseButton {\n closeButtonAriaLabel?: string;\n label?: string;\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n\n}\n\nexport const PromoBannerCloseButton: React.FC = ({ closeButtonAriaLabel, label, telemetryContent, onClose }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PromoBannerClose);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n \n {label}\n \n \n );\n};\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, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../promo-banner.props.autogenerated';\n\nexport interface IPromoBannerLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const PromoBannerLinks: React.FC = ({ links, requestContext, onTextChange, telemetryContent }) => {\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n \n {editableLinks && editableLinks.length > 0 ? : null}\n \n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent: ITelemetryContent): 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', telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-promo-banner__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\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 * as React from 'react';\n\nexport interface IPromoBannerText {\n text: string;\n requestContext: Msdyn365.IRequestContext;\n onTextChange(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const PromoBannerText: React.FC = ({ text, onTextChange, requestContext }) => {\n return (\n \n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Carousel } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { PromoBannerCloseButton, PromoBannerLinks, PromoBannerText } from './components';\nimport { IBannerMessagesData, IPromoBannerProps, IPromoBannerResources } from './promo-banner.props.autogenerated';\n\nexport interface IPromoBannerState {\n animating: boolean;\n isVisible: boolean;\n activeIndex: number;\n}\n\nexport interface IPromoBannerViewProps extends IPromoBannerProps<{}>, IPromoBannerState {\n promoBannerProps: IModuleProps;\n contentProps: INodeProps ;\n bannerMessages: IBannerMessagesData[];\n promoBannerTextProps: INodeProps;\n promoBannerLinksProps: INodeProps;\n carouselProps: INodeProps;\n closeButton?: React.ReactNode;\n className: string;\n promoBannerText: string;\n resources: IPromoBannerResources;\n onDismiss(): void;\n handleText(): void;\n handleLinks(): void;\n}\n\n/**\n *\n * PromoBannerModule component.\n * @extends {React.PureComponent>}\n */\nclass PromoBanner extends React.PureComponent, IPromoBannerState> {\n public state: IPromoBannerState = {\n animating: false,\n isVisible: true,\n activeIndex: 0\n };\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n\n public render(): JSX.Element | null {\n const { bannerMessages, dismissEnabled, interval, hideFlipper, autoplay, className = '' } = this.props.config;\n const { closeButtonAriaLabel, closeButtonLabel, bannerText } = this.props.resources;\n const { isVisible, activeIndex } = this.state;\n\n if (!isVisible) {\n this.props.context.telemetry.error('Promo banner content is empty, module wont render.');\n return null;\n }\n\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n className: classnames('ms-promo-banner', className),\n isVisible, // State data\n onDismiss: this._onDismiss, // Methods\n handleLinks: this.handleLinkTextChange,\n handleText: this.handleTextChange,\n\n promoBannerProps: { className: classnames('ms-promo-banner', className), moduleProps: this.props, role: 'banner' },\n promoBannerTextProps: {\n tag: PromoBannerText\n },\n promoBannerLinksProps: {\n tag: PromoBannerLinks,\n telemetryContent: this.telemetryContent\n },\n contentProps: { className: 'ms-promo-banner__content' },\n promoBannerText: bannerText,\n bannerMessages,\n activeIndex,\n carouselProps: {\n tag: Carousel,\n className: 'ms-promo-banner__carousel',\n activeIndex,\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n hideIndicator: hideFlipper,\n interval,\n hideFlipper,\n autoplay\n },\n closeButton: dismissEnabled && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.bannerMessages && this.props.config.bannerMessages[0]) {\n this.props.config.bannerMessages[0].text = event.target.value;\n }\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.bannerMessages && this.props.config.bannerMessages[1]) {\n const links = this.props.config.bannerMessages[1].links;\n if (links) {\n links[linkIndex].linkText = event.target.value;\n }\n }\n };\n\n private readonly _next = (): void => {\n const nextIndex = this._isLastItem() ? 0 : this.state.activeIndex + 1;\n this._goToIndex(nextIndex);\n };\n\n private readonly _previous = (): void => {\n const nextIndex = this._isFirstItem() ? (this.props.config.bannerMessages ? this.props.config.bannerMessages.length - 1 : 0) : this.state.activeIndex - 1;\n this._goToIndex(nextIndex);\n };\n\n private readonly _goToIndex = (index: number): void => {\n if (this.state.animating) {\n return;\n }\n this.setState({ activeIndex: index });\n };\n\n private readonly _isFirstItem = () => this.state.activeIndex === 0;\n\n private readonly _isLastItem = () => this.props.config.bannerMessages && this.state.activeIndex === this.props.config.bannerMessages.length - 1;\n\n private readonly _onDismiss = (): void => {\n this.setState({ isVisible: false });\n };\n}\n\nexport default PromoBanner;\n"],"sourceRoot":""}