{"version":3,"file":"static/js/12.fdeaee78c0b6540f6932.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/blog-list/blog-list.tsx?1313","webpack://Msdyn365.Commerce.Online/./src/modules/blog-list/blog-list.view.tsx?c14d","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-google-tag-manager/dyn-google-tag-manager.tsx?c201","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-google-tag-manager/dyn-google-tag-manager.view.tsx?0b32","webpack://Msdyn365.Commerce.Online/./src/themes/dyn-tebutheme/views/header.view.tsx?6425","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/additional-content.tsx?d5f9","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/links.tsx?abbf","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.tsx?3084","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.view.tsx?1773","webpack://Msdyn365.Commerce.Online/./src/modules/default-page/default-page.tsx?b382","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/reviews-list.view.tsx?cd2e","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-list/notifications-list.tsx?8377","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-list/notifications-list.view.tsx?d466","webpack://Msdyn365.Commerce.Online/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://Msdyn365.Commerce.Online/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://Msdyn365.Commerce.Online/./src/modules/tab/tab.tsx?9ac6","webpack://Msdyn365.Commerce.Online/./src/modules/tab/tab.view.tsx?a99d","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.view.tsx?1b00"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IBlogListData } from './blog-list.data';\r\nimport { IBlogListProps } from './blog-list.props.autogenerated';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n// import { reaction } from 'mobx';\r\n// import { observer } from 'mobx-react';\r\n\r\nexport interface IBlogListViewProps extends IBlogListProps {\r\n postNodes: React.ReactNode;\r\n}\r\n\r\nexport interface Article {\r\n id: number;\r\n date: Date;\r\n slug: string;\r\n status: string;\r\n type: string;\r\n title: {\r\n rendered: string;\r\n };\r\n author: string;\r\n excerpt: {\r\n rendered: string;\r\n protected: boolean;\r\n };\r\n featured_media: number;\r\n categories?: string[];\r\n tags?: string[];\r\n content: {\r\n rendered: string;\r\n protected: boolean;\r\n };\r\n}\r\n\r\nexport interface ArticleGQL {\r\n content: string;\r\n date: Date;\r\n excerpt: string;\r\n featuredImage: {\r\n node: {\r\n altText: string;\r\n slug: string;\r\n uri: string;\r\n sourceUrl: string;\r\n };\r\n };\r\n slug: string;\r\n title: string;\r\n modified: Date;\r\n status: string;\r\n}\r\n\r\n/**\r\n *\r\n * BlogList component\r\n * @extends {React.PureComponent>}\r\n */\r\n// @observer\r\nclass BlogList extends React.PureComponent> {\r\n // public async componentDidMount(): Promise {\r\n // reaction(\r\n // () => {\r\n // this.props.data.wpPost.result;\r\n // },\r\n // () => {\r\n // if (this.props.data.wpPost.result) {\r\n // this.forceUpdate();\r\n // }\r\n // }\r\n // );\r\n // }\r\n\r\n public _getpostNodes(): React.ReactNode | undefined {\r\n return (\r\n
\r\n {/*\r\n // WP REST API\r\n this.props.data.wpPost.result?.title.rendered\r\n // WP GRAPHQL\r\n this.props.data.wpPost.result?.title\r\n */}\r\n
\r\n \r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const blogListProps: IBlogListViewProps = {\r\n ...this.props,\r\n postNodes: this._getpostNodes()\r\n };\r\n\r\n return this.props.renderView(blogListProps);\r\n }\r\n}\r\n\r\nexport default BlogList;\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 { HtmlHeadInclude } from '@msdyn365-commerce/core-internal';\r\nimport * as React from 'react';\r\nimport { IBlogListViewProps } from './blog-list';\r\n\r\n// First string is your URL\r\n// Second string can be head or body\r\n// Third parameter is true or false.\r\nexport const useScript = (url: string, position: string, async: boolean) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector(position);\r\n const script: HTMLScriptElement = document.createElement('script');\r\n\r\n script.src = url;\r\n script.async = typeof async === 'undefined' ? false : async;\r\n\r\n placement?.appendChild(script);\r\n\r\n return () => {\r\n placement?.removeChild(script);\r\n };\r\n });\r\n};\r\n\r\nexport default (props: IBlogListViewProps) => {\r\n const { postNodes } = props;\r\n\r\n return (\r\n <>\r\n \r\n {props.config.postId && (\r\n \r\n )}\r\n \r\n {postNodes}\r\n\r\n {/* {useScript('https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.min.js', 'body', true)}\r\n {useScript('https://code.jquery.com/ui/1.13.1/jquery-ui.min.js', 'body', true)}\r\n {useScript('https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.3/underscore-min.js', 'body', true)}\r\n {useScript('https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.4.1/backbone-min.js', 'body', true)}\r\n {useScript('https://unpkg.com/regenerator-runtime@0.13.9/runtime.js', 'body', true)}\r\n {useScript('https://blog.tebubio.com/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0', 'body', true)}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-includes/js/dist/hooks.min.js?ver=c6d64f2cb8f5c6bb49caca37f8828ce3',\r\n 'body',\r\n true\r\n )}\r\n\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-includes/js/dist/i18n.min.js?ver=ebee46757c6a411e38fd079a7ac71d94',\r\n 'body',\r\n true\r\n )}\r\n {useScript('https://cdnjs.cloudflare.com/ajax/libs/backbone.marionette/2.4.5/backbone.marionette.min.js', 'body', true)}\r\n {useScript('https://cdnjs.cloudflare.com/ajax/libs/backbone.radio/1.0.4/backbone.radio.min.js', 'body', true)}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/jet-menu/assets/public/js/jet-menu-public-scripts.js?ver=2.2.3',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/common-modules.min.js?ver=3.7.8',\r\n 'body',\r\n true\r\n )}\r\n {useScript('https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/web-cli.min.js?ver=3.7.8', 'body', true)}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/lib/dialog/dialog.min.js?ver=4.9.0',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/dev-tools.min.js?ver=3.7.8',\r\n 'body',\r\n true\r\n )}\r\n {useScript('https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/common.min.js?ver=3.7.8', 'body', true)}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/app-loader.min.js?ver=3.7.8',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver=1.0.1',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/jet-elements/assets/js/lib/chart-js/chart.min.js?ver=2.7.3',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.7.7',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.7.8',\r\n 'body',\r\n true\r\n )} */}\r\n {/* {useScript('https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.7.8', 'body', true)} */}\r\n {/* {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/frontend-modules.js?ver=3.7.8',\r\n 'body',\r\n true\r\n )} */}\r\n {/* {useScript('https://blog.tebubio.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.7.7', 'body', true)} */}\r\n {/* {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js?ver=4.0.2',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/lib/swiper/swiper.min.js?ver=5.3.6',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/lib/share-link/share-link.min.js?ver=3.7.8',\r\n 'body',\r\n true\r\n )} */}\r\n {/* {useScript('https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.7.8', 'body', true)} */}\r\n {/* {useScript('https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/frontend.js?ver=3.7.8', 'body', true)}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor-pro/assets/js/preloaded-elements-handlers.min.js?ver=3.7.7',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/jet-elements/assets/js/jet-elements.min.js?ver=2.6.7',\r\n 'body',\r\n true\r\n )}\r\n {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/jet-menu/includes/elementor/assets/public/js/widgets-scripts.js?ver=2.2.3',\r\n 'body',\r\n true\r\n )} */}\r\n {/* {useScript('https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/preloaded-modules.min.js?ver=3.7.8', 'body', true)} */}\r\n {/* {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/preloaded-modules.js?ver=3.7.8',\r\n 'body',\r\n true\r\n )} */}\r\n {/* {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=3.7.7',\r\n 'body',\r\n true\r\n )} */}\r\n {/* {useScript(\r\n 'https://blog.tebubio.com/wp-content/plugins/elementor/assets/js/elementor-admin-bar.min.js?ver=3.7.8',\r\n 'body',\r\n true\r\n )} */}\r\n \r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IDynGoogleTagManagerData } from './dyn-google-tag-manager.data';\r\nimport { IDynGoogleTagManagerProps } from './dyn-google-tag-manager.props.autogenerated';\r\n\r\nexport interface IDynGoogleTagManagerViewProps extends IDynGoogleTagManagerProps {}\r\n\r\n/**\r\n *\r\n * DynGoogleTagManager component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DynGoogleTagManager extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default DynGoogleTagManager;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IDynGoogleTagManagerViewProps } from './dyn-google-tag-manager';\r\n\r\nexport const useScriptGtag = (props: IDynGoogleTagManagerViewProps, position: string) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector(position);\r\n\r\n const script: HTMLScriptElement = document.createElement('script');\r\n script.src = props.config.scriptUrl;\r\n\r\n const inlineScript: HTMLScriptElement = document.createElement('script');\r\n inlineScript.type = 'text/javascript';\r\n inlineScript.innerHTML = `window.dataLayer = window.dataLayer || [];\r\n function gtag(){dataLayer.push(arguments);}\r\n gtag('js', new Date());\r\n gtag('config', '${props.config.gTagId}');\r\n `;\r\n\r\n placement?.appendChild(script);\r\n placement?.appendChild(inlineScript);\r\n\r\n return () => {\r\n placement?.removeChild(script);\r\n placement?.removeChild(inlineScript);\r\n };\r\n });\r\n};\r\n\r\nexport default (props: IDynGoogleTagManagerViewProps) => {\r\n return <>{props.config.scriptUrl && useScriptGtag(props, 'body')};\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { Collapse, Drawer, Module, Node, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst headerView: React.FC = props => {\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider, context } = props;\r\n const TopHeaderContainer: INodeProps = {\r\n className: classnames('header__top', 'row', 'justify-content-between', 'align-items-center')\r\n };\r\n //const contactURL = `${context.request.url.requestUrl.protocol}//${context.request.url.requestUrl.host}${context.request.sitePath??''}/contact`;\r\n const contactURL = `${context.actionContext.requestContext.sitePath ?? ''}/contact`;\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
Customer Service: +33 1 30 46 39 00
\r\n \r\n \r\n Contact us\r\n \r\n
\r\n
\r\n
\r\n {props.preferredStore}\r\n
\r\n
\r\n {_renderReactFragment(props.siteOptions)}\r\n
\r\n
\r\n {_renderAccountBlock(props, false)}\r\n
\r\n
{props.wishListIconDesktop}
\r\n
\r\n
{props.cartIcon}
\r\n
\r\n
\r\n \r\n {props.logo}\r\n {_renderReactFragment(props.search)}\r\n
\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n
\r\n {props.navIcon}\r\n
\r\n {_renderCollapseMenu(props)}\r\n {_renderReactFragment(props.menuBar)}\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 {props.siteOptions}\r\n \r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n );\r\n}\r\n\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return <>{customer ? customer.FirstName || customer.Name : ''};\r\n};\r\n\r\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n 'ms-header__drawer',\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\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(\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\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 > 0\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;\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\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 ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock 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 render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n\n let contentBlockImageSettings: Msdyn365.IImageSettings | undefined;\n\n if (image && image.imageSettings && !image.imageSettings.backgroundColor && this.props.config.backgroundColor) {\n contentBlockImageSettings = {\n ...image?.imageSettings,\n backgroundColor: this.props.config.backgroundColor\n };\n } else {\n contentBlockImageSettings = image?.imageSettings;\n }\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: contentBlockImageSettings\n };\n\n const contentBlockImage = (\n \n );\n\n const contentBlockContainerStyle: React.CSSProperties | undefined = this.props.config.backgroundColor\n ? { backgroundColor: this.props.config.backgroundColor }\n : undefined;\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className),\n style: contentBlockContainerStyle\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\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 { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\nconst ContentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default ContentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport * as React from 'react';\nimport { isEditorialMode } from '@msdyn365-commerce/core-internal';\nimport { IDefaultPageProps } from './default-page.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent}\n */\nclass DefaultPageContainer extends React.PureComponent> {\n constructor(props: IDefaultPageProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, id, typeName } = this.props;\n\n let skipToMainText = this.props.config && this.props.config.skipToMainText;\n telemetry.log(LogLevel.Debug, \"DefaultPageContainer rendering for '{id}/{typeName}'\", { values: [id, typeName] });\n\n if (!skipToMainText) {\n skipToMainText =\n this.props.context.app && this.props.context.app.platform ? this.props.context.app.platform.skipToMainText : '';\n }\n\n const tabIndexSkipToMain = isEditorialMode(this.props.context.actionContext.requestContext) ? -1 : 0;\n\n return (\n \n \n {skipToMainText}\n \n
\n {slots &&\n slots.header &&\n slots.header.map((children: React.ReactNode) => {\n return children;\n })}\n
\n {slots && slots.subheader && (\n
\n {slots.subheader.map((children: React.ReactNode) => {\n return children;\n })}\n
\n )}\n
\n {slots &&\n slots.primary &&\n slots.primary.map((children: React.ReactNode) => {\n return children;\n })}\n
\n {slots && slots.subfooter && (\n
\n {slots.subfooter.map((children: React.ReactNode) => {\n return children;\n })}\n
\n )}\n
\n {slots &&\n slots.footer &&\n slots.footer.map((children: React.ReactNode) => {\n return children;\n })}\n
\n
\n );\n }\n}\n\nexport default DefaultPageContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n {props.date}\n \n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport {\n INotificationComponentsList,\n INotificationComponentsListState,\n INotificationComponentType,\n NotificationComponentsListsManager,\n NotificationEvents,\n NotificationFeedType\n} from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { INotificationsListProps } from './notifications-list.props.autogenerated';\n\n/**\n * View for the notifications list which specifies the container and notifications items.\n */\nexport interface INotificationsListViewProps extends INotificationsListProps<{}> {\n container: IModuleProps;\n notificationsList: React.ReactNode;\n}\n\n/**\n * Configuration to make the list stickable to the page without overlapping any content on top.\n */\nexport interface INotificationComponentStickyConfiguration {\n /**\n * Minimum offset for top (default for the page).\n */\n minTopOffset: number;\n\n /**\n * Maximum offset for top (to limit the top offset while scrolling).\n */\n maxTopOffset: number;\n}\n\n/**\n * Stickable notification list state which defines the top position of the list at the moment.\n */\nexport interface IStickableNotificationComponentsListState extends INotificationComponentsListState {\n /**\n * The top position of the list on the page.\n */\n top?: number;\n}\n\n/**\n * A notification list which is operated by notification manager.\n * It is responsible for rendering the received notifications.\n */\nexport class NotificationComponentsList extends React.Component, IStickableNotificationComponentsListState>\n implements INotificationComponentsList {\n /**\n * The class name to use.\n */\n private static readonly _className: string = 'msc-notifications-list';\n\n /**\n * The feed which the list is responsible for displaying.\n */\n public readonly feed: NotificationFeedType;\n\n /**\n * Configuration which specifies if and how the list should be stickable.\n * If undefined, the configuration will not be used at all. And list will not be stickable.\n */\n private readonly _stickyConfiguration?: INotificationComponentStickyConfiguration;\n\n /**\n * The list of notification which should be shown in the list at the moment.\n * @remarks Should be used to retrieve the latest list of notifications\n * as the list from the state is updated only after rendering.\n */\n private _notificationsComponentList: INotificationComponentType[];\n\n /**\n * Unique identifier of the list.\n * Uses format 'NotificationComponentsList-GUID';.\n */\n private _instanceId?: string;\n\n /**\n * Initializes instance with the given props.\n * @param props - The configuration of the list.\n */\n public constructor(props: INotificationsListProps<{}>) {\n super(props);\n\n this.feed = props.config.feed;\n\n if (\n !ObjectExtensions.isNullOrUndefined(props.config.minTopOffset) &&\n !ObjectExtensions.isNullOrUndefined(props.config.maxTopOffset)\n ) {\n this._stickyConfiguration = {\n minTopOffset: props.config.minTopOffset,\n maxTopOffset: props.config.maxTopOffset\n };\n }\n\n this._notificationsComponentList = [];\n\n this.state = {\n notificationsComponentList: []\n };\n\n this._handleTopUpdate = this._handleTopUpdate.bind(this);\n this._getCurrentTopPosition = this._getCurrentTopPosition.bind(this);\n }\n\n /**\n * Specifies if the component should be re-rendered.\n * @param nextProps - The next configuration the component is receiving.\n * @param nextState - The next state the component is receiving.\n * @returns True if component should be re-rendered, false if component should not be changed.\n */\n public shouldComponentUpdate(\n nextProps: Readonly>,\n nextState: Readonly\n ): boolean {\n const isPropsDifferent =\n this.feed !== nextProps.config.feed ||\n this.props.config.maxNotificationsCount !== nextProps.config.maxNotificationsCount ||\n this.props.config.maxTopOffset !== nextProps.config.maxTopOffset ||\n this.props.config.minTopOffset !== nextProps.config.minTopOffset ||\n this.props.config.className !== nextProps.config.className ||\n this.props.id !== nextProps.id;\n const isStateDifferent =\n this.state.top !== nextState.top ||\n this.state.notificationsComponentList.length !== nextState.notificationsComponentList.length ||\n this.state.notificationsComponentList.every(value =>\n nextState.notificationsComponentList.find(otherValue => otherValue.props.notification.id === value.props.notification.id)\n );\n return isPropsDifferent || isStateDifferent;\n }\n\n /**\n * Adds the current instance to the global list of instances so that it becomes available for the notification manager.\n * In case the list is specified to be stickable, also subscribes to the scroll event to update the offsets.\n */\n public componentDidMount(): void {\n NotificationComponentsListsManager.subscribe(this);\n\n this._instanceId = `NotificationComponentsList-${Random.Guid.generateGuid()}`;\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.addEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Remove the instance from the global list of instances so that it becomes unavailable for the notification manager.\n * Unsubscribes itself from the notification events and scroll event.\n */\n public componentWillUnmount(): void {\n NotificationComponentsListsManager.unsubscribe(this);\n\n this._notificationsComponentList.forEach(component =>\n component.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.unsubscribe(this._instanceId!)\n );\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.removeEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Adds a new notification to the list.\n * @param {INotificationComponentType} notificationComponent Data required to render the notification. @see INotificationComponentType.\n */\n public addNotificationComponent(notificationComponent: INotificationComponentType): void {\n if (this._instanceId === undefined) {\n return;\n }\n\n if (\n !ObjectExtensions.isNullOrUndefined(this.props.config.maxNotificationsCount) &&\n this._notificationsComponentList.length >= this.props.config.maxNotificationsCount\n ) {\n throw new Error('Notifications limit reached, cannot show more notifications.');\n }\n\n // Subscribe to the remove event to filter the removed notifications out from the list.\n notificationComponent.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.subscribe({\n instanceId: this._instanceId,\n handler: () => {\n notificationComponent.props.notification.events\n .getValue(NotificationEvents.RemovedFromList)\n ?.unsubscribe(this._instanceId!);\n const newList = this._notificationsComponentList.filter(component => component !== notificationComponent);\n this._notificationsComponentList = newList;\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n }\n });\n\n // Prepend the notification as newest should come to the top.\n this._notificationsComponentList.unshift(notificationComponent);\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n this._handleTopUpdate();\n }\n\n public render(): React.ReactNode {\n const className = classnames(\n NotificationComponentsList._className,\n `${NotificationComponentsList._className}__${this.feed}`,\n this.props.config.className\n );\n\n const viewProps: INotificationsListViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className,\n id: this._instanceId,\n style: { top: this.state.top }\n },\n notificationsList: this._renderNotificationsList()\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Renders the list of notifications.\n * @returns React node with a list of notifications.\n */\n private _renderNotificationsList(): React.ReactNode {\n const hasNotifications = ArrayExtensions.hasElements(this.state.notificationsComponentList);\n const containerClassName = classnames(\n `${NotificationComponentsList._className}__scrollable`,\n hasNotifications\n ? `${NotificationComponentsList._className}__has-notifications`\n : `${NotificationComponentsList._className}__empty`\n );\n\n return (\n
\n {this.state.notificationsComponentList.map(component => {\n const ComponentClass = component.componentClass;\n return ;\n })}\n
\n );\n }\n\n /**\n * Retrieves current top offset position by looking at scroll position and rounding it to the stickable limits.\n */\n private _getCurrentTopPosition(): number | undefined {\n const configuration = this._stickyConfiguration;\n\n if (configuration === undefined) {\n return undefined;\n }\n\n let pageYOffset = 0;\n if (MsDyn365.isBrowser) {\n pageYOffset = window.pageYOffset;\n }\n\n return Math.max(Math.min(configuration.maxTopOffset, configuration.maxTopOffset - pageYOffset), configuration.minTopOffset);\n }\n\n /**\n * Updates the top offset on scroll event to make the list stickable.\n */\n private _handleTopUpdate(): void {\n const newTop = this._getCurrentTopPosition();\n this.setState({ top: newTop });\n }\n}\n\nexport default NotificationComponentsList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { INotificationsListViewProps } from './notifications-list';\n\nexport const NotificationsListView: React.FC = props => {\n return {props.notificationsList};\n};\n\nexport default NotificationsListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown =\n activeContentIDResult &&\n activeContentIDResult.tabId === this.props.tabId &&\n activeContentIDResult.activeContentIndex !== undefined\n ? activeContentIDResult.activeContentIndex === index\n : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderTabHeader(): React.ReactNode {\n return <>{this.props.config.tabItemTitle};\n }\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots &&\n tabSlots.tabItemContent &&\n tabSlots.tabItemContent.length &&\n _renderTabItemContent(tabSlots.tabItemContent)}\n \n \n );\n case TabItemType.TabHeader:\n return {tabHeader};\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default TabItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps, nextState: ITabViewStates): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n if (!this.props.context.request.params.isEditor) {\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex =\n data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected =\n activeContentIndex !== undefined && dataActionTabId === this.props.id\n ? activeContentIndex === index\n : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabHeader,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n if (e.keyCode === 39) {\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabContent,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n {heading}\n {tabHeaders}\n {tabContents}\n \n );\n};\n\nexport default tabView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n"],"names":["BlogList","React","_getpostNodes","_this$props$data$wpPo","className","dangerouslySetInnerHTML","Msdyn365","this","props","data","wpPost","result","content","render","blogListProps","_objectSpread","postNodes","renderView","useScript","url","position","async","placement","document","querySelector","script","createElement","src","appendChild","removeChild","HtmlHeadInclude","config","postId","rel","media","href","blogUrl","DynGoogleTagManager","useScriptGtag","scriptUrl","inlineScript","type","innerHTML","gTagId","renderCustomerName","accountInformation","customer","FirstName","Name","_renderReactFragment","items","length","map","slot","index","key","_context$actionContex","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","context","TopHeaderContainer","classnames","contactURL","actionContext","requestContext","sitePath","Module","Object","assign","Node","preferredStore","siteOptions","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","link","_renderAccountBlock","wishListIconDesktop","cartIcon","logo","search","navIcon","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","isOpen","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","assembleNode","item","itemIndex","_item$links","heading","renderHeading","additionalContentHeading","text","tag","editProps","onEdit","event","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","links","ctaLink","renderLinks","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","push","additionalContentNode","additionalContentItems","ContentCardLinks","constructor","_mapEditableLinks","linkdata","editableLinks","forEach","payLoad","getPayloadObject","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","btnClass","additionalProperties","onClick","onTelemetryClick","ContentBlock","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","handleTextChange","target","value","handleParagraphChange","paragraph","handleLinkTextChange","Number","_heading$tag","_this$props$context$r","_this$props$config$im","image","imageAriaLabel","contentBlockTitle","contentBlockLinks","ArrayExtensions","hasElements","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImageSettings","imageSettings","backgroundColor","imageProps","gridSettings","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","id","layout","shouldSkipToMainImage","contentBlockContainerStyle","undefined","error","contentBlockviewProps","title","moduleClass","contentBlockContainer","moduleProps","style","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","renderAdditionalContent","_additionalContent$ad","DefaultPageContainer","super","slots","skipToMainText","log","LogLevel","Debug","values","app","platform","tabIndexSkipToMain","isEditorialMode","tabIndex","header","children","subheader","primary","subfooter","footer","buildReviewCard","cardProps","headerProps","rating","name","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","modal","modalHeader","modalBody","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReportModal","state","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","review","NotificationComponentsList","feed","ObjectExtensions","isNullOrUndefined","minTopOffset","maxTopOffset","_stickyConfiguration","_notificationsComponentList","notificationsComponentList","_handleTopUpdate","bind","_getCurrentTopPosition","shouldComponentUpdate","nextProps","nextState","isPropsDifferent","maxNotificationsCount","isStateDifferent","top","every","find","otherValue","notification","componentDidMount","NotificationComponentsListsManager","subscribe","_instanceId","Random","Guid","generateGuid","MsDyn365","isBrowser","window","addEventListener","componentWillUnmount","unsubscribe","component","_component$props$noti","events","getValue","NotificationEvents","RemovedFromList","removeEventListener","addNotificationComponent","notificationComponent","_notificationComponen","Error","instanceId","handler","_notificationComponen2","newList","filter","setState","unshift","_className","viewProps","container","notificationsList","_renderNotificationsList","hasNotifications","containerClassName","maxHeight","ComponentClass","componentClass","configuration","pageYOffset","Math","max","min","newTop","NotificationsListView","TabItemType","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","isSelected","contentID","getContentID","tabId","activeContentIDResult","activeTabState","shown","activeContentIndex","TabContentContainer","TabHeaderContainer","TabItemContent","tabHeader","tabSlots","tabItemTitle","__decorate","observer","_renderTabItemContent","tabItemType","TabContent","tabItemContent","TabHeader","Tab","tabIndexQuery","handleHeadingChange","_refHandler","activeLink","_onClick","e","update","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","history","pushState","path","_onKeyDown","keyCode","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","query","activeTab","queryTabIndex","indexOf","arr","split","parseInt","_getTabHeader","_getTabContent","headingComponent","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","componentDidUpdate","params","isEditor","dataActionTabId","focus","selected","onKeyDown","ref","paramName","paramValue","URL","location","requestUrl","URLSearchParams","set","decodeURIComponent","toString","TileList","_telemetryContent","StringExtensions","isNullOrWhitespace","Heading","headingTag","_this$props$config$cl","resources","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","tileListView","tileItem","keyIndex"],"sourceRoot":""}