{"version":3,"file":"static/js/b71000f03704f8a668e1.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/modules/dobbies-default-general-page-summary/dobbies-default-general-page-summary.action.ts?0e9d","webpack://Dobbies.Commerce/./src/modules/dobbies-default-general-page-summary/dobbies-default-general-page-summary.tsx?afa5","webpack://Dobbies.Commerce/./lib/dobbies-default-general-page-summary/module-registration.js?f3fe","webpack://Dobbies.Commerce/external var \"React\"?0d3b","webpack://Dobbies.Commerce/external var \"ReactDOM\"?853b"],"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 {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICreateActionContext,\r\n IRequestContext\r\n} from '@msdyn365-commerce/core';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { buildCacheKeyWithUrlTokens, removeDomainQspFromUrl } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nimport { IDobbiesDefaultGeneralPageSummaryConfig } from './dobbies-default-general-page-summary.props.autogenerated';\r\n\r\nexport interface IPageSummaryData {\r\n title?: string;\r\n description?: string;\r\n keywords?: string;\r\n sharingImageUrl?: string;\r\n canonicalUrl?: string;\r\n faviconUrl?: string;\r\n}\r\n\r\n/**\r\n * Page Summary Input\r\n */\r\nexport class PageSummaryInput implements IActionInput {\r\n public requestContext: IRequestContext;\r\n\r\n public config: IDobbiesDefaultGeneralPageSummaryConfig;\r\n\r\n constructor(config: IDobbiesDefaultGeneralPageSummaryConfig, requestContext: IRequestContext) {\r\n this.config = config || {};\r\n this.requestContext = requestContext;\r\n }\r\n\r\n public getCacheObjectType = (): string => 'PageSummary';\r\n\r\n public getCacheKey = (): string => `${buildCacheKeyWithUrlTokens('PageSummary', this.requestContext)}-${this.config.title}`;\r\n\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nconst action = async (input: PageSummaryInput, context: IActionContext): Promise => {\r\n const { config } = input;\r\n try {\r\n const url = context.requestContext.url.requestUrl.href;\r\n const excelUrl = context.requestContext.app.config.defaultPageSeoTSVUrl;\r\n if (!excelUrl) {\r\n return {\r\n title: config && config.title,\r\n description: config && config.description,\r\n keywords: config && config.keywords,\r\n sharingImageUrl: config && config.sharingImage && config.sharingImage.src,\r\n canonicalUrl:\r\n context.requestContext && context.requestContext.canonicalUrl\r\n ? removeDomainQspFromUrl(context.requestContext.canonicalUrl, context.requestContext)\r\n : undefined,\r\n faviconUrl: config && config.faviconUrl\r\n };\r\n }\r\n const excelRes = await Msdyn365.sendRequest(excelUrl, 'get');\r\n const excelDataStr = excelRes.data as string;\r\n const splittedExcelData = excelDataStr.split('\\n');\r\n let title = '';\r\n let desc: string | undefined;\r\n let canonical = '';\r\n\r\n for (const dataRow of splittedExcelData) {\r\n if (!dataRow || !dataRow.trim()) {\r\n continue;\r\n }\r\n const rowSplitted = dataRow.trim().split('\\t');\r\n if (rowSplitted && rowSplitted.length > 3) {\r\n if (rowSplitted[0].includes(url) || rowSplitted[0] === url) {\r\n title = rowSplitted[1];\r\n desc = rowSplitted[2];\r\n canonical = rowSplitted[3];\r\n return {\r\n title: title,\r\n description: desc,\r\n keywords: config && config.keywords,\r\n sharingImageUrl: config && config.sharingImage && config.sharingImage.src,\r\n canonicalUrl: canonical,\r\n faviconUrl: config && config.faviconUrl\r\n };\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.log('Error processing Metadata TSV file', e);\r\n }\r\n\r\n return {\r\n title: config && config.title,\r\n description: config && config.description,\r\n keywords: config && config.keywords,\r\n sharingImageUrl: config && config.sharingImage && config.sharingImage.src,\r\n canonicalUrl:\r\n context.requestContext && context.requestContext.canonicalUrl\r\n ? removeDomainQspFromUrl(context.requestContext.canonicalUrl, context.requestContext)\r\n : undefined,\r\n faviconUrl: config && config.faviconUrl\r\n };\r\n};\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/page-summary/default-page-summary',\r\n action: >action,\r\n input: (args: ICreateActionContext) => {\r\n return new PageSummaryInput(args.config, args.requestContext);\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\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 { IDobbiesDefaultGeneralPageSummaryData } from './dobbies-default-general-page-summary.data';\r\nimport { IDobbiesDefaultGeneralPageSummaryProps } from './dobbies-default-general-page-summary.props.autogenerated';\r\n\r\n/**\r\n *\r\n * DefaultPageSummaryMetadata component.\r\n * @extends {React.PureComponent}\r\n */\r\nclass DefaultPageSummary extends React.PureComponent> {\r\n public render(): JSX.Element {\r\n if (this.props.data.pageSummary.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 pageSummary: {\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 pageSummary: {\r\n result: { canonicalUrl }\r\n }\r\n }\r\n } = this.props;\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 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 {!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 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 private _renderTwitterTags(\r\n title: string | undefined,\r\n description: string | undefined,\r\n sharingImageUrl: string | undefined\r\n ): 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 private _constructPageTitle(title: string | undefined, app: IGeneric): string | undefined {\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n const moduleConfig = this.props.config;\r\n if (moduleConfig && moduleConfig.ignoreTitleSuffixPrefix) {\r\n return title;\r\n }\r\n\r\n const appConfig = app && app.platform;\r\n if (appConfig) {\r\n if (appConfig.pageTitlePrefix) {\r\n title = (appConfig.pageTitlePrefix as string) + title;\r\n }\r\n if (appConfig.pageTitleSuffix) {\r\n title += appConfig.pageTitleSuffix as string;\r\n }\r\n }\r\n\r\n return title;\r\n }\r\n}\r\n\r\nexport default DefaultPageSummary;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['dobbies-default-general-page-summary'] = {\n c: () => require('partner/modules/dobbies-default-general-page-summary/dobbies-default-general-page-summary.tsx'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'modules/dobbies-default-general-page-summary/dobbies-default-general-page-summary.action', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'dobbies-default-general-page-summary',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/dobbies-default-general-page-summary'\n });\n \n\n {\n const sanitizedActionPath = 'modules/dobbies-default-general-page-summary/dobbies-default-general-page-summary.action';\n let dataAction = require('partner/modules/dobbies-default-general-page-summary/dobbies-default-general-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["PageSummaryInput","constructor","config","requestContext","getCacheObjectType","getCacheKey","buildCacheKeyWithUrlTokens","this","title","dataCacheType","createObservableDataAction","id","action","async","input","context","url","requestUrl","href","excelUrl","app","defaultPageSeoTSVUrl","description","keywords","sharingImageUrl","sharingImage","src","canonicalUrl","removeDomainQspFromUrl","undefined","faviconUrl","excelRes","Msdyn365","splittedExcelData","data","split","desc","canonical","dataRow","trim","rowSplitted","length","includes","e","console","log","args","DefaultPageSummary","React","render","props","pageSummary","result","Error","pageTitle","_constructPageTitle","request","HtmlHeadInclude","name","content","rel","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","platform","pageTitlePrefix","pageTitleSuffix","binding","modules","dataActions","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","prototype","RegistrationId","window","__bindings__","_objectSpread","module","exports","ReactDOM"],"sourceRoot":""}