{"version":3,"file":"static/js/13.f8aa4a6cfcc24b34f6a4.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/citta-checkout-payment-instrument/citta-checkout-payment-instrument.view.tsx?91b1","webpack://Citta2.0/./src/modules/citta-orderreference/citta-orderreference.tsx?a2af","webpack://Citta2.0/./src/modules/citta-orderreference/citta-orderreference.view.tsx?837d","webpack://Citta2.0/./src/modules/video-player-mobility/components/additional-content.tsx?db49","webpack://Citta2.0/./src/modules/video-player-mobility/video-player-mobility.tsx?a855","webpack://Citta2.0/./src/modules/video-player-mobility/video-player-mobility.view.tsx?e267","webpack://Citta2.0/./src/themes/citta/views/ratings-histogram.view.tsx?9899","webpack://Citta2.0/./src/modules/default-page/default-page.tsx?b382","webpack://Citta2.0/./src/modules/notifications-list/notifications-list.tsx?8377","webpack://Citta2.0/./src/modules/notifications-list/notifications-list.view.tsx?d466","webpack://Citta2.0/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://Citta2.0/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://Citta2.0/./src/modules/tab/tab.tsx?9ac6","webpack://Citta2.0/./src/modules/tab/tab.view.tsx?a99d","webpack://Citta2.0/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Citta2.0/./src/modules/tile-list/tile-list.view.tsx?1b00"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\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 * as React from 'react';\r\nimport { ICheckoutPaymentInstrumentViewProps } from './citta-checkout-payment-instrument';\r\n\r\nconst CheckoutPaymentInstrumentView: React.FC = ({\r\n paymentTabs,\r\n paymentTabContent,\r\n paymentMethod,\r\n processingModal\r\n}) => (\r\n
\r\n
\r\n
{paymentMethod}
\r\n
\r\n {paymentTabs}\r\n {paymentTabContent}\r\n
\r\n {processingModal}\r\n
\r\n);\r\n\r\nexport default CheckoutPaymentInstrumentView;\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 * as React from 'react';\r\nimport classnames from 'classnames';\r\nimport { ICittaOrderreferenceData } from './citta-orderreference.data';\r\nimport { ICittaOrderreferenceProps } from './citta-orderreference.props.autogenerated';\r\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { computed } from 'mobx';\r\nimport { ICartState, getCartState, ICheckoutState, getCheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { GetCheckoutCartInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { Cart, AttributeTextValue } from '@msdyn365-commerce/retail-proxy';\r\n\r\ninterface ICittaOrderReferenceFormState {\r\n orderreference: string;\r\n orderreferenceSubmited: string;\r\n eAValError: boolean;\r\n eAError: boolean;\r\n pPCError: boolean;\r\n rCCError: boolean;\r\n reqError: boolean;\r\n responseReceived: boolean;\r\n responseError: boolean;\r\n responseSuccess: boolean;\r\n reCaptchaChecked: boolean;\r\n submitted: boolean;\r\n}\r\nexport interface ICittaOrderReferenceForm {\r\n FormWrapper: INodeProps;\r\n FormContainer: INodeProps;\r\n orderreferenceInput: React.ReactNode;\r\n submitButtton: React.ReactNode;\r\n submitThanks: React.ReactNode;\r\n editButton: React.ReactNode;\r\n\r\n}\r\n\r\nexport interface ICittaOrderreferenceViewProps extends ICittaOrderreferenceProps {\r\n orderreferenceWrapper: IModuleProps;\r\n orderreferenceResponse: React.ReactNode;\r\n orderreferenceForm: ICittaOrderReferenceForm;\r\n responseSuccess: boolean;\r\n orderreferenceno: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * CittaOrderreference component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaOrderreference extends React.PureComponent, ICittaOrderReferenceFormState> {\r\n private _OrderRefNoRef: React.RefObject;\r\n private moduleClassName: string = 'newsletterSubWrap';\r\n private responseMessage: string | undefined;\r\n private orderrefnoValue: boolean = false;\r\n private formInputValues: boolean = false;\r\n private cart: ICartState | undefined;\r\n private checkoutState: ICheckoutState | undefined; \r\n @computed public get userorderreferenceno(): Readonly {\r\n if (this._OrderRefNoRef.current) {\r\n return this._OrderRefNoRef.current!.value;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n constructor(props: ICittaOrderreferenceProps) {\r\n super(props);\r\n this._OrderRefNoRef = React.createRef();\r\n this._handlesubmit = this._handlesubmit.bind(this);\r\n this.state = {\r\n orderreference: '',\r\n orderreferenceSubmited:'',\r\n eAValError: false,\r\n eAError: false,\r\n pPCError: false,\r\n rCCError: false,\r\n reqError: false,\r\n responseReceived: false,\r\n responseError: false,\r\n reCaptchaChecked: false,\r\n responseSuccess: false,\r\n submitted: false\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n let cartState = await getCartState(this.props.context.actionContext);\r\n this.cart = cartState;\r\n this.checkoutState = await getCheckoutState(this.props.context.actionContext);\r\n\r\n if (this.cart?.cart?.ExtensionProperties!?.length > 0) {\r\n\r\n const property = this.cart?.cart?.ExtensionProperties!?.find((extension) => extension.Key === 'HSOCustRef');\r\n if (property) {\r\n if (this._OrderRefNoRef.current) {\r\n this._OrderRefNoRef.current!.value = property.Value?.StringValue!;\r\n //this.setState({orderreference: property.Value?.StringValue!})\r\n //this.setState({orderreferenceSubmited: property.Value?.StringValue!})\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n public render(): JSX.Element | null {\r\n // return this.props.renderView(this.props); \r\n\r\n const viewProps: ICittaOrderreferenceViewProps = {\r\n ...(this.props as ICittaOrderreferenceProps),\r\n orderreferenceWrapper: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName)\r\n },\r\n orderreferenceResponse: this._getSubscribeResponse(),\r\n orderreferenceForm: this._renderForm(),\r\n responseSuccess: this.state.responseSuccess,\r\n orderreferenceno: this._renderorderreferenceno()\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderorderreferenceno(): React.ReactNode {\r\n return (\r\n this.state.orderreferenceSubmited && Applied value: {this.state.orderreferenceSubmited}\r\n );\r\n }\r\n\r\n\r\n private _renderSubscribeThanks(): React.ReactNode {\r\n return (\r\n
\r\n
\r\n Thanks!\r\n
\r\n
\r\n );\r\n }\r\n private _renderForm(): ICittaOrderReferenceForm {\r\n return {\r\n FormWrapper: {\r\n className: 'newsletter-subscription',\r\n },\r\n FormContainer: {\r\n className: 'newsletter-subscription-div',\r\n },\r\n orderreferenceInput: this._renderorderreferenceInput(),\r\n submitButtton: this.state.orderreferenceSubmited ? null : this._renderSubscribeButton(),\r\n submitThanks: this._renderSubscribeThanks(),\r\n editButton: this._renderEditButton()\r\n };\r\n }\r\n\r\n private _renderSubscribeButton(): React.ReactNode {\r\n return (\r\n
\r\n Apply\r\n \r\n
\r\n );\r\n }\r\n\r\n private _renderEditButton(): React.ReactNode {\r\n return (\r\n
\r\n Edit\r\n \r\n
\r\n );\r\n }\r\n\r\n private async _handleEdit(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent): Promise {\r\n this.orderrefnoValue = (this._OrderRefNoRef && this._OrderRefNoRef.current && this._OrderRefNoRef.current.value) ? true : false;\r\n this.setState({responseSuccess: false});\r\n }\r\n\r\n private async _handlesubmit(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent): Promise {\r\n this.orderrefnoValue = (this._OrderRefNoRef && this._OrderRefNoRef.current && this._OrderRefNoRef.current.value) ? true : false;\r\n\r\n const eA = (this._OrderRefNoRef && this._OrderRefNoRef.current && this._OrderRefNoRef.current.value) ? this._OrderRefNoRef.current.value : '';\r\n if (!this.orderrefnoValue) {\r\n this.setState({\r\n eAError: true,\r\n reqError: true\r\n });\r\n } else {\r\n this.formInputValues = (this.orderrefnoValue) ? true : false;\r\n if (this.formInputValues && !this.state.eAValError) {\r\n try {\r\n await this._SaveExtenstionproperty(eA);\r\n // this._clearValues();\r\n } catch (e) {\r\n console.log(e, 'Please fill the form!');\r\n }\r\n }\r\n }\r\n }\r\n\r\n // private _clearValues(): void {\r\n // if (this._OrderRefNoRef.current) {\r\n // this._OrderRefNoRef.current!.value = '';\r\n // }\r\n // }\r\n private async _SaveExtenstionproperty(orderrefno: string): Promise {\r\n\r\n this._addCartExtension(this.cart?.cart!, \"HSOCustRef\", orderrefno);\r\n this._saveCartExtensions(this.cart!, orderrefno);\r\n this.setState({responseSuccess: true, orderreferenceSubmited: orderrefno});\r\n }\r\n\r\n\r\n private _renderorderreferenceInput(): React.ReactNode {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private _handleChange = (name: string) => (e: React.ChangeEvent) => {\r\n this.setState({orderreferenceSubmited: ''});\r\n const value = e.target.value;\r\n switch (name) {\r\n case 'orderrefno': {\r\n this.setState({ orderreference: value, eAError: false, reqError: false, eAValError: false, pPCError: false });\r\n break;\r\n }\r\n default: {\r\n console.log('No input box changes');\r\n this.setState({ reqError: false, eAValError: false, pPCError: false });\r\n }\r\n }\r\n }\r\n private _getSubscribeResponse(): React.ReactNode {\r\n return (\r\n this.state.responseReceived && this.responseMessage !== '' || undefined\r\n ? (\r\n
\r\n

{this.responseMessage}

\r\n
\r\n )\r\n : null\r\n );\r\n }\r\n\r\n private async _saveCartExtensions(cart: ICartState, orderReferenceString: string) {\r\n if (!cart) {\r\n this.props.telemetry.error('No cart object given');\r\n throw new Error(`saveCartExtensions error: No cart object given`);\r\n }\r\n const cartExtensionProperties = cart.cart.ExtensionProperties;\r\n if (this.checkoutState) {\r\n let cartAttributes = this.checkoutState.checkoutCart.cart.AttributeValues ?? [];\r\n let updateCart = true;\r\n\t\t\tconst orderReferenceAttributeName = \"HSOCustRef\";\r\n\r\n const orderReferenceAttribute = cartAttributes?.find(x => x.Name === orderReferenceAttributeName) as AttributeTextValue;\r\n\r\n if (orderReferenceAttribute) {\r\n if (orderReferenceAttribute.TextValue !== orderReferenceString) {\r\n this.updateTextAttribute(orderReferenceAttribute as AttributeTextValue, orderReferenceString);\r\n }\r\n else {\r\n updateCart = false;\r\n }\r\n } else {\r\n cartAttributes?.push(this.createTextAttribute(orderReferenceAttributeName, orderReferenceString));\r\n }\r\n\r\n if (updateCart) {\r\n await this.checkoutState.checkoutCart.updateAttributeValues({ newAttributeValues: cartAttributes });\r\n }\r\n }\r\n\r\n await updateAsync({ callerContext: this.props.context.actionContext }, { Id: cart.cart.Id, ExtensionProperties: cartExtensionProperties }).then(newCart => {\r\n if (newCart) {\r\n this.props.context.actionContext.update(new GetCheckoutCartInput(this.props.context.request.apiSettings), newCart);\r\n }\r\n }).catch(error => {\r\n throw new Error(`saveCartExtensions ${error}`);\r\n });\r\n }\r\n\r\n private readonly updateTextAttribute = (attribute: AttributeTextValue, value: string) => {\r\n if (attribute) {\r\n attribute.TextValue = value;\r\n attribute.TextValueTranslations = [];\r\n attribute['@odata.type'] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue\";\r\n } \r\n return attribute;\r\n };\r\n\r\n private readonly createTextAttribute = (name: string, value: string) => {\r\n return { \r\n Name : name, \r\n TextValue: value,\r\n TextValueTranslations: [],\r\n '@odata.type': \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue\"\r\n };\r\n };\r\n\r\n _addCartExtension = (cart: Cart, key: string, value: string) => {\r\n cart.ExtensionProperties = cart.ExtensionProperties || [];\r\n const property = cart.ExtensionProperties.find((extension) => extension.Key === key);\r\n if (property) {\r\n property.Value = { StringValue: value };\r\n } else {\r\n cart.ExtensionProperties.push({\r\n Key: key,\r\n Value: {\r\n StringValue: value\r\n }\r\n });\r\n }\r\n };\r\n}\r\nexport default CittaOrderreference;\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 * as React from 'react';\r\nimport { ICittaOrderreferenceViewProps } from './citta-orderreference';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n// export default (props: ICittaOrderreferenceViewProps) => {\r\n// return (\r\n//
\r\n//

Config Value: {props.config.showText}

\r\n//

Resource Value: {props.resources.resourceKey}

\r\n//
\r\n// );\r\n// };\r\n\r\nexport class ICittaOrderreferenceView extends React.PureComponent {\r\n\r\n public render(): JSX.Element | null {\r\n const { orderreferenceWrapper, orderreferenceForm, orderreferenceno } = this.props;\r\n const { FormWrapper, FormContainer,orderreferenceInput, submitButtton } = orderreferenceForm;\r\n const orderForm = \r\n \r\n {orderreferenceInput}\r\n {orderreferenceno}\r\n {submitButtton}\r\n \r\n ;\r\n \r\n return (\r\n \r\n {orderForm}\r\n \r\n );\r\n }\r\n}\r\nexport default ICittaOrderreferenceView;\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAdditionalContentData, ILinksData } from '../video-player-mobility.props.autogenerated';\r\n\r\n/**\r\n * IVideoPlayerAdditionalContentProps: Interface for\r\n * Video Player Additional Content Component props.\r\n */\r\nexport interface IVideoPlayerAdditionalContentProps {\r\n requestContext: Msdyn365.IRequestContext;\r\n additionalContent: IAdditionalContentData | undefined;\r\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\r\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\r\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\n/**\r\n * IVideoPlayerAdditionalContentProps: Interface for\r\n * Video Player Additional Content view props.\r\n */\r\nexport interface IVideoPlayerAdditionalContentViewProps {\r\n additionalContentNode: INodeProps;\r\n additionalContentItems?: IVideoPlayerAdditionalContentItemViewProps;\r\n}\r\n\r\n/**\r\n * IVideoPlayerAdditionalContentProps: Interface for\r\n * Video Player Additional Content Item view props.\r\n */\r\nexport interface IVideoPlayerAdditionalContentItemViewProps {\r\n heading: React.ReactNode;\r\n text: React.ReactNode;\r\n links: React.ReactNode;\r\n additionalContentItemContainer: INodeProps;\r\n additionalContentItemLinks: INodeProps;\r\n}\r\n\r\n/**\r\n * Renders additional content heading.\r\n * @param additionalContentHeading - Additional content heading.\r\n * @param props - Video Player Additional content component props.\r\n * @returns Heading Node.\r\n */\r\nconst renderHeading = (additionalContentHeading: string, props: IVideoPlayerAdditionalContentProps) => {\r\n const requestContext = props.requestContext;\r\n return (\r\n {\r\n props.handleAdditionalTextChange(event);\r\n },\r\n requestContext\r\n }}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Renders additional content heading.\r\n * @param additionalContentParagraphText - Additional content paragraph text.\r\n * @param props - Video Player Additional content component props.\r\n * @returns Paragraph Node.\r\n */\r\nconst renderParagraph = (additionalContentParagraphText: string, props: IVideoPlayerAdditionalContentProps) => {\r\n const requestContext = props.requestContext;\r\n return (\r\n {\r\n props.handleAdditionalParagraphChange(event);\r\n },\r\n requestContext\r\n }}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Renders additional content heading.\r\n * @param ctaLink - Additional content link.\r\n * @param props - Video Player Additional content component props.\r\n * @param linkIndex - Additional content link index.\r\n * @returns Link Node.\r\n */\r\nconst renderLinks = (ctaLink: ILinksData, props: IVideoPlayerAdditionalContentProps, linkIndex: number) => {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: ctaLink.ariaLabel,\r\n className: 'ms-video-player__details__additional-content__cta__links',\r\n linkText: ctaLink.linkText,\r\n linkUrl: ctaLink.linkUrl.destinationUrl,\r\n openInNewTab: ctaLink.openInNewTab,\r\n role: 'link'\r\n };\r\n const requestContext = props.requestContext;\r\n return (\r\n {\r\n props.handleAdditionalLinkTextChange(linkIndex, event);\r\n },\r\n requestContext\r\n }}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Create node for each additonal content item.\r\n * @param item - Video Player additonal content item props.\r\n * @param props - Video Player Additional content component props.\r\n * @returns IVideoPlayerAdditionalContentItemViewProps.\r\n */\r\nconst getAdditionalContentItems = (\r\n item: IAdditionalContentData,\r\n props: IVideoPlayerAdditionalContentProps\r\n): IVideoPlayerAdditionalContentItemViewProps => {\r\n const headingNode = item.heading && renderHeading(item.heading, props);\r\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\r\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\r\n return renderLinks(ctaLink, props, index);\r\n });\r\n\r\n return {\r\n heading: headingNode,\r\n text: paragraphNode,\r\n links: linksNode,\r\n additionalContentItemContainer: { className: 'ms-video-player__details__additional-content__container' },\r\n additionalContentItemLinks: { className: 'ms-video-player__details__additional-content__cta' }\r\n };\r\n};\r\n\r\n/**\r\n * VideoPlayerAdditionalContent component.\r\n * @param props - Video Player Additional content component props.\r\n * @returns Video Player Additional content view props.\r\n */\r\nexport const videoPlayerAdditionalContent = (\r\n props: IVideoPlayerAdditionalContentProps\r\n): IVideoPlayerAdditionalContentViewProps | undefined => {\r\n const { additionalContent } = props;\r\n if (!additionalContent) {\r\n return undefined;\r\n }\r\n\r\n const reactNodes: IVideoPlayerAdditionalContentItemViewProps = getAdditionalContentItems(additionalContent, props);\r\n return {\r\n additionalContentNode: { className: 'ms-video-player__details__additional-content' },\r\n additionalContentItems: reactNodes\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n INodeProps,\r\n // isMobile,\r\n ITelemetryContent,\r\n // VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IVideoPlayerAdditionalContentViewProps, videoPlayerAdditionalContent } from './components/additional-content';\r\nimport { ILinksData, IVideoPlayerMobilityConfig, IVideoPlayerMobilityProps } from './video-player-mobility.props.autogenerated';\r\n\r\nexport interface IVideoPlayerViewProps extends IVideoPlayerMobilityProps<{}> {\r\n player: React.ReactNode;\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n links?: React.ReactNode;\r\n detailsContainer?: INodeProps;\r\n detailsContainerCta?: INodeProps;\r\n additionalContent?: IVideoPlayerAdditionalContentViewProps;\r\n handleText?(): void;\r\n handleParagraph?(): void;\r\n handleAdditionalText?(): void;\r\n handleAdditionalParagraph?(): void;\r\n handleLink?(): void;\r\n handleAdditionalLink?(): void;\r\n}\r\n\r\n/**\r\n *\r\n * VideoPlayer component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass VideoPlayer extends React.PureComponent> {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n // private readonly isMobileDevice: boolean;\r\n\r\n public constructor(props: IVideoPlayerMobilityProps) {\r\n super(props);\r\n // this.isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n public render(): JSX.Element {\r\n const video: MsDyn365.IVideoData = this.props.config.video;\r\n let videolink = video._links && video._links.binaryReferences && video._links.binaryReferences[0].clientHref;\r\n let thumbnail = video.thumbnail?.src;\r\n \r\n const viewProps = {\r\n // Context for telemetry and raw data for C1 to do customization\r\n // Including computed data, state data and methods\r\n ...this.props,\r\n player: (\r\n \r\n \r\n ),\r\n title: this._getVideoDetailsHeading(),\r\n text: this._getVideoDetailsParagraph(),\r\n links: this._getVideoDetailsLinks(),\r\n detailsContainer: { className: 'ms-video-player__details' },\r\n detailsContainerCTA: { className: 'ms-video-player__details__cta' },\r\n additionalContent: videoPlayerAdditionalContent({\r\n requestContext: this.props.context.request,\r\n additionalContent: this.props.config.additionalContent,\r\n handleAdditionalTextChange: this.handleAdditionalTextChange,\r\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\r\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\r\n }),\r\n handleText: this.handleTextChange,\r\n handleParagraph: this.handleParagraphChange,\r\n handleAdditionalText: this.handleAdditionalTextChange,\r\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\r\n handleLink: this.handleLinkTextChange,\r\n handleAdditionalLink: this.handleAdditionalTextChange\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle link text change.\r\n * @param linkIndex - The link index.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\r\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\r\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\r\n }\r\n }\r\n\r\n /**\r\n * Handle text change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Handle paragraph change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\r\n this.props.config.paragraph = event.target.value;\r\n };\r\n\r\n /**\r\n * Handle additional text change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\r\n if (this.props.config.additionalContent) {\r\n this.props.config.additionalContent.heading = event.target.value;\r\n }\r\n }\r\n\r\n /**\r\n * Handle additional link text change.\r\n * @param linkIndex - The link index.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\r\n const additionalContent = this.props.config.additionalContent ?? {};\r\n if (additionalContent.links) {\r\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\r\n }\r\n }\r\n\r\n /**\r\n * Handle additional paragraph change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\r\n if (this.props.config.additionalContent) {\r\n this.props.config.additionalContent.subtext = event.target.value;\r\n }\r\n }\r\n\r\n /**\r\n * Get video details links.\r\n * @returns - React node.\r\n */\r\n private _getVideoDetailsLinks(): React.ReactNode[] | undefined {\r\n const { links } = this.props.config;\r\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n\r\n return links?.map((linkData: ILinksData, index: number) => {\r\n payLoad.contentAction.etext = linkData.linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n const linkId = index;\r\n const editableLink: MsDyn365.ILinksData = {\r\n ariaLabel: linkData.ariaLabel,\r\n className: 'ms-video-player__details__cta__link',\r\n linkText: linkData.linkText,\r\n linkUrl: linkData.linkUrl.destinationUrl,\r\n openInNewTab: linkData.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes\r\n };\r\n\r\n return (\r\n {\r\n this.handleLinkTextChange(index, event);\r\n },\r\n requestContext: this.props.context.request\r\n }}\r\n />\r\n );\r\n });\r\n }\r\n\r\n private _getVideoDetailsHeading(): React.ReactNode | undefined {\r\n const { heading } = this.props.config;\r\n\r\n return (\r\n heading && (\r\n \r\n )\r\n );\r\n }\r\n\r\n private _getVideoDetailsParagraph(): React.ReactNode | undefined {\r\n const { paragraph } = this.props.config;\r\n\r\n return (\r\n paragraph && (\r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nexport default VideoPlayer;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IVideoPlayerAdditionalContentViewProps } from './components/additional-content';\r\nimport { IVideoPlayerViewProps } from './video-player-mobility';\r\n\r\n/**\r\n * Render Additional Content.\r\n * @param additionalContent - Additional content view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderAdditionalContent = (additionalContent: IVideoPlayerAdditionalContentViewProps) => {\r\n if (additionalContent.additionalContentItems) {\r\n return (\r\n \r\n <>\r\n {additionalContent.additionalContentItems.heading}\r\n \r\n {additionalContent.additionalContentItems.text}\r\n \r\n {additionalContent.additionalContentItems.links}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst VideoPlayerView: React.FC = props => {\r\n return (\r\n
\r\n {props.player}\r\n \r\n {props.title}\r\n {props.text}\r\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\r\n \r\n {props.links}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default VideoPlayerView;\r\n","// @ts-nockeck\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\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst RatingsHistogramView: React.FC = props => {\r\n const { heading, histogramItems, histogramProps, moduleProps } = props;\r\n return (\r\n \r\n {heading}\r\n \r\n {histogramItems.map(item => {\r\n return histogramItem(item);\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst histogramItem = (props: IHistogramItemViewProps) => {\r\n return (\r\n \r\n {props.starLabel}\r\n {props.bar}\r\n {props.percentage}\r\n \r\n );\r\n};\r\n\r\nexport default RatingsHistogramView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport * as React from 'react';\nimport { isEditorialMode } from '@msdyn365-commerce/core-internal';\nimport { IDefaultPageProps } from './default-page.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent}\n */\nclass DefaultPageContainer extends React.PureComponent> {\n constructor(props: IDefaultPageProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, id, typeName } = this.props;\n\n let skipToMainText = this.props.config && this.props.config.skipToMainText;\n telemetry.log(LogLevel.Debug, \"DefaultPageContainer rendering for '{id}/{typeName}'\", { values: [id, typeName] });\n\n if (!skipToMainText) {\n skipToMainText =\n this.props.context.app && this.props.context.app.platform ? this.props.context.app.platform.skipToMainText : '';\n }\n\n const tabIndexSkipToMain = isEditorialMode(this.props.context.actionContext.requestContext) ? -1 : 0;\n\n return (\n \n \n {skipToMainText}\n \n
\n {slots &&\n slots.header &&\n slots.header.map((children: React.ReactNode) => {\n return children;\n })}\n
\n {slots && slots.subheader && (\n
\n {slots.subheader.map((children: React.ReactNode) => {\n return children;\n })}\n
\n )}\n
\n {slots &&\n slots.primary &&\n slots.primary.map((children: React.ReactNode) => {\n return children;\n })}\n
\n {slots && slots.subfooter && (\n
\n {slots.subfooter.map((children: React.ReactNode) => {\n return children;\n })}\n
\n )}\n
\n {slots &&\n slots.footer &&\n slots.footer.map((children: React.ReactNode) => {\n return children;\n })}\n
\n
\n );\n }\n}\n\nexport default DefaultPageContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport {\n INotificationComponentsList,\n INotificationComponentsListState,\n INotificationComponentType,\n NotificationComponentsListsManager,\n NotificationEvents,\n NotificationFeedType\n} from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { INotificationsListProps } from './notifications-list.props.autogenerated';\n\n/**\n * View for the notifications list which specifies the container and notifications items.\n */\nexport interface INotificationsListViewProps extends INotificationsListProps<{}> {\n container: IModuleProps;\n notificationsList: React.ReactNode;\n}\n\n/**\n * Configuration to make the list stickable to the page without overlapping any content on top.\n */\nexport interface INotificationComponentStickyConfiguration {\n /**\n * Minimum offset for top (default for the page).\n */\n minTopOffset: number;\n\n /**\n * Maximum offset for top (to limit the top offset while scrolling).\n */\n maxTopOffset: number;\n}\n\n/**\n * Stickable notification list state which defines the top position of the list at the moment.\n */\nexport interface IStickableNotificationComponentsListState extends INotificationComponentsListState {\n /**\n * The top position of the list on the page.\n */\n top?: number;\n}\n\n/**\n * A notification list which is operated by notification manager.\n * It is responsible for rendering the received notifications.\n */\nexport class NotificationComponentsList extends React.Component, IStickableNotificationComponentsListState>\n implements INotificationComponentsList {\n /**\n * The class name to use.\n */\n private static readonly _className: string = 'msc-notifications-list';\n\n /**\n * The feed which the list is responsible for displaying.\n */\n public readonly feed: NotificationFeedType;\n\n /**\n * Configuration which specifies if and how the list should be stickable.\n * If undefined, the configuration will not be used at all. And list will not be stickable.\n */\n private readonly _stickyConfiguration?: INotificationComponentStickyConfiguration;\n\n /**\n * The list of notification which should be shown in the list at the moment.\n * @remarks Should be used to retrieve the latest list of notifications\n * as the list from the state is updated only after rendering.\n */\n private _notificationsComponentList: INotificationComponentType[];\n\n /**\n * Unique identifier of the list.\n * Uses format 'NotificationComponentsList-GUID';.\n */\n private _instanceId?: string;\n\n /**\n * Initializes instance with the given props.\n * @param props - The configuration of the list.\n */\n public constructor(props: INotificationsListProps<{}>) {\n super(props);\n\n this.feed = props.config.feed;\n\n if (\n !ObjectExtensions.isNullOrUndefined(props.config.minTopOffset) &&\n !ObjectExtensions.isNullOrUndefined(props.config.maxTopOffset)\n ) {\n this._stickyConfiguration = {\n minTopOffset: props.config.minTopOffset,\n maxTopOffset: props.config.maxTopOffset\n };\n }\n\n this._notificationsComponentList = [];\n\n this.state = {\n notificationsComponentList: []\n };\n\n this._handleTopUpdate = this._handleTopUpdate.bind(this);\n this._getCurrentTopPosition = this._getCurrentTopPosition.bind(this);\n }\n\n /**\n * Specifies if the component should be re-rendered.\n * @param nextProps - The next configuration the component is receiving.\n * @param nextState - The next state the component is receiving.\n * @returns True if component should be re-rendered, false if component should not be changed.\n */\n public shouldComponentUpdate(\n nextProps: Readonly>,\n nextState: Readonly\n ): boolean {\n const isPropsDifferent =\n this.feed !== nextProps.config.feed ||\n this.props.config.maxNotificationsCount !== nextProps.config.maxNotificationsCount ||\n this.props.config.maxTopOffset !== nextProps.config.maxTopOffset ||\n this.props.config.minTopOffset !== nextProps.config.minTopOffset ||\n this.props.config.className !== nextProps.config.className ||\n this.props.id !== nextProps.id;\n const isStateDifferent =\n this.state.top !== nextState.top ||\n this.state.notificationsComponentList.length !== nextState.notificationsComponentList.length ||\n this.state.notificationsComponentList.every(value =>\n nextState.notificationsComponentList.find(otherValue => otherValue.props.notification.id === value.props.notification.id)\n );\n return isPropsDifferent || isStateDifferent;\n }\n\n /**\n * Adds the current instance to the global list of instances so that it becomes available for the notification manager.\n * In case the list is specified to be stickable, also subscribes to the scroll event to update the offsets.\n */\n public componentDidMount(): void {\n NotificationComponentsListsManager.subscribe(this);\n\n this._instanceId = `NotificationComponentsList-${Random.Guid.generateGuid()}`;\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.addEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Remove the instance from the global list of instances so that it becomes unavailable for the notification manager.\n * Unsubscribes itself from the notification events and scroll event.\n */\n public componentWillUnmount(): void {\n NotificationComponentsListsManager.unsubscribe(this);\n\n this._notificationsComponentList.forEach(component =>\n component.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.unsubscribe(this._instanceId!)\n );\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.removeEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Adds a new notification to the list.\n * @param {INotificationComponentType} notificationComponent Data required to render the notification. @see INotificationComponentType.\n */\n public addNotificationComponent(notificationComponent: INotificationComponentType): void {\n if (this._instanceId === undefined) {\n return;\n }\n\n if (\n !ObjectExtensions.isNullOrUndefined(this.props.config.maxNotificationsCount) &&\n this._notificationsComponentList.length >= this.props.config.maxNotificationsCount\n ) {\n throw new Error('Notifications limit reached, cannot show more notifications.');\n }\n\n // Subscribe to the remove event to filter the removed notifications out from the list.\n notificationComponent.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.subscribe({\n instanceId: this._instanceId,\n handler: () => {\n notificationComponent.props.notification.events\n .getValue(NotificationEvents.RemovedFromList)\n ?.unsubscribe(this._instanceId!);\n const newList = this._notificationsComponentList.filter(component => component !== notificationComponent);\n this._notificationsComponentList = newList;\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n }\n });\n\n // Prepend the notification as newest should come to the top.\n this._notificationsComponentList.unshift(notificationComponent);\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n this._handleTopUpdate();\n }\n\n public render(): React.ReactNode {\n const className = classnames(\n NotificationComponentsList._className,\n `${NotificationComponentsList._className}__${this.feed}`,\n this.props.config.className\n );\n\n const viewProps: INotificationsListViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className,\n id: this._instanceId,\n style: { top: this.state.top }\n },\n notificationsList: this._renderNotificationsList()\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Renders the list of notifications.\n * @returns React node with a list of notifications.\n */\n private _renderNotificationsList(): React.ReactNode {\n const hasNotifications = ArrayExtensions.hasElements(this.state.notificationsComponentList);\n const containerClassName = classnames(\n `${NotificationComponentsList._className}__scrollable`,\n hasNotifications\n ? `${NotificationComponentsList._className}__has-notifications`\n : `${NotificationComponentsList._className}__empty`\n );\n\n return (\n
\n {this.state.notificationsComponentList.map(component => {\n const ComponentClass = component.componentClass;\n return ;\n })}\n
\n );\n }\n\n /**\n * Retrieves current top offset position by looking at scroll position and rounding it to the stickable limits.\n */\n private _getCurrentTopPosition(): number | undefined {\n const configuration = this._stickyConfiguration;\n\n if (configuration === undefined) {\n return undefined;\n }\n\n let pageYOffset = 0;\n if (MsDyn365.isBrowser) {\n pageYOffset = window.pageYOffset;\n }\n\n return Math.max(Math.min(configuration.maxTopOffset, configuration.maxTopOffset - pageYOffset), configuration.minTopOffset);\n }\n\n /**\n * Updates the top offset on scroll event to make the list stickable.\n */\n private _handleTopUpdate(): void {\n const newTop = this._getCurrentTopPosition();\n this.setState({ top: newTop });\n }\n}\n\nexport default NotificationComponentsList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { INotificationsListViewProps } from './notifications-list';\n\nexport const NotificationsListView: React.FC = props => {\n return {props.notificationsList};\n};\n\nexport default NotificationsListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown =\n activeContentIDResult &&\n activeContentIDResult.tabId === this.props.tabId &&\n activeContentIDResult.activeContentIndex !== undefined\n ? activeContentIDResult.activeContentIndex === index\n : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderTabHeader(): React.ReactNode {\n return <>{this.props.config.tabItemTitle};\n }\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\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 { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots &&\n tabSlots.tabItemContent &&\n tabSlots.tabItemContent.length &&\n _renderTabItemContent(tabSlots.tabItemContent)}\n \n \n );\n case TabItemType.TabHeader:\n return {tabHeader};\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (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 TabItemView;\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 { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps, nextState: ITabViewStates): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n if (!this.props.context.request.params.isEditor) {\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex =\n data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected =\n activeContentIndex !== undefined && dataActionTabId === this.props.id\n ? activeContentIndex === index\n : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabHeader,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n if (e.keyCode === 39) {\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabContent,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\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 { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n {heading}\n {tabHeaders}\n {tabContents}\n \n );\n};\n\nexport default tabView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList 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 private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\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 propsCarousel: 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\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n"],"names":["_ref","paymentTabs","paymentTabContent","paymentMethod","processingModal","React","className","id","CittaOrderreference","constructor","props","super","moduleClassName","orderrefnoValue","formInputValues","_handleChange","name","e","this","setState","orderreferenceSubmited","value","target","orderreference","eAError","reqError","eAValError","pPCError","console","log","updateTextAttribute","attribute","TextValue","TextValueTranslations","createTextAttribute","Name","_addCartExtension","cart","key","ExtensionProperties","property","find","extension","Key","Value","StringValue","push","_OrderRefNoRef","_handlesubmit","bind","state","rCCError","responseReceived","responseError","reCaptchaChecked","responseSuccess","submitted","userorderreferenceno","current","async","_this$cart","cartState","getCartState","context","actionContext","checkoutState","getCheckoutState","length","_this$cart2","_property$Value","render","viewProps","_objectSpread","orderreferenceWrapper","moduleProps","classnames","orderreferenceResponse","_getSubscribeResponse","orderreferenceForm","_renderForm","orderreferenceno","_renderorderreferenceno","renderView","style","display","_renderSubscribeThanks","FormWrapper","FormContainer","orderreferenceInput","_renderorderreferenceInput","submitButtton","_renderSubscribeButton","submitThanks","editButton","_renderEditButton","Button","title","color","onClick","_handleEdit","eA","_SaveExtenstionproperty","orderrefno","_this$cart3","_saveCartExtensions","ref","type","onChange","required","responseMessage","orderReferenceString","telemetry","error","Error","cartExtensionProperties","_this$checkoutState$c","cartAttributes","checkoutCart","AttributeValues","updateCart","orderReferenceAttributeName","orderReferenceAttribute","x","updateAttributeValues","newAttributeValues","updateAsync","callerContext","Id","then","newCart","update","GetCheckoutCartInput","request","apiSettings","catch","__decorate","computed","ICittaOrderreferenceView","orderForm","Node","Object","assign","Module","getAdditionalContentItems","item","_item$links","headingNode","heading","renderHeading","additionalContentHeading","requestContext","Msdyn365","text","tag","editProps","onEdit","event","handleAdditionalTextChange","paragraphNode","subtext","renderParagraph","additionalContentParagraphText","handleAdditionalParagraphChange","linksNode","links","map","ctaLink","index","renderLinks","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","videoPlayerAdditionalContent","additionalContent","additionalContentNode","additionalContentItems","VideoPlayer","handleTextChange","config","handleParagraphChange","paragraph","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","_video$thumbnail","video","videolink","_links","binaryReferences","clientHref","thumbnail","src","player","width","controls","poster","_getVideoDetailsHeading","_getVideoDetailsParagraph","_getVideoDetailsLinks","detailsContainer","detailsContainerCTA","handleText","handleParagraph","handleAdditionalText","handleAdditionalParagraph","handleLink","handleLinkTextChange","handleAdditionalLink","Number","_this$props$config$ad","payLoad","getPayloadObject","linkData","contentAction","etext","attributes","getTelemetryAttributes","linkId","additionalProperties","MsDyn365","_heading$tag","renderModuleAttributes","detailsContainerCta","histogramItem","buttonProps","starLabel","bar","percentage","histogramItems","histogramProps","DefaultPageContainer","slots","typeName","skipToMainText","LogLevel","Debug","values","app","platform","tabIndexSkipToMain","isEditorialMode","href","tabIndex","header","children","subheader","primary","subfooter","footer","NotificationComponentsList","feed","ObjectExtensions","isNullOrUndefined","minTopOffset","maxTopOffset","_stickyConfiguration","_notificationsComponentList","notificationsComponentList","_handleTopUpdate","_getCurrentTopPosition","shouldComponentUpdate","nextProps","nextState","isPropsDifferent","maxNotificationsCount","isStateDifferent","top","every","otherValue","notification","componentDidMount","NotificationComponentsListsManager","subscribe","_instanceId","Random","Guid","generateGuid","isBrowser","undefined","window","addEventListener","componentWillUnmount","unsubscribe","forEach","component","_component$props$noti","events","getValue","NotificationEvents","RemovedFromList","removeEventListener","addNotificationComponent","notificationComponent","_notificationComponen","instanceId","handler","_notificationComponen2","newList","filter","unshift","_className","container","notificationsList","_renderNotificationsList","hasNotifications","ArrayExtensions","hasElements","containerClassName","maxHeight","ComponentClass","componentClass","configuration","pageYOffset","Math","max","min","newTop","NotificationsListView","TabItemType","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","data","isSelected","itemIndex","contentID","getContentID","tabId","activeContentIDResult","activeTabState","result","shown","activeContentIndex","TabContentContainer","TabHeaderContainer","TabItemContent","tabHeader","tabSlots","tabItemTitle","observer","_renderTabItemContent","items","tabItemType","TabContent","tabItemContent","TabHeader","Tab","tabIndexQuery","handleHeadingChange","_refHandler","activeLink","_onClick","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","history","pushState","path","_onKeyDown","keyCode","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","query","activeTab","queryTabIndex","indexOf","arr","split","parseInt","_getTabHeader","_getTabContent","headingComponent","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","componentDidUpdate","params","isEditor","dataActionTabId","focus","selected","onKeyDown","paramName","paramValue","url","URL","location","requestUrl","URLSearchParams","search","set","decodeURIComponent","toString","TileList","_telemetryContent","static","StringExtensions","isNullOrWhitespace","Heading","headingTag","_this$props$config$cl","resources","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","content","tileListView","tileItem","keyIndex"],"sourceRoot":""}