{"version":3,"sources":["webpack:///./src/modules/citta-user-subscribed/citta-user-subscribed.view.tsx?c06b","webpack:///./src/modules/citta-unsubscribe/citta-unsubscribe.view.tsx?06b7","webpack:///./src/modules/citta-user-subscribed/citta-user-subscribed.tsx?5c91","webpack:///./src/modules/citta-account-subscription/citta-account-subscription.tsx?2618","webpack:///src/modules/accordion-item/accordion-item.view.tsx?b04f","webpack:///src/modules/accordion-item/accordion-item.tsx?fc54","webpack:///src/modules/accordion/accordion.view.tsx?8c70","webpack:///src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?5927","webpack:///./src/themes/citta/views/video-player.view.tsx?92a7","webpack:///src/modules/interactive-feature-collection/interactive-feature-collection.tsx?2538","webpack:///./src/modules/citta-account-subscription/citta-account-subscription.view.tsx?3b5f","webpack:///./src/data-actions/subscribe-email/subscribe-email-data.ts?2b0a","webpack:///./src/modules/citta-unsubscribe/citta-unsubscribe.tsx?0c73","webpack:///src/modules/accordion/accordion.tsx?45c1","webpack:///src/index.ts?c6ae"],"names":["props","unsubscribeContainer","alertMessage","unsubscribeHeading","unsubscribeInput","unsubscribeButton","React","Module","Object","assign","CittaUserSubscribed","constructor","super","this","cittaTelemetry","CittaTelemetry","context","app","config","cittaInstrumentationKey","url","decodeURI","window","location","search","urlParams","URLSearchParams","delete","_logMessage","toString","isNewUser","request","user","newUserKey","isSubscribedToNewsletter","subscriptionKey","userEmail","emailAddress","subscribeEmailAction","SubscribeEmailDataActionInput","actionContext","e","telemetry","error","render","moduleprops","_objectSpread","renderView","message","Id","TotalItems","data","activeCart","result","trace","CittaAccountSubscription","_this$props$data$acco","_handleSubscribeClick","async","_handleButtonClick","_handleUnsubscribeClick","state","setState","isProcessing","response","_setSubscriptionState","subscribe","Result","Message","isSuccess","_isSuccess","alertClass","bind","email","accountInformation","Email","subscribed","_getSubscriptionState","hasDetails","undefined","isSubscribed","hasAccountDetails","componentDidUpdate","prevProps","_this$props$data$acco2","hasDetails1","CittaAccountSubscriptionViewProps","AccountSubscriptionWrapper","moduleProps","className","classnames","AccountSubscriptionAttribute","AccountSubscriptionProcessing","AccountSubscriptionUnSubscribe","subscribeResponse","_getSubscribeResponse","processingMessage","_renderProcessing","subUnsubButtton","_renderButtons","subscribeAlert","_renderSubscribeAlert","subscribeNote","_renderSubscribeNote","accountInfo","attributes","Attributes","length","forEach","attr","_attr$AttributeValue","Name","resources","optInAttributeName","AttributeValue","BooleanValue","subscribtionText","subscribtionStatus","noSubscribtionStatus","subscribtionMailText","missingInfoMessage","emailHeadingText","processingLabel","Button","color","onClick","disabled","unsubscribeButtonLabel","subscribeButtonLabel","pleaseNoteMessage","_renderAccordionItemContent","items","map","item","index","key","AccordionItemView","drawer","accordionSlots","AccordionItemContainer","AccordionItemContent","Node","accordionItemContent","AccordionItem","moduleClassName","handleHeadingChange","event","accordionItemTitle","target","value","_onToggle","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","shouldComponentUpdate","nextProps","slots","accordionExpandedStateResult","accordionExpandedState","expanded","isAllExpanded","isExpandedOnInitialLoad","tag","ControlledDrawer","toggleButtonText","collapseProps","isOpen","onToggle","onTextChange","requestContext","interactionStyle","accordionState","update","createAccordionStateInput","__decorate","observer","accordionView","heading","AccordionContainer","accordionItems","accordionButtons","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionItemContainer","interactiveFeatureCollectionView","title","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionDesktopItems","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionMobileContainer","singleSlideCarouselComponentProps","singleSlideCarouselItemContainer","createElement","tileItem","keyIndex","VideoPlayerView","_renderDesktop","playerResources","playAriaLabel","playLabel","pauseAriaLabel","pauseLabel","muteAriaLabel","muteLabel","unMuteAriaLabel","unMuteLabel","fullScreenAriaLabel","fullScreenLabel","exitFullScreenAriaLabel","exitFullScreenLabel","playingAriaLabel","playingLabel","pausedAriaLabel","pausedLabel","player","_renderMobile","imageSettingsDefault","disableLazyLoad","viewports","xs","q","w","h","image","mobileImage","_image$imageSettings","Image","src","altText","gridSettings","imageSettings","loadFailureBehavior","_renderVideoPlayerOverlay","buttonText","buttonLink","headerText","horizontalPosition","href","isMobile","_updateIsMobile","innerWidth","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","id","renderModuleAttributes","InteractiveFeatureCollection","_telemetryContent","handleTextChange","text","itemsCounter","indexItem","itemCounter","isMosaic","_this$props$config$cl","_title$tag","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","createHeading","Msdyn365","editProps","onEdit","viewProps","role","_getFeatureItem","CittaAccountSubscriptionView","getCacheKey","getCacheObjectType","dataCacheType","input","ctx","dXC_SubscribeEmailAsync","callerContext","console","log","Array","isArray","createObservableDataAction","action","args","CittaUnsubscribe","_handleInputChange","inputEmail","_callUnsubscribeAPI","_renderAlertMessage","_renderUnsubscribeHeading","_renderUnsubscribeInput","_renderUnsubscribeButton","Heading","headingTag","displayAlert","onChange","type","placeholder","Accordion","expandAllButtonRef","collapseAllButtonRef","_onExpandAll","_onCollapseAll","payLoad","getPayloadObject","isDisabled","headingComponent","accordionViewProps","_renderAccordionButton","_getAccordionItem","contentAction","etext","TelemetryConstant","ExpandAll","attributeExpandAll","getTelemetryAttributes","CollapseAll","attributeCollapseAll","showToggleAll","expandAllText","ref","toggleAllSeparator","collapseAllText","setTimeout","_this$collapseAllButt","current","focus","_this$expandAllButton"],"mappings":"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","file":"static/js/17.b5cf3456f3ecc034c212.chunk.js","sourcesContent":["/*!\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 { ICittaUserSubscribedViewProps } from './citta-user-subscribed';\r\n\r\nexport default (props: ICittaUserSubscribedViewProps) => {\r\n return (null);\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 { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICittaUnsubscribeViewProps } from './citta-unsubscribe';\r\n\r\nexport default (props: ICittaUnsubscribeViewProps) => {\r\n const { unsubscribeContainer, alertMessage, unsubscribeHeading, unsubscribeInput, unsubscribeButton } = props;\r\n return (\r\n \r\n {alertMessage}\r\n {unsubscribeHeading}\r\n {unsubscribeInput}\r\n {unsubscribeButton}\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\nimport CittaTelemetry from '../../common/telemetry/citta-telemetry';\r\nimport { subscribeEmailAction, SubscribeEmailDataActionInput } from '../../data-actions/subscribe-email/subscribe-email-data';\r\nimport { ICittaUserSubscribedData } from './citta-user-subscribed.data';\r\nimport { ICittaUserSubscribedProps } from './citta-user-subscribed.props.autogenerated';\r\n\r\nexport interface ICittaUserSubscribedViewProps extends ICittaUserSubscribedProps {}\r\n\r\n/**\r\n *\r\n * CittaUserSubscribed component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaUserSubscribed extends React.PureComponent> {\r\n private cittaTelemetry: CittaTelemetry;\r\n\r\n constructor(props: ICittaUserSubscribedProps) {\r\n super(props);\r\n this.cittaTelemetry = new CittaTelemetry(this.props.context.app.config.cittaInstrumentationKey);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const url = decodeURI(window.location.search);\r\n const urlParams = new URLSearchParams(url);\r\n urlParams.delete('token'); // laybuy\r\n urlParams.delete('orderToken'); // afterpay\r\n urlParams.delete('sessionid'); // payment express\r\n\r\n this._logMessage(`Citta user subscribed loaded ${urlParams.toString()}`);\r\n\r\n /* tslint:disable:no-string-literal */\r\n const isNewUser = (this.props.context.request && this.props.context.request.user && this.props.context.request.user['userClaims'] &&\r\n this.props.context.request.user['userClaims'][this.props.config.newUserKey || 'IsNewUser'] &&\r\n this.props.context.request.user['userClaims'][this.props.config.newUserKey || 'IsNewUser'] === 'true') ? true : false;\r\n const isSubscribedToNewsletter = (this.props.context.request && this.props.context.request.user && this.props.context.request.user['userClaims'] &&\r\n this.props.context.request.user['userClaims'][this.props.config.subscriptionKey || 'SubscribeToNewsletter'] &&\r\n this.props.context.request.user['userClaims'][this.props.config.subscriptionKey || 'SubscribeToNewsletter'] === 'true') ? true : false;\r\n const userEmail = this.props.context.request.user && this.props.context.request.user.emailAddress || '';\r\n\r\n if (isNewUser && isSubscribedToNewsletter) {\r\n try {\r\n await subscribeEmailAction(new SubscribeEmailDataActionInput(userEmail, isSubscribedToNewsletter), this.props.context.actionContext);\r\n } catch(e) {\r\n this.props.telemetry.error(`Something went wrong ------${e}`);\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const moduleprops = {\r\n ...this.props\r\n };\r\n return this.props.renderView(moduleprops) as React.ReactElement;\r\n }\r\n\r\n private _logMessage(message: string): void {\r\n const {\r\n Id,\r\n TotalItems\r\n } = this.props.data.activeCart.result!;\r\n\r\n this.cittaTelemetry.trace(`CartId:${Id} TotalItem:${TotalItems} - ${message}`);\r\n }\r\n}\r\n\r\nexport default CittaUserSubscribed;\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 { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\n\r\nimport { ICittaAccountSubscriptionData } from './citta-account-subscription.data';\r\nimport { ICittaAccountSubscriptionProps } from './citta-account-subscription.props.autogenerated';\r\n\r\nimport { IDXC_SubscribeNewsletterRealtimeResponse } from '../../data-actions/generated/DataServiceEntities.g';\r\nimport { subscribeEmailAction, SubscribeEmailDataActionInput } from './../../data-actions/subscribe-email/subscribe-email-data';\r\n\r\nexport interface ICittaAccountSubscriptionViewProps extends ICittaAccountSubscriptionProps {\r\n hasAccountDetails: boolean;\r\n isProcessing: boolean;\r\n subUnsubButtton: React.ReactNode;\r\n subscribeNote: React.ReactNode;\r\n subscribeAlert: React.ReactNode;\r\n AccountSubscriptionWrapper: IModuleProps;\r\n subscribeResponse: React.ReactNode;\r\n AccountSubscriptionAttribute: INodeProps;\r\n AccountSubscriptionProcessing: INodeProps;\r\n AccountSubscriptionUnSubscribe: INodeProps;\r\n processingMessage: React.ReactNode;\r\n}\r\n\r\ninterface ICittaAccountSubscriptionState {\r\n alertMessage: string;\r\n alertClass: string;\r\n userEmail: string;\r\n isSubscribed: boolean;\r\n hasAccountDetails: boolean;\r\n isProcessing: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CittaAccountSubscription component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaAccountSubscription extends React.PureComponent, ICittaAccountSubscriptionState> {\r\n constructor(props: ICittaAccountSubscriptionViewProps) {\r\n super(props);\r\n this._handleSubscribeClick = this._handleSubscribeClick.bind(this);\r\n this._handleUnsubscribeClick = this._handleUnsubscribeClick.bind(this);\r\n const email = this.props.data && this.props.data.accountInformation && this.props.data.accountInformation.result?.Email;\r\n const subscribed = this._getSubscriptionState();\r\n const hasDetails = email !== undefined && subscribed !== undefined;\r\n\r\n this.state = {\r\n alertMessage: '',\r\n alertClass: '',\r\n userEmail: email || '',\r\n isSubscribed: subscribed || false,\r\n hasAccountDetails: hasDetails,\r\n isProcessing: false\r\n };\r\n }\r\n\r\n public componentDidUpdate(prevProps: ICittaAccountSubscriptionViewProps): void {\r\n if (this.props.data !== prevProps.data) {\r\n const { result } = this.props.data.accountInformation;\r\n if (result) {\r\n const email: string = this.props.data.accountInformation.result?.Email || '';\r\n const subscribed: boolean = this._getSubscriptionState() || false;\r\n const hasDetails1 = email !== undefined && subscribed !== undefined;\r\n this.setState({ userEmail: email, isSubscribed: subscribed, hasAccountDetails: hasDetails1 });\r\n }\r\n }\r\n\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { hasAccountDetails, isProcessing } = this.state;\r\n const { config } = this.props;\r\n const CittaAccountSubscriptionViewProps = {\r\n ...this.props,\r\n AccountSubscriptionWrapper: {\r\n moduleProps: this.props,\r\n className: classnames('citta-account-subscription', config.className)\r\n },\r\n AccountSubscriptionAttribute: {\r\n className: 'citta-account-has-account'\r\n },\r\n AccountSubscriptionProcessing: {\r\n className: 'citta-account-subscription-processing'\r\n },\r\n AccountSubscriptionUnSubscribe: {\r\n className: 'citta-account-subscription-unsubscription'\r\n },\r\n subscribeResponse: this._getSubscribeResponse(),\r\n hasAccountDetails: hasAccountDetails,\r\n isProcessing: isProcessing,\r\n processingMessage: this._renderProcessing(),\r\n subUnsubButtton: this._renderButtons(),\r\n subscribeAlert: this._renderSubscribeAlert(),\r\n subscribeNote: this._renderSubscribeNote()\r\n };\r\n return this.props.renderView(CittaAccountSubscriptionViewProps) as React.ReactElement;\r\n }\r\n private _getSubscriptionState(): boolean | undefined {\r\n const accountInfo = this.props.data.accountInformation.result;\r\n if (accountInfo) {\r\n const attributes = accountInfo.Attributes;\r\n if (attributes && attributes.length > 0) {\r\n let isSubscribed;\r\n attributes.forEach(attr => {\r\n if (attr.Name === this.props.resources.optInAttributeName) {\r\n isSubscribed = attr.AttributeValue?.BooleanValue;\r\n }\r\n });\r\n return isSubscribed;\r\n }\r\n }\r\n return;\r\n }\r\n private _getSubscribeResponse(): React.ReactNode {\r\n const { isSubscribed, hasAccountDetails } = this.state;\r\n const { resources } = this.props;\r\n const message = hasAccountDetails\r\n ?

{resources.subscribtionText} {isSubscribed ? resources.subscribtionStatus : resources.noSubscribtionStatus}{resources.subscribtionMailText}

\r\n :

{resources.missingInfoMessage}

;\r\n\r\n return (\r\n
\r\n

{resources.emailHeadingText}

\r\n {message}\r\n
\r\n );\r\n }\r\n\r\n private _renderProcessing(): React.ReactNode {\r\n const { resources } = this.props;\r\n return (\r\n
\r\n

{resources.processingLabel}

\r\n
\r\n );\r\n }\r\n\r\n // Render subscribe/unsubscribe button\r\n private _renderButtons(): React.ReactNode {\r\n const { resources } = this.props;\r\n const { isSubscribed, isProcessing } = this.state;\r\n if (isSubscribed) {\r\n return (\r\n {isProcessing ? resources.processingLabel : resources.unsubscribeButtonLabel}\r\n \r\n );\r\n } else {\r\n return (\r\n {isProcessing ? resources.processingLabel : resources.subscribeButtonLabel}\r\n \r\n );\r\n }\r\n }\r\n\r\n // Set-subscription alert message\r\n private _renderSubscribeAlert(): React.ReactNode {\r\n const { alertMessage, alertClass } = this.state;\r\n const displayAlert: boolean = (alertMessage ? alertMessage !== '' : false);\r\n if (displayAlert) {\r\n return (\r\n
\r\n

{alertMessage}

\r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private _renderSubscribeNote(): React.ReactNode {\r\n const { resources } = this.props;\r\n return (\r\n
\r\n

{resources.pleaseNoteMessage}

\r\n
\r\n );\r\n }\r\n\r\n private _handleSubscribeClick = async () => {\r\n await this._handleButtonClick(true);\r\n }\r\n\r\n private _handleUnsubscribeClick = async () => {\r\n await this._handleButtonClick(false);\r\n }\r\n\r\n private _handleButtonClick = async (subscribe: boolean) => {\r\n const { userEmail } = this.state;\r\n this.setState({\r\n isProcessing: true\r\n });\r\n // Update subscription state for user\r\n const response = await this._setSubscriptionState(userEmail, subscribe);\r\n if (response.Result && response.Message) {\r\n const isSuccess = this._isSuccess(subscribe, response.Message);\r\n this.setState({\r\n alertMessage: `${response.Message}`,\r\n alertClass: isSuccess ? 'alert-green' : 'alert-yellow',\r\n isProcessing: false\r\n });\r\n } else {\r\n this.setState({\r\n alertMessage: 'Error processing request',\r\n alertClass: 'alert-yellow',\r\n isProcessing: false\r\n });\r\n }\r\n }\r\n\r\n private async _setSubscriptionState(email: string, subscribed: boolean): Promise {\r\n try {\r\n return await subscribeEmailAction(new SubscribeEmailDataActionInput(email, subscribed), this.props.context.actionContext);\r\n } catch (e) {\r\n throw this.props.telemetry.error(`Something went wrong ------${e}`);\r\n }\r\n }\r\n\r\n private _isSuccess(subscribe: boolean, message: string): boolean {\r\n if (subscribe) {\r\n return message === 'Subscribed successfully.';\r\n } else {\r\n return message === 'Unsubscribed successfully.';\r\n }\r\n }\r\n}\r\n\r\nexport default CittaAccountSubscription;\r\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 * as React from 'react';\n\nimport { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\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 { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\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 * as React from 'react';\n\nimport { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\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 React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems &&\n interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\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 { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport { IVideoPlayerViewProps } from '@msdyn365-commerce-modules/video-player/src/modules/video-player/video-player';\r\n// import { IPlayerResources } from '@msdyn365-commerce/components/dist/types/videoplayer/components/data/player-resources';\r\nimport { Image } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IVideoPlayerProps } from '../definition-extensions/video-player.ext.props.autogenerated';\r\n\r\ninterface IVideoPlayerState {\r\n isMobile: boolean;\r\n }\r\n\r\n/**\r\n *\r\n * VideoPlayer component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class VideoPlayerView extends React.PureComponent, IVideoPlayerState> {\r\n constructor(props: IVideoPlayerViewProps) {\r\n //@ts-ignore\r\n super(props);\r\n this.state = {isMobile: false};\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._updateIsMobile();\r\n window.addEventListener('resize', this._updateIsMobile);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window.removeEventListener('resize', this._updateIsMobile);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return (\r\n \r\n
\r\n {this.state.isMobile ? this._renderMobile() : this._renderDesktop()}\r\n {this._renderVideoPlayerOverlay()}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderDesktop = (): React.ReactNode | null => {\r\n const playerResources: any = {\r\n playAriaLabel: this.props.config.playLabel ? this.props.config.playLabel : '',\r\n pauseAriaLabel: this.props.config.pauseLabel ? this.props.config.pauseLabel : '',\r\n muteAriaLabel: this.props.config.muteLabel ? this.props.config.muteLabel : '',\r\n unMuteAriaLabel: this.props.config.unMuteLabel ? this.props.config.unMuteLabel: '',\r\n fullScreenAriaLabel: this.props.config.fullScreenLabel ? this.props.config.fullScreenLabel : '',\r\n exitFullScreenAriaLabel: this.props.config.exitFullScreenLabel ? this.props.config.exitFullScreenLabel : '',\r\n playingAriaLabel: this.props.config.playingLabel ? this.props.config.playingLabel : '',\r\n pausedAriaLabel: this.props.config.pausedLabel ? this.props.config.pausedLabel : '',\r\n ...this.props.resources\r\n };\r\n if (this.props.player) {\r\n return React.cloneElement(this.props.player as React.ReactElement, {playerResources});\r\n }\r\n return null;\r\n };\r\n\r\n private _renderMobile = (): React.ReactNode | null => {\r\n const imageSettingsDefault = {\r\n disableLazyLoad: true,\r\n viewports: {\r\n xs: { q: `q=80&w=770&h=500&m=6`, w: 770, h: 500 }\r\n }\r\n };\r\n const image = this.props.config.mobileImage;\r\n\r\n if (image) {\r\n return (\r\n
\r\n {image && }\r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderVideoPlayerOverlay = (): React.ReactNode | null => {\r\n const { buttonText, buttonLink, headerText, horizontalPosition } = this.props.config;\r\n if (buttonText || headerText) {\r\n return (\r\n
\r\n { headerText &&
{headerText}
}\r\n { buttonText && {buttonText}\r\n }\r\n
\r\n );\r\n }\r\n return null;\r\n };\r\n\r\n private _updateIsMobile = () => {\r\n this.setState({\r\n isMobile: window.innerWidth < 768\r\n });\r\n }\r\n}\r\n\r\nexport default VideoPlayerView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots && this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems && interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const createHeading = title && (\n \n );\n const viewProps = {\n ...this.props,\n title: createHeading,\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.title!.text = event.target.value);\n}\n\nexport default InteractiveFeatureCollection;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICittaAccountSubscriptionViewProps } from './citta-account-subscription';\r\n\r\nconst CittaAccountSubscriptionView: React.FC = props => {\r\n const {\r\n AccountSubscriptionWrapper,\r\n AccountSubscriptionAttribute,\r\n AccountSubscriptionProcessing,\r\n AccountSubscriptionUnSubscribe,\r\n subscribeResponse,\r\n subUnsubButtton,\r\n isProcessing,\r\n hasAccountDetails,\r\n processingMessage,\r\n subscribeAlert,\r\n subscribeNote } = props;\r\n return (\r\n \r\n {subscribeResponse}\r\n {hasAccountDetails &&\r\n \r\n {isProcessing ?\r\n \r\n {processingMessage}\r\n :\r\n \r\n {subUnsubButtton}\r\n {subscribeAlert}\r\n {subscribeNote}\r\n }\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default CittaAccountSubscriptionView;\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 { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\r\nimport { dXC_SubscribeEmailAsync } from '../generated/DataActionExtension.g';\r\nimport { IDXC_SubscribeNewsletterRealtimeResponse } from '../generated/DataServiceEntities.g';\r\n\r\n/**\r\n * SubmitSubscribeFormDataActionInput Input Action\r\n */\r\n\r\nexport class SubscribeEmailDataActionInput implements IActionInput {\r\n public emailAddress: string;\r\n public subscribe: boolean;\r\n\r\n // Construct the input needed to run the action\r\n constructor(emailAddress: string, subscribe: boolean) {\r\n this.emailAddress = emailAddress;\r\n this.subscribe = subscribe;\r\n }\r\n\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => 'SubscribeEmail2020';\r\n public getCacheObjectType = () => 'SubscribeEmail';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (args: SubscribeEmailDataActionInput): IActionInput => {\r\n return args;\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nexport async function subscribeEmailAction(\r\n input: SubscribeEmailDataActionInput,\r\n ctx: IActionContext\r\n): Promise {\r\n // Input only needs token\r\n let result: IDXC_SubscribeNewsletterRealtimeResponse = {};\r\n try {\r\n result = await dXC_SubscribeEmailAsync({ callerContext: ctx }, input.emailAddress, input.subscribe);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n return Array.isArray(result) ? result[0] : result;\r\n}\r\n\r\nexport const ISubscribeEmailDataActionAction = createObservableDataAction({\r\n action: >subscribeEmailAction,\r\n input: createInput\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 { Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IDXC_SubscribeNewsletterRealtimeResponse } from '../../data-actions/generated/DataServiceEntities.g';\r\nimport { subscribeEmailAction, SubscribeEmailDataActionInput } from './../../data-actions/subscribe-email/subscribe-email-data';\r\nimport { ICittaUnsubscribeData } from './citta-unsubscribe.data';\r\nimport { ICittaUnsubscribeProps } from './citta-unsubscribe.props.autogenerated';\r\n\r\nexport interface ICittaUnsubscribeViewProps extends ICittaUnsubscribeProps {\r\n unsubscribeContainer: IModuleProps;\r\n alertMessage?: React.ReactNode;\r\n unsubscribeHeading?: React.ReactNode;\r\n unsubscribeInput?: React.ReactNode;\r\n unsubscribeButton?: React.ReactNode ;\r\n}\r\n\r\ninterface ICittaUnsubscribeState {\r\n alertMessage: string;\r\n alertClass: string;\r\n inputEmail: string;\r\n}\r\n\r\n/**\r\n *\r\n * CittaUnsubscribe component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaUnsubscribe extends React.PureComponent, ICittaUnsubscribeState> {\r\n constructor(props: ICittaUnsubscribeViewProps) {\r\n super(props);\r\n this._handleButtonClick = this._handleButtonClick.bind(this);\r\n this._handleInputChange = this._handleInputChange.bind(this);\r\n\r\n this.state = {\r\n alertMessage: '',\r\n alertClass: '',\r\n inputEmail: ''\r\n };\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: ICittaUnsubscribeViewProps = {\r\n ...(this.props as ICittaUnsubscribeProps),\r\n unsubscribeContainer: {\r\n moduleProps: this.props,\r\n className: 'container citta-unsubscribe'\r\n },\r\n alertMessage: this._renderAlertMessage(),\r\n unsubscribeHeading: this._renderUnsubscribeHeading(),\r\n unsubscribeInput: this._renderUnsubscribeInput(),\r\n unsubscribeButton: this._renderUnsubscribeButton()\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n private _handleInputChange = (event: any) => {\r\n this.setState({\r\n inputEmail: event.target.value\r\n });\r\n }\r\n\r\n private _handleButtonClick = async () => {\r\n const response = await this._callUnsubscribeAPI(this.state.inputEmail);\r\n if (response.Result && response.Message) {\r\n this.setState({\r\n alertMessage: `${response.Message}`,\r\n alertClass: response.Message === 'Unsubscribed successfully.' ? 'alert-green' : 'alert-yellow'\r\n });\r\n }\r\n }\r\n\r\n private async _callUnsubscribeAPI(email: string): Promise {\r\n try {\r\n return await subscribeEmailAction(new SubscribeEmailDataActionInput(email, false), this.props.context.actionContext);\r\n } catch (e) {\r\n throw this.props.telemetry.error(`Something went wrong ------${e}`);\r\n }\r\n }\r\n\r\n private _renderUnsubscribeHeading(): React.ReactNode {\r\n const { unsubscribeHeading } = this.props.config;\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderAlertMessage(): React.ReactNode {\r\n const { alertMessage, alertClass } = this.state;\r\n const displayAlert: boolean = (alertMessage ? alertMessage !== '' : false);\r\n return (\r\n <>\r\n {displayAlert ?
\r\n

{alertMessage}

\r\n
: null}\r\n \r\n );\r\n }\r\n\r\n private _renderUnsubscribeInput(): React.ReactNode {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n private _renderUnsubscribeButton(): React.ReactNode {\r\n const { resources } = this.props;\r\n return (\r\n {resources.buttonText}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default CittaUnsubscribe;","/*!\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 {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IAccordionExpandedState } from './data-actions/accordion-state';\nimport { createAccordionStateInput } from './data-actions/accordion-state-data-action';\nimport accordion from './modules/accordion/accordion';\nimport { interactionStyle } from './modules/accordion/accordion.props.autogenerated';\nimport accordionView from './modules/accordion/accordion.view';\n\nexport * from './modules/accordion/accordion';\nexport * from './modules/accordion/accordion.view';\n\nexport { accordion, accordionView, createAccordionStateInput, IAccordionExpandedState, interactionStyle };\n"],"sourceRoot":""}