{"version":3,"file":"static/js/bc78e264ec6e77a484a1.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/actions/get-category-list.action.ts?3eec","webpack://Msdyn365.Commerce.Online/./src/modules/product-page-summary/product-page-summary.action.ts?e077","webpack://Msdyn365.Commerce.Online/./lib/__local__/module-registration.js?8a42","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Category, retailAction } from '@msdyn365-commerce/retail-proxy';\nimport { createGetCategoriesInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CategoriesDataActions.g';\n\n/**\n * Get Org Unit Configuration Data Action\n */\nexport default createObservableDataAction({\n action: >retailAction,\n input: (context: ICreateActionContext) => {\n return createGetCategoriesInput({ Paging: { Top: 0 } }, context.requestContext.apiSettings.channelId);\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getAttributeValuesAsync, getByIdsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport {\n ArrayExtensions,\n generateCacheKey,\n generateImageUrl,\n getProductUrlSync,\n getSelectedProductIdFromActionInput,\n QueryResultSettingsProxy,\n removeDomainQspFromUrl\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IPageSummaryData } from '@msdyn365-commerce-modules/page-summary';\nimport { IProductPageSummaryConfig } from './product-page-summary.props.autogenerated';\n\n/**\n * Product Page Summary Input.\n */\nexport class ProductPageSummaryInput implements IActionInput {\n public apiSettings: ICommerceApiSettings;\n\n public config: IProductPageSummaryConfig;\n\n public productId: number;\n\n public catalogId?: number;\n\n public constructor(\n config: IProductPageSummaryConfig,\n apiSettings: ICommerceApiSettings,\n productId: number,\n requestContext?: IRequestContext\n ) {\n this.config = config || {};\n this.apiSettings = apiSettings;\n this.productId = productId;\n\n if (requestContext) {\n this.catalogId = getCatalogId(requestContext);\n }\n }\n\n public getCacheObjectType = (): string => 'ProductPageSummary';\n\n public getCacheKey = (): string =>\n generateCacheKey(\n this.apiSettings,\n { key: 'Key', value: 'ProductPageSummary' },\n { key: 'Title', value: this.config.title },\n { key: 'ProductId', value: this.productId },\n { key: 'CatalogId', value: this.catalogId }\n );\n\n public dataCacheType = (): CacheType => 'application';\n}\n\nexport interface IProductPageSummary extends IPageSummaryData {\n price?: number;\n productId?: number;\n productBrand?: string;\n}\n\nconst createInput = (args: ICreateActionContext) => {\n const productId = getSelectedProductIdFromActionInput(args);\n\n if (productId) {\n return new ProductPageSummaryInput(\n args.config,\n args.requestContext.apiSettings,\n +productId,\n args.requestContext\n );\n }\n throw new Error('Unable to create ProductPageSummaryAction input, no productId found on module config or query');\n};\n\n// Checks product attributes for the presence of brand attribute to extract the brand name for product metadata\nconst getProductBrand = async (\n context: IActionContext,\n recordId: number,\n channelId: number,\n catalogId: number\n): Promise => {\n const productAttributes = await getAttributeValuesAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n recordId,\n channelId,\n catalogId\n );\n for (const productAttribute of productAttributes) {\n if (productAttribute.Name === 'Brand') {\n return productAttribute.TextValue;\n }\n }\n return;\n};\n\nconst action = async (input: ProductPageSummaryInput, context: IActionContext): Promise => {\n const { config, productId, apiSettings } = input;\n let simpleProductsData: SimpleProduct[] | undefined;\n try {\n simpleProductsData = ArrayExtensions.validValues(\n await getByIdsAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n apiSettings.channelId,\n [productId],\n null,\n input.catalogId ?? 0\n )\n );\n } catch {\n // Do nothing, if there's an error we fall back to values defined from config\n }\n if (ArrayExtensions.hasElements(simpleProductsData)) {\n const simpleProductData = simpleProductsData[0];\n let productUrl: string | undefined;\n try {\n productUrl = getProductUrlSync(simpleProductData, context);\n const canonicalDomain = context.requestContext.canonicalDomain;\n if (productUrl && canonicalDomain) {\n productUrl = `https://${canonicalDomain}${productUrl}`.toLocaleLowerCase();\n productUrl = removeDomainQspFromUrl(productUrl, context.requestContext);\n } else {\n productUrl = undefined;\n }\n } catch {\n productUrl = undefined;\n }\n let productBrand: string | undefined;\n try {\n productBrand = await getProductBrand(context, productId, apiSettings.channelId, input.catalogId ?? 0);\n } catch {\n productBrand = undefined;\n }\n return {\n title: simpleProductData.Name,\n description: simpleProductData.Description,\n sharingImageUrl: generateImageUrl(simpleProductData.PrimaryImageUrl, apiSettings),\n canonicalUrl: productUrl,\n faviconUrl: config && config.faviconUrl,\n productId: simpleProductData.RecordId,\n price: simpleProductData.AdjustedPrice,\n productBrand\n };\n\n // If the action fails fallback to values defined from config\n } else if (config) {\n return {\n title: config.title,\n description: config.description,\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\n faviconUrl: config && config.faviconUrl\n };\n }\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/product-page-summary',\n action: >action,\n input: createInput\n});\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 { \n const actionPath = 'actions/get-category-list.action';\n binding.dataActions[actionPath] = require('partner/actions/get-category-list.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/product-page-summary/product-page-summary.action';\n binding.dataActions[actionPath] = require('partner/modules/product-page-summary/product-page-summary.action');\n registerActionId(actionPath);\n }\n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.packageDataActions = {};\n window.__bindings__.packageDataActions['__local__'] = {\n ...binding.dataActions\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["createObservableDataAction","action","retailAction","input","context","createGetCategoriesInput","Paging","Top","requestContext","apiSettings","channelId","ProductPageSummaryInput","constructor","config","productId","getCacheObjectType","getCacheKey","generateCacheKey","this","key","value","title","catalogId","dataCacheType","getCatalogId","id","async","simpleProductsData","_input$catalogId","ArrayExtensions","validValues","getByIdsAsync","callerContext","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","_unused","hasElements","simpleProductData","productUrl","productBrand","getProductUrlSync","canonicalDomain","toLocaleLowerCase","removeDomainQspFromUrl","undefined","_unused2","_input$catalogId2","recordId","productAttributes","getAttributeValuesAsync","productAttribute","Name","TextValue","getProductBrand","_unused3","description","Description","sharingImageUrl","generateImageUrl","PrimaryImageUrl","canonicalUrl","faviconUrl","RecordId","price","AdjustedPrice","sharingImage","src","args","getSelectedProductIdFromActionInput","Error","binding","modules","dataActions","registerActionId","actionPath","default","prototype","Object","keys","forEach","exportName","Action","require","window","__bindings__","_objectSpread","packageDataActions","module","exports","React","ReactDOM"],"sourceRoot":""}