{"version":3,"sources":["webpack:///src/modules/product-specification/components/product-specification-table-stucture.tsx?4b07","webpack:///src/modules/country-picker/country-picker.tsx?051f","webpack:///src/modules/breadcrumb/breadcrumb.view.tsx?58b4","webpack:///src/modules/image-list/image-list.tsx?18cb","webpack:///src/modules/product-specification/product-specification.tsx?f393","webpack:///src/modules/fabrikam/views/buybox.view.tsx?68a7","webpack:///src/modules/interactive-feature-item/interactive-feature-item.view.tsx?d4e3","webpack:///src/modules/back-top-footer/back-top-footer.tsx?0e13","webpack:///src/modules/image-list/image-list.view.tsx?cab9","webpack:///src/modules/adventureworks/views/components/carticon.component.tsx?3d75","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-description.tsx?0029","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-links.tsx?d307","webpack:///src/modules/account-invoice-tile/account-invoice-tile.tsx?9a78","webpack:///src/modules/breadcrumb/components/link.tsx?b7b8","webpack:///src/modules/breadcrumb/components/separator.tsx?7c35","webpack:///src/modules/breadcrumb/breadcrumb.tsx?3387","webpack:///src/modules/accordion-item/accordion-item.view.tsx?b04f","webpack:///src/modules/accordion-item/accordion-item.tsx?fc54","webpack:///src/modules/aad-generic/aad-generic.view.tsx?ecad","webpack:///src/modules/fabrikam/views/ratings-histogram.view.tsx?96ae","webpack:///src/modules/product-specification/product-specification.view.tsx?bfbe","webpack:///src/modules/accordion/accordion.view.tsx?8c70","webpack:///src/modules/aad-generic/aad-generic.tsx?d537","webpack:///src/index.ts?c6ae","webpack:///src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?5927","webpack:///src/modules/country-picker/country-picker.view.tsx?825b","webpack:///src/modules/interactive-feature-item/components/links.tsx?8ab2","webpack:///src/modules/interactive-feature-item/interactive-feature-item.tsx?340f","webpack:///src/modules/interactive-feature-collection/interactive-feature-collection.tsx?2538","webpack:///src/modules/organization-users-tile/organization-users-tile.view.tsx?d92a","webpack:///src/modules/map/map.tsx?e2df","webpack:///src/modules/footer-item/footer-item.tsx?f8b4","webpack:///src/modules/accordion/accordion.tsx?45c1","webpack:///src/modules/account-invoice-tile/account-invoice-tile.view.tsx?4620","webpack:///src/modules/map/map.view.tsx?cd35","webpack:///src/modules/footer-item/footer-item.view.tsx?235e","webpack:///src/modules/adventureworks/views/footer-item.view.tsx?9747","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?8d2f","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?2a03","webpack:///src/modules/organization-users-tile/organization-users-tile.tsx?9c60","webpack:///src/modules/account-customer-balance/account-customer-balance.view.tsx?35d2"],"names":["ProductSpecificationTableRow","productName","cellData","className","React","scope","dangerouslySetInnerHTML","getRichTextHtml","CountryPicker","constructor","props","super","_telemetryContent","getTelemetryObject","this","context","request","telemetryPageName","friendlyName","telemetry","_preferredSiteStorageKey","_cookieExpirationTime","closeModal","setState","isModalOpen","_handleStayOnSiteButtonClick","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","cookies","set","baseUrl","includes","isCookieValueSet","get","value","state","undefined","render","heading","subheading","countryList","actionLink","config","isConsentGiven","countryPickerHeading","MsDyn365","tag","text","editProps","onEdit","handleTextChange","requestContext","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","Button","onClick","resources","stayOnCurrentSiteButtonText","viewprops","modalContainer","moduleProps","Modal","isOpen","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","modalFooterContainer","ModalFooter","modalBodyContainer","ModalBody","link","renderCountryList","stayOnCurrentSiteButton","renderView","event","target","handleLinkTextChange","linkText","StringExtensions","isNullOrEmpty","linkUrl","destinationUrl","payLoad","getPayloadObject","attributes","getTelemetryAttributes","editableLink","ariaLabel","openInNewTab","role","additionalProperties","onTelemetryClick","onTextChange","localeItems","map","renderCountry","localeItem","localeBaseUrl","matchedCountryItem","find","item","url","imageSize","q","w","h","defaultImageSettings","viewports","xs","lg","xl","lazyload","image","imageProps","gridSettings","imageSettings","key","displayString","tabIndex","href","src","altText","loadFailureBehavior","shouldSkipToMainImage","displaySubString","BreadCrumbView","root","links","backButton","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","separator","Module","Object","Node","index","classnames","length","error","ImageList","images","paragraph","_renderImageListItems","imageList","disableLazyLoad","imageLink","imageLinkText","imageLinkAriaLabel","Msdyn365","linkAltText","linkAriaLabel","imageListTitle","viewProps","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","ProductSpecification","handleHeadingChange","_toggle","drawerListId","isDrawerOpen","data","catalogId","reaction","product","result","RecordId","actionInput","AttributesForSelectedVariantInput","actionContext","apiSettings","channelId","getAttributesForSelectedVariant","catch","message","debug","shouldComponentUpdate","nextProps","nextState","productSpecificationData","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","title","productSpecificationResult","_createDrawerBody","_createTableBody","content","_renderProductCell","Name","accordionItemContainer","Drawer","collapseProps","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","BooleanValue","trueValueText","falseValueText","observer","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderFindInStore","findInStore","storeSelector","description","modal","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","max","telemetryContent","quantity","IncrementalQuantity","id","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","input","_renderShopSimilarItem","shopSimilarItem","BuyboxView","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","rating","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","slots","MagicNumber","FeatureItemViewComponent","isMosaic","featureItem","indexItem","itemCounter","thisProps","interactiveFeatureCollectionMosaicContainer","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderMosaic","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","renderCarousel","BackTopFooter","backtoTopText","destination","BackToTop","imageListView","indexKey","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","hasInvoiceLine","totalItemsInCart","qtyLabel","format","label","style","visibility","CartIconComponent","msdyn365Commerce","createComponentOverride","component","AccountInvoiceTileDescription","_mapEditableLinks","linkdata","editableLinks","forEach","contentAction","etext","push","AccountInvoiceTileLinks","AccountInvoiceTile","linkIndex","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","OpenInvoiceBalance","toFixed","LinksComponent","Link","noclick","attribute","itemProp","Separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","_getCustomBreadcrumbLinks","itemPosition","keyIndex","toString","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","locale","NameTranslations","Url","nameTranslations","nameTranslation","ArrayExtensions","hasElements","Language","toLowerCase","Text","_getPDPLinks","categoryPaths","requestUrl","hideProductName","_goBack","window","history","back","_getPDPBackButton","query","isBrowser","document","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","_renderAccordionItemContent","items","AccordionItemView","drawer","accordionSlots","AccordionItemContainer","AccordionItemContent","accordionItemContent","AccordionItem","moduleClassName","accordionItemTitle","_onToggle","bind","accordionExpandedStateResult","accordionExpandedState","expanded","isAllExpanded","isExpandedOnInitialLoad","ControlledDrawer","interactionStyle","accordionState","update","createAccordionStateInput","aadGeneric","aadConainer","aadAPIConainer","histogramItem","buttonProps","starLabel","bar","percentage","RatingsHistogramView","histogramItems","histogramProps","ProductSpecificationView","rowdata","filter","row","ObjectExtensions","isNullOrUndefined","accordionView","AccordionContainer","accordionItems","accordionButtons","HeaderSection","HeadingWrapper","accordianButtonsContainer","AadGeneric","componentDidMount","$i2e","$element","insertServiceContent","getElementContent","initialize","interactiveFeatureCollectionView","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionDesktopItems","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionMobileContainer","singleSlideCarouselComponentProps","singleSlideCarouselItemContainer","tileItem","countryPickerView","country","InteractiveFeatureCollectionLinks","InteractiveFeatureItem","Number","featureItemLinks","_createHeading","_createParagraph","_renderImage","isNullOrWhitespace","isAriaHiddenAttribute","verifiedImageSettings","sm","md","moduleType","typeName","imagePropertyName","InteractiveFeatureCollection","Heading","headingTag","itemsCounter","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_getFeatureItem","OrganizationUsersTileView","OrganizationUsersTile","Map","mapRef","_initMap","channel","storeSelectorStateManager","isMapApiLoaded","Microsoft","Maps","current","credentials","BingMapsApiKey","pushpinAccessible","Events","addHandler","async","setSelectedStoreLocationId","_updateMap","pushpinOptions","orgUnitStoreInformation","selectedStoreLocationId","mapLocation","entities","clear","pushpins","storeLocationList","store","OrgUnitAvailability","unitStoreInfo","entries","storeLocation","OrgUnitLocation","Latitude","Longitude","isSelectedLocation","OrgUnitNumber","options","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","currentLocation","setView","center","bounds","LocationRect","fromShapes","setOptions","orgUnitNumber","setTimeout","showIndex","size","color","selectionColor","icon","_getSvgIcon","BingMapsEnabled","when","setMapModuleLoaded","loadMapApi","lang","market","ChannelCountryRegionISOCode","shouldDisplayMap","listMapViewState","displayMap","classname","show","Header","headerProps","MapProps","ref","__decorate","observable","FooterItem","footerItemClassName","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","ariaHiddenAttr","Accordion","_onExpandAll","_onCollapseAll","isDisabled","headingComponent","accordionViewProps","_renderAccordionButton","_getAccordionItem","TelemetryConstant","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","disabled","expandAllText","toggleAllSeparator","collapseAllText","MapHeader","MapView","FooterItemView","_renderElement","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess"],"mappings":"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","file":"static/js/6.4400df6196a926db1af9.chunk.js","sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 \n \n \n { cellData }\n \n \n);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICookieSetOptions, IImageDimension, ILocaleItems } from '@msdyn365-commerce/core-internal';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject,\n IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody, ModalFooter, ModalHeader, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerData } from './country-picker.data';\nimport { IActionLinkData, ICountryPickerProps } from './country-picker.props.autogenerated';\n\n/**\n * CountryPicker view props interface.\n */\nexport interface ICountryPickerViewProps extends ICountryPickerProps {\n modalContainer: IModuleProps;\n modalHeaderContainer: INodeProps;\n modalFooterContainer: INodeProps;\n modalBodyContainer: INodeProps;\n heading?: React.ReactNode;\n subheading?: React.ReactNode;\n link?: React.ReactNode;\n countryList?: React.ReactNode[];\n isModalOpen?: boolean;\n state?: ICountryPickerState;\n stayOnCurrentSiteButton?: React.ReactNode;\n}\n\n/**\n * ICountryPickerState: Interface for Country picker State.\n */\nexport interface ICountryPickerState {\n isModalOpen: boolean;\n}\n\n/**\n *\n * CountryPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\n\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationTime = 5_184_000;\n\n public constructor(props: ICountryPickerProps) {\n super(props);\n let isCookieValueSet: boolean = false;\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\n isCookieValueSet = true;\n }\n this.state = {\n isModalOpen: !isCookieValueSet && this.props.context.request.marketSettings !== undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n heading,\n subheading,\n countryList,\n actionLink\n } = this.props.config;\n\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const countryPickerHeading = heading && (\n \n );\n\n const countryPickerSubHeading = subheading && (\n \n );\n\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\n const currentSiteButton = (\n {this.props.resources.stayOnCurrentSiteButtonText}\n );\n\n const viewprops: ICountryPickerViewProps = {\n ...this.props,\n state: this.state,\n isModalOpen: this.state.isModalOpen,\n modalContainer: {\n moduleProps: this.props,\n tag: Modal,\n className: 'ms-country-picker__dialog',\n isOpen: true,\n 'aria-label': 'country-picker',\n toggle: this.closeModal,\n modalTransition: { timeout: 0 },\n shouldUpdateFocusToFirstElement: true\n },\n modalHeaderContainer: {\n tag: ModalHeader,\n className: 'ms-country-picker__modal-header',\n toggle: this.closeModal\n },\n modalFooterContainer: {\n tag: ModalFooter,\n className: 'ms-countryPicker__modal-footer'\n },\n modalBodyContainer: {\n tag: ModalBody,\n className: 'ms-counrtyPicker__modal-body'\n },\n heading: countryPickerHeading,\n subheading: countryPickerSubHeading,\n link: countryPickerActionLink,\n countryList: countryList && this.renderCountryList(),\n stayOnCurrentSiteButton: currentSiteButton\n };\n\n return this.props.renderView(viewprops);\n }\n\n /**\n * Initiate close modal.\n */\n public readonly closeModal = (): void => {\n this.setState({\n isModalOpen: false\n });\n\n };\n\n public handleParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.subheading = event.target.value;\n }\n\n public handleTextChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.heading!.text = event.target.value;\n }\n\n public handleLinkTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.actionLink?.linkText) {\n this.props.config.actionLink.linkText = event.target.value;\n }\n }\n\n public createLink(link?: IActionLinkData): React.ReactNode | null {\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\n const linkText = link?.linkText ?? '';\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: link?.ariaLabel,\n className: 'ms-countryPicker__link',\n linkText,\n linkUrl: link?.linkUrl.destinationUrl,\n openInNewTab: link?.openInNewTab,\n role: 'link',\n additionalProperties: attributes!,\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\n };\n return (\n \n );\n\n }\n return null;\n }\n\n public renderCountryList(): React.ReactNode[] | undefined {\n const marketSettings = this.props.context.request.marketSettings;\n if (!marketSettings) {\n return undefined;\n }\n const localeItems = marketSettings.localeItems;\n const countryLinks = localeItems.map((value: ILocaleItems) => {\n\n return (\n this.renderCountry(value)\n );\n });\n\n return countryLinks;\n\n }\n\n public renderCountry(localeItem: ILocaleItems): React.ReactNode | null {\n const countryList = this.props.config.countryList;\n let baseUrl = localeItem.localeBaseUrl;\n baseUrl = this._appendProtocolToUrl(baseUrl);\n const matchedCountryItem = countryList?.find(item => item.url === baseUrl);\n if (!matchedCountryItem) {\n return null;\n }\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: imageSize,\n lg: imageSize,\n xl: imageSize\n },\n lazyload: true\n };\n const image = matchedCountryItem.image;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings ?? defaultImageSettings\n };\n return (\n \n {image && }\n
\n \n {matchedCountryItem.displayString}\n \n \n {matchedCountryItem.displaySubString}\n \n
\n \n );\n\n }\n\n /**\n * Writes the current site base url to cookie and closes the country picker modal dialog.\n */\n private readonly _handleStayOnSiteButtonClick = (): void => {\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\n if (currentBaseUrl) {\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\n }\n this.closeModal();\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n * @returns - This method just writes the cookie to the browser.\n */\n private readonly _handleClick = (storageKey?: string, storageValue?: string) => () => {\n this._writeToCookie(storageKey, storageValue);\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n */\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\n if (!storageKey || !storageValue) {\n return;\n }\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\n cookieOptions.maxAge = this._cookieExpirationTime;\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\n };\n\n /**\n * Appends protocol to an url.\n * @param baseUrl - Url to be formatted.\n * @returns - URL after appending protocol.\n */\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\n };\n}\n\nexport default CountryPicker;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC = props => {\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n if (!root && !links && !backButton) {\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n return null;\n }\n return (\n \n \n {root &&\n \n {root}\n {links && separator}\n }\n {backButton &&\n \n {backButton}\n }\n {links && links.map((link, index) => (\n \n \n {link}\n {links[index + 1] && separator}\n \n \n ))}\n \n \n );\n};\n\nexport default BreadCrumbView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && (\n \n );\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { 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 { 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 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 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 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 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,\n 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 (
\n {error}\n
);\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 moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n } : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion ? {} : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n ),\n\n productSpecificationResult: isAccrodion ? productSpecificationData && this._createDrawerBody(data) : productSpecificationData && 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 return 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 private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n return 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
\n {cellData}\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 (\n {product.DateTimeOffsetValue.toUTCString()}\n );\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 (\n {product.IntegerValue}\n );\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 (\n {product.FloatValue}\n );\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\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 (\n {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'}\n );\n }\n return (\n {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'}\n );\n\n }\n\n}\n\nexport default ProductSpecification;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBuyboxProps as IBuyboxExtentionProps, IBuyboxResources as IBuyboxExtentionResources } from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const { ModuleProps, MediaGalleryContainerProps, ProductInfoContainerProps,\n addToCart, addToOrderTemplate, addToWishlist,\n telemetryContent, configure, description, findInStore,\n quantity, price, title, rating, callbacks, state, resources, inventoryLabel, shopSimilarLook, keyInPrice,\n quantityLimitsMessages, max, shopSimilarDescription, unitOfMeasure } = props;\n\n return (\n \n \n {props.mediaGallery}\n \n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n { _renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity && _renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent)}\n {inventoryLabel}\n { _renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n { _renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return (\n <>\n {textBlocks[0]}\n \n );\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return (\n <>\n {socialShare[0]}\n \n );\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return (\n \n {dropdowns.map(_renderConfigureDropdown)}\n \n );\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n max: number | undefined,\n telemetryContent?: ITelemetryContent): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const {\n resources\n } = props;\n\n const\n {\n quantity\n } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n \n {heading}\n \n {input}\n \n\n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const { title, paragraph, image, links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = (indexAux <= MagicNumber.caseNumberTwo) ? 'firstRow' : '';\n const lastRow = itemCounterAux && ((indexAux === itemCounterAux) || (indexAux === itemCounterAux - MagicNumber.caseNumberOne)) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n \n {image}\n \n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const { title, paragraph, image, links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent } = thisProps;\n return (\n \n \n {image}\n \n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return (\n <>\n {renderMosaic(props, indexItem, itemCounter)}\n \n );\n }\n return (\n \n {renderCarousel(props)}\n \n );\n};\n\nexport default FeatureItemViewComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { 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(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = item.image as unknown as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = item.text as unknown as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image &&\n \n {item.image}\n }\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\n/**\n * ICartIconData: Interface for Cart Icon Data.\n */\nexport interface ICartIconData {\n cart?: ICartState;\n}\n\n/**\n * ICartIconComponentProps: Interface for Cart Icon component props.\n */\nexport interface ICartIconComponentProps extends IComponentProps {\n className?: string;\n cartLabel: string;\n cartQtyLabel: string;\n telemetryContent?: ITelemetryContent;\n}\n\n/**\n * ICartIconComponent: Interface for Cart Icon component.\n */\nexport interface ICartIconComponent extends IComponent {\n}\n\nconst CartIconComponentActions = {};\n\n/**\n *\n * CartIcon component.\n * @extends {React.FC}\n */\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\n const { cartLabel, cartQtyLabel, data: { cart } } = props;\n const defaultCartItemCount: number = 0;\n\n // If there are invoice lines, don't update mini cart item quantity\n let cartItem = defaultCartItemCount;\n\n if (cart) {\n cartItem = cart.hasInvoiceLine ? defaultCartItemCount : cart.totalItemsInCart;\n }\n\n let qtyLabel: string = '';\n const cartMaxQuantity: number = 99;\n const maxQuantityLabel: string = '99+';\n if (cartItem > cartMaxQuantity) {\n qtyLabel = maxQuantityLabel;\n } else {\n qtyLabel = format(cartQtyLabel, cartItem);\n }\n const label = format(cartLabel, cartItem);\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const style: React.CSSProperties = {\n visibility: cart ? 'visible' : 'hidden'\n };\n return (\n \n
\n {qtyLabel}\n
\n \n );\n});\n\n// @ts-expect-error -- Compatible issue with the component override.\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\n 'CartIcon',\n { component: CartIcon, ...CartIconComponentActions }\n);\n\nexport default CartIconComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nexport interface IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: React.FC = ({ description }) => (\n

\n {description}\n

\n);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-invoice-tile.props.autogenerated';\n\nexport interface IAccountInvoiceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountInvoiceTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n { editableLinks && editableLinks.length > 0 ? : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-invoice-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountInvoiceTileLinks;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileData } from './account-invoice-tile.data';\nimport { IAccountInvoiceTileProps } from './account-invoice-tile.props.autogenerated';\nimport { AccountInvoiceTileDescription } from './components';\nimport LinksComponent from './components/account-invoice-tile-links';\n\nexport interface IAccountInvoiceTileViewProps extends IAccountInvoiceTileProps {\n AccountInvoiceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n\n}\n\n/**\n *\n * AccountInvoiceTile component.\n * @extends {React.PureComponent>}\n */\nclass AccountInvoiceTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountInvoiceTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const {\n config,\n data,\n resources,\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n const { className, heading, links } = config;\n const { accountInvoiceTileDescription } = resources;\n\n const openinvoiceAmount = data.customerBalance.result?.OpenInvoiceBalance || 0;\n const invoiceTotalAmount: string | undefined = formatCurrency(openinvoiceAmount.toFixed(2), currencyCode);\n\n const description = invoiceTotalAmount && format(accountInvoiceTileDescription, invoiceTotalAmount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountInvoiceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-invoice-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && ,\n description: description && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountInvoiceTile;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n className?: string;\n text?: string;\n href?: string;\n ariaLabel?: string;\n index: string;\n noclick?: boolean;\n telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n const linkText = text !== undefined ? text : '';\n payLoad.contentAction.etext = linkText;\n\n // Construct telemetry attribute to render\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n return (\n \n \n {linkText}\n \n \n \n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => ();\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps {\n root?: React.ReactNode;\n links?: React.ReactNode[];\n backButton?: React.ReactNode;\n separator?: React.ReactNode;\n BreadcrumbContainer: IModuleProps;\n BreadcrumbList: INodeProps;\n BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component.\n * @extends {React.PureComponent>}\n */\nclass Breadcrumb extends React.PureComponent> {\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n\n public render(): JSX.Element | null {\n\n const { className } = this.props.config;\n let rootLink = null;\n let breadcrumbLinks = null;\n let backButtonComponent = null;\n rootLink = this._getRootLink();\n const itemPosition = rootLink ? 1 : 0;\n if (this._pageType === 'Category') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n }\n } else if (this._pageType === 'Product') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n if (breaCrumbType === 'category') {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'categoryAndBack') {\n backButtonComponent = this._getPDPBackButton();\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'back') {\n backButtonComponent = this._getPDPBackButton();\n if (backButtonComponent === null) {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n }\n }\n\n } else {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n }\n const linkSeparator = ;\n\n const breadcrumbViewProps = {\n ...this.props,\n BreadcrumbContainer: {\n moduleProps: this.props,\n className: classnames('ms-breadcrumb', className),\n tag: 'nav',\n role: 'navigation'\n },\n BreadcrumbList: {\n tag: 'ol' as NodeTag,\n className: 'ms-breadcrumb_list'\n },\n BreadcrumbListItem: {\n tag: 'li',\n className: 'ms-breadcrumb_item'\n },\n root: rootLink,\n links: breadcrumbLinks,\n backButton: backButtonComponent,\n separator: linkSeparator\n };\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n }\n\n private readonly _getRootLink = (): JSX.Element | null => {\n const { root } = this.props.config;\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n return null;\n }\n return (\n );\n\n };\n\n private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n const { links } = this.props.config;\n\n if (!links || links.length === 0) {\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n return null;\n }\n const defaultValueToSubtract = 1;\n return (\n links.map((value: ILinksData, index: number) => {\n itemPosition++;\n const keyIndex = index;\n return (index !== links.length - defaultValueToSubtract) ? (\n \n ) : (\n \n {value.linkText}\n \n );\n }));\n };\n\n private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n const { data } = this.props;\n const categoryHierarchy = data.categoryHierarchy.result;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n return null;\n }\n return (\n categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n itemPosition++;\n\n const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\n\n return (\n \n );\n }));\n\n };\n\n /**\n * The function to get translation name for the locale.\n * @param locale - The locale information.\n * @param nameTranslations - The name translations names.\n * @returns - The translation name for the locale.\n */\n private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n // If friendly name for current locale is null, should use default locale.\n if (nameTranslation === undefined && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations[0];\n }\n\n return nameTranslation?.Text;\n };\n\n private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n const { data, config } = this.props;\n const categoryHierarchy = data.categoryPaths.result;\n const product = data.product.result;\n const url = this.props.context.request.url.requestUrl.href;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category path content is empty for the product');\n return null;\n }\n const links: JSX.Element[] = [];\n\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n itemPosition++;\n links.push(\n \n );\n });\n if (product && !config.hideProductName) {\n itemPosition++;\n links.push(\n \n );\n }\n return links;\n\n };\n\n private readonly _goBack = (): void => {\n window.history.back();\n };\n\n private readonly _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed = this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n if (!isBackAllowed) {\n return null;\n }\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n return null;\n }\n return (\n \n {this.props.resources.backToResultsText}\n \n );\n\n };\n}\n\nexport default Breadcrumb;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots && accordionSlots.accordionItemContent && accordionSlots.accordionItemContent.length && (_renderAccordionItemContent(accordionSlots.accordionItemContent))}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0 ? (\n items.map((item: React.ReactNode, index: number) => {\n return (\n \n {item}\n \n );\n })\n ) : null}\n \n );\n};\nexport default AccordionItemView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded = accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined ? data && config.isExpandedOnInitialLoad : (accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded);\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.accordionItemTitle = event.target.value;\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n\n}\nexport default AccordionItem;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const {\n aadGeneric,\n aadConainer,\n aadAPIConainer,\n heading\n } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\n \n \n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 = productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter((row) => !ObjectExtensions.isNullOrUndefined(row));\n\n return (\n rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n \n { rowdata }\n \n \n ) : null\n );\n};\n\nexport default ProductSpecificationView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n \n {heading}\n \n {props.accordionButtons && (\n {props.accordionButtons}\n )}\n \n \n {accordionItems}\n \n \n );\n};\n\nexport default accordionView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component.\n * @extends {React.Component>}\n */\nclass AadGeneric extends React.Component> {\n private readonly moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-expect-error\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps: IAadGenericViewProps): boolean {\n\n if (nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && \n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n };\n}\n\nexport default AadGeneric;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IAccordionExpandedState } from './data-actions/accordion-state';\nimport { createAccordionStateInput } from './data-actions/accordion-state-data-action';\nimport accordion from './modules/accordion/accordion';\nimport { interactionStyle } from './modules/accordion/accordion.props.autogenerated';\nimport accordionView from './modules/accordion/accordion.view';\n\nexport * from './modules/accordion/accordion';\nexport * from './modules/accordion/accordion.view';\n\nexport {\n accordion,\n accordionView,\n createAccordionStateInput,\n IAccordionExpandedState,\n interactionStyle\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = (props) => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer } = props;\n return (\n \n \n {title}\n \n \n {interactiveFeatureCollectionDesktopItems}\n \n \n \n { interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerViewProps } from './country-picker';\n\n/**\n * Functional component which renders country picker module.\n * @param props - Configuration for the country picker component.\n * @returns React.FC - Functional component of the country picker module.\n */\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\n const { isModalOpen, modalContainer, modalHeaderContainer, modalBodyContainer, heading, modalFooterContainer, subheading, link,\n countryList, stayOnCurrentSiteButton } = props;\n return isModalOpen && countryList ? (\n \n \n {heading}\n {subheading}\n \n \n {countryList.map((country) => (\n <>\n {country}\n \n ))}\n \n \n {stayOnCurrentSiteButton}\n {link}\n \n \n ) : null;\n};\n\nexport default countryPickerView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n { editableLinks && ArrayExtensions.hasElements(editableLinks) ? : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\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: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n 'tabindex': '0',\n 'role': 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph 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.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = (item?.imageSettings?.viewports) ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, Heading, IComponentNodeProps, IModuleProps, INodeProps,\n ISingleSlideCarouselProps, ITelemetryContent,\n NodeTag, SingleSlideCarousel } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps, ITitleData } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return (\n \n );\n }\n\n private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const viewProps = {\n ...this.props,\n title: InteractiveFeatureCollection._createHeading(title),\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems: itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) => InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter))\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n}\n\nexport default InteractiveFeatureCollection;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.PureComponent> {\n @observable public map: Microsoft.Maps.Map | undefined;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n this._initMap();\n this._updateMap();\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n }\n\n public render(): JSX.Element | null {\n\n const {\n config: {\n heading,\n className\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n if (storeSelectorStateManager?.isMapApiLoaded) {\n\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\n });\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude), options);\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true });\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- Time out.\n }, 500);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link && link.linkUrl && link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.text = event.target.value;\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.link!.linkText = event.target.value;\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return (\n {link.linkText}\n );\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, NodeTag, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.bind(this);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems: slots && slots.accordionItems && slots.accordionItems.length > 0 && slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n { resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n\n}\n\nexport default Accordion;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileViewProps } from './account-invoice-tile';\n\nexport default (props: IAccountInvoiceTileViewProps) => {\n const { AccountInvoiceTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => (\n \n {heading}\n \n);\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({\n ModuleProps,\n Header,\n MapProps\n}) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return (\n \n {this._renderElement(this.props)}\n \n );\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n {' '}\n {heading}\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. All rights reserved.\n * See License.txt 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 (\n \n {this._renderElement(this.props)}\n \n );\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 } 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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nexport interface IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: React.FC = ({ description }) => (\n

\n {description}\n

\n);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrganizationUsersTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n { editableLinks && editableLinks.length > 0 ? : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-organization-users-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component.\n * @extends {React.PureComponent>}\n */\nclass OrganizationUsersTile extends React.PureComponent> {\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription = numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && ,\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default OrganizationUsersTile;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal,\n availableCredit,\n balanceOwed,\n creditExcess\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n {availableCredit}\n {balanceOwed}\n {creditExcess}\n
\n {homeButton}\n
\n );\n};\n"],"sourceRoot":""}