{"version":3,"file":"static/js/70a4efc36d07f784743d.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/lobas-article-page-summary/lobas-article-page-summary.action.ts?1251","webpack://Msdyn365.Commerce.Online/./src/modules/lobas-article-page-summary/lobas-article-page-summary.tsx?1977","webpack://Msdyn365.Commerce.Online/./lib/lobas-article-page-summary/module-registration.js?3b4a","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["/*--------------------------------------------------------------\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 {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICommerceApiSettings,\r\n ICreateActionContext,\r\n IRequestContext\r\n} from '@msdyn365-commerce/core';\r\nimport { buildCacheKey, generateImageUrl, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nimport { IPageSummaryData } from '@msdyn365-commerce-modules/page-summary';\r\nimport { ILobasArticlePageSummaryConfig } from './lobas-article-page-summary.props.autogenerated';\r\nimport { IArticle } from '../../actions/DataServiceEntities.g';\r\nimport { getArticleByURLAsync } from '../../actions/DataActionExtension.g';\r\n\r\n/**\r\n * Product Page Summary Input.\r\n */\r\nexport class ArticlePageSummaryInput implements IActionInput {\r\n public apiSettings: ICommerceApiSettings;\r\n\r\n public config: ILobasArticlePageSummaryConfig;\r\n\r\n public articleId: string;\r\n\r\n public constructor(\r\n config: ILobasArticlePageSummaryConfig,\r\n apiSettings: ICommerceApiSettings,\r\n articleId: string,\r\n requestContext?: IRequestContext\r\n ) {\r\n this.config = config || {};\r\n this.apiSettings = apiSettings;\r\n this.articleId = articleId;\r\n }\r\n\r\n public getCacheObjectType = (): string => 'ArticlePageSummary';\r\n\r\n public getCacheKey = (): string => `${buildCacheKey('ArticlePageSummary', this.apiSettings)}-${this.config.title}-${this.articleId}`;\r\n\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n\r\nexport interface IArticlePageSummary extends IPageSummaryData {\r\n articleId?: string;\r\n}\r\n\r\nconst createInput = (args: ICreateActionContext) => {\r\n const urlParts = args.requestContext.url.requestUrl.href.split('/');\r\n const articleId = urlParts[urlParts.length - 1];\r\n\r\n if (articleId) {\r\n return new ArticlePageSummaryInput(\r\n args.config,\r\n args.requestContext.apiSettings,\r\n articleId,\r\n args.requestContext\r\n );\r\n }\r\n throw new Error('Unable to create ArticlePageSummaryAction input, no articleId found in url');\r\n};\r\n\r\nconst action = async (input: ArticlePageSummaryInput, context: IActionContext): Promise => {\r\n const { config, articleId, apiSettings } = input;\r\n let article: IArticle | undefined;\r\n try {\r\n article = await getArticleByURLAsync(\r\n {\r\n callerContext: context,\r\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\r\n },\r\n articleId\r\n );\r\n } catch {\r\n // Do nothing, if there's an error we fall back to values defined from config\r\n }\r\n if (article) {\r\n const regex = /(<([^>]+)>)/gi;\r\n\r\n return {\r\n title: article.Title,\r\n description: article.Summary?.replace(regex, ''),\r\n sharingImageUrl: generateImageUrl(article.ThumbnailImage, apiSettings),\r\n canonicalUrl: context.requestContext.url.requestUrl.href,\r\n faviconUrl: config && config.faviconUrl,\r\n articleId: article.URL\r\n };\r\n\r\n // If the action fails fallback to values defined from config\r\n } else if (config) {\r\n return {\r\n title: config.title,\r\n description: config.description,\r\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\r\n faviconUrl: config && config.faviconUrl\r\n };\r\n }\r\n return {};\r\n};\r\n\r\nexport default createObservableDataAction({\r\n id: 'lobas-article-page-summary',\r\n action: >action,\r\n input: createInput\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 { HtmlHeadInclude, IAny, IGeneric } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nimport { ILobasArticlePageSummaryData } from './lobas-article-page-summary.data';\r\nimport { ILobasArticlePageSummaryProps } from './lobas-article-page-summary.props.autogenerated';\r\n\r\n/**\r\n *\r\n * ProductPageSummary component.\r\n * @extends {React.PureComponent}\r\n */\r\nclass ArticlePageSummary extends React.PureComponent> {\r\n public render(): JSX.Element {\r\n if (this.props.data.articlePageSummary.result === undefined) {\r\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\r\n }\r\n let {\r\n data: {\r\n articlePageSummary: {\r\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\r\n }\r\n }\r\n } = this.props;\r\n\r\n const {\r\n config,\r\n context,\r\n data: {\r\n articlePageSummary: {\r\n result: { canonicalUrl, articleId }\r\n }\r\n }\r\n } = this.props;\r\n\r\n // Product SEO metadata specific information - non-overridable\r\n const articleName = title;\r\n const articleDescription = description;\r\n const articleImageUrl = sharingImageUrl;\r\n\r\n // Override values coming from data action if config values are provided\r\n title = config.title || title;\r\n description = config.description || description;\r\n keywords = config.keywords || keywords;\r\n sharingImageUrl = (config.sharingImage && config.sharingImage.src) || sharingImageUrl;\r\n faviconUrl = config.faviconUrl || faviconUrl;\r\n\r\n // Construct page title with suffix and prefix if provided from app settings\r\n const pageTitle = this._constructPageTitle(title, context && context.request && context.request.app);\r\n return (\r\n <>\r\n \r\n {pageTitle && {pageTitle}}\r\n {description && }\r\n {keywords && }\r\n {canonicalUrl && }\r\n {faviconUrl && }\r\n \r\n {this._renderArticleMetadata(articleName, articleDescription, articleImageUrl, canonicalUrl, articleId)}\r\n {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\r\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Renders the facebook and other social media specific metadata tags.\r\n *\r\n * @param title Page title.\r\n * @param description Product description.\r\n * @param sharingImageUrl Primary product image url.\r\n */\r\n private _renderOgTags(title: string | undefined, description: string | undefined, sharingImageUrl: string | undefined): JSX.Element {\r\n return (\r\n \r\n {title && }\r\n {description && }\r\n {sharingImageUrl && }\r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Constructs and renders the JSON-LD tag used to output product specific metadata used by search engine crawlers.\r\n *\r\n * @param productName Product name.\r\n * @param description Product description.\r\n * @param sharingImageUrl Primary product image url.\r\n * @param canonicalUrl Product canonical url.\r\n * @param productId Master product id.\r\n * @param price Proudct price.\r\n * @param currencyCode Current channel currency code.\r\n * @param productBrand Product brand.\r\n */\r\n private _renderArticleMetadata(\r\n productName: string | undefined,\r\n description: string | undefined,\r\n sharingImageUrl: string | undefined,\r\n canonicalUrl: string | undefined,\r\n articleId: string | undefined\r\n ): JSX.Element {\r\n // Construct the JSON-LD data that contains the article metadata information used by search enginge crawlers\r\n const articleMetaData = JSON.stringify({\r\n '@context': 'http://schema.org',\r\n '@type': 'Article',\r\n name: productName,\r\n description,\r\n image: sharingImageUrl,\r\n article: articleId\r\n });\r\n return (\r\n \r\n