{"version":3,"file":"static/js/29.35a7e808272a3f772f13.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/citta-n-tile-list-item/components/links.tsx?adb6","webpack://Citta2.0/./src/modules/citta-n-tile-list-item/citta-n-tile-list-item.tsx?09e8","webpack://Citta2.0/./src/modules/citta-n-tile-list-item/citta-n-tile-list-item.view.tsx?e782","webpack://Citta2.0/./src/modules/citta-tab-item/citta-tab-item.tsx?7492","webpack://Citta2.0/./src/modules/citta-tab-item/citta-tab-item.view.tsx?e3f3","webpack://Citta2.0/./src/modules/citta-tabs/citta-tabs.tsx?0226","webpack://Citta2.0/./src/modules/citta-tabs/citta-tabs.view.tsx?5654","webpack://Citta2.0/./src/modules/citta-tile-list-item/components/links.tsx?7aff","webpack://Citta2.0/./src/modules/citta-tile-list-item/citta-tile-list-item.tsx?6ea4","webpack://Citta2.0/./src/modules/citta-tile-list-item/citta-tile-list-item.view.tsx?7f62"],"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\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILinksData } from '../citta-n-tile-list-item.props.autogenerated';\r\n\r\n/**\r\n * Tile List links.\r\n */\r\nexport interface ITileListLinks {\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 * ITileListLinks component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class TileListLinks 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 && ArrayExtensions.hasElements(editableLinks) ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * ITileListLinks component.\r\n * @param linkdata - Link data.\r\n * @returns Editable links.\r\n */\r\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!ArrayExtensions.hasElements(linkdata)) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n for (const link of linkdata) {\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 editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-tile-list__link',\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 TileListLinks;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { TileListLinks } from './components';\r\nimport { IHeadingData, ICittaNTileListItemProps } from './citta-n-tile-list-item.props.autogenerated';\r\n\r\n/**\r\n * Tile-list-item view props.\r\n */\r\nexport interface ITileListItemViewProps extends ICittaNTileListItemProps<{}> {\r\n heading?: React.ReactNode;\r\n paragraph?: React.ReactNode;\r\n links?: React.ReactNode;\r\n backgroundImage?: React.ReactNode;\r\n thumbnailImage?: React.ReactNode;\r\n tileListItem: IModuleProps;\r\n tileListContainer: INodeProps;\r\n tileListImageContainer: INodeProps;\r\n tileListThumbnailImageContainer: INodeProps;\r\n tileListHeadingContainer: INodeProps;\r\n}\r\n\r\n/**\r\n *\r\n * TileListItem component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class TileListItem extends React.PureComponent> {\r\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n public constructor(props: ICittaNTileListItemProps<{}>) {\r\n super(props);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { heading, paragraph, backgroundImage, thumbnailImage, redirectionUrl, links } = this.props.config;\r\n const tileListLinks = links && ArrayExtensions.hasElements(links) && (\r\n \r\n );\r\n const tileListLinkContainer = {\r\n tag: 'a' as NodeTag,\r\n className: 'ms-tile-list-container',\r\n role: 'link',\r\n href: redirectionUrl?.linkUrl.destinationUrl,\r\n 'aria-label': redirectionUrl?.ariaLabel,\r\n target: redirectionUrl?.openInNewTab ? '_blank' : undefined\r\n };\r\n\r\n const tileListButtonContainer = {\r\n tag: 'button' as NodeTag,\r\n className: 'ms-tile-list-container'\r\n };\r\n const viewProps: ITileListItemViewProps = {\r\n ...this.props,\r\n heading: this._createHeading(heading),\r\n paragraph: this._createParagraph(paragraph),\r\n backgroundImage: this._renderBackgroundImage(backgroundImage),\r\n thumbnailImage: this._renderThumbnailImage(thumbnailImage),\r\n links: tileListLinks,\r\n tileListItem: {\r\n moduleProps: this.props,\r\n className: ''\r\n },\r\n tileListContainer: redirectionUrl ? tileListLinkContainer : tileListButtonContainer,\r\n tileListImageContainer: {\r\n className: 'ms-tile-list__image'\r\n },\r\n tileListThumbnailImageContainer: {\r\n className: 'ms-tile-list__thumbnail_image',\r\n 'aria-hidden': 'true'\r\n },\r\n tileListHeadingContainer: {\r\n className: 'ms-tile-list__heading'\r\n }\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handles heading content change event.\r\n * @param event - Content editable event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Handles paragraph content change event.\r\n * @param event - Content editable event.\r\n */\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.paragraph = event.target.value;\r\n };\r\n\r\n /**\r\n * Handles paragraph content change event.\r\n * @param linkIndex - Index of link in linkarray.\r\n * @returns Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\r\n if (this.props.config.links?.[Number(linkIndex)]) {\r\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\r\n }\r\n };\r\n\r\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\r\n if (!text) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\r\n if (!heading) {\r\n return null;\r\n }\r\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderBackgroundImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\r\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\r\n\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=550&h=0&m=6', w: 550, h: 0 },\r\n sm: { q: 'w=550&h=0&m=6', w: 550, h: 0 },\r\n md: { q: 'w=550&h=0&m=6', w: 550, h: 0 },\r\n lg: { q: 'w=550&h=0&m=6', w: 550, h: 0 },\r\n xl: { q: 'w=550&h=0&m=6', w: 550, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderThumbnailImage(\r\n item?: Msdyn365.IImageData,\r\n itemImageSettings?: Msdyn365.IImageSettings,\r\n isAriaHiddenAttribute?: boolean\r\n ): React.ReactNode | null {\r\n if (!item) {\r\n return null;\r\n }\r\n if (StringExtensions.isNullOrWhitespace(item.src)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default TileListItem;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ITileListItemViewProps } from './citta-n-tile-list-item';\r\n\r\n/**\r\n *\r\n * ITileListItemViewProps component.\r\n * @param props - Component props.\r\n * @returns TileListView.\r\n */\r\nconst renderTileListItemContent = (props: ITileListItemViewProps): JSX.Element => {\r\n const {\r\n heading,\r\n paragraph,\r\n backgroundImage,\r\n links,\r\n thumbnailImage,\r\n tileListContainer,\r\n tileListImageContainer,\r\n tileListThumbnailImageContainer,\r\n tileListHeadingContainer\r\n } = props;\r\n\r\n return (\r\n \r\n {backgroundImage}\r\n \r\n {heading}\r\n {paragraph}\r\n {links}\r\n \r\n {thumbnailImage}\r\n \r\n );\r\n};\r\n\r\n/**\r\n *\r\n * TileListItemViewProps component.\r\n * @param props - Component props.\r\n * @returns TileListView.\r\n */\r\nexport const TileListItemViewComponent: React.FC = props => {\r\n const { tileListItem } = props;\r\n return {renderTileListItemContent(props)};\r\n};\r\n\r\nexport default TileListItemViewComponent;\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\r\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { ICittaTabItemData } from './citta-tab-item.data';\r\nimport { ICittaTabItemProps } from './citta-tab-item.props.autogenerated';\r\n\r\nexport interface ITabItemViewProps {\r\n TabContentContainer: IModuleProps;\r\n TabHeaderContainer: IModuleProps;\r\n tabSlots: INodeProps;\r\n TabItemContent: INodeProps;\r\n tabItemType?: TabItemType;\r\n tabHeader: React.ReactNode;\r\n}\r\n\r\nexport interface ITabItemExtentedProps extends ICittaTabItemProps {\r\n tabItemType?: TabItemType;\r\n isSelected?: boolean;\r\n itemIndex?: number;\r\n tabId?: string;\r\n}\r\n\r\nexport enum TabItemType {\r\n TabHeader,\r\n TabContent\r\n}\r\n/**\r\n *\r\n * TabItem component\r\n * @extends {React.Component}\r\n */\r\n@observer\r\nclass TabItem extends React.Component {\r\n private moduleContentClassName: string = 'ms-tab-item-content';\r\n private moduleHeaderClassName: string = 'ms-tab-item-header';\r\n\r\n constructor(props: ICittaTabItemProps) {\r\n super(props);\r\n this._renderTabHeader = this._renderTabHeader.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\r\n const index = itemIndex || 0;\r\n const contentID = getContentID(index, this.props.tabId || '');\r\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\r\n const shown = activeContentIDResult && activeContentIDResult.tabId === this.props.tabId && activeContentIDResult.activeContentIndex !== undefined ?\r\n activeContentIDResult.activeContentIndex === index : isSelected || false;\r\n const viewProps = {\r\n ... this.props,\r\n TabContentContainer: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleContentClassName, config.className)\r\n },\r\n TabHeaderContainer: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleHeaderClassName, config.className),\r\n tabIndex:'0'\r\n },\r\n TabItemContent: {\r\n className: 'ms-tab-item-content__content',\r\n tag: 'section' as NodeTag,\r\n 'aria-hidden': !shown,\r\n role: 'tabpanel',\r\n tabIndex: shown ? 0 : -1,\r\n id: contentID\r\n },\r\n tabHeader: this._renderTabHeader(),\r\n tabSlots: slots,\r\n };\r\n return renderView(viewProps) as React.ReactElement;\r\n\r\n }\r\n\r\n private _renderTabHeader(): React.ReactNode {\r\n return (\r\n <>\r\n {this.props.config.tabItemTitle}\r\n \r\n );\r\n }\r\n\r\n}\r\n\r\nexport const getContentID = (index: number, id: string) => {\r\n return `tab-item-content-${id}-${index}`;\r\n};\r\n\r\nexport default TabItem;","/*---------------------------------------------------------------------------------------------\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ITabItemViewProps, TabItemType } from './citta-tab-item';\r\n\r\nconst TabItemView: React.FC = props => {\r\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\r\n\r\n switch (tabItemType) {\r\n case TabItemType.TabContent:\r\n return (\r\n \r\n \r\n {tabSlots && tabSlots.tabItemContent && tabSlots.tabItemContent.length && (_renderTabItemContent(tabSlots.tabItemContent))}\r\n \r\n \r\n );\r\n case TabItemType.TabHeader:\r\n return (\r\n \r\n {tabHeader}\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\r\n return (\r\n <>\r\n {items && items.length ? (\r\n items.map((item: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {item}\r\n \r\n );\r\n })\r\n ) : null}\r\n \r\n );\r\n};\r\nexport default TabItemView;","/*---------------------------------------------------------------------------------------------\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 { addThrottledEvent, IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { createTabStateInput } from '../../data-actions/tabs/tab-state-data-action';\r\nimport TabItem, { getContentID, TabItemType } from '../citta-tab-item/citta-tab-item';\r\nimport { ICittaTabsData } from './citta-tabs.data';\r\nimport { ICittaTabsProps } from './citta-tabs.props.autogenerated';\r\n\r\n/**\r\n *\r\n * Tab component\r\n * @extends {React.PureComponent>}\r\n */\r\n\r\nexport interface ICallToActionProps {\r\n link: INodeProps[];\r\n}\r\n\r\nexport interface ITabViewProps extends ICittaTabsProps<{}> {\r\n heading?: React.ReactNode;\r\n TabContainer: IModuleProps;\r\n headerSection: INodeProps;\r\n tabHeaderSection: INodeProps;\r\n tabsSection: INodeProps;\r\n tabItemContainer: INodeProps;\r\n tabHeaders: React.ReactNode;\r\n tabContents: React.ReactNode;\r\n isMobileView?: boolean;\r\n renderMobileHeader: React.ReactNode;\r\n tabMobileHeaders: React.ReactNode;\r\n headerMobileSection: INodeProps;\r\n}\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\nexport interface ITabViewStates {\r\n currentTabIndex: number;\r\n pathName: string;\r\n selectedIndex: string;\r\n isMobile: boolean;\r\n selectedDropDown: string;\r\n dropDownOpen: boolean;\r\n}\r\ninterface IRequestContextUrl {\r\n requestUrl: URL;\r\n staticCdnUrl: string;\r\n}\r\n/**\r\n *\r\n * Tab component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass Tab extends React.Component, ITabViewStates> {\r\n public readonly tabIndexQuery: string = 'activeTab';\r\n private activeLink: HTMLLIElement | null;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n @observable\r\n private viewport: GridSize;\r\n\r\n constructor(props: ICittaTabsProps) {\r\n super(props);\r\n const { defaultTabIndex } = this.props.config;\r\n const { slots } = this.props;\r\n const slotLength = slots && slots.tabItems && slots.tabItems.length || 0;\r\n const initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\r\n this.viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n const selectedDdlName = slots && slots.tabItems && slots.tabItems.length && slots.tabItems[defaultTabIndex! - 1];\r\n // @ts-ignore\r\n const defaultSelectedTabTitle: string = selectedDdlName && (selectedDdlName as TabItem).props.config.tabItemTitle || '';\r\n this.state = { currentTabIndex: initialIndex, pathName: '', selectedIndex: '', selectedDropDown: defaultSelectedTabTitle, isMobile: this.isMobile, dropDownOpen: false };\r\n this._getTabHeader = this._getTabHeader.bind(this);\r\n this._getTabContent = this._getTabContent.bind(this);\r\n this._onClick = this._onClick.bind(this);\r\n this._onKeyDown = this._onKeyDown.bind(this);\r\n this._setGetParameter = this._setGetParameter.bind(this);\r\n this.activeLink = null;\r\n this._getTabNameFromRequestContextUrl = this._getTabNameFromRequestContextUrl.bind(this);\r\n this._getRequestContextUrl = this._getRequestContextUrl.bind(this);\r\n this._getRequestContext = this._getRequestContext.bind(this);\r\n this._setState = this._setState.bind(this);\r\n this._getEncodedTabName = this._getEncodedTabName.bind(this);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this._dropDownAction = this._dropDownAction.bind(this);\r\n }\r\n @computed get isMobile(): boolean {\r\n return (this.viewport === 'xs' || this.viewport === 'sm');\r\n }\r\n public componentDidMount(): void {\r\n this._setState();\r\n this.resizeThrottledEventHandler =\r\n window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n public render(): JSX.Element {\r\n const { slots } = this.props;\r\n const { heading, className } = this.props.config;\r\n\r\n const headingComponent = heading && (\r\n \r\n );\r\n const slotLength = slots && slots.tabItems && slots.tabItems.length || 0;\r\n const renderMobileHeader: React.ReactNode = (\r\n

{this.state.selectedDropDown && this.state.selectedDropDown}\r\n \r\n

\r\n );\r\n const tabMobileHeaders: React.ReactNode = (\r\n
    {slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))}
\r\n );\r\n const tabViewProps = {\r\n ...this.props,\r\n TabContainer: {\r\n moduleProps: this.props,\r\n className: classnames('ms-tab', className, this.state.isMobile ? ' mobile-dropdown-view' : '')\r\n },\r\n headerSection: { className: 'ms-tab-header-section' },\r\n headerMobileSection: { className: 'ms-tab-header' },\r\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\r\n heading: headingComponent,\r\n config: this.props && this.props.config,\r\n tabItemContainer: {\r\n tag: 'div' as NodeTag,\r\n className: 'ms-tab-content-section',\r\n },\r\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\r\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index)),\r\n isMobileView: this.state.isMobile,\r\n tabMobileHeaders: tabMobileHeaders,\r\n renderMobileHeader: renderMobileHeader\r\n };\r\n return this.props.renderView(tabViewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\r\n\r\n public componentDidUpdate(): void {\r\n const { data } = this.props;\r\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\r\n if (dataActionTabId) {\r\n if (this.props.id === dataActionTabId) {\r\n this.activeLink && this.activeLink.focus();\r\n }\r\n }\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _setState(): void {\r\n const { defaultTabIndex } = this.props.config;\r\n const { slots } = this.props;\r\n const slotLength = slots && slots.tabItems && slots.tabItems.length || 0;\r\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\r\n let queryTabIndex: number = 0;\r\n const firstTabItem = slots && slots.tabItems && slots.tabItems.length && slots.tabItems[defaultTabIndex! - 1];\r\n // @ts-ignore\r\n let selectedTabTitle: string = firstTabItem && (firstTabItem as TabItem).props.config.tabItemTitle || '';\r\n let selectedTabIndex: string = `${selectedTabTitle}0`;\r\n const requestContext = this._getRequestContext();\r\n const tabName = this._getTabNameFromRequestContextUrl(requestContext.url);\r\n const requestUrl: URL = new URL(requestContext && requestContext.url && requestContext.url.requestUrl && requestContext.url.requestUrl.toString());\r\n let pathName = requestUrl.pathname;\r\n const pathNameSplit = pathName.split('/');\r\n if (slots && slots.tabItems) {\r\n for (let i = 0; i < slots.tabItems.length; i++) {\r\n let tileWithoutSpecialCharacters = (slots.tabItems[i] as TabItem).props.config.tabItemTitle.replace('&','and');\r\n // @ts-ignore\r\n const tabTitle: string = this._getEncodedTabName(tileWithoutSpecialCharacters);\r\n if (tabName.toLocaleLowerCase() === tabTitle.toLocaleLowerCase()) {\r\n selectedTabTitle = tabTitle;\r\n selectedTabIndex = selectedTabTitle + i.toString();\r\n queryTabIndex = i;\r\n pathName = pathNameSplit.slice(0, pathNameSplit.length - 1).join('/');\r\n break;\r\n }\r\n }\r\n }\r\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex : initialIndex;\r\n this.viewport = this.props.context.request && this.props.context.request.device && this.props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n const selectedDdlName = slots && slots.tabItems && slots.tabItems.length && slots.tabItems[defaultTabIndex! - 1];\r\n // @ts-ignore\r\n const defaultSelectedTabTitle: string = selectedDdlName && (selectedDdlName as TabItem).props.config.tabItemTitle || '';\r\n this.setState({ currentTabIndex: initialIndex, pathName: pathName, selectedIndex: selectedTabIndex, selectedDropDown: defaultSelectedTabTitle, isMobile: this.isMobile, dropDownOpen: false });\r\n }\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n return 'xs';\r\n }\r\n\r\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\r\n const { data, config } = this.props;\r\n const activeContentIndex = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\r\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\r\n const selected = activeContentIndex !== undefined && dataActionTabId === this.props.id ? activeContentIndex === index : this.state.currentTabIndex === index;\r\n const contentID = getContentID(index, this.props.id);\r\n // @ts-ignore\r\n const tabTitle = (item as TabItem).props.config.tabItemTitle;\r\n const encodedTabTitle = this._getEncodedTabName(tabTitle);\r\n const requestContext: MsDyn365.IRequestContext = this._getRequestContext();\r\n const queryStringUrl = this._getRequestContextUrl(requestContext.url, true);\r\n let to = `${this.state.pathName}/${encodedTabTitle}${queryStringUrl}`.replace('//', '/');\r\n to = config.deepLink ? to : queryStringUrl;\r\n const selectedTabClassName = selected ? 'tab-selected' : '';\r\n return (\r\n { if (index === this.state.currentTabIndex) { this.activeLink = link; } }}\r\n aria-controls={contentID}\r\n aria-selected={selected}\r\n role='tab'\r\n >\r\n \r\n {React.cloneElement(item as React.ReactElement, { tabItemType: TabItemType.TabHeader, isSelected: index === this.state.currentTabIndex, itemIndex: index, tabId: this.props.id })}\r\n \r\n \r\n );\r\n }\r\n\r\n private _dropDownAction(event: React.MouseEvent): void {\r\n this.setState({ dropDownOpen: !this.state.dropDownOpen });\r\n }\r\n\r\n private _getEncodedTabName(tabName: string): string {\r\n /** @ts-ignore */\r\n return encodeURI(tabName.toLocaleLowerCase().replace(' ', '-').replace(' ', '-'));\r\n }\r\n private _getRequestContextUrl(requestContextUrl?: IRequestContextUrl, onlyQueryString?: boolean): string {\r\n const pageUrl = requestContextUrl && requestContextUrl.requestUrl && requestContextUrl.requestUrl.toString();\r\n if (onlyQueryString) {\r\n const requestContextQueryString = pageUrl && pageUrl.split('?');\r\n const requestContextQueryStringUrl = requestContextQueryString && requestContextQueryString.length > 1 && (requestContextQueryString[1] !== undefined) && requestContextQueryString[1] || '';\r\n return requestContextQueryStringUrl === '' ? requestContextQueryStringUrl : `?${requestContextQueryStringUrl}`;\r\n }\r\n return pageUrl || '';\r\n }\r\n private _getRequestContext(): MsDyn365.IRequestContext {\r\n const { context } = this.props;\r\n return context && context.actionContext && context.actionContext.requestContext;\r\n }\r\n\r\n private _getTabNameFromRequestContextUrl(url?: IRequestContextUrl): string {\r\n const pageUrl = this._getRequestContextUrl(url).split('?');\r\n const pagePath = pageUrl && pageUrl.length && pageUrl[0].split('/');\r\n return pagePath && pagePath.length && pagePath[pagePath.length - 1] || '';\r\n }\r\n\r\n private _getToUrl(item: TabItem, encodedTabTitle: string, requestContext: MsDyn365.IRequestContext): string {\r\n const queryStringUrl = this._getRequestContextUrl(requestContext.url, true);\r\n let to = `${this.state.pathName}/${encodedTabTitle}${queryStringUrl}`.replace('//', '/');\r\n to = this.props.config?.deepLink ? to : queryStringUrl;\r\n return to;\r\n }\r\n\r\n private _onClick = (item: TabItem, index: number, id: string) => (e: React.MouseEvent) => {\r\n const activeTabState = { activeContentIndex: index, tabId: id };\r\n const tabTitle = (item as TabItem).props.config.tabItemTitle.replace('&', 'and');\r\n const encodedTabTitle = this._getEncodedTabName(tabTitle);\r\n const requestContext: MsDyn365.IRequestContext = this._getRequestContext();\r\n const toUrl = this._getToUrl(item, encodedTabTitle, requestContext);\r\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\r\n requestContext && window.history.pushState({ path: toUrl }, '', toUrl);\r\n this.setState({ currentTabIndex: index, selectedDropDown: tabTitle, dropDownOpen: false });\r\n\r\n }\r\n\r\n private _getTabTitleByIndex = (index: number) => {\r\n const { slots } = this.props;\r\n const selTabItem = slots && slots.tabItems && slots.tabItems.length && slots.tabItems[index!];\r\n // @ts-ignore\r\n const selectedTabTitleByIndex = selTabItem && (selTabItem as TabItem).props.config.tabItemTitle || '';\r\n return { selTabItem, selectedTabTitleByIndex };\r\n }\r\n\r\n private _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\r\n if (e.keyCode === 13) {\r\n const activeTabState = { activeContentIndex: index, tabId: id };\r\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\r\n const seltab = this._getTabTitleByIndex(index);\r\n const encodedTabTitle = this._getEncodedTabName(seltab.selectedTabTitleByIndex);\r\n const requestContext: MsDyn365.IRequestContext = this._getRequestContext();\r\n // @ts-ignore\r\n const toUrl = this._getToUrl(seltab.selTabItem as TabItem, encodedTabTitle, requestContext);\r\n this.setState({ currentTabIndex: index, selectedDropDown: seltab.selectedTabTitleByIndex, dropDownOpen: false });\r\n requestContext && window.history.pushState({ path: toUrl }, '', toUrl);\r\n }\r\n }\r\n\r\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\r\n return (\r\n \r\n {React.cloneElement(item as React.ReactElement, { tabItemType: TabItemType.TabContent, isSelected: index === this.state.currentTabIndex, itemIndex: index, tabId: this.props.id })}\r\n \r\n );\r\n }\r\n\r\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\r\n let url;\r\n\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n url = new URL(window.location.href);\r\n } else {\r\n url = new URL(requestContext.url.requestUrl.href);\r\n }\r\n const params = new window.URLSearchParams(url.search);\r\n params.set(paramName, paramValue);\r\n url.search = decodeURIComponent(params.toString());\r\n return url.toString();\r\n }\r\n}\r\n\r\nexport default Tab;","/*---------------------------------------------------------------------------------------------\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ITabViewProps } from './citta-tabs';\r\n\r\nconst tabView: React.FC = props => {\r\n const { heading, TabContainer, tabHeaders, tabContents,headerMobileSection, renderMobileHeader, isMobileView, tabMobileHeaders } = props;\r\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\r\n props.context.telemetry.error('Tab content is empty, module wont render');\r\n return null;\r\n }\r\n if (isMobileView) {\r\n return (\r\n \r\n \r\n \r\n {renderMobileHeader}\r\n {tabMobileHeaders}\r\n \r\n \r\n \r\n {tabContents}\r\n \r\n \r\n\r\n );\r\n } else {\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n\r\n \r\n {tabHeaders}\r\n \r\n\r\n \r\n {tabContents}\r\n \r\n \r\n );\r\n }\r\n\r\n};\r\n\r\nexport default tabView;","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILinksData } from '../citta-tile-list-item.props.autogenerated';\r\n\r\n/**\r\n * Tile List links.\r\n */\r\nexport interface ITileListLinks {\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 * ITileListLinks component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class TileListLinks 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 && ArrayExtensions.hasElements(editableLinks) ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * ITileListLinks component.\r\n * @param linkdata - Link data.\r\n * @returns Editable links.\r\n */\r\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!ArrayExtensions.hasElements(linkdata)) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n for (const link of linkdata) {\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 editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-tile-list__link',\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 TileListLinks;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { TileListLinks } from './components';\r\nimport { IHeadingData, ICittaTileListItemProps } from './citta-tile-list-item.props.autogenerated';\r\n\r\n/**\r\n * Tile-list-item view props.\r\n */\r\nexport interface ITileListItemViewProps extends ICittaTileListItemProps<{}> {\r\n heading?: React.ReactNode;\r\n paragraph?: React.ReactNode;\r\n links?: React.ReactNode;\r\n backgroundImage?: React.ReactNode;\r\n thumbnailImage?: React.ReactNode;\r\n tileListItem: IModuleProps;\r\n tileListContainer: INodeProps;\r\n tileListImageContainer: INodeProps;\r\n tileListThumbnailImageContainer: INodeProps;\r\n tileListHeadingContainer: INodeProps;\r\n}\r\n\r\n/**\r\n *\r\n * TileListItem component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class TileListItem extends React.PureComponent> {\r\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n public constructor(props: ICittaTileListItemProps<{}>) {\r\n super(props);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { heading, paragraph, backgroundImage, thumbnailImage, redirectionUrl, links } = this.props.config;\r\n const tileListLinks = links && ArrayExtensions.hasElements(links) && (\r\n \r\n );\r\n const tileListLinkContainer = {\r\n tag: 'a' as NodeTag,\r\n className: 'ms-tile-list-container',\r\n role: 'link',\r\n href: redirectionUrl?.linkUrl.destinationUrl,\r\n 'aria-label': redirectionUrl?.ariaLabel\r\n };\r\n\r\n const tileListButtonContainer = {\r\n tag: 'button' as NodeTag,\r\n className: 'ms-tile-list-container'\r\n };\r\n const viewProps: ITileListItemViewProps = {\r\n ...this.props,\r\n heading: this._createHeading(heading),\r\n paragraph: this._createParagraph(paragraph),\r\n backgroundImage: this._renderBackgroundImage(backgroundImage),\r\n thumbnailImage: this._renderThumbnailImage(thumbnailImage),\r\n links: tileListLinks,\r\n tileListItem: {\r\n moduleProps: this.props,\r\n className: ''\r\n },\r\n tileListContainer: redirectionUrl ? tileListLinkContainer : tileListButtonContainer,\r\n tileListImageContainer: {\r\n className: 'ms-tile-list__image'\r\n },\r\n tileListThumbnailImageContainer: {\r\n className: 'ms-tile-list__thumbnail_image',\r\n 'aria-hidden': 'true'\r\n },\r\n tileListHeadingContainer: {\r\n className: 'ms-tile-list__heading'\r\n }\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handles heading content change event.\r\n * @param event - Content editable event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Handles paragraph content change event.\r\n * @param event - Content editable event.\r\n */\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.paragraph = event.target.value;\r\n };\r\n\r\n /**\r\n * Handles paragraph content change event.\r\n * @param linkIndex - Index of link in linkarray.\r\n * @returns Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\r\n if (this.props.config.links?.[Number(linkIndex)]) {\r\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\r\n }\r\n };\r\n\r\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\r\n if (!text) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\r\n if (!heading) {\r\n return null;\r\n }\r\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderBackgroundImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\r\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\r\n\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=500&h=500&m=6', w: 500, h: 500 },\r\n sm: { q: 'w=600&h=600&m=6', w: 600, h: 600 },\r\n md: { q: 'w=700&h=700&m=6', w: 700, h: 700 },\r\n lg: { q: 'w=800&h=800&m=6', w: 800, h: 800 },\r\n xl: { q: 'w=900&h=900&m=6', w: 900, h: 900 }\r\n },\r\n lazyload: true\r\n };\r\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderThumbnailImage(\r\n item?: Msdyn365.IImageData,\r\n itemImageSettings?: Msdyn365.IImageSettings,\r\n isAriaHiddenAttribute?: boolean\r\n ): React.ReactNode | null {\r\n if (!item) {\r\n return null;\r\n }\r\n if (StringExtensions.isNullOrWhitespace(item.src)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default TileListItem;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ITileListItemViewProps } from './citta-tile-list-item';\r\n\r\n/**\r\n *\r\n * ITileListItemViewProps component.\r\n * @param props - Component props.\r\n * @returns TileListView.\r\n */\r\nconst renderTileListItemContent = (props: ITileListItemViewProps): JSX.Element => {\r\n const {\r\n heading,\r\n paragraph,\r\n backgroundImage,\r\n links,\r\n thumbnailImage,\r\n tileListContainer,\r\n tileListImageContainer,\r\n tileListThumbnailImageContainer,\r\n tileListHeadingContainer\r\n } = props;\r\n\r\n return (\r\n \r\n {backgroundImage}\r\n \r\n {heading}\r\n {paragraph}\r\n {links}\r\n \r\n {thumbnailImage}\r\n \r\n );\r\n};\r\n\r\n/**\r\n *\r\n * TileListItemViewProps component.\r\n * @param props - Component props.\r\n * @returns TileListView.\r\n */\r\nexport const TileListItemViewComponent: React.FC = props => {\r\n const { tileListItem } = props;\r\n return {renderTileListItemContent(props)};\r\n};\r\n\r\nexport default TileListItemViewComponent;\r\n"],"names":["TileListLinks","React","constructor","_mapEditableLinks","linkdata","ArrayExtensions","hasElements","editableLinks","link","payLoad","getPayloadObject","this","props","telemetryContent","linkText","contentAction","etext","attributes","getTelemetryAttributes","editableLink","ariaLabel","className","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onClick","onTelemetryClick","push","render","links","Msdyn365","editProps","onTextChange","requestContext","TileListItem","super","_telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleHeadingChange","event","config","heading","text","target","value","handleParagraphChange","paragraph","handleLinkTextChange","linkIndex","_this$props$config$li","Number","backgroundImage","thumbnailImage","redirectionUrl","tileListLinks","tileListLinkContainer","tag","href","undefined","viewProps","_objectSpread","_createHeading","_createParagraph","_renderBackgroundImage","_renderThumbnailImage","tileListItem","moduleProps","tileListContainer","tileListImageContainer","tileListThumbnailImageContainer","tileListHeadingContainer","renderView","onEdit","_heading$tag","StringExtensions","isNullOrWhitespace","item","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$ba","verifiedImageSettings","imageSettings","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","Object","assign","gridSettings","loadFailureBehavior","key","moduleType","typeName","imagePropertyName","itemImageSettings","_this$props$config$th","src","layout","msdyn365__moduleLayout","TileListItemViewComponent","Module","Node","renderTileListItemContent","TabItemType","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","bind","slots","data","isSelected","itemIndex","index","contentID","getContentID","tabId","activeContentIDResult","activeTabState","result","shown","activeContentIndex","TabContentContainer","classnames","TabHeaderContainer","tabIndex","TabItemContent","id","tabHeader","tabSlots","tabItemTitle","__decorate","observer","_renderTabItemContent","items","length","map","tabItemType","TabContent","tabItemContent","TabHeader","Tab","tabIndexQuery","_onClick","e","tabTitle","replace","encodedTabTitle","_getEncodedTabName","_getRequestContext","toUrl","_getToUrl","actionContext","update","createTabStateInput","window","history","pushState","path","setState","currentTabIndex","selectedDropDown","dropDownOpen","_getTabTitleByIndex","selTabItem","tabItems","selectedTabTitleByIndex","_onKeyDown","keyCode","seltab","defaultTabIndex","slotLength","initialIndex","viewport","device","Type","selectedDdlName","defaultSelectedTabTitle","state","pathName","selectedIndex","isMobile","_getTabHeader","_getTabContent","_setGetParameter","activeLink","_getTabNameFromRequestContextUrl","_getRequestContextUrl","_setState","_updateViewport","_dropDownAction","componentDidMount","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","headingComponent","MsDyn365","renderMobileHeader","tabMobileHeaders","tabViewProps","TabContainer","headerSection","headerMobileSection","tabsSection","tabItemContainer","tabContents","tabHeaders","isMobileView","componentDidUpdate","dataActionTabId","focus","queryTabIndex","firstTabItem","selectedTabTitle","selectedTabIndex","tabName","url","URL","requestUrl","toString","pathname","pathNameSplit","split","i","tileWithoutSpecialCharacters","toLocaleLowerCase","slice","join","_getViewport","innerWidth","selected","queryStringUrl","to","deepLink","selectedTabClassName","onKeyDown","ref","encodeURI","requestContextUrl","onlyQueryString","pageUrl","requestContextQueryString","requestContextQueryStringUrl","pagePath","_this$props$config","paramName","paramValue","isBrowser","location","params","URLSearchParams","search","set","decodeURIComponent","observable","computed","error"],"sourceRoot":""}