{"version":3,"file":"static/js/2.81ae2d707cbb1f74c072.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty/account-loyalty.tsx?3672","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty/account-loyalty.view.tsx?4d8b","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty/components/account-loyalty-small-components.tsx?c12b","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-button.tsx?8d59","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-description.tsx?54a5","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-error.tsx?a75a","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-input.tsx?d840","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-label.tsx?4560","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-link.tsx?2078","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-loading-icon.tsx?1d7f","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-loading-message.tsx?84ee","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-text.tsx?76b9","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/sign-in.tsx?259c","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/sign-in.view.tsx?2b3e"],"sourcesContent":["/*!\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 { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BCustomer = customerResult ? customerResult.IsB2b : false;\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BCustomer) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BCustomer))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\n ): 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 if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\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 { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\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 { LoyaltyCard, LoyaltyRewardPoint, LoyaltyRewardPointActivity } from '@msdyn365-commerce/retail-proxy';\nimport {\n getLoyaltyRewardPointActivityTimelineAsync,\n getLoyaltyRewardPointsExpiringSoonAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyData } from './account-loyalty.data';\nimport { IAccountLoyaltyProps } from './account-loyalty.props.autogenerated';\nimport { AccountLoyaltyLabel, AccountLoyaltyModalLabel } from './components';\n\nexport interface IAccountLoyaltyViewProps extends IAccountLoyaltyProps<{}> {\n AccountLoyalty: IModuleProps;\n className: string;\n totalPoints: number;\n heading?: React.ReactNode;\n Info: INodeProps;\n infoLabel: React.ReactNode;\n cardNumber: React.ReactNode;\n joinDate: React.ReactNode;\n Points: INodeProps;\n pointsLabel: React.ReactNode;\n points: React.ReactNode;\n Breakdown: INodeProps;\n RewardPoints: INodeProps;\n PointsBreakdown: INodeProps;\n rewardPoints?: IAccountLoyaltyRewardPointProps[];\n Button: INodeProps;\n homeButton: React.ReactNode;\n pointsModal: IAccountLoyaltyModalProps;\n}\n\nexport interface IAccountLoyaltyState {\n isModalOpen: boolean;\n currentModalData?: LoyaltyRewardPoint;\n isModalExpiring: boolean;\n modalID: string;\n currentFocus?: React.RefObject;\n pointsActivity: LoyaltyRewardPointActivity[] | undefined;\n}\n\nexport interface IAccountLoyaltyRewardPointProps {\n label: React.ReactNode;\n availableModalLabel: React.ReactNode;\n availableModalTrigger: React.ReactNode;\n expiringModalLabel: React.ReactNode;\n expiringModalTrigger: React.ReactNode;\n}\n\nexport type horizontalModalPosition = 'left' | 'center' | 'right';\nexport type verticalModalPosition = 'top' | 'center' | 'bottom';\n\nexport interface IAccountLoyaltyModalProps {\n isOpen: boolean;\n horizontalPosition?: horizontalModalPosition;\n verticalPosition?: verticalModalPosition;\n modalClassName?: string;\n modalHeaderClassName?: string;\n modalHeader?: string;\n modalBodyClassName?: string;\n ModalBodyTop: INodeProps;\n pointsDescription?: React.ReactNode;\n totalPoints?: React.ReactNode;\n ModalBodyHeaders: INodeProps;\n date?: React.ReactNode;\n balanceLabel?: React.ReactNode;\n rewardPointsActivity?: IAccountLoyaltyActivityProps[];\n returnFocusRef?: React.RefObject;\n onClose(): void;\n onOpened?(): void;\n}\n\nexport interface IAccountLoyaltyActivityProps {\n Activity: INodeProps;\n activityType: React.ReactNode;\n activityDate: React.ReactNode;\n activityPoints: React.ReactNode;\n}\n\nexport interface IProps extends IAccountLoyaltyProps {}\n\n/**\n *\n * AccountLoyalty component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountLoyalty extends React.PureComponent {\n private readonly _buttonAvailableRef: React.RefObject;\n\n private readonly _buttonExpireRef: React.RefObject;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly decimalPrecision = 2;\n\n constructor(props: IAccountLoyaltyProps) {\n super(props);\n this._buttonAvailableRef = React.createRef();\n this._buttonExpireRef = React.createRef();\n this.state = {\n isModalOpen: false,\n currentModalData: undefined,\n isModalExpiring: false,\n modalID: '',\n pointsActivity: undefined\n };\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, TelemetryConstant.BackToShopping);\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n const { loyaltyCard } = this.props.data;\n const { loyaltyCardLabel, totalAvailablePointsLabel, backToShoppingText } = this.props.resources;\n const { actionContext } = this.props.context;\n const { isModalOpen } = this.state;\n const backToShopAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n if (!loyaltyCard || !loyaltyCard.result || !loyaltyCard.result.CardNumber) {\n this.props.context.telemetry.error('Loyalty card content is empty, module wont render');\n return null;\n }\n\n const loyaltyCardData = loyaltyCard.result;\n const rewardPoints = loyaltyCard && loyaltyCardData.RewardPoints;\n const homeLink = Msdyn365.getUrlSync('home', actionContext) ?? '';\n\n const viewProps = {\n ...this.props,\n AccountLoyalty: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty', className),\n modalTransition: {\n /**\n * On Entered in Modal function.\n * @param node - The current node element.\n * @param isAppearing - The Boolean value.\n */\n onEntered: (node: HTMLElement, isAppearing: boolean) => {\n const childNode = node.firstChild as HTMLElement;\n if (isAppearing) {\n childNode.focus();\n }\n }\n }\n },\n totalPoints: rewardPoints && this._getTotalPoints(),\n className: classnames('msc-account-loyalty', className),\n rewardPoints:\n loyaltyCardData.RewardPoints && loyaltyCardData.RewardPoints.length > 0 && this._renderRewardPoints(loyaltyCardData),\n pointsModal: (isModalOpen && this._renderModal()) || {\n isOpen: false,\n returnFocusRef: this.state.currentFocus,\n onOpened: this._onOpenModal\n },\n Info: { className: 'ms-account-loyalty__info' },\n Points: { className: 'ms-account-loyalty__points' },\n Breakdown: { className: 'ms-account-loyalty__breakdown' },\n RewardPoints: { className: 'ms-account-loyalty__reward-points' },\n PointsBreakdown: { className: 'ms-account-loyalty__point-breakdown' },\n Button: { className: 'ms-account-loyalty__link' },\n heading: heading && (\n \n ),\n\n // Account info\n infoLabel: ,\n cardNumber: ,\n joinDate: (\n \n ),\n\n // Points\n pointsLabel: ,\n points: rewardPoints && (\n \n ),\n\n homeButton: rewardPoints && (\n \n {backToShoppingText}\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _formatJoinDate(date: Date): string {\n return format(\n this.props.resources.joinDateFormatted,\n new Intl.DateTimeFormat(this.props.context.actionContext.requestContext.locale, {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n }).format(new Date(date))\n );\n }\n\n private _renderRewardPoints(loyaltyCard: LoyaltyCard): IAccountLoyaltyRewardPointProps[] {\n return loyaltyCard.RewardPoints!.map((loyaltyPoints, index) => {\n const availableId = (loyaltyPoints.RewardPointId && `${loyaltyPoints.RewardPointId}-available-${index}`) || 'available-points';\n const expiringId = (loyaltyPoints.RewardPointId && `${loyaltyPoints.RewardPointId}-expiring-${index}`) || 'expiring-points';\n const {\n availablePointsLabel,\n availablePointsAriaLabel,\n expiringPointsFormatLabel,\n expiringPointsFormatAriaLabel\n } = this.props.resources;\n this.payLoad.contentAction.etext = TelemetryConstant.AvailablePoints;\n const availablePointsAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.ExpiringPoints;\n const expiringPointsAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n const expireDaysDefaultValue = 30;\n\n return {\n label: ,\n availableModalLabel: loyaltyPoints.ActivePoints !== undefined && (\n \n ),\n availableModalTrigger: loyaltyPoints.ActivePoints !== undefined && (\n \n {loyaltyPoints.ActivePoints.toFixed(this.decimalPrecision)}\n \n ),\n expiringModalLabel: loyaltyPoints.PointsExpiringSoon !== undefined && (\n \n ),\n expiringModalTrigger: loyaltyPoints.PointsExpiringSoon !== undefined && (\n \n {loyaltyPoints.PointsExpiringSoon.toFixed(this.decimalPrecision)}\n \n )\n };\n });\n }\n\n private _renderModal(): IAccountLoyaltyModalProps | null {\n const { totalAvailablePointsLabel, loyaltyActivityDateLabel, loyaltyActivityBalanceLabel } = this.props.resources;\n const { isModalOpen, currentModalData } = this.state;\n\n if (!isModalOpen || !currentModalData) {\n // Return empty modal\n this.props.context.telemetry.error('Account loyalty modal content is empty, module wont render');\n return null;\n }\n\n return {\n isOpen: isModalOpen,\n returnFocusRef: this.state.currentFocus,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n modalClassName: 'ms-account-loyalty__points-modal',\n modalHeaderClassName: 'ms-account-loyalty__points-modal-header',\n modalHeader: currentModalData.Description ?? '',\n modalBodyClassName: 'ms-account-loyalty__points-modal-body',\n ModalBodyTop: { className: 'ms-account-loyalty__points-modal-body-top' },\n ModalBodyHeaders: { className: 'ms-account-loyalty__points-modal-body-header' },\n rewardPointsActivity: this._renderPointsActivity(),\n pointsDescription: ,\n totalPoints: ,\n date: ,\n balanceLabel: ,\n onClose: this._closeModal,\n onOpened: this._onOpenModal\n };\n }\n\n private _getTotalPoints(): number {\n const rewardPoints = this.props.data.loyaltyCard.result && this.props.data.loyaltyCard.result.RewardPoints;\n\n let total = 0;\n rewardPoints &&\n rewardPoints.forEach(loyaltyPoints => {\n total += loyaltyPoints.ActivePoints ?? 0;\n });\n\n return total;\n }\n\n private _getPoints(): string {\n const { currentModalData, isModalExpiring } = this.state;\n const rewardPoints: number = (isModalExpiring ? currentModalData!.PointsExpiringSoon : currentModalData!.ActivePoints) ?? 0;\n\n return `${rewardPoints.toFixed(this.decimalPrecision)}`;\n }\n\n private _renderPointsActivity(): IAccountLoyaltyActivityProps[] | undefined {\n const { pointsActivity } = this.state;\n\n if (!pointsActivity) {\n this.props.context.telemetry.error('Points activity content is empty, module wont render');\n return undefined;\n }\n\n return pointsActivity.map(activity => {\n return {\n Activity: { className: 'ms-account-loyalty__points-modal-activity' },\n activityType: (\n \n ),\n activityDate: (\n \n ),\n activityPoints: (\n \n )\n };\n });\n }\n\n private _parseDate(date: Date | string): Date {\n /* Dates for loyalty are coming as formatted strings yyyy-mm-ddT:00:00.000z\n Javascript was interpreting this as an iso format, thus causing the wrong date to be rendered */\n if (typeof date === 'string') {\n let dateString = date.toString();\n dateString = dateString.replace(/-/g, '/');\n dateString = dateString.substring(0, 10);\n return new Date(dateString);\n }\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n }\n\n private _getTimelineType(pointActivity: LoyaltyRewardPointActivity): string {\n if (pointActivity.LoyaltyRewardPointTimelineEntryType) {\n return pointActivity.LoyaltyRewardPointTimelineEntryType;\n }\n\n const { earnedPointsLabel, redeemedPointsLabel, adjustedPointsLabel, refundedPointsLabel } = this.props.resources;\n switch (pointActivity.ExtensibleLoyaltyRewardPointActivityEntryTypeValue) {\n case 1:\n return earnedPointsLabel;\n case 2:\n return refundedPointsLabel;\n case 3:\n return redeemedPointsLabel;\n case 5:\n return adjustedPointsLabel;\n default:\n return '';\n }\n }\n\n private readonly _populateModalData = (\n focusRef: React.RefObject,\n loyaltyCard: LoyaltyCard,\n currentLoyaltyPoints: LoyaltyRewardPoint,\n expiring: boolean\n ) => () => {\n if (!loyaltyCard || !loyaltyCard.CardNumber || !currentLoyaltyPoints.RewardPointId) {\n this.props.context.telemetry.error('Modal data is empty, module wont render');\n return null;\n }\n\n const { actionContext } = this.props.context;\n\n // Open modal\n this.setState({\n isModalOpen: true,\n currentModalData: currentLoyaltyPoints,\n isModalExpiring: expiring,\n modalID: '',\n currentFocus: focusRef\n });\n\n if (expiring) {\n getLoyaltyRewardPointsExpiringSoonAsync(\n { callerContext: actionContext, queryResultSettings: {} },\n loyaltyCard.CardNumber,\n currentLoyaltyPoints.RewardPointId,\n 30\n )\n .then((points: LoyaltyRewardPointActivity[]) => {\n this.setState({ pointsActivity: points });\n })\n .catch((error: Error) => {\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Failed to get reward point activity');\n });\n } else {\n getLoyaltyRewardPointActivityTimelineAsync(\n { callerContext: actionContext, queryResultSettings: {} },\n loyaltyCard.CardNumber,\n currentLoyaltyPoints.RewardPointId\n )\n .then((points: LoyaltyRewardPointActivity[]) => {\n this.setState({ pointsActivity: points });\n })\n .catch((error: Error) => {\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Failed to get reward point activity');\n });\n }\n // eslint-disable-next-line no-useless-return, consistent-return -- Auto-suppressed.\n return;\n };\n\n private readonly _closeModal = () => {\n this.setState({\n isModalOpen: false,\n currentModalData: undefined,\n pointsActivity: undefined\n });\n };\n\n /**\n * On open modal function.\n */\n private readonly _onOpenModal = () => {\n if (this.state.currentFocus?.current) {\n this.state.currentFocus.current.focus();\n }\n };\n}\n\nexport default AccountLoyalty;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Modal, ModalBody, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyViewProps } from './account-loyalty';\n\nconst AccountLoyaltyView: React.FC = props => {\n const {\n AccountLoyalty,\n Info,\n Points,\n Breakdown,\n RewardPoints,\n PointsBreakdown,\n Button,\n heading,\n infoLabel,\n cardNumber,\n joinDate,\n pointsLabel,\n points,\n rewardPoints,\n homeButton,\n pointsModal\n } = props;\n const { ModalBodyTop, ModalBodyHeaders } = pointsModal;\n return (\n \n {heading}\n \n {infoLabel}\n {cardNumber}\n {joinDate}\n \n \n {pointsLabel}\n {points}\n\n \n {rewardPoints &&\n rewardPoints.map((activity, index) => {\n return (\n \n {activity.label}\n \n {activity.availableModalLabel}\n {activity.availableModalTrigger}\n \n\n \n {activity.expiringModalLabel}\n {activity.expiringModalTrigger}\n \n \n );\n })}\n \n \n\n {homeButton}\n\n {(!pointsModal.isOpen && ) || (\n \n \n {pointsModal.modalHeader}\n \n \n \n {pointsModal.pointsDescription}\n {pointsModal.totalPoints}\n \n \n {pointsModal.date}\n {pointsModal.balanceLabel}\n \n {pointsModal.rewardPointsActivity &&\n pointsModal.rewardPointsActivity.map((activity, index) => {\n const { Activity, activityType, activityDate, activityPoints } = activity;\n return (\n \n {activityType}\n {activityDate}\n {activityPoints}\n \n );\n })}\n \n \n )}\n \n );\n};\n\nexport default AccountLoyaltyView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountLoyaltyLabel {\n className?: string;\n text?: string | number;\n}\n\nexport const AccountLoyaltyLabel: React.FC = ({ className, text }) =>

{text}

;\n\nexport interface IAccountLoyaltyModalLabel {\n className?: string;\n text?: string | number;\n labelFor?: string;\n}\n\nexport const AccountLoyaltyModalLabel: React.FC = ({ className, text, labelFor }) => (\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): 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 | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: loyaltyCard.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\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 { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

{props.resources.loyaltyAgreeToTerms}

\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): 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 | null {\n const {\n config: { className, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\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 { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default SignInButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInDescription {\n className: string;\n description: string;\n}\n\nconst SignInDescription: React.FC = ({ className, description }) =>

{description}

;\n\nexport default SignInDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignInErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignInError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default SignInError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n ariaLabel?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface ISignInInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst SignInInput: React.FC = ({ id, type, value, pattern, className, maxLength, ariaLabel, onChange }) => (\n \n);\n\nexport default SignInInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignInLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignInLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInLink {\n id?: string;\n className: string;\n href: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n}\n\nconst SignInLink: React.FC = ({ id, className, href, telemetryContent, ariaLabel, text }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignInLink;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInLoadingIcon {\n className: string;\n}\n\nconst SignInLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default SignInLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignInLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default SignInLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInText {\n className: string;\n text: string;\n}\n\nconst SignInText: React.FC = ({ className, text }) => {text};\n\nexport default SignInText;\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 { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport SignInButtonComponent from './components/sign-in-button';\nimport SignInDescriptionComponent from './components/sign-in-description';\nimport SignInErrorComponent from './components/sign-in-error';\nimport SignInInputComponent from './components/sign-in-input';\nimport SignInLabelComponent from './components/sign-in-label';\nimport SignInLinkComponent from './components/sign-in-link';\nimport SignInLoadingIconComponent from './components/sign-in-loading-icon';\nimport SignInLoadingMessageComponent from './components/sign-in-loading-message';\nimport SignInTextComponent from './components/sign-in-text';\nimport { ISignInConfig, ISignInProps, ISignInResources } from './sign-in.props.autogenerated';\n\nexport interface ISignInViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignInItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignInSocialItem {\n key: string;\n button: INodeProps;\n image: React.ReactNode;\n text: React.ReactNode;\n}\n\nexport interface ISignInB2BItem {\n key: string;\n button: INodeProps;\n text: React.ReactNode;\n}\n\nexport interface ISignInSocialAccount {\n socialAccounts: INodeProps;\n items: ISignInSocialItem[];\n}\n\nexport interface ISignInB2BAccount {\n socialAccounts: INodeProps;\n items: ISignInB2BItem[];\n}\nexport interface ISignInLocalAccount {\n localAccount: INodeProps;\n items: ISignInItem[];\n forgetPassword: React.ReactNode;\n disclaimer: React.ReactNode;\n error: React.ReactNode;\n signInButton: React.ReactNode;\n}\n\nexport interface ISignInLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignInViewProps {\n className: string;\n viewState: ISignInViewState;\n signIn: IModuleProps;\n loading: ISignInLoading;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n signInSection: INodeProps;\n signInSectionHeading: React.ReactNode;\n signInLocalAccount: ISignInLocalAccount;\n signInSocialAccount: ISignInSocialAccount;\n signInB2BAccount: ISignInB2BAccount;\n signUpSection: INodeProps;\n signUpSectionHeading: React.ReactNode;\n signUpDescription: React.ReactNode;\n signUpLink: React.ReactNode;\n}\n\n/**\n * SignIn component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass SignIn extends React.Component> {\n private readonly moduleClassName: string = 'ms-sign-in';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private emailId: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: ISignInProps) {\n super(props);\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.emailId = 'logonIdentifier';\n }\n\n public componentDidMount(): void {\n this._prePopulateData();\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: ISignInProps, nextState: ISignInViewState): 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 config: ISignInConfig = this.props.config || {};\n const resources: ISignInResources = this.props.resources || {};\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n signIn: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n signInSection: {\n className: `${this.moduleClassName}__sign-in-section`\n },\n signInSectionHeading: (\n \n ),\n signInLocalAccount: {\n localAccount: {\n className: `${this.moduleClassName}__account-items localAccount`\n },\n items: [\n this._renderInput(\n this.emailId,\n 'email',\n resources.emailAddressLabelText,\n resources.emailAddressAriaLabel,\n this.emailRegex\n ),\n this._renderInput('password', 'password', resources.passwordLabelText)\n ],\n forgetPassword: (\n \n ),\n disclaimer: config.signInDisclaimer && (\n \n ),\n error: ,\n signInButton: (\n \n )\n },\n signInSocialAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__social-accounts`\n },\n items: [\n this._renderSocialAccount(\n 'FacebookExchange',\n resources.facebookButtonText,\n resources.facebookButtonAriaLabel,\n config.facebookIcon\n ),\n this._renderSocialAccount(\n 'MicrosoftAccountExchange',\n resources.microsoftButtonText,\n resources.microsoftButtonAriaLabel,\n config.microsoftIcon\n )\n ]\n },\n signInB2BAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__b2b-social-accounts`\n },\n items: [\n this._renderB2BSocialAccount(\n 'StoreManagerB2BSignin',\n resources.b2bButtonText,\n resources.b2bButtonAriaLabel,\n config.displayB2bAccountManagerSignin\n )\n ]\n },\n signUpSection: {\n className: `${this.moduleClassName}__sign-up-section`\n },\n signUpSectionHeading: (\n \n ),\n signUpDescription: (\n \n ),\n signUpLink: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.signInDisclaimer = event.target.value);\n\n public handleSignInHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signInHeading.text = event.target.value);\n\n public handleSignUpHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signUpHeading.text = event.target.value);\n\n private readonly _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['CONTENT'] && window['CONTENT']['email_pattern']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n this.emailRegex = window['CONTENT']['email_pattern'];\n }\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // @ts-expect-error\n this.emailId = (window.SA_FIELDS.AttributeFields || [])[0].ID || this.emailId;\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const resources: ISignInResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const errorMessages = {\n requiredField_email: resources.requriedEmailError,\n requiredField_password: resources.requriedPasswordError,\n invalid_email: resources.invalidEmailError,\n invalid_password: resources.invalidPasswordError,\n unknown_error: resources.unknownError\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], errorMessages);\n }\n };\n\n private _renderInput(id: string, type: string, labelText: string, ariaLabel?: string, pattern?: string): ISignInItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n error: (\n \n ),\n input: (\n \n )\n };\n }\n\n private _renderSocialAccount(id: string, text: string, ariaLabel: string, iconImage?: Msdyn365.IImageData): ISignInSocialItem {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n image: this._createImageMarkup(iconImage),\n text: \n };\n }\n\n private _renderB2BSocialAccount(\n id: string,\n text: string,\n ariaLabel: string,\n _displayB2bAccountManagerSignin: boolean | undefined\n ): ISignInB2BItem | null {\n if (_displayB2bAccountManagerSignin) {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n text: \n };\n }\n return null;\n }\n\n private _createImageMarkup(iconImage?: Msdyn365.IImageData): React.ReactNode | null {\n if (iconImage) {\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings || {},\n imageSettings: iconImage && iconImage.imageSettings\n };\n const pictureClassName = `${this.moduleClassName}__social-account-picture`;\n return (\n
\n \n
\n );\n }\n return null;\n }\n}\n\nexport default SignIn;\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 {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps\n} from './sign-in';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst SignInView: React.FC = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription,\n signUpLink\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n {B2BAccount(signInB2BAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpLink}\n \n \n \n );\n};\n\nexport default SignInView;\n"],"names":["AccountCustomerBalanceTile","React","constructor","props","super","this","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","state","_initState","reaction","hasError","error","setState","content","ErrorComponent","value","resources","apiGenericErrorMessage","get","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BCustomer","IsB2b","enableCustomerAccountPayment","shouldComponentUpdate","nextProps","nextState","data","render","isCustomerAccountPaymentEnabled","className","heading","links","config","viewProps","moduleProps","classnames","Heading","headingTag","tag","text","isDetailsLinkDisplayed","LinksComponent","onTextChange","index","event","requestContext","renderView","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","__decorate","computed","Module","_mapEditableLinks","linkdata","length","editableLinks","payLoad","getPayloadObject","forEach","link","contentAction","etext","linkText","attributes","getTelemetryAttributes","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","push","Msdyn365","editProps","AccountLoyalty","decimalPrecision","handleHeadingChange","target","_populateModalData","focusRef","loyaltyCard","currentLoyaltyPoints","expiring","CardNumber","RewardPointId","actionContext","isModalOpen","currentModalData","isModalExpiring","modalID","currentFocus","getLoyaltyRewardPointsExpiringSoonAsync","callerContext","queryResultSettings","then","points","pointsActivity","catch","exception","debug","getLoyaltyRewardPointActivityTimelineAsync","message","_closeModal","undefined","_onOpenModal","current","focus","_buttonAvailableRef","_buttonExpireRef","TelemetryConstant","loyaltyCardLabel","totalAvailablePointsLabel","backToShoppingText","backToShopAttributes","result","loyaltyCardData","rewardPoints","RewardPoints","homeLink","modalTransition","onEntered","node","isAppearing","childNode","firstChild","totalPoints","_getTotalPoints","_renderRewardPoints","pointsModal","_renderModal","isOpen","returnFocusRef","onOpened","Info","Points","Breakdown","PointsBreakdown","Button","onEdit","infoLabel","AccountLoyaltyLabel","cardNumber","joinDate","_formatJoinDate","_parseDate","LoyaltyEnrollmentDateLocal","pointsLabel","homeButton","href","title","date","format","joinDateFormatted","Intl","DateTimeFormat","locale","month","day","year","Date","map","loyaltyPoints","availableId","expiringId","availablePointsLabel","availablePointsAriaLabel","expiringPointsFormatLabel","expiringPointsFormatAriaLabel","availablePointsAttributes","expiringPointsAttributes","label","AccountLoyaltyModalLabel","Description","availableModalLabel","ActivePoints","labelFor","availableModalTrigger","color","onClick","innerRef","expiringModalLabel","PointsExpiringSoon","expiringModalTrigger","loyaltyActivityDateLabel","loyaltyActivityBalanceLabel","horizontalPosition","verticalPosition","modalClassName","modalHeaderClassName","modalHeader","modalBodyClassName","ModalBodyTop","ModalBodyHeaders","rewardPointsActivity","_renderPointsActivity","pointsDescription","_getPoints","balanceLabel","onClose","total","activity","Activity","activityType","_getTimelineType","activityDate","cultureFormatter","formatDate","ActivityDate","activityPoints","LoyaltyPoints","dateString","toString","replace","substring","getUTCFullYear","getUTCMonth","getUTCDate","pointActivity","LoyaltyRewardPointTimelineEntryType","earnedPointsLabel","redeemedPointsLabel","adjustedPointsLabel","refundedPointsLabel","ExtensibleLoyaltyRewardPointActivityEntryTypeValue","observer","Node","key","Modal","autoFocus","fade","zIndex","onClosed","toggle","ModalHeader","ModalBody","htmlFor","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","input","IssueLoyaltyInput","apiSettings","issueLoyalty","MsDyn365","window","location","assign","loyaltySignInAttributes","loyaltySignUpAttributes","loyaltyDetailsLinkAttributes","loyaltyTermsLinkAttributes","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","hasLoyaltyAccount","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","loading","status","signInLink","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","disabled","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","LoyaltyTermsModal","loyaltyTermCancelAttributes","loyaltyTermSubmitAttributes","loyaltyTermCheckboxAttributes","modal","onToggle","applicationNode","returnRef","modalFooter","ModalFooter","modalBody","cancelButton","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","type","onChange","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","qsps","split","qsp","splitQsp","hideToggle","slots","serviceTerms","modalToggle","joinLoyaltytermsToggleText","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","fullCard","update","GetLoyaltyCardInput","id","description","errorClassName","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","pattern","forId","SignIn","moduleClassName","handleParagraphChange","signInDisclaimer","handleSignInHeadingChange","signInHeading","handleSignUpHeadingChange","signUpHeading","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","isInitialized","emailRegex","emailId","SA_FIELDS","AttributeFields","ID","errorMessages","requiredField_email","requriedEmailError","requiredField_password","requriedPasswordError","invalid_email","invalidEmailError","invalid_password","invalidPasswordError","unknown_error","unknownError","Object","EmailRegex","componentDidMount","componentDidUpdate","viewState","isShowLoading","signIn","icon","SignInLoadingIconComponent","SignInLoadingMessageComponent","loadingMessage","defaultAADConainer","style","display","aadConainer","signInSection","signInSectionHeading","signInLocalAccount","localAccount","items","_renderInput","emailAddressLabelText","emailAddressAriaLabel","passwordLabelText","forgetPassword","SignInLinkComponent","forgotPasswordButtonAriaLabel","forgotPasswordButtonText","disclaimer","SignInErrorComponent","signInButton","SignInButtonComponent","loginButtonAriaLabel","loginButtonText","signInSocialAccount","socialAccounts","_renderSocialAccount","facebookButtonText","facebookButtonAriaLabel","facebookIcon","microsoftButtonText","microsoftButtonAriaLabel","microsoftIcon","signInB2BAccount","_renderB2BSocialAccount","b2bButtonText","b2bButtonAriaLabel","displayB2bAccountManagerSignin","signUpSection","signUpSectionHeading","signUpDescription","SignInDescriptionComponent","signUpDescriptionText","signUpLink","signUpButtonAriaLabel","signUpButtonText","labelText","wrapper","SignInLabelComponent","SignInInputComponent","iconImage","button","image","_createImageMarkup","SignInTextComponent","_displayB2bAccountManagerSignin","imageProps","gridSettings","imageSettings","pictureClassName","shouldSkipToMainImage","observable","SignInLoading","item","LocalAccount","SocialAccount","B2BAccount"],"sourceRoot":""}