{"version":3,"file":"static/js/10.29ae9ae326fb8d6deb59.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-view-mode-selector.component.tsx?6452","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.tsx?6583","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.view.tsx?7490","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector.tsx?797a","webpack://Msdyn365.Commerce.Online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-product-specification/components/gdn-product-specification-table-stucture.tsx?4a02","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-product-specification/gdn-product-specification.props.autogenerated.ts?a9af","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-product-specification/gdn-product-specification.tsx?d2a0","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-product-specification/gdn-product-specification.view.tsx?2eee","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/checkout-shipping-address.view.tsx?5402","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/invoices-list.view.tsx?38e4","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/media-gallery.view.tsx?87fd","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/order-history.view.tsx?e453","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/checkout-section-container.view.tsx?8c27","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/checkout-shipping-address.view.tsx?885a","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/invoices-list.view.tsx?e526","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/media-gallery.view.tsx?0cc7","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/order-history.view.tsx?d255","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/rng.js?7d39","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/regex.js?255d","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/validate.js?f4cd","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/stringify.js?688d","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/v4.js?0bec","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/proactive-chat-trigger.ts?ab51","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-amount-trigger.ts?b0a3","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-number-of-items-trigger.ts?5c1e","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-specific-product-trigger.ts?5985","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/helpers/consts.ts?4dc3","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/date-range-trigger.ts?d574","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/from-specific-page-trigger.ts?37c0","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/page-visits-trigger.ts?66a6","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/specific-CountryRegion-trigger.ts?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/specific-page-trigger.ts?9295","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/wait-on-time-trigger.ts?63fd","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/index.ts?ef6c","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/helpers/ContextProvider.ts?20ff","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/helpers/StyleComposers.ts?0cc6","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/helpers/CommerceChatStore.ts?9abc","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/components/ChatCore.tsx?1b5f","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/components/Chat.tsx?5004","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector.view.tsx?cb2f","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/components/product-specification-table-stucture.tsx?c1c4"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n Button,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-view-mode-selector';\nconst detailsViewClassName = `${componentClassName}__detailed-view`;\nconst listViewClassName = `${componentClassName}__list-view`;\nconst viewSelectedClassName = `${componentClassName}__selected`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeResources {\n listViewOptionAriaLabel?: string;\n detailedViewOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewModeState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersViewModeState {\n DetailedView,\n ListView\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeProps extends IComponentProps<{}> {\n className?: string;\n resources?: IOrderHistoryWithSearchAndFiltersViewModeResources;\n currentViewModeState: OrderHistoryWithSearchAndFiltersViewModeState;\n telemetryContent?: ITelemetryContent;\n onClick(state: OrderHistoryWithSearchAndFiltersViewModeState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersViewModeProps\n) => {\n const [viewModeState, setViewModeState] = React.useState(props.currentViewModeState);\n\n const onClickHandler = (newViewModeState: OrderHistoryWithSearchAndFiltersViewModeState) => {\n setViewModeState(newViewModeState);\n props.onClick(newViewModeState);\n };\n\n // define telemetry attributes\n const viewModeDetailedViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - Detailed view`)\n );\n const viewModeListViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - List view`)\n );\n\n return (\n
\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.DetailedView)}\n {...viewModeDetailedViewAttributes}\n />\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.ListView)}\n {...viewModeListViewAttributes}\n />\n
\n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n */\nexport const OrderHistoryWithSearchAndFiltersViewModeComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersViewModeProps\n>('OrderHistoryWithSearchAndFiltersViewModeComponent', { component: OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent });\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 { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n isAdditionalMediaDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n isAdditionalMediaDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): 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 let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n <>\n \n \n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n tableRows.push(this._createAdditionalMediaDrawer());\n }\n\n return tableRows;\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n const drawers = content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \n
\n \n
\n );\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\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';\nimport { isOboRequest } from '@msdyn365-commerce/core-internal';\nimport { IMsdyn365PvaChatConnectorData } from './msdyn365-pva-chat-connector.data';\nimport { IMsdyn365PvaChatConnectorConfig, IMsdyn365PvaChatConnectorProps } from './msdyn365-pva-chat-connector.props.autogenerated';\n\nexport interface IPvaChatConnectorViewProps extends IMsdyn365PvaChatConnectorProps {\n config: IMsdyn365PvaChatConnectorConfig;\n}\n\n/**\n * PvaChatConnector component\n * @extends {React.PureComponent>}\n */\nclass PvaChatConnector extends React.PureComponent> {\n // Loads CDN version of Botframework-Webchat library\n public componentDidMount(): void {\n if (isOboRequest(this.props.context.request)) {\n return;\n }\n\n const url = this.props.config.botFrameworkCDNURL || this.props.context.app.config.pvaChatConnectorBotFrameworkCDNURL;\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n script.crossOrigin = 'anonymous';\n document.body.appendChild(script);\n }\n\n public render(): JSX.Element | null {\n if (isOboRequest(this.props.context.request)) {\n return null;\n }\n\n return this.props.renderView(this.props);\n }\n}\n\nexport default PvaChatConnector;\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 { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\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 IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\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\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
    {error}
    ;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\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 { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Product specification table row.\r\n */\r\nexport interface IProductSpecificationTableRow {\r\n productName?: string;\r\n cellData?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * Product specification table row component.\r\n * @param props - For product specification table row.\r\n * @param props.productName - Product name.\r\n * @param props.cellData - Cell data.\r\n * @param props.className - Class name.\r\n * @returns - Returns JSX element.\r\n */\r\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\r\n \r\n \r\n {/* eslint-disable-next-line react/no-danger */}\r\n \r\n \r\n {cellData}\r\n \r\n);\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IGdnProductSpecification contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum displayStyle {\r\n accordion = 'accordion',\r\n table = 'table'\r\n}\r\n\r\nexport interface IGdnProductSpecificationConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n displayStyle?: displayStyle;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface IGdnProductSpecificationResources {\r\n trueValueText: string;\r\n falseValueText: string;\r\n additionalDownloadsText: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IGdnProductSpecificationProps extends Msdyn365.IModule {\r\n resources: IGdnProductSpecificationResources;\r\n config: IGdnProductSpecificationConfig;\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 { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '@msdyn365-commerce-modules/product-specification';\r\nimport { ProductSpecificationTableRow } from './components/gdn-product-specification-table-stucture';\r\nimport { IGdnProductSpecificationData } from './gdn-product-specification.data';\r\nimport { displayStyle, IGdnProductSpecificationProps } from './gdn-product-specification.props.autogenerated';\r\n\r\n/**\r\n * Maintain Drawer State.\r\n */\r\nexport interface IProductSpecificationState {\r\n isDrawerOpen: boolean;\r\n isAdditionalMediaDrawerOpen: boolean;\r\n drawerListId: number | undefined;\r\n}\r\n\r\n/**\r\n * Product specification view props.\r\n */\r\nexport interface IProductSpecificationViewProps extends IGdnProductSpecificationProps<{}> {\r\n ProductSpecification: IModuleProps;\r\n ProductSpecificationTableProps: INodeProps;\r\n ProductSpecificationTableBodyProps: INodeProps;\r\n productSpecificationResult?: (JSX.Element | null)[];\r\n\r\n title?: React.ReactNode;\r\n isAccrodion?: boolean;\r\n handleText?(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\n/**\r\n * Check for display style either accordion or table.\r\n */\r\nexport interface IProductSpecificationExtentedProps extends IGdnProductSpecificationProps {\r\n displayStyle?: displayStyle;\r\n}\r\n\r\n/**\r\n *\r\n * ProductSpecification component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass ProductSpecification extends React.Component {\r\n public constructor(props: IProductSpecificationExtentedProps) {\r\n super(props);\r\n this.state = {\r\n isDrawerOpen: false,\r\n isAdditionalMediaDrawerOpen: false,\r\n drawerListId: undefined\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const { context, data, telemetry } = this.props;\r\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\r\n validateCatalogId(catalogId);\r\n reaction(\r\n () => (data.product.result ? data.product.result.RecordId : null),\r\n () => {\r\n if (context && data.product.result) {\r\n const actionInput = new AttributesForSelectedVariantInput(\r\n data.product.result.RecordId,\r\n\r\n +context.actionContext.requestContext.apiSettings.channelId,\r\n data.product.result,\r\n catalogId\r\n );\r\n\r\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to update attributes for Product');\r\n telemetry.error(error.message);\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n let data: IGdnProductSpecificationData;\r\n try {\r\n data = this.props.data;\r\n } catch (error) {\r\n this.props.telemetry.error(`Something went wrong ------${error}`);\r\n return
    {error}
    ;\r\n }\r\n\r\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\r\n this.props.telemetry.error('Product specification content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const { heading, className } = this.props.config;\r\n const { productSpecificationData } = this.props.data;\r\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\r\n const viewProps = {\r\n ...this.props,\r\n handleText: this.handleHeadingChange,\r\n ProductSpecification: {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-specification', className)\r\n },\r\n ProductSpecificationTableProps: isAccrodion\r\n ? {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-specification__accordion', className)\r\n }\r\n : {\r\n className: classnames('ms-product-specification__table table-striped table-bordered'),\r\n tag: 'table'\r\n },\r\n isAccrodion,\r\n ProductSpecificationTableBodyProps: isAccrodion\r\n ? {}\r\n : {\r\n className: '',\r\n tag: 'tbody'\r\n },\r\n title: heading?.text && (\r\n \r\n ),\r\n productSpecificationResult:\r\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\r\n } as IProductSpecificationViewProps;\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle Heading Text Change.\r\n * @param event - Current event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n private _createTableBody(content: IGdnProductSpecificationData): (JSX.Element | null)[] {\r\n // if there's more than 1 'Description', make the first instance 'Product Name'\r\n const descriptionCount = content.productSpecificationData.result!.filter(product => product.Name === 'Description').length;\r\n let isFirstDescription = true;\r\n\r\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\r\n let productName = product.Name;\r\n if (productName === 'Description' && descriptionCount > 1 && isFirstDescription) {\r\n productName = 'Product name';\r\n isFirstDescription = false;\r\n }\r\n const cellData: JSX.Element | null = this._renderProductCell(product);\r\n\r\n if (!cellData || product.Name === 'Staff favorites' || product.Name === 'Customer favorites' || product.Name === 'New') {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n });\r\n\r\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\r\n tableRows.push(this._createAdditionalMediaDrawer());\r\n }\r\n\r\n return tableRows;\r\n }\r\n\r\n private _createDrawerBody(content: IGdnProductSpecificationData): (JSX.Element | null)[] {\r\n const accordionItemContainer: IModuleProps = {\r\n moduleProps: this.props,\r\n className: 'ms-product-specification-title'\r\n };\r\n\r\n const drawers = content.productSpecificationData.result!.map(product => {\r\n const cellData: JSX.Element | null = this._renderProductCell(product);\r\n if (!cellData) {\r\n return null;\r\n }\r\n return (\r\n \r\n \r\n
    {cellData}
    \r\n \r\n
    \r\n );\r\n });\r\n\r\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\r\n drawers.push(this._createAdditionalMediaDrawer());\r\n }\r\n\r\n return drawers;\r\n }\r\n private _createAdditionalMediaDrawer(): JSX.Element {\r\n const accordionItemContainer: IModuleProps = {\r\n moduleProps: this.props,\r\n className: 'ms-product-specification-title'\r\n };\r\n\r\n return (\r\n \r\n {\r\n this.setState(prevState => ({\r\n ...prevState,\r\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\r\n }));\r\n }}\r\n >\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\r\n if (this.state.drawerListId !== drawerListId) {\r\n this.setState({ drawerListId, isDrawerOpen: true });\r\n } else {\r\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\r\n }\r\n };\r\n\r\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\r\n switch (product.DataTypeValue) {\r\n case 0: // None\r\n // Return span here instead of null so the row still shows\r\n return ;\r\n case 1: // Currency\r\n return this._renderCurrencyCell(product);\r\n case 2: // DateTime\r\n return this._renderDateTimeCell(product);\r\n case 3: // Decimal\r\n return this._renderDecimalCell(product);\r\n case 4: // Integer\r\n return this._renderIntegerCell(product);\r\n case 5: // Text\r\n return this._renderTextCell(product);\r\n case 6: // TrueFalse\r\n return this._renderTrueFalseCell(product);\r\n case 40: // Video\r\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\r\n return null;\r\n case 41: // Image\r\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\r\n return null;\r\n default:\r\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\r\n return null;\r\n }\r\n }\r\n\r\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\r\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\r\n return (\r\n \r\n {product.CurrencyCode}\r\n {product.CurrencyValue}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\r\n if (product.DateTimeOffsetValue?.toUTCString) {\r\n return {product.DateTimeOffsetValue.toUTCString()};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\r\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\r\n return {product.IntegerValue};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\r\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\r\n return {product.FloatValue};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\r\n if (product.TextValue !== null && product.TextValue !== undefined) {\r\n // eslint-disable-next-line react/no-danger\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\r\n // TODO 20369885 setting to default value is needed to work around a platform bug where\r\n // config string value does not get its default value.\r\n if (product.BooleanValue) {\r\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\r\n }\r\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\r\n }\r\n}\r\n\r\nexport default ProductSpecification;\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 { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from './gdn-product-specification';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\r\n const rowdata =\r\n productSpecificationResult &&\r\n ArrayExtensions.hasElements(productSpecificationResult) &&\r\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\r\n\r\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n \r\n {props.title}\r\n \r\n {rowdata}\r\n \r\n \r\n ) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from '@msdyn365-commerce-modules/address';\r\nimport {\r\n ICheckoutShippingAddressConfig,\r\n ICheckoutShippingAddressProps\r\n} from '../definition-extensions/checkout-shipping-address.ext.props.autogenerated';\r\n// import AdressDropdownComponent from './address-dropdown';\r\n\r\ninterface IAddressAddUpdateExtProps extends IAddressAddUpdateProps {\r\n shipUsaOnlyMessageText: string;\r\n allowInternationalShipping: boolean;\r\n}\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n shipUsaOnlyMessageText,\r\n allowInternationalShipping\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {!allowInternationalShipping && renderDeliveryLimitationMessage(shipUsaOnlyMessageText)}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n // if the address item is the country input, do not render.\r\n if (!allowInternationalShipping) {\r\n if (key === 'ThreeLetterISORegionName') return <>;\r\n } else {\r\n // filter to only USA and Canada\r\n if (key === 'ThreeLetterISORegionName') {\r\n if (React.isValidElement(input)) {\r\n const filteredCountries = [\r\n { key: 'CAN', value: 'Canada' },\r\n { key: 'USA', value: 'United States' }\r\n ];\r\n const clonedInput = React.cloneElement(input, { ...input.props, displayData: filteredCountries });\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {clonedInput}\r\n \r\n );\r\n }\r\n }\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst renderDeliveryLimitationMessage = (shipUsaOnlyMessageText: string) => (\r\n
    \r\n
    \r\n \r\n {shipUsaOnlyMessageText}\r\n
    \r\n
    \r\n);\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC> = props => {\r\n const {\r\n CheckoutShippingAddress,\r\n checkoutErrorRef,\r\n alert,\r\n viewState,\r\n showAddress,\r\n showAddressSelect,\r\n showAddOrUpdateAddress,\r\n cartLineImages,\r\n resources,\r\n config\r\n } = props;\r\n\r\n return (\r\n \r\n {alert}\r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport MsDyn365 from \"@msdyn365-commerce/core\";\r\nimport { IInvoicesListViewProps } from '@msdyn365-commerce-modules/invoice/src/modules/invoices-list/./invoices-list';\r\n\r\nexport const InvoiceListView: React.FC = props => {\r\n const { header, filter, content, invoiceRequestModal, pagination } = props;\r\n if (MsDyn365.isBrowser) {\r\n const linksElements = document.querySelectorAll('a.msc-invoices-list__container__content__table__row__open-invoice');\r\n console.log(linksElements);\r\n linksElements.forEach(l => l.setAttribute('href', '#'));\r\n }\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {content}\r\n {pagination}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMediaGalleryThumbnailItemViewProps,\r\n IMediaGalleryThumbnailsViewProps,\r\n IMediaGalleryViewProps\r\n} from '@msdyn365-commerce-modules/media-gallery';\r\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render the thumbnail item images.\r\n * @param thumbnail - The carousel thumbnail line props.\r\n * @returns Return HTML having thumnailcontainer props with image.\r\n */\r\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Gets the thumbnail item to display media gallery images.\r\n * @param image - The media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param imageId - Image id.\r\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render images.\r\n */\r\nconst GetThumbnailItemComponent = (\r\n image: IImageData,\r\n imageSettings: IImageSettings,\r\n imageId: number,\r\n modifiedActiveIndex: number,\r\n props: IMediaGalleryViewProps\r\n): IMediaGalleryThumbnailItemViewProps => {\r\n\r\n /**\r\n * OnClick method of media gallery item.\r\n * */\r\n const onClick = () => {\r\n props.callbackToggle?.();\r\n props.callbackThumbnailClick?.(imageId);\r\n props.state.activeIndex = imageId;\r\n };\r\n\r\n const classes = classnames(\r\n 'ms-media-gallery__thumbnail-item',\r\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\r\n );\r\n\r\n /**\r\n * Keydown event of media gallery item.\r\n * @param event - React.KeyboardEvent.\r\n * */\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Enter) {\r\n event.preventDefault();\r\n onClick();\r\n }\r\n };\r\n\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: classes,\r\n role: 'presentation',\r\n key: imageId\r\n },\r\n Picture: (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Gets the empty thumbnail item to display media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render empty images.\r\n */\r\nconst GetEmptyThumbnailItemComponent = (imageSettings: IImageSettings, props: IMediaGalleryViewProps): IMediaGalleryThumbnailItemViewProps => {\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-media-gallery__thumbnail-item',\r\n role: 'tab',\r\n tabIndex: 0,\r\n key: 0,\r\n 'aria-label': '',\r\n 'aria-selected': true\r\n },\r\n Picture: (\r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Update media gallery items method.\r\n * @param items - The media gallery thumbnail item view props.\r\n * @returns The IImageData array.\r\n */\r\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\r\n return items?.map(item => {\r\n return {\r\n altText: item.Picture.props.altText,\r\n src: item.Picture.props.src\r\n };\r\n });\r\n};\r\n\r\nconst defaultThumbnailImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\r\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n};\r\n\r\n/**\r\n * Render the Media gallery thumbnails to represent images in grid view.\r\n * @param thumbnails - The thumbnail view props.\r\n * @param props - The media gallery view props.\r\n * @returns - The single slide carousel component to render as media gallery image.\r\n */\r\nconst renderThumbnails = (\r\n thumbnails: IMediaGalleryThumbnailsViewProps,\r\n props: IMediaGalleryViewProps\r\n): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\r\n const { state, Thumbnails } = props;\r\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\r\n\r\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\r\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\r\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty' ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)] :\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\r\n mediaGalleryItems?.map((item: IImageData, id: number) => GetThumbnailItemComponent(item,\r\n defaultThumbnailImageSettings, id, state.activeIndex, props));\r\n\r\n return (\r\n \r\n \r\n {items?.map(renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the Media gallery items using viewprops.\r\n * @param props - The media gallery view props.\r\n * @returns The media gallery module wrapping up images node.\r\n */\r\nconst mediaGalleryView: React.FC = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n return (\r\n \r\n \r\n {Modal}\r\n {renderThumbnails(Thumbnails, props)}\r\n \r\n );\r\n};\r\n\r\nexport default mediaGalleryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount\r\n // channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {/* {channelReferenceId} */}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.salesLine}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink, expandProductsButton }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {expandProductsButton}\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n table,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n \r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {table}\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-section-container/./checkout-section-container';\r\n\r\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\r\n <>\r\n {loading}\r\n \r\n {item}\r\n \r\n \r\n);\r\n\r\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => {\r\n return(\r\n \r\n {items.map(item => {\r\n // remove the hidden classname that is given in the checkout-section-container\r\n item.itemProps = { ...item.itemProps,\r\n className: 'ms-checkout-section-container__item'\r\n }\r\n return \r\n })}\r\n \r\n )\r\n};\r\n\r\nexport default CheckoutSectionContainerView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-add';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-select';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-show';\r\nimport { ICheckoutShippingAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/./checkout-shipping-address';\r\nimport GetProductEligibilityAction, {\r\n GetProductEligibilityInput\r\n} from \"../../../actions/get-product-eligibility.action\";\r\nimport { CommercePropertyValueEnum } from \"../../../modules/allowable-freight/utils/CommercePropertyValueEnum\";\r\nimport { CommerceProperty } from \"@msdyn365-commerce/retail-proxy\";\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n {item.input}\r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\r\n const address = props.data.checkout.result?.shippingAddress;\r\n const [ nonEligibleItems, setnonEligibleItems ] = React.useState([]);\r\n React.useEffect(() => {\r\n void checkEligibilityForShippingAddress();\r\n }, [address])\r\n React.useEffect(() => {\r\n props.moduleState.setHasError(true);\r\n }, [])\r\n\r\n const _getExtensionPropertyValueByKey = (\r\n properties: CommerceProperty[] | undefined,\r\n key: string,\r\n valueType: CommercePropertyValueEnum\r\n ) => {\r\n const property = properties?.find(p => p.Key === key)?.Value;\r\n\r\n // eslint-disable-next-line security/detect-object-injection\r\n const val = property ? property[valueType] : null;\r\n return val;\r\n };\r\n\r\n\r\n const checkEligibilityForShippingAddress = async () => {\r\n const notEligibleList: string[] = [];\r\n const cart = props.data.checkout.result?.checkoutCart?.cart;\r\n if (cart && address) {\r\n const itemIds = cart.CartLines?.map(cl => cl.ItemId!) || [];\r\n const addressCountry = address.ThreeLetterISORegionName || null;\r\n const addressState = address.State || null;\r\n const addressRegion = address.County || null;\r\n const input = new GetProductEligibilityInput(itemIds, true, cart.Id || '', addressCountry, addressState, addressRegion);\r\n const eligibilityData = await GetProductEligibilityAction(input, props.context.actionContext);\r\n if (eligibilityData.length) {\r\n eligibilityData.forEach((i: any) => {\r\n const id = _getExtensionPropertyValueByKey(i.ExtensionProperties, 'ItemId', CommercePropertyValueEnum.string);\r\n if (!i.IsEligible) {\r\n notEligibleList.push(id as string);\r\n }\r\n });\r\n }\r\n }\r\n setnonEligibleItems(notEligibleList);\r\n props.moduleState.setHasError(notEligibleList.length > 0);\r\n }\r\n\r\n const renderCartError = () => {\r\n if (!nonEligibleItems.length) {\r\n return null;\r\n }\r\n return (\r\n
    \r\n

    \r\n The following items are not eligible for your current shipping address. Please remove them from the cart or change your address:\r\n

    \r\n {nonEligibleItems.map(i => {\r\n const item = getCartLineFromItemId(i);\r\n return

    {item?.ItemId} - {item?.Description}

    \r\n })}\r\n \r\n
    \r\n )\r\n }\r\n\r\n const removeIneligibleItems = async () => {\r\n const cartState = props.data.cart.result;\r\n const checkoutState = props.data.checkout.result;\r\n const badCartLines: string[] = [];\r\n cartState!.cart.CartLines!.forEach(cl => {\r\n if (nonEligibleItems.includes(cl.ItemId!)) {\r\n badCartLines.push(cl.LineId!);\r\n }\r\n })\r\n await checkoutState!.checkoutCart.removeCartLines({cartLineIds: badCartLines});\r\n await cartState!.removeCartLines({cartLineIds: badCartLines});\r\n window.location.reload();\r\n }\r\n\r\n const getCartLineFromItemId = (itemId: string) => props.data.checkout.result?.checkoutCart.cart.CartLines?.find(i => i.ItemId === itemId)\r\n return (\r\n \r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n {renderCartError()}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n// import MsDyn365 from \"@msdyn365-commerce/core\";\r\nimport { IInvoicesListViewProps } from '@msdyn365-commerce-modules/invoice/src/modules/invoices-list/./invoices-list';\r\n\r\nexport const InvoiceListView: React.FC = props => {\r\n const { header, filter, content, invoiceRequestModal, pagination } = props;\r\n // if (MsDyn365.isBrowser) {\r\n // const linksElements = document.querySelectorAll('a.msc-invoices-list__container__content__table__row__open-invoice');\r\n // console.log(linksElements);\r\n // linksElements.forEach(l => l.setAttribute('href', '#'));\r\n // }\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {content}\r\n {pagination}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMediaGalleryThumbnailItemViewProps,\r\n IMediaGalleryThumbnailsViewProps,\r\n IMediaGalleryViewProps\r\n} from '@msdyn365-commerce-modules/media-gallery';\r\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render the thumbnail item images.\r\n * @param thumbnail - The carousel thumbnail line props.\r\n * @returns Return HTML having thumnailcontainer props with image.\r\n */\r\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Gets the thumbnail item to display media gallery images.\r\n * @param image - The media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param imageId - Image id.\r\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render images.\r\n */\r\nconst GetThumbnailItemComponent = (\r\n image: IImageData,\r\n imageSettings: IImageSettings,\r\n imageId: number,\r\n modifiedActiveIndex: number,\r\n props: IMediaGalleryViewProps\r\n): IMediaGalleryThumbnailItemViewProps => {\r\n\r\n /**\r\n * OnClick method of media gallery item.\r\n * */\r\n const onClick = () => {\r\n props.callbackToggle?.();\r\n props.callbackThumbnailClick?.(imageId);\r\n props.state.activeIndex = imageId;\r\n };\r\n\r\n const classes = classnames(\r\n 'ms-media-gallery__thumbnail-item',\r\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\r\n );\r\n\r\n /**\r\n * Keydown event of media gallery item.\r\n * @param event - React.KeyboardEvent.\r\n * */\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Enter) {\r\n event.preventDefault();\r\n onClick();\r\n }\r\n };\r\n\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: classes,\r\n role: 'presentation',\r\n key: imageId\r\n },\r\n Picture: (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Gets the empty thumbnail item to display media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render empty images.\r\n */\r\nconst GetEmptyThumbnailItemComponent = (imageSettings: IImageSettings, props: IMediaGalleryViewProps): IMediaGalleryThumbnailItemViewProps => {\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-media-gallery__thumbnail-item',\r\n role: 'tab',\r\n tabIndex: 0,\r\n key: 0,\r\n 'aria-label': '',\r\n 'aria-selected': true\r\n },\r\n Picture: (\r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Update media gallery items method.\r\n * @param items - The media gallery thumbnail item view props.\r\n * @returns The IImageData array.\r\n */\r\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\r\n return items?.map(item => {\r\n return {\r\n altText: item.Picture.props.altText,\r\n src: item.Picture.props.src\r\n };\r\n });\r\n};\r\n\r\nconst defaultThumbnailImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\r\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n};\r\n\r\n/**\r\n * Render the Media gallery thumbnails to represent images in grid view.\r\n * @param thumbnails - The thumbnail view props.\r\n * @param props - The media gallery view props.\r\n * @returns - The single slide carousel component to render as media gallery image.\r\n */\r\nconst renderThumbnails = (\r\n thumbnails: IMediaGalleryThumbnailsViewProps,\r\n props: IMediaGalleryViewProps\r\n): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\r\n const { state, Thumbnails } = props;\r\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\r\n\r\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\r\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\r\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty' ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)] :\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\r\n mediaGalleryItems?.map((item: IImageData, id: number) => GetThumbnailItemComponent(item,\r\n defaultThumbnailImageSettings, id, state.activeIndex, props));\r\n\r\n return (\r\n \r\n \r\n {items?.map(renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the Media gallery items using viewprops.\r\n * @param props - The media gallery view props.\r\n * @returns The media gallery module wrapping up images node.\r\n */\r\nconst mediaGalleryView: React.FC = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n return (\r\n \r\n \r\n {Modal}\r\n {renderThumbnails(Thumbnails, props)}\r\n \r\n );\r\n};\r\n\r\nexport default mediaGalleryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.salesLine}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink, expandProductsButton }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {expandProductsButton}\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n table,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n \r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {table}\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\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 { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProactiveChatTrigger } from '../../interfaces';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\n\n/**\n * ProactiveChatTrigger class - checks if Proactive Chat should be triggered, starts the chat and sets context\n */\nabstract class ProactiveChatTrigger implements IProactiveChatTrigger {\n public props: IPvaChatConnectorViewProps;\n public context: IChatContext;\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n this.props = props;\n this.context = context;\n }\n\n /**\n * Generates Chat Context with included properties related to Proactive Chat\n * @returns TContextProvider - Chat Context\n */\n public abstract getContextProvider(): TContextProvider;\n\n /**\n * Generates chat welcome message to be used if Proactive Chat is triggered\n * @returns string - chat welcome message\n */\n public abstract getMessage(): string;\n\n /**\n * Validate specific trigger conditions if Proactive Chat should be initiated\n * @returns boolean (TRUE if Proactive Chat should be triggered)\n */\n public abstract validate(): Promise;\n}\n\nexport default ProactiveChatTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// @ts-ignore\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * CartAmountTrigger class - proactive chat is triggered if cArt amount is in preset boundaries (config.proactiveOnCartAmountMin, config.proactiveOnCartAmountMax)\n */\nclass CartAmountTrigger extends ProactiveChatTrigger {\n private min?: number;\n private max?: number;\n private totalInCart: number = 0;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.min = this.props.config.proactiveOnCartAmountMin;\n this.max = this.props.config.proactiveOnCartAmountMax;\n this.props.context.telemetry.debug(\n `[Chat][${CartAmountTrigger.name}] Cart amount proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\n );\n }\n\n public async validate(): Promise {\n const cart = await this._getCart();\n if (cart.isEmpty) {\n this.props.context.telemetry.debug(`[Chat][${CartAmountTrigger.name}] Cart was empty. Validation returning 'false'.`);\n return false;\n }\n\n this.totalInCart = cart.cart.TotalAmount || 0;\n let retVal = false;\n if (this.min) {\n if (this.max) {\n retVal = this.min <= this.totalInCart && this.totalInCart <= this.max;\n } else {\n retVal = this.min <= this.totalInCart;\n }\n } else {\n if (this.max) {\n retVal = this.totalInCart <= this.max;\n } else {\n retVal = false;\n }\n }\n this.props.context.telemetry.debug(\n `[Chat][${CartAmountTrigger.name}] Validation result: '${retVal}'; Cart total: '${this.totalInCart}'.`\n );\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: 'Cart Amount',\n eCommerceCustProactiveShoppingCartAmount: `${this.totalInCart}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnCartAmountMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private async _getCart(): Promise {\n return getCartState(this.props.context.actionContext);\n }\n}\n\nexport default CartAmountTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// @ts-ignore\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * CartNumberOfItemsTrigger class - proactive chat is triggered if Cart Number of Items is in preset boundaries (config.proactiveOnCartNoOfItemsMin, config.proactiveOnCartNoOfItemsMax)\n */\nclass CartNumberOfItemsTrigger extends ProactiveChatTrigger {\n private min?: number;\n private max?: number;\n private numberOfItems: number = 0;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.min = this.props.config.proactiveOnCartNoOfItemsMin;\n this.max = this.props.config.proactiveOnCartNoOfItemsMax;\n\n this.props.context.telemetry.debug(\n `[${CartNumberOfItemsTrigger.name}] Cart number of items proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\n );\n }\n\n public async validate(): Promise {\n const cart = await this._getCart();\n if (cart.isEmpty) {\n this.props.context.telemetry.debug(`[Chat][${CartNumberOfItemsTrigger.name}] Cart was empty. Validation returning 'false'.`);\n return false;\n }\n\n this.numberOfItems = cart.cart.TotalItems || 0;\n\n let retVal = false;\n if (this.min) {\n if (this.max) {\n retVal = this.min <= this.numberOfItems && this.numberOfItems <= this.max;\n } else {\n retVal = this.min <= this.numberOfItems;\n }\n } else {\n if (this.max) {\n retVal = this.numberOfItems <= this.max;\n } else {\n retVal = false;\n }\n }\n this.props.context.telemetry.debug(\n `[${CartNumberOfItemsTrigger.name}] Validation result: '${retVal}'; Number of items in cart: '${this.numberOfItems}'.`\n );\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: 'Cart Number of Items',\n eCommerceCustProactiveShoppingCartNumberOfItems: `${this.numberOfItems}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnCartNoOfItemsMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private async _getCart(): Promise {\n return getCartState(this.props.context.actionContext);\n }\n}\n\nexport default CartNumberOfItemsTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// @ts-ignore\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { TContextProvider } from '../../../interfaces';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * CartSpecificProductTrigger class - proactive chat is triggered if a Product in the Cart is in preset list of products (config.proactiveOnCartSpecificProductList)\n */\nclass CartSpecificProductTrigger extends ProactiveChatTrigger {\n private product: string = '';\n\n public async validate(): Promise {\n let isValid = false;\n const cart = await this._getCart();\n if (!cart.isEmpty) {\n if (cart.cart.CartLines) {\n this.props.context.telemetry.debug(\n `[${CartSpecificProductTrigger.name}] Number of cart line items was '${cart.cart.CartLines?.length}'`\n );\n for (let i = 0; i < cart.cart.CartLines?.length; i++) {\n if (cart.cart.CartLines[i]) {\n if (this.props.config.proactiveOnCartSpecificProductList) {\n this.props.context.telemetry.debug(\n `[${CartSpecificProductTrigger.name}] Number of cart specific products was configured for proactive chat was '${this.props.config.proactiveOnCartSpecificProductList?.length}'`\n );\n // Find first item, from user-defined list of products, that matches the cart lines' itemId in the cart.\n for (let j = 0; j < (this.props.config.proactiveOnCartSpecificProductList?.length || 0); j++) {\n if (\n this.props.config.proactiveOnCartSpecificProductList &&\n cart.cart.CartLines[i].ItemId &&\n this.props.config.proactiveOnCartSpecificProductList[j] === cart.cart.CartLines[i].ItemId\n ) {\n this.props.context.telemetry.debug(\n `[${CartSpecificProductTrigger.name}] Matched cart line item ID '${cart.cart.CartLines[i].ItemId}' against user-defined list of specific products for proactive chat.`\n );\n isValid = true;\n break;\n }\n }\n }\n } else {\n // Rest of the CartLines are undefined\n break;\n }\n }\n } else {\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart did not contain any cart lines.`);\n }\n } else {\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart was empty.`);\n }\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Validation returning '${isValid}'.`);\n return isValid;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: 'Cart Specific Product',\n eCommerceCustProactiveShoppingCartSpecificProduct: `${this.product}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnCartSpecificProductMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private async _getCart(): Promise {\n return getCartState(this.props.context.actionContext);\n }\n}\n\nexport default CartSpecificProductTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport enum ProactiveChatNames {\n DateRange = 'Date Range',\n FromSpecificPage = 'From Specific Page',\n PageVisits = 'Page Visits',\n SpecificLocation = 'Specific Location',\n SpecificPage = 'Specific Page',\n WaitOnTime = 'Wait On Time'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * DateRangeTrigger class - proactive chat is triggered if current date is in preset date boundaries (config.proactiveOnDateRangeStart, config.proactiveOnDateRangeEnd)\n */\nclass DateRangeTrigger extends ProactiveChatTrigger {\n private start?: Date;\n private end?: Date;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.start = this._toDate(this.props.config.proactiveOnDateRangeStart);\n this.end = this._toDate(this.props.config.proactiveOnDateRangeEnd);\n\n this.props.context.telemetry.debug(\n `[${DateRangeTrigger.name}] Proactive chat initialized with startDate: '${this.start}'; max: '${this.end}'.`\n );\n }\n\n public async validate(): Promise {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n\n let retVal = false;\n if (this.start) {\n if (this.end) {\n retVal = this.start.getTime() <= now.getTime() && now.getTime() <= this.end.getTime();\n } else {\n retVal = this.start.getTime() <= now.getTime();\n }\n } else if (this.end) {\n retVal = now.getTime() <= this.end.getTime();\n }\n\n this.props.context.telemetry.debug(\n `[${DateRangeTrigger.name}] Validation result: '${retVal}'; Current date used to compare: '${now}'.`\n );\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.DateRange,\n eCommerceCustProactiveFromDate: this.start ? this.start.toUTCString() : '',\n eCommerceCustProactiveToDate: this.end ? this.end.toUTCString() : ''\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnDateRangeMessage || this.props.config.proactiveDefaultMessage;\n }\n\n /**\n * Converts string(us-en) to date\n * @param date string (mm/dd/yyyy)\n * @returns Date or undefined\n */\n private _toDate(date?: string): Date | undefined {\n if (date) {\n const dateParts = date.split('/');\n return new Date(+dateParts[2], +dateParts[1] - 1, +dateParts[0]);\n } else {\n return undefined;\n }\n }\n}\n\nexport default DateRangeTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { TContextProvider } from '../../../interfaces';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * FromSpecificPageTrigger class - proactive chat is triggered if user has come from specific page (the one listed in config.proactiveOnFromSpecificPageList)\n */\nclass FromSpecificPageTrigger extends ProactiveChatTrigger {\n public async validate(): Promise {\n let isValid = false;\n if (this.props.config.proactiveOnFromSpecificPageList) {\n this.props.context.telemetry.debug(\n `[${FromSpecificPageTrigger.name}] Number of items in user-defined list of 'From Specific Page' was '${this.props.config.proactiveOnFromSpecificPageList?.length}'.`\n );\n for (let i = 0; i < (this.props.config.proactiveOnFromSpecificPageList?.length || 0); i++) {\n const fromSpecificPageTrimmed: string = this.props.config.proactiveOnFromSpecificPageList[i].trim();\n this.props.context.telemetry.debug(\n `[Chat][${FromSpecificPageTrigger.name}] Current page URL: '${window.document.referrer}'.`\n );\n this.props.context.telemetry.debug(\n `[${FromSpecificPageTrigger.name}] Current item from user-defined list of 'From Specific Page': '${fromSpecificPageTrimmed}'.`\n );\n\n if (window.document.referrer.indexOf(fromSpecificPageTrimmed) > -1) {\n isValid = true;\n break;\n }\n }\n } else {\n this.props.context.telemetry.debug(\n `[Chat][${FromSpecificPageTrigger.name}] User-defined 'From Specific Page' list was undefined.`\n );\n }\n this.props.context.telemetry.debug(`[Chat][${FromSpecificPageTrigger.name}] Validation returning '${isValid}'.`);\n return isValid;\n }\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.FromSpecificPage,\n eCommerceCustProactiveCameFromPage: window.document.referrer\n };\n };\n }\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnFromSpecificPageMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default FromSpecificPageTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICookieContext } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/ICookieContext';\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * PageVisitTrigger class - proactive chat is triggered if user has visited current page for (config.proactiveOnPageVisitNumber) or more times\n */\nclass PageVisitTrigger extends ProactiveChatTrigger {\n public visits: number = 0;\n private cookieName: string = 'TimesPageVisited';\n private expdate: Date;\n private cookies: ICookieContext;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.cookies = this.props.context.request.cookies;\n this.expdate = new Date();\n // Set expiry date to 365 days.\n this.expdate.setTime(this.expdate.getTime() + 24 * 60 * 60 * 1000 * 365);\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie expiry date set to: '${this.expdate}'.`);\n\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie context is given: '${this.cookies.isConsentGiven()}'.`);\n if (this.cookies.isConsentGiven()) {\n this.cookies.setConsentCookie();\n }\n\n this._updateVisitCounter();\n }\n\n public async validate(): Promise {\n let retVal: boolean = false;\n\n if (this.props.config.proactiveOnPageVisitNumber) {\n retVal = this.visits >= this.props.config.proactiveOnPageVisitNumber;\n }\n\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Validation result: '${retVal}'.`);\n return retVal;\n }\n\n public clear(): void {\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Clearing cookie for page visit counter.`);\n this.cookies.set(this.cookieName, 0, {\n domain: window.location.hostname,\n path: window.location.pathname,\n expires: this.expdate\n });\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.PageVisits,\n eCommerceCustProactiveNumberOfVisits: `${this.visits}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnPageVisitMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private _updateVisitCounter(): void {\n this.visits = this.cookies.get(this.cookieName).value || 0;\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter BEFORE update: '${this.visits}.`);\n ++this.visits;\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter AFTER update: '${this.visits}.`);\n\n this.cookies.set(this.cookieName, this.visits, {\n domain: window.location.hostname,\n path: window.location.pathname,\n expires: this.expdate\n });\n }\n}\n\nexport default PageVisitTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IExtendedRequest } from '../../interfaces';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * SpecificPageTrigger class - proactive chat is triggered if user geographically uses the website from specific country/regions(config.proactiveOnSpecificCountryRegionCountry)\n */\nclass SpecificCountryRegionTrigger extends ProactiveChatTrigger {\n private customerCountryCode: string;\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.customerCountryCode = (this.props.context.request).suggestedMarket || 'n/a';\n this.props.context.telemetry.debug(\n `[${SpecificCountryRegionTrigger.name}] Customer country code set to: '${this.customerCountryCode}.'`\n );\n }\n\n public async validate(): Promise {\n const retVal: boolean = this.props.config.proactiveOnSpecificLocation\n ? this.props.config.proactiveOnSpecificLocation.toLowerCase().indexOf(this.customerCountryCode.toLowerCase()) > -1\n : false;\n this.props.context.telemetry.debug(`[Chat][${SpecificCountryRegionTrigger.name}] Validation returning '${retVal}'.`);\n return retVal;\n }\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveCountryCode: this.props.config.proactiveOnSpecificLocation || '',\n eCommerceCustProactiveType: ProactiveChatNames.SpecificLocation\n };\n };\n }\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnSpecificCountryRegionMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default SpecificCountryRegionTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { TContextProvider } from '../../../interfaces';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * SpecificPageTrigger class - proactive chat is triggered if current page is listed in config.proactiveOnSpecificPageList\n */\nclass SpecificPageTrigger extends ProactiveChatTrigger {\n public async validate(): Promise {\n let isValid = false;\n if (this.props.config.proactiveOnSpecificPageList) {\n this.props.context.telemetry.debug(\n `[${SpecificPageTrigger.name}] Number of items in user-defined list of 'Specific Pages' was '${this.props.config.proactiveOnSpecificPageList?.length}'.`\n );\n for (let i = 0; i < (this.props.config.proactiveOnSpecificPageList?.length || 0); i++) {\n const specificPageTrimmed: string = this.props.config.proactiveOnSpecificPageList[i].trim();\n this.props.context.telemetry.debug(`[] Current location URL: ${window.location.href}.`);\n this.props.context.telemetry.debug(`[] Current item from user-defined list of 'Specific Page': ${specificPageTrimmed}.`);\n if (window.location.href.indexOf(specificPageTrimmed) > -1) {\n isValid = true;\n break;\n }\n }\n } else {\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] User-defined 'Specific Page' list was undefined.`);\n }\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] Validation returning '${isValid}'.`);\n return isValid;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.SpecificPage\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnSpecificPageMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default SpecificPageTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * WaitOnTimeTrigger - proactive chat is triggered if user stays on current page for more than (config.proactiveOnWaitTimeSeconds) seconds\n */\nclass WaitOnTimeTrigger extends ProactiveChatTrigger {\n private waitTimeInMilliseconds: number | undefined;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n if (this.props.config.proactiveOnWaitTimeSeconds && !isNaN(this.props.config.proactiveOnWaitTimeSeconds)) {\n this.waitTimeInMilliseconds = Number(this.props.config.proactiveOnWaitTimeSeconds) * 1000;\n this.props.context.telemetry.debug(\n `[Chat][${WaitOnTimeTrigger.name}] Wait time (ms) set to: '${this.waitTimeInMilliseconds}'.`\n );\n }\n }\n\n public async validate(): Promise {\n const retVal: boolean = this.waitTimeInMilliseconds !== undefined;\n this.props.context.telemetry.debug(`[Chat][${WaitOnTimeTrigger.name}] Validation returning '${retVal}'.`);\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n const triggerTime = Date.now() + (this.waitTimeInMilliseconds || 0);\n return () => {\n return triggerTime > Date.now()\n ? this.context\n : {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.WaitOnTime,\n eCommerceCustProactiveTimeOnPage: `${this.waitTimeInMilliseconds ? this.waitTimeInMilliseconds : 0}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnWaitTimeMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default WaitOnTimeTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CartAmountTrigger from './triggers/cart-amount-trigger';\nimport CartNumberOfItemsTrigger from './triggers/cart-number-of-items-trigger';\nimport CartSpecificProductTrigger from './triggers/cart-specific-product-trigger';\nimport DateRangeTrigger from './triggers/date-range-trigger';\nimport FromSpecificPageTrigger from './triggers/from-specific-page-trigger';\nimport PageVisitTrigger from './triggers/page-visits-trigger';\nimport SpecificCountryRegionTrigger from './triggers/specific-CountryRegion-trigger';\nimport SpecificPageTrigger from './triggers/specific-page-trigger';\nimport WaitOnTimeTrigger from './triggers/wait-on-time-trigger';\n\ntype ProactiveChat =\n | typeof DateRangeTrigger\n | typeof SpecificPageTrigger\n | typeof FromSpecificPageTrigger\n | typeof PageVisitTrigger\n | typeof SpecificCountryRegionTrigger\n | typeof CartAmountTrigger\n | typeof CartNumberOfItemsTrigger\n | typeof CartSpecificProductTrigger\n | typeof WaitOnTimeTrigger;\n\n/**\n * List of Proactive Chat Validators in order of validation (first proactive chat that pass validation is triggered, the rest are ommited)\n */\nexport const ProactiveTriggers: ProactiveChat[] = [\n DateRangeTrigger,\n SpecificPageTrigger,\n FromSpecificPageTrigger,\n PageVisitTrigger,\n SpecificCountryRegionTrigger,\n CartAmountTrigger,\n CartNumberOfItemsTrigger,\n CartSpecificProductTrigger,\n WaitOnTimeTrigger\n];\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRequestContextUser } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/IRequestContext';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ProactiveTriggers } from '../proactive';\nimport ProactiveChatTrigger from '../proactive/triggers/proactive-chat-trigger';\nimport { IPvaChatConnectorViewProps } from '../msdyn365-pva-chat-connector';\nimport { IProactiveData } from './../interfaces';\nimport { IChatContext, TContextProvider } from '../../interfaces';\n\n/**\n *\n * ContextProvider class - generates chat context, and checks for proactive triggers\n */\nclass ContextProvider {\n public data: IProactiveData;\n public props: IPvaChatConnectorViewProps;\n private user: IRequestContextUser;\n private userId: string;\n private context: IChatContext;\n private provider: TContextProvider | undefined;\n\n constructor(props: IPvaChatConnectorViewProps) {\n this.props = props;\n this.user = this.props.context.request.user;\n this.userId = `dl_${uuidv4()}`;\n this.context = this._getContext();\n // Proactive Chat related data\n this.data = {\n enabled: false,\n timeout: this.props.config.proactiveOnWaitTimeSeconds || 0,\n message: this.props.config.proactiveDefaultMessage\n };\n }\n\n /**\n * Executes Proactive Chat validation\n * @returns TContextProvider - a function returning IChatContext object\n */\n public async init(): Promise {\n try {\n await this._proactiveCheck();\n } catch (e) {\n // Use ?debug=true to see telemetry\n // If previous block fails, chat will still be available (no need to display any errors to user)\n this.props.telemetry.exception(e);\n }\n return this.provider || this._getProvider();\n }\n\n /**\n * Returns TContextProvider - a function returning IChatContext object\n */\n private _getProvider(): TContextProvider {\n return () => {\n return {\n eCommerceOperatingUnitNumber: this.props.context.request.apiSettings.oun,\n eCommerceBaseUrl: this.props.context.request.apiSettings.baseUrl,\n eCommerceDataAreaId: this.props.context.request.channel?.InventLocationDataAreaId,\n UserId: this.userId,\n // eCommerceCust...\n AccountNumber: this.user.customerAccountNumber ? this.user.customerAccountNumber : 'N/A',\n Email: this.user.emailAddress ? this.user.emailAddress : 'N/A',\n FirstName: this.user.firstName ? this.user.firstName : this.props.config.anonymousUserName,\n LastName: this.user.lastName ? this.user.lastName : 'N/A',\n Name: this.user.name ? this.user.name : this.props.config.anonymousUserName,\n eCommerceCustPageURL: window.location.href,\n eCommerceCustChatType: 'pva',\n // Proactive chat\n eCommerceCustIsProactiveChat: 'False',\n eCommerceCustProactiveType: 'N/A',\n // Date Range\n eCommerceCustProactiveFromDate: 'N/A',\n eCommerceCustProactiveToDate: 'N/A',\n // From Specific Page\n eCommerceCustProactiveCameFromPage: 'N/A',\n // No. Page Visits\n eCommerceCustProactiveNumberOfVisits: 'N/A',\n // Specific CountryRegion\n eCommerceCustProactiveCountryCode: 'N/A',\n // Specific Page => eCommerceCustPageURL\n // eCommerceCustProactiveSpecificPage: 'N/A',\n // Wait On Time\n eCommerceCustProactiveTimeOnPage: 'N/A',\n // Shopping cart amount\n eCommerceCustProactiveShoppingCartAmount: 'N/A',\n // Shopping cart number of items\n eCommerceCustProactiveShoppingCartNumberOfItems: 'N/A',\n // Shopping cart specific product\n eCommerceCustProactiveShoppingCartSpecificProduct: 'N/A'\n };\n };\n }\n\n /**\n * Returns default IChatContext object\n */\n private _getContext(): IChatContext {\n return this._getProvider()();\n }\n\n /**\n * Validates proactive triggers to check if proactive chat should be initialized\n */\n private async _proactiveCheck(): Promise {\n if (this.props.config.proactiveChatEnabled) {\n for (let i = 0; i < ProactiveTriggers.length; i++) {\n const proactive = new ProactiveTriggers[i](this.props, this.context);\n // Only first detected proactive trigger gets executed\n if (await this._isProactive(proactive)) {\n this.props.context.telemetry.debug(`First detected proactive trigger to be executed: ${proactive}`);\n break;\n }\n }\n }\n }\n\n /**\n * Validates if proactive chat should be triggered for given ProactiveTrigger\n * @param proactive ProactiveChatTrigger\n * @returns boolean\n */\n private async _isProactive(proactive: ProactiveChatTrigger): Promise {\n this.data.enabled = await proactive.validate();\n if (this.data.enabled) {\n this.provider = proactive.getContextProvider();\n this.data.message = proactive.getMessage();\n }\n return this.data.enabled;\n }\n}\n\nexport default ContextProvider;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Style generating functions\n */\nimport { IAvatarStyling, IBubbleStyling, IChatCustomStyle, IChatStyling, IOtherStyling, ISuggestedActionStyling } from '../interfaces';\nimport { IMsdyn365PvaChatConnectorConfig } from '../msdyn365-pva-chat-connector.props.autogenerated';\n\nconst getChatWrapperStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n position: config.position || 'inherit',\n top: config.top ? config.top : 'inherit',\n right: config.right ? config.right : 'inherit',\n bottom: config.bottom ? config.bottom : 'inherit',\n left: config.left ? config.left : 'inherit',\n zIndex: 1000,\n display: 'flex',\n justifyContent: 'flex-end'\n };\n};\n\nconst getMaximizedChatWrapperStyle = (config: IMsdyn365PvaChatConnectorConfig, isMobileDevice: boolean): React.CSSProperties => {\n if (isMobileDevice) {\n return {\n height: '90%',\n width: '100%',\n bottom: '0.5em',\n right: '0',\n padding: '5px'\n };\n }\n return {\n height: config.chatHeight ? config.chatHeight : '80%',\n width: config.chatWidth ? config.chatWidth : 'inherit'\n };\n};\n\nconst getChatButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: config.startChatButtonBackgroundColor || 'white',\n color: config.startChatButtonTextColor || 'inherit',\n borderColor: config.startChatButtonBorderColor || 'inherit',\n borderRadius: config.startChatButtonBorderRadius || '0px',\n borderStyle: config.startChatButtonBorderStyle || 'solid',\n borderWidth: config.startChatButtonBorderWidth ? config.startChatButtonBorderWidth : '0px',\n padding: config.storeLogoURL ? '2px 20px 2px 2px' : '10px 20px 10px 20px',\n cursor: 'pointer',\n outlineStyle: 'none',\n alignSelf: 'flex-end',\n boxShadow: '0 0 4px rgba(102,102,102,.5)',\n WebkitBoxShadow: '0 0 4px rgba(102,102,102,.5)',\n MozBoxShadow: '0 0 4px rgba(102,102,102,.5)'\n };\n};\n\nconst getButtonStoreLogoStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n color: config.headerTextColor || 'inherit',\n borderRadius: '50%',\n padding: '11px',\n width: '30px',\n height: '30px',\n marginRight: '12px',\n borderStyle: 'solid',\n borderWidth: '1px',\n boxSizing: 'content-box'\n };\n};\n\nconst getChatStoreLogoStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n color: config.headerTextColor || 'inherit',\n borderRadius: '50%',\n padding: '11px',\n width: '30px',\n height: '30px',\n margin: '5px 12px 5px 5px',\n alignSelf: 'center',\n borderStyle: 'solid',\n borderWidth: '1px',\n boxSizing: 'content-box'\n };\n};\n\nconst getChatMessagesStyle = (config: IMsdyn365PvaChatConnectorConfig, minimized: boolean): React.CSSProperties => {\n return {\n display: minimized ? 'none' : 'block',\n backgroundColor: config.backgroundColor || 'White',\n height: '100%',\n width: '100%',\n boxSizing: 'border-box',\n position: 'relative'\n };\n};\n\nconst getChatMessageHeader = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\n color: config.headerTextColor || 'inherit',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'row',\n width: '100%',\n position: 'absolute',\n top: config.chatHeaderHeight ? `-${config.chatHeaderHeight}` : '',\n height: config.chatHeaderHeight,\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getMinimizeButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n borderTop: 'none',\n borderLeft: 'none',\n borderRight: 'none',\n borderBottom: `solid 2px ${config.headerTextColor || 'White'}`,\n backgroundColor: 'transparent',\n padding: '5px 10px 3px 10px',\n cursor: 'pointer',\n outlineStyle: 'none',\n marginTop: '7px',\n marginRight: '7px'\n };\n};\n\nconst getCloseButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n border: 'none',\n color: config.headerTextColor || 'White',\n backgroundColor: 'transparent',\n padding: '0px 0px 0px 7px',\n cursor: 'pointer',\n outlineStyle: 'none',\n marginTop: '7px',\n marginRight: '7px'\n };\n};\n\nconst getChatMessageContent = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n height: '100%',\n width: '100%',\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getProactiveWrapperStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n flexDirection: 'column',\n display: 'flex',\n justifyContent: 'flex-end',\n backgroundColor: config.backgroundColor || 'White'\n };\n};\n\nconst getProactiveMessageHeader = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\n color: config.headerTextColor || 'inherit',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'row',\n boxSizing: 'border-box',\n width: '100%',\n height: config.chatHeaderHeight,\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getProactiveMessageContent = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n width: '100%',\n padding: '10px 20px',\n boxSizing: 'border-box',\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getProactiveButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n color: config.headerTextColor || 'inherit',\n cursor: 'pointer',\n padding: '5px 10px',\n outline: 'none',\n border: 'none',\n backgroundColor: config.headerBackgroundColor || 'inherit',\n borderRadius: '25px'\n };\n};\n\nconst getRedDotStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n background: 'Red',\n borderRadius: '50%',\n height: '5px',\n width: '5px',\n position: 'absolute',\n right: '10px',\n bottom: '33px'\n };\n};\n\n/**\n * Generates styles for the chat wrapper, and proactive chat parts\n * @param config IMsdyn365PvaChatConnectorConfig\n * @param minimized boolean\n * @returns IChatCustomStyle\n */\nexport const getChatStyling = (config: IMsdyn365PvaChatConnectorConfig, minimized: boolean, isMobileDevice: boolean): IChatCustomStyle => {\n return {\n ChatWrapperStyle: getChatWrapperStyle(config),\n MaximizedChatWrapperStyle: getMaximizedChatWrapperStyle(config, isMobileDevice),\n ChatButtonStyle: getChatButtonStyle(config),\n ButtonStoreLogoStyle: getButtonStoreLogoStyle(config),\n ChatStoreLogoStyle: getChatStoreLogoStyle(config),\n ChatMessagesStyle: getChatMessagesStyle(config, minimized),\n ChatMessageHeader: getChatMessageHeader(config),\n MinimizeButtonStyle: getMinimizeButtonStyle(config),\n CloseButtonStyle: getCloseButtonStyle(config),\n ChatMessageContent: getChatMessageContent(config),\n ProactiveWrapperStyle: getProactiveWrapperStyle(config),\n ProactiveMessageHeader: getProactiveMessageHeader(config),\n ProactiveMessageContent: getProactiveMessageContent(config),\n ProactiveButtonStyle: getProactiveButtonStyle(config),\n RedDotStyle: getRedDotStyle(config)\n };\n};\n\nconst fontFormat = (font?: string): string | undefined => {\n if (font && font.length > 0) {\n const arr = font.split(',');\n for (let i = 0; i < arr.length; i++) {\n arr[i] = `'${arr[i].trim()}'`;\n }\n font = arr.join(', ');\n } else {\n font = \"'Calibri', 'Helvetica Neue', 'Arial', 'sans-serif'\";\n }\n\n return font;\n};\n\nconst getBubbleStyling = (config: IMsdyn365PvaChatConnectorConfig): IBubbleStyling => {\n return {\n bubbleBackground: config.bubbleBackground || 'White',\n bubbleTextColor: config.bubbleTextColor || 'Black',\n bubbleBorderColor: config.bubbleBorderColor || '#e6e6e6',\n bubbleBorderRadius: config.bubbleBorderRadius || '2',\n bubbleBorderStyle: config.bubbleBorderStyle || 'solid',\n bubbleBorderWidth: config.bubbleBorderWidth || '1',\n bubbleFromUserBackground: config.bubbleFromUserBackground || 'White',\n bubbleFromUserTextColor: config.bubbleFromUserTextColor || 'Black',\n bubbleFromUserBorderColor: config.bubbleFromUserBorderColor || '#e6e6e6',\n bubbleFromUserBorderRadius: config.bubbleFromUserBorderRadius || '2',\n bubbleFromUserBorderStyle: config.bubbleFromUserBorderStyle || 'solid',\n bubbleFromUserBorderWidth: config.bubbleFromUserBorderWidth || '1'\n };\n};\n\n// eslint-disable-next-line complexity\nconst getOtherStyling = (config: IMsdyn365PvaChatConnectorConfig): IOtherStyling => {\n return {\n groupTimestamp: config.groupTimestamp || true,\n sendTimeout: config.sendTimeout || '20000',\n sendTimeoutForAttachments: config.sendTimeoutForAttachments || '120000',\n timestampColor: config.timestampColor || 'undefined',\n timestampFormat: config.timestampFormat || 'undefined',\n notificationDebounceTimeout: config.notificationDebounceTimeout || '400',\n hideToaster: config.hideToaster || true,\n toasterHeight: config.toasterHeight || '32',\n toasterMaxHeight: config.toasterMaxHeight || '32 * 5',\n toasterSingularMaxHeight: config.toasterSingularMaxHeight || '50',\n toastFontSize: config.toastFontSize || '87.5%',\n toastIconWidth: config.toastIconWidth || '36',\n toastSeparatorColor: config.toastSeparatorColor || '#E8EAEC',\n toastTextPadding: config.toastTextPadding || '6',\n toastErrorBackgroundColor: config.toastErrorBackgroundColor || '#FDE7E9',\n toastErrorColor: config.toastErrorColor || '#A80000',\n toastInfoBackgroundColor: config.toastInfoBackgroundColor || '#CEF1FF',\n toastInfoColor: config.toastInfoColor || '#105E7D',\n toastSuccessBackgroundColor: config.toastSuccessBackgroundColor || '#DFF6DD',\n toastSuccessColor: config.toastSuccessColor || '#107C10',\n toastWarnBackgroundColor: config.toastWarnBackgroundColor || '#FFF4CE',\n toastWarnColor: config.toastWarnColor || '#3B3A39',\n typingAnimationBackgroundImage: config.typingAnimationBackgroundImage || 'undefined',\n typingAnimationDuration: config.typingAnimationDuration || '5000',\n typingAnimationHeight: config.typingAnimationHeight || '20',\n typingAnimationWidth: config.typingAnimationWidth || '64',\n videoHeight: config.videoHeight || '270',\n markdownExternalLinkIconImage:\n config.markdownExternalLinkIconImage ||\n 'url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIzIDMgMTggMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMjUwMSA0LjUwMDE3SDEwLjc0OTVDMTEuMTYzNyA0LjUwMDE3IDExLjQ5OTUgNC44MzU5NiAxMS40OTk1IDUuMjUwMTdDMTEuNDk5NSA1LjYyOTg2IDExLjIxNzMgNS45NDM2NiAxMC44NTEzIDUuOTkzMzJMMTAuNzQ5NSA2LjAwMDE3SDcuMjQ5NzRDNi4wNzA3OSA1Ljk5OTYxIDUuMTAzNDkgNi45MDY1NiA1LjAwNzg2IDguMDYxMTJMNS4wMDAyOCA4LjIyMDAzTDUuMDAzMTIgMTYuNzUwN0M1LjAwMzQzIDE3Ljk0MTUgNS45Mjg4NSAxOC45MTYxIDcuMDk5NjYgMTguOTk0OUw3LjI1MzcxIDE5LjAwMDFMMTUuNzUxOCAxOC45ODg0QzE2Ljk0MTUgMTguOTg2OCAxNy45MTQ1IDE4LjA2MiAxNy45OTM1IDE2Ljg5MjNMMTcuOTk4NyAxNi43Mzg0VjEzLjIzMjFDMTcuOTk4NyAxMi44MTc5IDE4LjMzNDUgMTIuNDgyMSAxOC43NDg3IDEyLjQ4MjFDMTkuMTI4NCAxMi40ODIxIDE5LjQ0MjIgMTIuNzY0MyAxOS40OTE4IDEzLjEzMDNMMTkuNDk4NyAxMy4yMzIxVjE2LjczODRDMTkuNDk4NyAxOC43NDA3IDE3LjkyOTMgMjAuMzc2OSAxNS45NTI4IDIwLjQ4MjlMMTUuNzUzOCAyMC40ODg0TDcuMjU4MjcgMjAuNTAwMUw3LjA1NDk1IDIwLjQ5NDlDNS4xNDIzOSAyMC4zOTU0IDMuNjA4OTUgMTguODYyNyAzLjUwODM3IDE2Ljk1MDJMMy41MDMxMiAxNi43NTExTDMuNTAwODkgOC4yNTI3TDMuNTA1MjkgOC4wNTAyQzMuNjA1MzkgNi4xMzc0OSA1LjEzODY3IDQuNjA0NDkgNy4wNTA5NiA0LjUwNTI3TDcuMjUwMSA0LjUwMDE3SDEwLjc0OTVINy4yNTAxWk0xMy43NDgxIDMuMDAxNDZMMjAuMzAxOCAzLjAwMTk3TDIwLjQwMTQgMy4wMTU3NUwyMC41MDIyIDMuMDQzOTNMMjAuNTU5IDMuMDY4MDNDMjAuNjEyMiAzLjA5MTIyIDIwLjY2MzQgMy4xMjE2MyAyMC43MTExIDMuMTU4ODVMMjAuNzgwNCAzLjIyMTU2TDIwLjg2NDEgMy4zMjAxNEwyMC45MTgzIDMuNDEwMjVMMjAuOTU3IDMuNTAwNTdMMjAuOTc2MiAzLjU2NDc2TDIwLjk4OTggMy42Mjg2MkwyMC45OTkyIDMuNzIyODJMMjAuOTk5NyAxMC4yNTU0QzIwLjk5OTcgMTAuNjY5NiAyMC42NjM5IDExLjAwNTQgMjAuMjQ5NyAxMS4wMDU0QzE5Ljg3IDExLjAwNTQgMTkuNTU2MiAxMC43MjMyIDE5LjUwNjUgMTAuMzU3MUwxOS40OTk3IDEwLjI1NTRMMTkuNDk4OSA1LjU2MTQ3TDEyLjI3OTcgMTIuNzg0N0MxMi4wMTM0IDEzLjA1MSAxMS41OTY4IDEzLjA3NTMgMTEuMzAzMSAxMi44NTc1TDExLjIxOSAxMi43ODQ5QzEwLjk1MjcgMTIuNTE4NyAxMC45Mjg0IDEyLjEwMjEgMTEuMTQ2MiAxMS44MDg0TDExLjIxODggMTEuNzI0M0wxOC40MzY5IDQuNTAxNDZIMTMuNzQ4MUMxMy4zNjg0IDQuNTAxNDYgMTMuMDU0NiA0LjIxOTMxIDEzLjAwNSAzLjg1MzI0TDEyLjk5ODEgMy43NTE0NkMxMi45OTgxIDMuMzcxNzcgMTMuMjgwMyAzLjA1Nzk3IDEzLjY0NjQgMy4wMDgzMUwxMy43NDgxIDMuMDAxNDZaIiBmaWxsPSIjMjEyMTIxIiAvPjwvc3ZnPg==)',\n markdownRespectCRLF: config.markdownRespectCRLF || 'true',\n internalLiveRegionFadeAfter: config.internalLiveRegionFadeAfter || '1000',\n accent: config.accent || '#0063B1',\n subtle: config.subtle || '#767676'\n };\n};\n\nconst getAvatarStyling = (config: IMsdyn365PvaChatConnectorConfig): IAvatarStyling => {\n return {\n avatarBorderRadius: config.avatarBorderRadius || '50%',\n avatarSize: config.avatarSize || '40',\n botAvatarBackgroundColor: config.botAvatarBackgroundColor || 'undefined',\n botAvatarImage: config.botAvatarImage || '',\n botAvatarInitials: config.botAvatarInitials || '',\n userAvatarBackgroundColor: config.userAvatarBackgroundColor || 'undefined',\n userAvatarImage: config.userAvatarImage || '',\n userAvatarInitials: config.userAvatarInitials || '',\n showAvatarInGroup: config.showAvatarInGroup || 'status'\n };\n};\n\nconst getSuggestedActionStyling = (config: IMsdyn365PvaChatConnectorConfig): ISuggestedActionStyling => {\n return {\n suggestedActionLayout: config.suggestedActionLayout || 'carousel',\n suggestedActionBackground: config.suggestedActionBackground || 'White',\n suggestedActionTextColor: config.suggestedActionTextColor || '',\n suggestedActionBorderColor: config.suggestedActionBorderColor || '',\n suggestedActionBorderRadius: config.suggestedActionBorderRadius || '0',\n suggestedActionBorderStyle: config.suggestedActionBorderStyle || 'solid',\n suggestedActionBorderWidth: config.suggestedActionBorderWidth || '2',\n suggestedActionDisabledBorderStyle: config.suggestedActionDisabledBorderStyle || 'solid',\n suggestedActionDisabledBorderWidth: config.suggestedActionDisabledBorderWidth || '2',\n suggestedActionDisabledTextColor: config.suggestedActionDisabledTextColor || '',\n suggestedActionHeight: config.suggestedActionHeight || '40',\n suggestedActionImageHeight: config.suggestedActionImageHeight || '20',\n suggestedActionsCarouselFlipperCursor: config.suggestedActionsCarouselFlipperCursor || '',\n suggestedActionsCarouselFlipperBoxWidth: config.suggestedActionsCarouselFlipperBoxWidth || '40',\n suggestedActionsCarouselFlipperSize: config.suggestedActionsCarouselFlipperSize || '20',\n suggestedActionsFlowMaxHeight: config.suggestedActionsFlowMaxHeight || '',\n suggestedActionsStackedHeight: config.suggestedActionsStackedHeight || '',\n suggestedActionsStackedOverflow: config.suggestedActionsStackedOverflow || '2',\n suggestedActionsStackedLayoutButtonMaxHeight: config.suggestedActionsStackedLayoutButtonMaxHeight || '',\n suggestedActionsStackedLayoutButtonTextWrap: config.suggestedActionsStackedLayoutButtonTextWrap || false\n };\n};\n\n/**\n * Generates style options for the Botframework-WebChat widget\n * @param config IMsdyn365PvaChatConnectorConfig\n * @returns IChatStyling\n */\nexport const getChatStyleOptions = (config: IMsdyn365PvaChatConnectorConfig): IChatStyling => {\n const bubbleStyling = getBubbleStyling(config);\n const avatarStyling = getAvatarStyling(config);\n const suggestedActionStyling = getSuggestedActionStyling(config);\n const otherStyling = getOtherStyling(config);\n return {\n hideUploadButton: true,\n primaryFont: fontFormat(config.primaryFont),\n backgroundColor: config.backgroundColor || 'White',\n ...bubbleStyling,\n ...avatarStyling,\n ...suggestedActionStyling,\n ...otherStyling\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';\nimport { IAction, IDispatch, INext } from '../interfaces';\nimport { TContextProvider } from '../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../msdyn365-pva-chat-connector';\n\nexport class CommerceChatStore {\n private props: IPvaChatConnectorViewProps;\n private setNewMessageAction: React.Dispatch>;\n private provider?: TContextProvider;\n\n /**\n * Gets conversation token\n * @param props IPvaChatConnectorViewProps\n */\n public static async getDirectLineToken(props: IPvaChatConnectorViewProps): Promise {\n if (props.config.powervaDirectlineTokenURL && props.config.botID && props.config.tenantID) {\n // use direct line token url, bot id and tenant id from module config to get conversation token\n const url = `${props.config.powervaDirectlineTokenURL}?botId=${props.config.botID}&tenantId=${props.config.tenantID}`;\n const options = { method: 'GET' };\n return fetch(url, options)\n .then(r => r.json())\n .then(r => {\n if (r.token) {\n return r.token;\n } else {\n throw r;\n }\n });\n }\n\n // use direct line token url, bot id and tenant id from app config to get conversation token\n const url = `${props.context.app.config.pvaChatConnectorPowervaDirectlineTokenURL}?botId=${props.context.app.config.pvaChatConnectorBotID}&tenantId=${props.context.app.config.pvaChatConnectorTenantID}`;\n const options = {\n method: 'GET'\n };\n return fetch(url, options)\n .then(r => r.json())\n .then(r => {\n if (r.token) {\n return r.token;\n } else {\n throw r;\n }\n });\n }\n\n /**\n * Creates a new instance of commerce store for WebChat\n * @param props IPvaChatConnectorViewProps\n * @param provider TContextProvider\n * @param setNewMessage React.Dispatch>\n */\n constructor(\n props: IPvaChatConnectorViewProps,\n provider: TContextProvider | undefined,\n setNewMessage: React.Dispatch>\n ) {\n this.props = props;\n this.provider = provider;\n this.setNewMessageAction = setNewMessage;\n }\n\n /**\n * Handles custom chat actions\n * @param param0 {\n * dispatch: IDispatch;\n * next: INext;\n * action: IAction;\n * }\n */\n public async actionHandler({ dispatch, next, action }: { dispatch: IDispatch; next: INext; action: IAction }): Promise {\n const atype = action.type;\n\n switch (atype) {\n case 'DIRECT_LINE/CONNECT_FULFILLED': {\n // sets language\n dispatch({\n type: 'WEB_CHAT/SEND_EVENT',\n payload: {\n name: 'webchat/join',\n value: { language: window.navigator.language }\n }\n });\n break;\n }\n case 'DIRECT_LINE/INCOMING_ACTIVITY': {\n const activity = action.payload.activity;\n if (activity?.from?.role === 'bot') {\n // Sets flag for new message (will be use to indicate new messages from bot when chat is minimized)\n this.setNewMessageAction(true);\n }\n break;\n }\n case 'DIRECT_LINE/POST_ACTIVITY_FULFILLED': {\n switch (action.payload.activity.name) {\n case 'webchat/join':\n {\n if (this.provider !== undefined) {\n // Sets Chat Context\n dispatch({\n type: 'WEB_CHAT/SEND_EVENT',\n payload: {\n name: 'pvaSetContext',\n value: this.provider()\n }\n });\n }\n }\n break;\n case 'pvaSetContext':\n {\n if (this.props.config.triggerQuery) {\n // Initialize chat after Chat Context is set\n dispatch({\n type: 'WEB_CHAT/SEND_MESSAGE_BACK',\n payload: {\n text: this.props.config.triggerQuery\n }\n });\n }\n }\n break;\n default: {\n // default nothing\n }\n }\n break;\n }\n default: {\n // default nothing\n }\n }\n\n return next(action);\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, { FunctionComponent, useMemo, useState } from 'react';\nimport { getChatStyleOptions } from '../helpers/StyleComposers';\nimport { IChatCoreProps, IAction, IDispatch } from '../interfaces';\nimport { CommerceChatStore } from '../helpers/CommerceChatStore';\n\n/**\n * Just a core Chat component\n * @param props\n */\n\nconst ChatCore: FunctionComponent = (props: IChatCoreProps) => {\n const { ReactWebChat } = window.WebChat;\n\n const [userId, setUserId] = useState('');\n useMemo(() => {\n if (props.provider) {\n const ctx = props.provider();\n if (ctx.UserId) {\n setUserId(typeof ctx.UserId === 'string' ? ctx.UserId : ctx.UserId.value.toString());\n }\n }\n }, [props.provider]);\n\n const directLine = useMemo(() => {\n return window.WebChat.createDirectLine({ token: props.directLineToken });\n }, [props.directLineToken]);\n\n const commerceChatStore = useMemo(() => {\n if (directLine && props.provider) {\n return new CommerceChatStore(props.config, props.provider, props.setNewMessage);\n }\n return undefined;\n }, [props.provider, directLine]);\n\n const store = useMemo(() => {\n return window.WebChat.createStore(\n {},\n ({ dispatch }: { dispatch: IDispatch }) => (next: (action: IAction) => IDispatch) => (action: IAction) => {\n commerceChatStore?.actionHandler({ dispatch, next, action });\n }\n );\n }, [commerceChatStore]);\n const styleOptions = getChatStyleOptions(props.config.config);\n\n return props.directLineToken !== '' ? (\n \n ) : (\n

    Please wait while we are connecting.

    \n );\n};\n\nexport default ChatCore;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React, { FunctionComponent, useEffect, useState } from 'react';\nimport { isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport ContextProvider from '../helpers/ContextProvider';\nimport { getChatStyling } from '../helpers/StyleComposers';\nimport { TContextProvider } from '../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../msdyn365-pva-chat-connector';\nimport { CommerceChatStore } from '../helpers';\nimport ChatCore from './ChatCore';\n\nconst INVALID_TOKEN = 'INVALID_TOKEN';\nconst CLOSE_IMG_DATA =\n 'M443.6,387.1L312.4,255.4l131.5-130c5.4-5.4,5.4-14.2,0-19.6l-37.4-37.6c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4 L256,197.8L124.9,68.3c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4L68,105.9c-5.4,5.4-5.4,14.2,0,19.6l131.5,130L68.4,387.1 c-2.6,2.6-4.1,6.1-4.1,9.8c0,3.7,1.4,7.2,4.1,9.8l37.4,37.6c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1L256,313.1l130.7,131.1 c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1l37.4-37.6c2.6-2.6,4.1-6.1,4.1-9.8C447.7,393.2,446.2,389.7,443.6,387.1z';\n\n/**\n * Outer chat component, displays chat button, and proactive chat, and handles custom actions\n * @param props IPvaChatConnectorViewProps\n */\nconst Chat: FunctionComponent = (props: IPvaChatConnectorViewProps) => {\n const [loaded, setLoaded] = useState(false); // loaded & minimized are needed as ChatWidget should not be removed from DOM (it resets chat)\n const [minimized, setMinimized] = useState(true);\n const [newMessage, setNewMessage] = useState(false); // TODO: use this to indicate new message in minimized chat\n const [token, setToken] = useState(''); // holds conversation token for WebChat\n const [isProactive, setIsProactive] = useState(false); // if proactive chat is triggered\n const [proactiveMessage, setProactiveMessage] = useState(props.config.proactiveDefaultMessage);\n const [closed, setClosed] = useState(false);\n const [provider, setProvider] = useState();\n const isMobileDevice =\n isMobile({ variant: VariantType.Browser, context: props.context.request }) === 'xs' ||\n isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\n const chatStyle = getChatStyling(props.config, minimized, isMobileDevice); // generates chat style objects based on configuration\n const handleMaximizeButtonClick = () => {\n setLoaded(true);\n setMinimized(false);\n setNewMessage(false);\n };\n const handleMinimizeButtonClick = () => {\n setMinimized(true);\n setNewMessage(false);\n };\n const handleCloseButtonClick = () => {\n setClosed(true);\n setLoaded(false);\n setMinimized(true);\n setNewMessage(false);\n setIsProactive(false);\n };\n useEffect(() => {\n if (loaded) {\n CommerceChatStore.getDirectLineToken(props)\n .then(directLineToken => {\n setToken(directLineToken);\n })\n .catch(e => {\n setToken(INVALID_TOKEN);\n props.telemetry.exception(e);\n });\n }\n }, [loaded]);\n useEffect(() => {\n (async () => {\n const contextProvider = new ContextProvider(props); // Generates context (provider) and checks for proactive chat triggers\n const prov = await contextProvider.init();\n if (contextProvider.data.enabled) {\n props.context.telemetry.debug(`[Chat] Proactive chat was enabled: '${contextProvider.data.enabled}'.`);\n // if proactive chat is triggered\n const timeout = contextProvider.data.timeout * 1000; // timeout is there only for WaitOnTime trigger\n setTimeout(() => {\n if (!loaded) {\n props.context.telemetry.debug(`[Chat] Proactive chat was loaded: ${loaded}.`);\n setProactiveMessage(contextProvider.data.message);\n setIsProactive(true);\n }\n }, timeout);\n }\n setProvider(() => prov);\n })().catch(e => props.telemetry.exception(e));\n }, []);\n useEffect(() => {\n if (closed) {\n setClosed(false);\n }\n }, [token, provider]);\n const isValidToken = (): boolean => {\n return `${token}` !== INVALID_TOKEN;\n };\n return (\n \n {minimized && (!isProactive || (isProactive && loaded)) && (\n \n )}\n {minimized && isProactive && !loaded && (\n
    \n
    \n {props.config.storeLogoURL && (\n logo\n )}\n
    \n
    \n
    \n

    {proactiveMessage}

    \n \n
    \n
    \n )}\n {loaded && isValidToken() && (\n
    \n
    \n {props.config.storeLogoURL && (\n logo\n )}\n
    \n \n
    \n
    \n \n
    \n
    \n )}\n {!isValidToken() &&
    {props.config.unableToLoadChatMessage}
    }\n
    \n );\n};\n\nexport default Chat;\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';\nimport { Chat, IPvaChatConnectorViewProps } from './index';\n\nexport default (props: IPvaChatConnectorViewProps) => {\n // Only for CDN loading check, won't be needed with npm package of Botframework-WebChat\n const [loaded, setLoaded] = React.useState(false);\n const p = {\n ...props\n };\n\n // Just to verify that CDN Chat Widget js lib is loaded\n // Remove this block if moving to npm package of Botframework-WebChat\n const interval = setInterval(() => {\n const t = typeof window;\n if (t !== 'undefined' && window.WebChat) {\n setLoaded(true);\n clearInterval(interval);\n }\n }, 100);\n\n return
    {loaded && }
    ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
    \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
    \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
    \n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
    \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
    \n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
    \n
    \n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
    \n \n {errorMessage}\n {products}\n \n {pagination}\n
    \n
    \n
    \n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

    \n {title.titlePrefix}\n {title.titleText}({title.titleCount})\n

    \n
    \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\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 { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
    \n
    {this.props.promoCodeHeadingText}
    \n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

    \n {this.state.error}\n

    \n {this._renderAppliedPromoCode(this.props)}\n
    \n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
    \n
    \n \n \n
    \n
    \n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
    \n
    \n {'Code '}\n {coupon.Code}\n {'Applied '}\n
    \n \n
    \n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\n \n);\n"],"names":["componentClassName","detailsViewClassName","listViewClassName","viewSelectedClassName","OrderHistoryWithSearchAndFiltersViewModeState","OrderHistoryWithSearchAndFiltersViewModeComponent","msdyn365Commerce","createComponent","component","props","_props$resources$deta","_props$resources","_props$resources$deta2","_props$resources2","_props$resources$list","_props$resources3","_props$resources$list2","_props$resources4","viewModeState","setViewModeState","React","currentViewModeState","onClickHandler","newViewModeState","onClick","viewModeDetailedViewAttributes","getTelemetryAttributes","telemetryContent","getPayloadObject","TelemetryConstant","ViewMode","viewModeListViewAttributes","className","classnames","Button","Object","assign","DetailedView","resources","detailedViewOptionAriaLabel","title","role","ListView","listViewOptionAriaLabel","ProductSpecification","constructor","super","handleHeadingChange","event","this","config","heading","text","target","value","_toggle","drawerListId","state","setState","isDrawerOpen","undefined","isAdditionalMediaDrawerOpen","async","context","data","telemetry","catalogId","Msdyn365","request","validateCatalogId","reaction","product","result","RecordId","actionInput","AttributesForSelectedVariantInput","actionContext","requestContext","apiSettings","channelId","getAttributesForSelectedVariant","catch","error","message","debug","shouldComponentUpdate","nextProps","nextState","render","_heading$tag","productSpecificationData","length","isAccrodion","displayStyle","viewProps","_objectSpread","handleText","moduleProps","ProductSpecificationTableProps","tag","ProductSpecificationTableBodyProps","editProps","onEdit","productSpecificationResult","_createDrawerBody","_createTableBody","renderView","content","_this$props$context$r","_this$props$data$addi","tableRows","map","index","cellData","_renderProductCell","ProductSpecificationTableRow","key","productName","Name","app","OmniChannelMedia","additionalMediaLocations","push","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Module","Drawer","collapseProps","timeout","isOpen","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","additionalDownloadsText","prevState","mediaLocation","Uri","href","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","dangerouslySetInnerHTML","BooleanValue","trueValueText","falseValueText","__decorate","observer","rowdata","ArrayExtensions","hasElements","filter","row","ObjectExtensions","isNullOrUndefined","Node","PvaChatConnector","componentDidMount","isOboRequest","url","botFrameworkCDNURL","pvaChatConnectorBotFrameworkCDNURL","script","document","createElement","src","crossOrigin","body","appendChild","BackTopFooter","backtoTopText","getTelemetryObject","telemetryPageName","friendlyName","destination","BackToTop","ariaLabel","BusinessPartnerPromotionTermsParagraph","_ref","description","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","checked","onToggleTermOfServiceModal","termsOfServiceModalOpened","onSubmit","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","callerContext","showSubmitButton","showTermsOfService","errorMessage","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","status","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","type","termsOfServiceLinkText","onChange","termsOfServiceAgreementText","termsOfServiceModal","Modal","horizontalPosition","verticalPosition","autoFocus","fade","toggle","ModalHeader","termsOfServiceModalHeading","ModalBody","MsDyn365","submitButton","submitRequestLabel","disabled","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","label","user","StringExtensions","isNullOrEmpty","IsAdmin","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","payLoad","attributes","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","forEach","link","linkText","contentAction","etext","editableLink","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","links","onTextChange","CookieCompliance","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","bind","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","isBrowser","onDismiss","CookieComplianceBanner","ref","AlertProps","Content","acceptButton","setConsentCookie","location","reload","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","item","ProductComparisonItem","ProductComparisonState","instance","accountInformation","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","id","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","static","slots","productComparisonPreview","buttonText","isDisabled","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","componentWillUnmount","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","isMobile","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","items","getCatalogId","scope","getRichTextHtml","HeadingTag","accordion","descriptionCount","isFirstDescription","AddressShow","AddressDetail","AddressSelect","_ref2","SelectAddress","addButton","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","SelectItem","input","showItems","AddressAddUpdate","_ref3","AddressForm","hasError","shipUsaOnlyMessageText","allowInternationalShipping","renderDeliveryLimitationMessage","AddressItem","alert","filteredCountries","clonedInput","displayData","AddressError","CheckoutShippingAddress","checkoutErrorRef","viewState","showAddress","showAddressSelect","showAddOrUpdateAddress","cartLineImages","isShowAddress","isShowAddresList","isShowAddOrUpdateAddress","InvoiceListView","header","invoiceRequestModal","pagination","linksElements","querySelectorAll","console","log","l","setAttribute","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","imageSettings","_props$config$thumbna2","tabIndex","Image","gridSettings","thumbnailImageSettings","loadFailureBehavior","defaultThumbnailImageSettings","viewports","xs","q","w","h","xl","lazyload","cropFocalRegion","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","altText","getMediaGalleryItems","lastUpdate","GetThumbnailItemComponent","image","imageId","modifiedActiveIndex","_props$config$thumbna","_props$callbackToggle","_props$callbackThumbn","callbackToggle","call","callbackThumbnailClick","activeIndex","handleKeyDown","keyCode","KeyCodes","Enter","preventDefault","onKeyDown","fullScreenTitleText","CarouselProps","MediaGallery","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","loading","emptyMessage","backToShoppingLink","list","table","moreButton","ItemComponent","itemProps","checkoutPlainContainerProps","_props$data$checkout$","checkout","shippingAddress","nonEligibleItems","setnonEligibleItems","checkEligibilityForShippingAddress","moduleState","setHasError","_props$data$checkout$2","notEligibleList","cart","checkoutCart","_cart$CartLines","itemIds","CartLines","cl","ItemId","addressCountry","ThreeLetterISORegionName","addressState","State","addressRegion","County","GetProductEligibilityInput","Id","eligibilityData","GetProductEligibilityAction","i","_getExtensionPropertyValueByKey","properties","valueType","_properties$find","property","find","p","Key","Value","ExtensionProperties","CommercePropertyValueEnum","string","IsEligible","removeIneligibleItems","cartState","checkoutState","badCartLines","includes","removeCartLines","cartLineIds","window","getCartLineFromItemId","itemId","_props$data$checkout$3","Description","channelReferenceId","getRandomValues","rnds8","Uint8Array","rng","crypto","msCrypto","Error","uuid","REGEX","test","byteToHex","toString","substr","arr","offset","arguments","toLowerCase","validate","TypeError","options","buf","rnds","random","stringify","CartAmountTrigger","ProactiveChatTrigger","totalInCart","min","proactiveOnCartAmountMin","max","proactiveOnCartAmountMax","name","_getCart","isEmpty","TotalAmount","retVal","getContextProvider","eCommerceCustIsProactiveChat","eCommerceCustProactiveType","eCommerceCustProactiveShoppingCartAmount","getMessage","proactiveOnCartAmountMessage","proactiveDefaultMessage","getCartState","CartNumberOfItemsTrigger","numberOfItems","proactiveOnCartNoOfItemsMin","proactiveOnCartNoOfItemsMax","TotalItems","eCommerceCustProactiveShoppingCartNumberOfItems","proactiveOnCartNoOfItemsMessage","CartSpecificProductTrigger","isValid","_cart$cart$CartLines","_cart$cart$CartLines2","proactiveOnCartSpecificProductList","_this$props$config$pr","j","_this$props$config$pr2","eCommerceCustProactiveShoppingCartSpecificProduct","proactiveOnCartSpecificProductMessage","ProactiveChatNames","DateRangeTrigger","start","_toDate","proactiveOnDateRangeStart","end","proactiveOnDateRangeEnd","now","Date","setHours","getTime","DateRange","eCommerceCustProactiveFromDate","eCommerceCustProactiveToDate","proactiveOnDateRangeMessage","date","dateParts","split","FromSpecificPageTrigger","proactiveOnFromSpecificPageList","fromSpecificPageTrimmed","trim","referrer","indexOf","FromSpecificPage","eCommerceCustProactiveCameFromPage","proactiveOnFromSpecificPageMessage","PageVisitTrigger","visits","cookieName","expdate","setTime","_updateVisitCounter","proactiveOnPageVisitNumber","clear","set","domain","hostname","path","pathname","expires","PageVisits","eCommerceCustProactiveNumberOfVisits","proactiveOnPageVisitMessage","get","SpecificCountryRegionTrigger","customerCountryCode","suggestedMarket","proactiveOnSpecificLocation","eCommerceCustProactiveCountryCode","SpecificLocation","proactiveOnSpecificCountryRegionMessage","SpecificPageTrigger","proactiveOnSpecificPageList","specificPageTrimmed","SpecificPage","proactiveOnSpecificPageMessage","WaitOnTimeTrigger","proactiveOnWaitTimeSeconds","isNaN","waitTimeInMilliseconds","Number","triggerTime","WaitOnTime","eCommerceCustProactiveTimeOnPage","proactiveOnWaitTimeMessage","ProactiveTriggers","userId","uuidv4","_getContext","enabled","_proactiveCheck","e","exception","provider","_getProvider","eCommerceOperatingUnitNumber","oun","eCommerceBaseUrl","baseUrl","eCommerceDataAreaId","channel","InventLocationDataAreaId","UserId","AccountNumber","customerAccountNumber","Email","emailAddress","FirstName","firstName","anonymousUserName","LastName","lastName","eCommerceCustPageURL","eCommerceCustChatType","proactiveChatEnabled","proactive","_isProactive","getChatWrapperStyle","position","top","right","bottom","left","zIndex","display","justifyContent","getMaximizedChatWrapperStyle","isMobileDevice","height","width","padding","chatHeight","chatWidth","getChatButtonStyle","alignItems","backgroundColor","startChatButtonBackgroundColor","startChatButtonTextColor","borderColor","startChatButtonBorderColor","borderRadius","startChatButtonBorderRadius","borderStyle","startChatButtonBorderStyle","borderWidth","startChatButtonBorderWidth","storeLogoURL","cursor","outlineStyle","alignSelf","boxShadow","WebkitBoxShadow","MozBoxShadow","getButtonStoreLogoStyle","headerBackgroundColor","headerTextColor","marginRight","boxSizing","getChatStoreLogoStyle","margin","getChatMessagesStyle","minimized","getChatMessageHeader","chatHeaderHeight","backgroundImage","headerBackgroundImageURL","backgroundRepeat","flexDirection","chatBorderStyle","chatBorderWidth","getMinimizeButtonStyle","borderTop","borderLeft","borderRight","borderBottom","marginTop","getCloseButtonStyle","border","getChatMessageContent","chatBorderColor","getProactiveWrapperStyle","getProactiveMessageHeader","getProactiveMessageContent","getProactiveButtonStyle","outline","fontFormat","font","join","CommerceChatStore","setNewMessage","setNewMessageAction","powervaDirectlineTokenURL","botID","tenantID","fetch","method","then","r","json","token","pvaChatConnectorPowervaDirectlineTokenURL","pvaChatConnectorBotID","pvaChatConnectorTenantID","dispatch","next","action","payload","language","navigator","_activity$from","activity","from","triggerQuery","ReactWebChat","WebChat","setUserId","useState","useMemo","ctx","directLine","createDirectLine","directLineToken","commerceChatStore","store","createStore","actionHandler","styleOptions","bubbleStyling","bubbleBackground","bubbleTextColor","bubbleBorderColor","bubbleBorderRadius","bubbleBorderStyle","bubbleBorderWidth","bubbleFromUserBackground","bubbleFromUserTextColor","bubbleFromUserBorderColor","bubbleFromUserBorderRadius","bubbleFromUserBorderStyle","bubbleFromUserBorderWidth","getBubbleStyling","avatarStyling","avatarBorderRadius","avatarSize","botAvatarBackgroundColor","botAvatarImage","botAvatarInitials","userAvatarBackgroundColor","userAvatarImage","userAvatarInitials","showAvatarInGroup","getAvatarStyling","suggestedActionStyling","suggestedActionLayout","suggestedActionBackground","suggestedActionTextColor","suggestedActionBorderColor","suggestedActionBorderRadius","suggestedActionBorderStyle","suggestedActionBorderWidth","suggestedActionDisabledBorderStyle","suggestedActionDisabledBorderWidth","suggestedActionDisabledTextColor","suggestedActionHeight","suggestedActionImageHeight","suggestedActionsCarouselFlipperCursor","suggestedActionsCarouselFlipperBoxWidth","suggestedActionsCarouselFlipperSize","suggestedActionsFlowMaxHeight","suggestedActionsStackedHeight","suggestedActionsStackedOverflow","suggestedActionsStackedLayoutButtonMaxHeight","suggestedActionsStackedLayoutButtonTextWrap","getSuggestedActionStyling","otherStyling","groupTimestamp","sendTimeout","sendTimeoutForAttachments","timestampColor","timestampFormat","notificationDebounceTimeout","hideToaster","toasterHeight","toasterMaxHeight","toasterSingularMaxHeight","toastFontSize","toastIconWidth","toastSeparatorColor","toastTextPadding","toastErrorBackgroundColor","toastErrorColor","toastInfoBackgroundColor","toastInfoColor","toastSuccessBackgroundColor","toastSuccessColor","toastWarnBackgroundColor","toastWarnColor","typingAnimationBackgroundImage","typingAnimationDuration","typingAnimationHeight","typingAnimationWidth","videoHeight","markdownExternalLinkIconImage","markdownRespectCRLF","internalLiveRegionFadeAfter","accent","subtle","getOtherStyling","hideUploadButton","primaryFont","getChatStyleOptions","userID","INVALID_TOKEN","loaded","setLoaded","setMinimized","newMessage","setToken","isProactive","setIsProactive","proactiveMessage","setProactiveMessage","closed","setClosed","setProvider","Viewport","chatStyle","getChatStyling","ChatWrapperStyle","MaximizedChatWrapperStyle","ChatButtonStyle","ButtonStoreLogoStyle","ChatStoreLogoStyle","ChatMessagesStyle","ChatMessageHeader","MinimizeButtonStyle","CloseButtonStyle","ChatMessageContent","ProactiveWrapperStyle","ProactiveMessageHeader","ProactiveMessageContent","ProactiveButtonStyle","RedDotStyle","background","handleMaximizeButtonClick","useEffect","getDirectLineToken","contextProvider","ContextProvider","prov","init","setTimeout","isValidToken","style","alt","fontWeight","fontSize","chatButtonHeader","chatButtonText","flexGrow","handleMinimizeButtonClick","handleCloseButtonClick","version","viewBox","xmlSpace","d","fill","ChatCore","unableToLoadChatMessage","interval","setInterval","clearInterval","Chat","renderCustomerName","customer","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","search","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","promotionalContent","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","current","focus","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","navDrawerList","Array","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","sm","md","lg","_categoryImage$imageS","ImageData","categoryImageSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","addEventListener","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","colProps","toggleButtonProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","_props$context$action","SearchResultContainer","ProductsContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","query","recommendation","ProductComparisonButtonViewFunctionalComponent","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","appliedPromo","addPromoCode","promoCode","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","placeholder","_removePromotion","_event$currentTarget$","code","currentTarget","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","Code","ApplyPromoCode","promoCodeHeadingText"],"sourceRoot":""}