{"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/farmlands-iframe/farmlands-iframe.view.tsx?311a","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/footer-category/footer-category.tsx?b7b8","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/subscribe/subscribe.view.tsx?c40a","webpack:///src/modules/product-specification/product-specification.view.tsx?bfbe","webpack:///./src/modules/farmlands-back-top-footer/farmlands-back-top-footer.tsx?65b5","webpack:///src/index.ts?c6ae","webpack:///./src/themes/farmlandstheme/views/promo-banner.view.tsx?28d0","webpack:///src/modules/footer-category/footer-category.view.tsx?26a5","webpack:///src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?5927","webpack:///./src/modules/farmlands-content-block/farmlands-content-block.view.tsx?25ed","webpack:///src/modules/subscribe/subscribe.tsx?0278","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/farmlands-iframe/farmlands-iframe.tsx?cf65","webpack:///./src/themes/farmlandstheme/views/navigation-menu.view.tsx?2dc0","webpack:///./src/themes/farmlandstheme/views/breadcrumb.view.tsx?3c4f","webpack:///./src/modules/farmlands-content-block/components/links.tsx?13e3","webpack:///./src/modules/farmlands-content-block/farmlands-content-block.props.autogenerated.ts?e7f5","webpack:///./src/modules/farmlands-content-block/farmlands-content-block.tsx?9a91","webpack:///src/modules/account-customer-balance/account-customer-balance.view.tsx?35d2","webpack:///./src/themes/farmlandstheme/views/header.view.tsx?9192"],"names":["ProductSpecificationTableRow","_ref","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","_this$props$context$r","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","cookies","set","baseUrl","includes","isCookieValueSet","get","value","state","undefined","render","_heading$tag","heading","subheading","countryList","actionLink","config","isConsentGiven","countryPickerHeading","MsDyn365","tag","text","editProps","onEdit","handleTextChange","requestContext","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","Button","onClick","tabIndex","resources","stayOnCurrentSiteButtonText","viewprops","_objectSpread","modalContainer","moduleProps","Modal","isOpen","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","closeButtonTabIndex","modalFooterContainer","ModalFooter","modalBodyContainer","ModalBody","link","renderCountryList","stayOnCurrentSiteButton","renderView","event","target","handleLinkTextChange","_this$props$config$ac","linkText","StringExtensions","isNullOrEmpty","linkUrl","destinationUrl","_link$linkText","payLoad","getPayloadObject","attributes","getTelemetryAttributes","editableLink","ariaLabel","openInNewTab","role","additionalProperties","onTelemetryClick","onTextChange","localeItems","map","renderCountry","localeItem","_image$imageSettings","_image$src","localeBaseUrl","matchedCountryItem","find","item","url","imageSize","q","w","h","defaultImageSettings","viewports","xs","lg","xl","lazyload","image","imageProps","gridSettings","imageSettings","key","displayString","href","src","altText","loadFailureBehavior","shouldSkipToMainImage","displaySubString","BreadCrumbView","root","links","backButton","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","separator","Module","Object","assign","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","_product$Name","Drawer","collapseProps","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","BooleanValue","trueValueText","falseValueText","__decorate","observer","IFrameView","Heading","IframeContainer","IFrame","alert","cookieConsentAccepted","_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","renderMosaic","thisProps","interactiveFeatureCollectionMosaicContainer","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","renderCarousel","BackTopFooter","backtoTopText","destination","BackToTop","imageListView","indexKey","FooterCategory","categories","FooterList","FooterListItem","Link","noclick","contentAction","etext","attribute","itemProp","Separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","_getCustomBreadcrumbLinks","itemPosition","keyIndex","toString","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","locale","NameTranslations","Url","nameTranslations","_nameTranslation","nameTranslation","ArrayExtensions","hasElements","Language","toLowerCase","Text","_getPDPLinks","categoryPaths","requestUrl","push","hideProductName","_goBack","window","history","back","_getPDPBackButton","query","isBrowser","document","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","onSubmit","preventDefault","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","subscribe","subscribeContainer","subscribeForm","emailInput","submitButton","submitButtonLabelText","ProductSpecificationView","rowdata","filter","row","ObjectExtensions","isNullOrUndefined","backToTop","getElementById","myScrollFunc","yAxis","scrollY","classList","remove","add","addEventListener","PromoBannerView","promoBannerProps","contentProps","closeButton","bannerMessages","carouselProps","fontColor","fontSize","boldText","italicizedText","underlineText","createConfigStyles","isLink","color","fontWeight","fontStyle","textDecoration","slides","style","items","FooterCategoryView","createElement","category","interactiveFeatureCollectionView","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionDesktopItems","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionMobileContainer","singleSlideCarouselComponentProps","singleSlideCarouselItemContainer","tileItem","ContentBlockView","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageAriaLabel","Subscribe","_emailAddressInputRef","subscribeParagraph","subscribeHeading","subscribeFormAriaLabel","name","autoComplete","ref","type","subscribeFormEmailAriaLabel","placeholder","subscribeEmailPlaceholderText","subscribeFormSubmitAriaLabel","subscribeButtonLabel","countryPickerView","country","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","editableLinks","InteractiveFeatureItem","linkIndex","_this$props$config$li","Number","featureItemLinks","_createHeading","_createParagraph","_renderImage","tabindex","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","sm","md","moduleType","typeName","imagePropertyName","InteractiveFeatureCollection","headingTag","itemsCounter","_this$props$config$cl","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_getFeatureItem","Iframe","iframeRef","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","_createIframe","_renderAlert","cookieConsentRequiredMessage","targetURL","height","width","iframeAriaLabel","allowFullScreen","frameBorder","NavigationMenuView","supportedLevel","currentLevel","_handleDropdownToggle","isMobileView","activeMenu","mobileViewLabelText","parentMenu","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","contains","_closeSubmenu","bind","componentDidMount","body","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","_renderDrawerMenu","MenuList","_renderDisplay","subMenu","_renderDrawer","_renderLinkMenuItem","_renderLinkText","menuSubItem","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","i","_getFromSubMenu","_createMenuItemList","forEach","subMenus","found","_renderSubMenu","_renderButtonMenuItem","levelClassName","menuOptions","option","idx","hasOptions","_renderMenu","onFocus","Span","level","currentItem","ContentCardLinks","btnClass","actionableRegion","HeadingTag","ContentBlock","contentBlockTitle","contentBlockLinks","LinksComponent","contentBlockText","contentBlockImage","contentBlockviewProps","moduleClass","_getImageLink","region","imageAndLinks","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess","renderCustomerName","accountInformation","customer","FirstName","_renderReactFragment","slot","headerView","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","search","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu"],"mappings":"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","file":"static/js/7.62f930cc3fe1eb924ec5.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICookieSetOptions, IImageDimension, ILocaleItems } from '@msdyn365-commerce/core-internal';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n onTelemetryClick\n} 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 private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\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 { heading, subheading, countryList, actionLink } = 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 \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 closeButtonTabIndex: 1\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 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 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 return this.renderCountry(value);\n });\n\n return countryLinks;\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
\n {matchedCountryItem.displayString}\n {matchedCountryItem.displaySubString}\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.\n * All rights reserved. See LICENSE 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 )}\n {backButton && {backButton}}\n {links &&\n 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.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } 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 public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\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.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { 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, nextState: IProductSpecificationState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n\n productSpecificationResult: isAccrodion\n ? productSpecificationData && this._createDrawerBody(data)\n : 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
{cellData}
\n \n
\n );\n });\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IIframeViewProps } from './farmlands-iframe';\r\n\r\n/**\r\n *\r\n * IFrameView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class IFrameView extends React.PureComponent {\r\n\r\n public render(): JSX.Element | null {\r\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\r\n\r\n return (\r\n \r\n {alert}\r\n {cookieConsentAccepted && cookieConsentAccepted === true ? (\r\n <>\r\n {Heading}\r\n {IFrame}\r\n ) : null}\r\n \r\n );\r\n }\r\n}\r\nexport default IFrameView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE 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 {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n max,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\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 <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): 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 {dropdowns.map(_renderConfigureDropdown)};\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\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = 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 {heading}\n {input}\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.\n * All rights reserved. See LICENSE 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 {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = 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 =\n 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 {image}\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 {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\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 <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as 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 )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component.\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if (!this.props.slots || !this.props.slots.content || this.props.slots.content.length === 0) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag: 'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n }\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, 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 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 {linkText}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => (\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE 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(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\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 } 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 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 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 * 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 private readonly _goBack = (): void => {\n window.history.back();\n };\n\n private readonly _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed =\n 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\nexport default Breadcrumb;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeViewProps } from './subscribe';\n\n/**\n * Override form action and button action below.\n * @param event - The form event.\n */\nconst onSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n};\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns nothing.\n */\nexport const subscribeView: React.FC = props => {\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\n return (\n \n \n {heading}\n {text}\n \n \n \n {props.submitButtonLabelText}\n \n \n \n \n );\n};\n\nexport default subscribeView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { BackToTop } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IFarmlandsBackTopFooterProps } from './farmlands-back-top-footer.props.autogenerated';\r\n\r\n/**\r\n *\r\n * BackTopFooter component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass BackTopFooter extends React.PureComponent> {\r\n constructor(props: IFarmlandsBackTopFooterProps<{}>) {\r\n super(props);\r\n }\r\n public render(): JSX.Element | null {\r\n if (typeof document !== 'undefined' && typeof window !== 'undefined') {\r\n const backToTop = document.getElementById('farmlands-top');\r\n const myScrollFunc = () => {\r\n const yAxis = window.scrollY;\r\n if (backToTop) {\r\n if (yAxis >= 800) {\r\n backToTop?.classList.remove('farmlands-top--hide');\r\n backToTop?.classList.add('farmlands-top--show');\r\n } else {\r\n backToTop?.classList.remove('farmlands-top--show');\r\n backToTop?.classList.add('farmlands-top--hide');\r\n }\r\n }\r\n };\r\n window.addEventListener('scroll', myScrollFunc);\r\n }\r\n\r\n if (this.props.config.destination === null) {\r\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {this.props.config.backtoTopText}\r\n \r\n expand_less\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default BackTopFooter;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport getAttributesForSelectedVariant, { AttributesForSelectedVariantInput } from './dataActions/get-attributes-for-selected-variant';\nimport ProductSpecification from './modules/product-specification/product-specification';\nimport ProductSpecificationView from './modules/product-specification/product-specification.view';\n\nexport * from './modules/product-specification/components/product-specification-table-stucture';\nexport * from './modules/product-specification/product-specification';\nexport * from './modules/product-specification/product-specification.data';\nexport * from './modules/product-specification/product-specification.props.autogenerated';\nexport * from './modules/product-specification/product-specification.view';\nexport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant, ProductSpecification, ProductSpecificationView };\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IPromoBannerViewProps } from '@msdyn365-commerce-modules/promo-banner/src/modules/promo-banner/promo-banner';\r\nimport { IPromoBannerProps } from '../definition-extensions/promo-banner.ext.props.autogenerated';\r\n\r\nconst PromoBannerView: React.FC> = (props) => {\r\n const { promoBannerProps, contentProps, closeButton, bannerMessages, carouselProps } = props;\r\n\r\n const { fontColor, fontSize, boldText, italicizedText, underlineText } = props.config;\r\n\r\n const createConfigStyles = (isLink?: boolean): React.CSSProperties => {\r\n return {\r\n color: fontColor ? fontColor : '#FFFFFF',\r\n fontSize: fontSize ? `${fontSize}px` : '16px',\r\n fontWeight: boldText ? 'bold' : 'normal',\r\n fontStyle: italicizedText ? 'italic' : 'normal',\r\n textDecoration: underlineText || isLink ? 'underline' : 'none'\r\n };\r\n };\r\n\r\n const slides =\r\n bannerMessages &&\r\n bannerMessages.map((message, index) => {\r\n return (\r\n \r\n {message.text && (\r\n \r\n {message.text}\r\n \r\n )}\r\n {message.links && message.links.length > 0 && (\r\n \r\n {message.links.map((link) => {\r\n return (\r\n \r\n {link.linkText}\r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n );\r\n });\r\n\r\n return (\r\n \r\n \r\n {closeButton}\r\n \r\n );\r\n};\r\nexport default PromoBannerView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { IFooterCategoryViewProps } from './footer-category';\n\nexport const FooterCategoryView: React.FC = props => {\n const { categories, FooterList, FooterListItem } = props;\n if (!categories || categories.length === 0) {\n props.context.telemetry.error('Footer content is empty, module wont render');\n return null;\n }\n return (\n \n {categories.map((category: ReactNode, index: number) => {\n return (\n \n {category}\n \n );\n })}\n \n );\n};\n\nexport default FooterCategoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* tslint:disable: no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IContentBlockViewProps } from './farmlands-content-block';\r\n\r\nconst ContentBlockView: React.FC = (props) => {\r\n const {\r\n contentBlockContainer,\r\n imageContainer,\r\n detailsContainer,\r\n title,\r\n text,\r\n links,\r\n image,\r\n contentBlockAnchorTag,\r\n imageLink,\r\n imageAriaLabel\r\n } = props;\r\n\r\n if (imageLink) {\r\n return (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {image}\r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default ContentBlockView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeConfig, ISubscribeProps } from './subscribe.props.autogenerated';\n\n/**\n * Subscribe view props.\n */\nexport interface ISubscribeViewProps extends ISubscribeProps {\n subscribe: IModuleProps;\n subscribeContainer: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n subscribeForm?: INodeProps;\n emailInput?: INodeProps;\n handleText(): void;\n}\n\n/**\n * Subscribe component.\n * @extends {React.PureComponent>}\n */\nexport class Subscribe extends React.PureComponent> {\n private readonly _emailAddressInputRef: React.RefObject;\n\n public constructor(props: ISubscribeViewProps) {\n super(props);\n this._emailAddressInputRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const moduleClassName = 'ms-subscribe';\n\n const subscribeParagraph = paragraph && (\n \n );\n\n const subscribeHeading = heading && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n subscribe: {\n moduleProps: this.props,\n className: moduleClassName\n },\n subscribeContainer: {\n className: 'ms-subscribe__details'\n },\n heading: subscribeHeading,\n text: subscribeParagraph,\n subscribeForm: {\n className: 'ms-subscribe__details__form',\n tag: 'form',\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\n name: 'subscribeForm',\n role: 'form',\n autoComplete: 'off'\n },\n emailInput: {\n className: 'ms-subscribe__details__form__email',\n tag: 'input',\n ref: this._emailAddressInputRef,\n type: 'email',\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\n placeholder: this.props.resources.subscribeEmailPlaceholderText\n },\n submitButton: {\n className: 'ms-subscribe__details__form__submit',\n tag: Button,\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\n type: 'submit',\n title: this.props.resources.subscribeButtonLabel\n },\n submitButtonLabelText: this.props.resources.subscribeButtonLabel\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n}\n\nexport default Subscribe;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { 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 {\n isModalOpen,\n modalContainer,\n modalHeaderContainer,\n modalBodyContainer,\n heading,\n modalFooterContainer,\n subheading,\n link,\n countryList,\n stayOnCurrentSiteButton\n } = props;\n return isModalOpen && countryList ? (\n \n \n {heading}\n {subheading}\n \n \n {countryList.map(country => (\n <>{country}\n ))}\n \n \n {stayOnCurrentSiteButton}\n {link}\n \n \n ) : null;\n};\n\nexport default countryPickerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { 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) ? (\n \n ) : 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.\n * All rights reserved. See LICENSE 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(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\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.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { 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(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\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 private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots.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:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default InteractiveFeatureCollection;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IHeadingData, IFarmlandsIframeConfig, IFarmlandsIframeProps } from './farmlands-iframe.props.autogenerated';\r\n\r\nexport interface IIframeViewProps extends IFarmlandsIframeProps {\r\n Heading: React.ReactNode;\r\n IframeContainer: IModuleProps;\r\n IFrame: React.ReactNode;\r\n alert?: React.ReactNode;\r\n cookieConsentAccepted?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Iframe component\r\n * @extends {React.PureComponent}\r\n */\r\nclass Iframe extends React.PureComponent> {\r\n private iframeRef: React.RefObject;\r\n constructor(props: IFarmlandsIframeProps) {\r\n super(props);\r\n this.iframeRef = React.createRef();\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { config, resources } = this.props;\r\n const isConsentGiven =\r\n this.props.context.request &&\r\n this.props.context.request.cookies &&\r\n this.props.context.request.cookies.isConsentGiven &&\r\n this.props.context.request.cookies.isConsentGiven();\r\n\r\n if (!(config && config.target && config.target.destinationUrl)) {\r\n return null;\r\n }\r\n\r\n let srcURL;\r\n try {\r\n srcURL = new URL(config.target.destinationUrl);\r\n } catch (error) {\r\n this.props.telemetry.exception(error);\r\n return null;\r\n }\r\n\r\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\r\n return null;\r\n }\r\n const iframeClassName = classnames('ms-iframe', config.className);\r\n\r\n let viewProps: IIframeViewProps = {\r\n ...(this.props as IFarmlandsIframeProps),\r\n Heading: this._createHeading(config.heading!),\r\n IframeContainer: {\r\n moduleProps: this.props,\r\n className: iframeClassName\r\n },\r\n IFrame: this._createIframe()\r\n };\r\n\r\n if (isConsentGiven === false) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\r\n };\r\n } else {\r\n viewProps = {\r\n ...viewProps,\r\n cookieConsentAccepted: true\r\n };\r\n }\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\r\n if (!heading || !heading.text || !heading.text.length) {\r\n return null;\r\n }\r\n\r\n return ;\r\n }\r\n\r\n private _renderAlert(message: string): React.ReactNode | null {\r\n return (\r\n

\r\n {message}\r\n

\r\n );\r\n }\r\n\r\n private _createIframe(): React.ReactNode | null {\r\n const { config } = this.props;\r\n const targetURL = config.target.destinationUrl;\r\n\r\n return (\r\n // tslint:disable-next-line: react-iframe-missing-sandbox\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Iframe;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n mobileViewLabelText?: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private supportedLevel: number = 3;\r\n private currentLevel: number = 0;\r\n private menuNode: React.RefObject;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return {isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, menuItemData, Navigation } = this.props;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData) => {\r\n return this._renderDrawerMenu(menuItem);\r\n })}\r\n \r\n );\r\n }\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemData): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\r\n return this._renderDrawer(menuItem);\r\n } else {\r\n return this._renderLinkMenuItem(menuItem);\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemData): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined): JSX.Element {\r\n return {linkText};\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(menuItem)}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL\r\n ? this._renderLinkMenuItem(option, idx)\r\n : this._renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { MenuList } = this.props;\r\n this.currentLevel = 1;\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IBreadcrumbViewProps } from '@msdyn365-commerce-modules/breadcrumb/src/modules/breadcrumb/./breadcrumb';\r\n\r\nconst BreadCrumbView: React.FC = (props) => {\r\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem } = props;\r\n if (!root && !links && !backButton) {\r\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n \r\n {root && (\r\n \r\n {root}\r\n {links && '>'}\r\n \r\n )}\r\n {backButton && {backButton} |}\r\n {links &&\r\n links.map((link, index) => (\r\n \r\n \r\n {link}\r\n {links[index + 1] && '>'}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BreadCrumbView;\r\n","/* tslint:disable: no-duplicate-imports */\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ILinksData } from '../farmlands-content-block.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ContentCardLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n private _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: btnClass,\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\nexport default ContentCardLinks;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IFarmlandsContentBlock contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum actionableRegion {\r\n imageAndLinks = 'imageAndLinks',\r\n linksOnly = 'linksOnly'\r\n}\r\n\r\nexport interface IFarmlandsContentBlockConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n paragraph?: Msdyn365.RichText;\r\n image?: Msdyn365.IImageData;\r\n links?: ILinksData[];\r\n actionableRegion?: actionableRegion;\r\n imageLink?: Msdyn365.ILinkData;\r\n imageAriaLabel?: string;\r\n className?: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IFarmlandsContentBlockProps extends Msdyn365.IModule {\r\n config: IFarmlandsContentBlockConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* tslint:disable: no-duplicate-imports */\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport LinksComponent from './components/links';\r\nimport { actionableRegion as region, IFarmlandsContentBlockProps } from './farmlands-content-block.props.autogenerated';\r\n\r\nexport interface IContentBlockViewProps extends IFarmlandsContentBlockProps<{}> {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n links?: React.ReactNode;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer: INodeProps;\r\n detailsContainer: INodeProps;\r\n contentBlockAnchorTag?: INodeProps;\r\n imageLink?: string;\r\n imageAriaLabel?: string;\r\n}\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass ContentBlock extends React.PureComponent> {\r\n private telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n public render(): JSX.Element | null {\r\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\r\n const contentBlockTitle = heading && (\r\n \r\n );\r\n const imageProps = {\r\n gridSettings: {},\r\n imageSettings: {\r\n viewports: {\r\n xs: { q: '', w: 0, h: 0 },\r\n lg: { q: '', w: 0, h: 0 },\r\n xl: { q: '', w: 0, h: 0 }\r\n }\r\n }\r\n };\r\n const contentBlockLinks = links && links.length > 0 && (\r\n \r\n );\r\n const contentBlockText = paragraph && (\r\n \r\n );\r\n const contentBlockImage = image && (\r\n \r\n );\r\n\r\n if (!contentBlockTitle && !contentBlockText && !contentBlockImage && !contentBlockLinks) {\r\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n links: contentBlockLinks,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('farmlands-content-block', className)\r\n },\r\n imageContainer: { className: 'ms-content-block__image' },\r\n detailsContainer: { className: 'ms-content-block__details' },\r\n contentBlockAnchorTag: {\r\n tag: 'a',\r\n className: 'ms-content-block__link',\r\n role: 'link'\r\n },\r\n imageLink: this._getImageLink(),\r\n imageAriaLabel\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.heading!.text = event.target.value);\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.paragraph = event.target.value);\r\n /* Handle link text change*/\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.links && this.props.config.links[linkIndex]) {\r\n this.props.config.links[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n private _getImageLink(): string | null {\r\n const { imageLink, links, actionableRegion } = this.props.config;\r\n if (actionableRegion === region.imageAndLinks) {\r\n if (imageLink && imageLink.destinationUrl) {\r\n return imageLink.destinationUrl;\r\n } else if (links && links.length && links[0].linkUrl) {\r\n return links[0].linkUrl.destinationUrl;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport default ContentBlock;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * 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","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst headerView: React.FC = props => {\r\n const {\r\n HeaderTag,\r\n HeaderContainer,\r\n HeaderTopBarContainer,\r\n Divider,\r\n } = props;\r\n return (\r\n \r\n \r\n \r\n {props.navIcon}\r\n {props.logo}\r\n {_renderReactFragment(props.search)}\r\n {_renderAccountBlock(props, false)}\r\n {props.wishListIconDesktop}\r\n \r\n {props.cartIcon}\r\n \r\n {_renderCollapseMenu(props)}\r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\r\n const {Divider, MobileMenuLinksContainer, mobileMenuCollapsed} = props;\r\n return (\r\n \r\n \r\n {_renderReactFragment(props.search)}\r\n {_renderMobileAccountBlock(props, true)}\r\n { props.wishListIconMobile }\r\n \r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n );\r\n}\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return (\r\n <>{customer && customer.FirstName}\r\n );\r\n};\r\n\r\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n signOutLink,\r\n signInLink,\r\n data,\r\n accountLinks} = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames('ms-header__drawer', AccountInfoDropdownParentContainer.className, renderForMobile ? 'account-mobile' : 'account-desktop');\r\n\r\n if (accountLinks) {\r\n return (\r\n \r\n
\r\n { accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false }\r\n {signOutLink}\r\n
\r\n
\r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks,\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(AccountInfoDropdownParentContainer.className, renderForMobile ? 'account-mobile' : 'account-desktop');\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n { accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false }\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n \r\n {items && items.length\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\nexport default headerView;"],"sourceRoot":""}