{"version":3,"file":"static/js/f6874a0576d4851a9c93.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/actions/get-media-locations-for-selected-variant.action.ts?5dc9","webpack://Msdyn365.Commerce.Online/./src/actions/get-store-location-centiro.action.ts?10f5","webpack://Msdyn365.Commerce.Online/./src/actions/only-c-get-auto-suggest-suggestions.action.ts?053e","webpack://Msdyn365.Commerce.Online/./src/actions/only-c-products-by-category.action.ts?b61a","webpack://Msdyn365.Commerce.Online/./src/actions/store-centiro-location.action.ts?6092","webpack://Msdyn365.Commerce.Online/./src/shared/functions/get-secret.ts?80af","webpack://Msdyn365.Commerce.Online/./src/actions/update-b2c-identity.action.ts?846b","webpack://Msdyn365.Commerce.Online/./src/modules/only-c-product-page-summary/only-c-product-page-summary.action.ts?0fb3","webpack://Msdyn365.Commerce.Online/./src/themes/only/actions/search-org-unit-locations.action.ts?f57e","webpack://Msdyn365.Commerce.Online/./src/utils/helper.tsx?0d7b","webpack://Msdyn365.Commerce.Online/./lib/__local__/module-registration.js?8a42","webpack://Msdyn365.Commerce.Online/../../src/consts.ts?a6b5","webpack://Msdyn365.Commerce.Online/../../../src/utils/product-list-utils.ts?20d3","webpack://Msdyn365.Commerce.Online/./node_modules/moment/locale/ sync ^\\.\\/.*$?b2df","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/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\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n getCatalogId,\r\n getMediaLocationsForProductAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric,\r\n MediaLocationsInput\r\n} from '@msdyn365-commerce/core';\r\nimport { AsyncResult, MediaLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getMediaLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\nimport {\r\n getSelectedVariant,\r\n SelectedVariantInput,\r\n generateImageUrl,\r\n getSelectedProductIdFromActionInput,\r\n QueryResultSettingsProxy\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\n\r\n/**\r\n * The action input class for the getMediaLocationsForSelectedVariant data action.\r\n */\r\nexport class MediaLocationsForSelectedVariantInput implements IActionInput {\r\n public productId: number;\r\n\r\n public channelId: number;\r\n\r\n public catalogId: number;\r\n\r\n public selectedProduct: SimpleProduct | undefined;\r\n\r\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\r\n this.productId = productId;\r\n this.channelId = channelId;\r\n this.catalogId = catalogId || 0;\r\n this.selectedProduct = selectedProduct;\r\n }\r\n\r\n public getCacheKey = () => 'MediaLocationsForSelectedVariant';\r\n\r\n public getCacheObjectType = () => 'MediaLocations';\r\n\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\n/**\r\n * The createInput method for the getMediaLocationsForSelectedVariant data action.\r\n * @param inputData The input data passed to the createInput method.\r\n */\r\nexport const createMediaLocationsForSelectedVariantInput = (\r\n inputData: ICreateActionContext>\r\n): MediaLocationsForSelectedVariantInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n const catalogId = getCatalogId(inputData.requestContext);\r\n\r\n if (productId) {\r\n return new MediaLocationsForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, undefined, catalogId);\r\n }\r\n throw new Error('Unable to create MediaLocationsForSelectedVariantInput, no productId found on module config or query');\r\n};\r\n\r\n/**\r\n * The action method for the getMediaLocationsForSelectedVariant data action.\r\n * @param input\r\n * @param ctx\r\n */\r\nexport async function getMediaLocationsForSelectedVariantAction(\r\n input: MediaLocationsForSelectedVariantInput,\r\n ctx: IActionContext\r\n): Promise {\r\n return AsyncResult.resolve()\r\n .then(() => {\r\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\r\n\r\n if (!activeProduct) {\r\n const selectedVariantInput = new SelectedVariantInput(\r\n input.productId,\r\n input.channelId,\r\n undefined,\r\n undefined,\r\n ctx.requestContext\r\n );\r\n return getSelectedVariant(selectedVariantInput, ctx);\r\n }\r\n\r\n return activeProduct;\r\n })\r\n .then(productResult => {\r\n const activeProduct = productResult?.productVariant ?? productResult;\r\n\r\n if (activeProduct) {\r\n if (ctx.requestContext.app?.config?.OmniChannelMedia) {\r\n const mediaLocationsInput = new MediaLocationsInput(\r\n ctx.requestContext,\r\n activeProduct.RecordId,\r\n input.channelId,\r\n input.catalogId\r\n );\r\n return getMediaLocationsForProductAction(mediaLocationsInput, ctx);\r\n }\r\n return getMediaLocationsAsync(\r\n { callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx) },\r\n activeProduct.RecordId,\r\n input.channelId,\r\n input.catalogId\r\n ).then(response => {\r\n return response.map(\r\n (mediaLocation: MediaLocation): MediaLocation => {\r\n mediaLocation.Uri = generateImageUrl(mediaLocation.Uri, ctx.requestContext.apiSettings);\r\n mediaLocation.AltText = mediaLocation.AltText ? mediaLocation.AltText : activeProduct.Name;\r\n if (!mediaLocation.Uri?.includes('images-eu-prod')) {\r\n mediaLocation.Uri = '';\r\n }\r\n return mediaLocation;\r\n }\r\n );\r\n });\r\n }\r\n\r\n return [];\r\n })\r\n .catch(error => {\r\n ctx.trace(error);\r\n ctx.telemetry.error(error.message);\r\n ctx.telemetry.debug('[getMediaLocationsForSelectedVariantAction]Error executing action');\r\n throw new Error('[getMediaLocationsForSelectedVariantAction]Error executing action');\r\n });\r\n}\r\n\r\n/**\r\n * The getMediaLocationsForSelectedVariant data action\r\n * Gets the currently selected variant for the page via the getSelectedVariant data action,\r\n * and then gets the media location information for the variant via the MediaLocations RetailServer API.\r\n */\r\nexport const getMediaLocationsForSelectedVariantActionDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-media-locations-for-selected-variant',\r\n action: >getMediaLocationsForSelectedVariantAction,\r\n input: createMediaLocationsForSelectedVariantInput\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 Msdyn365 from '@msdyn365-commerce/core';\r\nimport { bSGetCollectionPointsAsync } from '../custom-proxy/DataActionExtension.g';\r\nimport { ICollectionPoint, ICollectionPoints, IOpeningHour } from '../custom-proxy/DataServiceEntities.g';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nexport interface IFullOrgUnitAvailabilityExtended extends IFullOrgUnitAvailability {\r\n openingHours?: IOpeningHour[];\r\n}\r\n/**\r\n * GetStoreLocationCentiro Input Action\r\n */\r\nexport class GetStoreLocationCentiroInput implements Msdyn365.IActionInput {\r\n public CountryISOCode?: string;\r\n public City?: string;\r\n public PostalCode?: string;\r\n public Networks?: string;\r\n public StreetAddress?: string;\r\n public State?: string;\r\n public MaxDistance?: string;\r\n public MaxCollectionPoints?: string;\r\n\r\n constructor(\r\n CountryISOCode?: string,\r\n City?: string,\r\n PostalCode?: string,\r\n Networks?: string,\r\n StreetAddress?: string,\r\n State?: string,\r\n MaxDistance?: string,\r\n MaxCollectionPoints?: string\r\n ) {\r\n this.CountryISOCode = CountryISOCode;\r\n this.City = City;\r\n this.PostalCode = PostalCode;\r\n this.Networks = Networks;\r\n this.StreetAddress = StreetAddress;\r\n this.State = State;\r\n this.MaxDistance = MaxDistance;\r\n this.MaxCollectionPoints = MaxCollectionPoints;\r\n }\r\n public getCacheKey = () => `GetStoreLocationCentiro`;\r\n public getCacheObjectType = () => 'GetStoreLocationCentiro';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IGetStoreLocationCentiroData {\r\n collectionPoints: ICollectionPoint[];\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new GetStoreLocationCentiroInput();\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nasync function getStoreLocationCentiroAction(\r\n input: GetStoreLocationCentiroInput,\r\n ctx: Msdyn365.IActionContext\r\n): Promise {\r\n if (!input.Networks || !input.MaxDistance || !input.MaxCollectionPoints) {\r\n return [];\r\n }\r\n\r\n const deliveryAddressCentiro: ICollectionPoints = await bSGetCollectionPointsAsync(\r\n { callerContext: ctx, queryResultSettings: {} },\r\n input\r\n );\r\n\r\n const collectionPoints = deliveryAddressCentiro.collectionPoints;\r\n const mappedCollection: IFullOrgUnitAvailabilityExtended[] | undefined = collectionPoints?.map((collectionPoint: ICollectionPoint) => {\r\n const addressLines = [\r\n `${collectionPoint.street} ${collectionPoint.houseNumber}`,\r\n `${collectionPoint.city} ${collectionPoint.zipCode}`,\r\n collectionPoint.country,\r\n collectionPoint.address2\r\n ]\r\n .filter(line => line && line.trim().length > 0)\r\n .join(', ');\r\n return {\r\n OrgUnitAvailability: {\r\n OrgUnitLocation: {\r\n // Contacts?: OrgUnitContact[],\r\n ChannelId: ctx.requestContext.channel?.RecordId,\r\n Latitude: collectionPoint.geoPoint?.latitude,\r\n Longitude: collectionPoint.geoPoint?.longitude,\r\n OrgUnitName: collectionPoint.name?.trim(),\r\n OrgUnitNumber: collectionPoint.name?.trim(),\r\n // Address: encodeURIComponent(\r\n // `${collectionPoint.city} ${collectionPoint.zipCode}, ${collectionPoint.country}, ${collectionPoint.address2} `\r\n // ),\r\n Address: addressLines,\r\n Street: collectionPoint.street?.trim(),\r\n StreetNumber: '',\r\n City: collectionPoint.city?.trim(),\r\n DistrictName: '',\r\n BuildingCompliment: '',\r\n Postbox: '',\r\n Zip: collectionPoint.zipCode?.trim(),\r\n County: '',\r\n CountyName: '',\r\n State: collectionPoint.state?.trim(),\r\n StateName: collectionPoint.state?.trim(),\r\n Country: 'DNK' || collectionPoint.country?.trim(),\r\n Distance: collectionPoint.distance,\r\n InventoryLocationId: '',\r\n InventorySiteId: '',\r\n // PostalAddressId: '',\r\n OpenFrom: 0,\r\n OpenTo: 0\r\n // ExtensionProperties?: CommerceProperty[];\r\n }\r\n },\r\n openingHours: collectionPoint.openingHours\r\n };\r\n });\r\n return mappedCollection || [];\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getStoreLocationCentiroAction,\r\n id: 'GetStoreLocationCentiro',\r\n input: createInput\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 { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n getCatalogId,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICreateActionContext\r\n} from '@msdyn365-commerce/core';\r\nimport { AttributeSwatch, ProductSearchResult, SearchSuggestion, SearchSuggestionCriteria } from '@msdyn365-commerce/retail-proxy';\r\nimport { getSearchSuggestionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport {\r\n DimensionTypes,\r\n ArrayExtensions,\r\n generateImageUrl,\r\n generateSwatchImageUrl,\r\n getProductPageUrlSync\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\nexport enum SuggestionType {\r\n Category = 'ScopedCategory',\r\n Keyword = 'Keyword',\r\n Product = 'Product',\r\n None = 'None'\r\n}\r\n\r\n/**\r\n * Input class for auto suggest search input.\r\n */\r\nexport class AutoSuggestInput implements IActionInput {\r\n public searchQuery?: string;\r\n\r\n public topResultsCount?: number;\r\n\r\n public suggestionType?: string;\r\n\r\n public hitPrefix?: string;\r\n\r\n public hitSuffix?: string;\r\n\r\n public constructor(searchText?: string, top?: number, suggestionType?: string, hitPrefix?: string, hitSuffix?: string) {\r\n this.searchQuery = searchText;\r\n this.topResultsCount = top;\r\n this.suggestionType = suggestionType;\r\n this.hitPrefix = hitPrefix;\r\n this.hitSuffix = hitSuffix;\r\n }\r\n\r\n public getCacheKey = () => 'AutoSuggestSearchSuggestions';\r\n\r\n public getCacheObjectType = () => 'AutoSuggestSearchSuggestions';\r\n\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\nconst createInput = (inputData: ICreateActionContext) => {\r\n return new AutoSuggestInput();\r\n};\r\n\r\n/**\r\n * Calls the Retail API and returns a auto-suggest suggestions.\r\n * @param input\r\n * @param ctx\r\n */\r\nexport async function getSearchSuggestionsAction(input: AutoSuggestInput, ctx: IActionContext): Promise {\r\n // If no input is provided fail out\r\n if (!input || !input.searchQuery) {\r\n throw new Error('[getSearchSuggestionsAction]No valid Input was provided, failing');\r\n }\r\n\r\n const autosuggest: Autosuggestions = {};\r\n\r\n const autoSuggestPromises = [_getAutoSuggest(input, autosuggest, ctx)];\r\n return Promise.all(autoSuggestPromises).then(() => {\r\n return autosuggest;\r\n });\r\n}\r\n\r\nasync function _getAutoSuggest(input: AutoSuggestInput, autosuggest: Autosuggestions, ctx: IActionContext): Promise {\r\n const catalogId = getCatalogId(ctx.requestContext);\r\n const searchCriteria: SearchSuggestionCriteria = {\r\n ProductSearchCriteria: {\r\n SearchCondition: input.searchQuery && input.searchQuery.length > 0 ? input.searchQuery : '',\r\n Context: {\r\n ChannelId: +ctx.requestContext.apiSettings.channelId,\r\n CatalogId: catalogId\r\n }\r\n },\r\n HitPrefix: input.hitPrefix,\r\n HitSuffix: input.hitSuffix,\r\n SuggestionType: input.suggestionType\r\n };\r\n\r\n const searchSuggestions = await getSearchSuggestionsAsync(\r\n { callerContext: ctx, queryResultSettings: { Paging: { Top: input.topResultsCount } } },\r\n searchCriteria\r\n );\r\n\r\n if (searchSuggestions && searchSuggestions.length > 0) {\r\n const searchResults = await searchByCriteriaAsync(\r\n {\r\n callerContext: ctx,\r\n queryResultSettings: {\r\n Paging: { Skip: 0, Top: searchSuggestions.length }\r\n }\r\n },\r\n {\r\n Ids: searchSuggestions\r\n .filter(item => item.Id !== undefined)\r\n .map((item: SearchSuggestion) => {\r\n return Number(item.Id);\r\n }),\r\n Context: {\r\n ChannelId: +ctx.requestContext.apiSettings.channelId,\r\n CatalogId: catalogId\r\n },\r\n IncludeAttributes: true\r\n }\r\n );\r\n autosuggest.AllSearchResults = searchSuggestions.map(item => {\r\n if (item.SuggestionType === SuggestionType.Product) {\r\n const searchResult = searchResults.find(result => result.RecordId === Number(item.Id));\r\n const imageUrl = searchResult\r\n ? getProductImageUrlFromDefaultColorSwatch(ctx, searchResult)\r\n : item.ImageUrl\r\n ? generateImageUrl(item.ImageUrl, ctx.requestContext.apiSettings)\r\n : '';\r\n item.ImageUrl = imageUrl;\r\n\r\n const swatchColor = getDefaultSwatchSelected(searchResult, 'color')?.SwatchValue;\r\n if (swatchColor && item.Value) {\r\n const url = getProductPageUrlSync(item.Value, (item.Id as unknown) as number, ctx, undefined);\r\n item.Value += `|${url}?color=${encodeURIComponent(swatchColor)}`;\r\n }\r\n }\r\n return item;\r\n });\r\n\r\n autosuggest.AllSearchResults = searchSuggestions;\r\n } else {\r\n ctx.telemetry.error(\r\n `[getSearchSuggestionsAction] unable to get availabilites for search with suggestion type ${searchCriteria.SuggestionType}`\r\n );\r\n }\r\n}\r\n\r\nfunction getDefaultSwatchSelected(productData?: ProductSearchResult, attribute?: string): AttributeSwatch | null {\r\n if (!productData || !productData.AttributeValues) {\r\n return null;\r\n }\r\n\r\n const colorAttribute = productData.AttributeValues.find(attributeValue => attributeValue.KeyName?.toLocaleLowerCase() === attribute);\r\n if (!ArrayExtensions.hasElements(colorAttribute?.Swatches)) {\r\n return null;\r\n }\r\n\r\n const defaultSwatch = colorAttribute!.Swatches.find(item => item.IsDefault === true) ?? colorAttribute!.Swatches[0];\r\n return defaultSwatch;\r\n}\r\nfunction getProductImageUrlFromDefaultColorSwatch(coreContext: IActionContext, productData?: ProductSearchResult): string | undefined {\r\n const dimensionToPreSelectInProductCard = coreContext.requestContext.app.config.dimensionToPreSelectInProductCard;\r\n if (dimensionToPreSelectInProductCard === DimensionTypes.none) {\r\n return productData?.PrimaryImageUrl;\r\n }\r\n\r\n // image URL building for swatch taken from swatch-item.tsx component, but using attributes instead of dimensions\r\n const swatchSize = getDefaultSwatchSelected(productData, 'size')?.SwatchValue?.replace('/', '^');\r\n const swatchColor = getDefaultSwatchSelected(productData, 'color')?.SwatchValue?.replace('/', '^');\r\n const swatchImage = `Products/${productData?.ItemId} ^ ^ ${swatchSize} ^ ${swatchColor} ^ None_000_000_swatch.jpg`;\r\n const fullImageUrl = `${generateSwatchImageUrl(swatchImage, coreContext.requestContext.apiSettings)}&h=50&q=80&m=6`;\r\n return fullImageUrl;\r\n}\r\n\r\nexport const getSearchSuggestionsActionDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/search/get-auto-suggest-suggestions',\r\n action: >getSearchSuggestionsAction,\r\n input: createInput\r\n});\r\n\r\nexport default getSearchSuggestionsActionDataAction;\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 { createObservableDataAction } from '@msdyn365-commerce/action-internal';\r\nimport { IAction, IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n// @ts-ignore\r\n// eslint-disable-next-line prettier/prettier\r\nimport { CATEGORY_PAGE_NAME } from '@msdyn365-commerce/runtime-internal/dist/lib/consts';\r\n// @ts-ignore\r\nimport { getProductImageUrls, orderProductSearchResults } from '@msdyn365-commerce/runtime-internal/dist/lib/utils/product-list-utils';\r\nimport { ProductListInput } from '@msdyn365-commerce/runtime-internal/dist/types/hydrators/hydrator-action-inputs';\r\nimport {\r\n expandWithSizeVariants,\r\n ProductSearchResultExtended\r\n} from '../modules/only-c-search-result-container/actions/get-full-products-by-collection';\r\n\r\nexport const getProductsByCategoryList = async (\r\n input: ProductListInput,\r\n context: IActionContext\r\n): Promise => {\r\n let categoryId: number;\r\n const urlTokens = context.requestContext.urlTokens;\r\n\r\n // If the category ID has been provided from the list metadata use it, otherwise grab the category ID from context\r\n if (input.listMetadata.categoryIds && input.listMetadata.categoryIds.length > 0) {\r\n categoryId = input.listMetadata.categoryIds[0];\r\n } else if (urlTokens && urlTokens.pageType && urlTokens.pageType.toLowerCase() === CATEGORY_PAGE_NAME && urlTokens.recordId) {\r\n categoryId = +urlTokens.recordId;\r\n } else if (urlTokens && urlTokens.categories && urlTokens.categories.length > 0) {\r\n categoryId = +urlTokens.categories[0];\r\n } else {\r\n // Unable to determine category from list meta data or context\r\n throw new Error('CategoryId Missing for ProductsByCategory List');\r\n }\r\n context.telemetry.debug(`Category Id input to ProductsByCategory action : ${categoryId}`);\r\n const productSearchCriteria: ProductSearchCriteria = {\r\n Context: {\r\n ChannelId: +input.channelId,\r\n CatalogId: +input.catalogId\r\n },\r\n CategoryIds: [categoryId],\r\n SkipVariantExpansion: true,\r\n IncludeAttributes: true\r\n };\r\n\r\n return searchByCriteriaAsync(\r\n { callerContext: context, queryResultSettings: { Paging: { Top: input.listMetadata.pageSize || 10 } } },\r\n productSearchCriteria\r\n )\r\n .then((products: ProductSearchResult[]) => {\r\n context.telemetry.debug('Products returned by ProductByCategory action', products);\r\n const productsWithImages = getProductImageUrls(products, context.requestContext.apiSettings);\r\n return expandWithSizeVariants(productsWithImages, context.requestContext.apiSettings);\r\n })\r\n .catch(error => {\r\n context.telemetry.error(`Error running ProductByCategory action: ${error}`);\r\n throw new Error(error);\r\n });\r\n};\r\n\r\nexport const getProductsByCategoryListAction = createObservableDataAction({\r\n action: >getProductsByCategoryList,\r\n id: '@msdyn365-commerce/products-by-category'\r\n});\r\n","import {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport interface ICentiroDataAction {\r\n pickUpLocation?: OrgUnitLocation;\r\n deliveryMode?: string;\r\n}\r\n\r\nexport class CentiroDataActionInput implements IActionInput {\r\n public getCacheKey = () => `CentiroDataAction`;\r\n public getCacheObjectType = () => 'CentiroDataAction';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function selectedModalAction(input: CentiroDataActionInput, ctx: IActionContext): Promise {\r\n return { pickUpLocation: undefined, deliveryMode: undefined };\r\n}\r\n\r\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\r\n return new CentiroDataActionInput();\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >selectedModalAction,\r\n id: 'SetStoreLocationCentiro',\r\n input: createInput\r\n});\r\n","import * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const getSecretValue = async (secretKey: string, baseUrl: string): Promise => {\r\n return Msdyn365.msdyn365Commerce.secretManager?.getSecretValue(secretKey, baseUrl).then(secretValue => {\r\n if (secretValue && !secretValue.error && secretValue.value !== '') {\r\n return secretValue.value;\r\n }\r\n return undefined;\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\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as QueryString from 'querystring';\r\nimport jwtDecode, { JwtPayload } from 'jwt-decode';\r\nimport { getSecretValue } from '../shared/functions/get-secret';\r\n// import { ClientSecretCredential } from '@azure/identity';\r\n// import { Client } from '@microsoft/microsoft-graph-client';\r\n// import {\r\n// TokenCredentialAuthenticationProvider\r\n// // ,\r\n// // TokenCredentialAuthenticationProviderOptions\r\n// } from '@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials';\r\n/**\r\n * UpdateB2cIdentity Input Action\r\n */\r\nexport class UpdateB2cIdentityInput implements Msdyn365.IActionInput {\r\n // TODO: Construct the input needed to run the action\r\n private _random: number;\r\n public token: string;\r\n public newEmailAddress: string;\r\n\r\n constructor(newEmailAddress: string, token: string) {\r\n this._random = Math.random();\r\n this.newEmailAddress = newEmailAddress;\r\n this.token = token;\r\n }\r\n\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `UpdateB2cIdentity${this._random}`;\r\n public getCacheObjectType = () => 'UpdateB2cIdentity';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IUpdateB2cIdentityData {\r\n success: boolean;\r\n error?: {\r\n reason: 'duplicate' | 'invalid' | 'other';\r\n message: string;\r\n };\r\n data: any;\r\n}\r\n\r\n/**\r\n * Creates input from the postdata\r\n */\r\nconst createInput = (ctx: Msdyn365.ICreateActionContext): UpdateB2cIdentityInput => {\r\n let {\r\n requestContext: {\r\n user: { token },\r\n // eslint-disable-next-line prefer-const\r\n postBody\r\n }\r\n } = ctx;\r\n let email = '';\r\n // postBody of the context should contain token and email needed to communicate with Graph API\r\n if (postBody?.content) {\r\n const content = JSON.parse(postBody.content.toString()) as UpdateB2cIdentityInput;\r\n // prefer token explicitly passed in\r\n token = content.token;\r\n email = content.newEmailAddress;\r\n }\r\n return new UpdateB2cIdentityInput(email, token);\r\n};\r\n\r\ninterface TokenResponse {\r\n token_type: string;\r\n access_token: string;\r\n}\r\ninterface GraphResponse {\r\n error?: {\r\n code: string;\r\n /**\r\n * duplicate email = \"A conflicting object with one or more of the specified property values is present in the directory.\"\r\n * invalid email = \"One or more properties contains invalid values.\"\r\n */\r\n message: string;\r\n details?: {\r\n code: string; //ConflictingObjects === duplicate email\r\n message: string;\r\n }[];\r\n };\r\n}\r\n\r\nasync function action(input: UpdateB2cIdentityInput, ctx: Msdyn365.IActionContext): Promise {\r\n const {\r\n requestContext: {\r\n apiSettings: { baseUrl }\r\n }\r\n } = ctx;\r\n // decode token to extract guid that points to user in AAD B2C\r\n const decoded: JwtPayload = jwtDecode(input.token);\r\n console.log('DECODED=', decoded);\r\n\r\n // secrets stored in key vault\r\n const secretPromises = [\r\n getSecretValue('ecom-36954-my-account-tenantId', baseUrl),\r\n getSecretValue('ecom-36954-my-account-applicationId', baseUrl),\r\n getSecretValue('ecom-36954-my-account-secret', baseUrl)\r\n ];\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n return Promise.all(secretPromises)\r\n .then(secrets => {\r\n return Msdyn365.sendRequest(\r\n `https://login.microsoft.com/${secrets[0]}/oauth2/token`,\r\n 'post',\r\n QueryString.stringify({\r\n grant_type: 'client_credentials',\r\n client_id: secrets[1],\r\n client_secret: secrets[2],\r\n resource: 'https://graph.microsoft.com'\r\n })\r\n );\r\n })\r\n .then(tokenResponse => {\r\n console.log('tokenResponse', tokenResponse);\r\n const url = new URL(decoded.iss!);\r\n const issuerDomain = url.hostname.substring(0, url.hostname.indexOf('.'));\r\n return Msdyn365.sendRequest(\r\n `https://graph.microsoft.com/v1.0/users/${decoded.sub}`,\r\n 'patch',\r\n JSON.stringify({\r\n identities: [\r\n {\r\n signInType: 'emailAddress',\r\n issuer: `${issuerDomain}.onmicrosoft.com`,\r\n issuerAssignedId: input.newEmailAddress\r\n }\r\n ]\r\n }),\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${tokenResponse.data.access_token}`\r\n }\r\n }\r\n );\r\n })\r\n .then(graphResponse => {\r\n console.log('graphResponse', graphResponse);\r\n const result: IUpdateB2cIdentityData = {\r\n success: graphResponse.status >= 200 && graphResponse.status < 300,\r\n data: graphResponse.data\r\n };\r\n if (!result.success && graphResponse.data.error) {\r\n result.error = {\r\n message: graphResponse.data.error.message,\r\n reason:\r\n graphResponse.data.error.message.indexOf('conflicting') >= 0\r\n ? 'duplicate'\r\n : graphResponse.data.error.message.indexOf('invalid values') >= 0\r\n ? 'invalid'\r\n : 'other'\r\n };\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >action,\r\n id: 'UpdateB2cIdentity',\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 {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICommerceApiSettings,\r\n ICreateActionContext\r\n} from '@msdyn365-commerce/core';\r\nimport { getAttributeValuesAsync, getByIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport {\r\n buildCacheKey,\r\n generateImageUrl,\r\n getProductUrlSync,\r\n getSelectedProductIdFromActionInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nimport { IPageSummaryData } from '@msdyn365-commerce-modules/page-summary';\r\nimport { IOnlyCProductPageSummaryConfig } from './only-c-product-page-summary.props.autogenerated';\r\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\r\n\r\n/**\r\n * Product Page Summary Input\r\n */\r\nexport class ProductPageSummaryInput implements IActionInput {\r\n public apiSettings: ICommerceApiSettings;\r\n\r\n public config: IOnlyCProductPageSummaryConfig;\r\n\r\n public productId: number;\r\n\r\n constructor(config: IOnlyCProductPageSummaryConfig, apiSettings: ICommerceApiSettings, productId: number) {\r\n this.config = config || {};\r\n this.apiSettings = apiSettings;\r\n this.productId = productId;\r\n }\r\n\r\n public getCacheObjectType = (): string => 'ProductPageSummary';\r\n\r\n public getCacheKey = (): string => `${buildCacheKey('ProductPageSummary', this.apiSettings)}-${this.config.title}-${this.productId}`;\r\n\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n\r\nexport interface IProductPageSummary extends IPageSummaryData {\r\n price?: number;\r\n productId?: number;\r\n productBrand?: string;\r\n}\r\n\r\nconst createInput = (args: ICreateActionContext) => {\r\n const productId = getSelectedProductIdFromActionInput(args);\r\n\r\n if (productId) {\r\n return new ProductPageSummaryInput(args.config, args.requestContext.apiSettings, +productId);\r\n }\r\n throw new Error('Unable to create ProductPageSummaryAction input, no productId found on module config or query');\r\n};\r\n\r\n// Checks product attributes for the presence of brand attribute to extract the brand name for product metadata\r\nconst getProductBrand = (productAttributes: AttributeValue[]): string => {\r\n return productAttributes?.find((item: AttributeValue) => item.Name === 'Brand')?.TextValue ?? '';\r\n};\r\n\r\n/**\r\n *\r\n * @param productAttributes Fetch description from one of two product attributes\r\n * @param config\r\n * @returns\r\n */\r\nconst getProductDescription = (productAttributes: AttributeValue[], config: IOnlyCProductPageSummaryConfig): string => {\r\n const { customDescriptionAttr, friendlyDescriptionAttr } = config;\r\n let pDescription = productAttributes?.find(\r\n (item: AttributeValue) => item.Name === (customDescriptionAttr ?? 'FriendlyDescriptionCustom')\r\n )?.TextValue;\r\n\r\n if (!pDescription || pDescription === '') {\r\n pDescription = productAttributes?.find((item: AttributeValue) => item.Name === (friendlyDescriptionAttr ?? 'FriendlyDescription'))\r\n ?.TextValue;\r\n }\r\n return pDescription?.replace('- ', '. ') ?? '';\r\n};\r\n\r\nconst getProductName = (productName: string): string => {\r\n return productName\r\n .split(' ')\r\n .map(word => {\r\n // product names often in all caps, whcih schema.org doesn't like\r\n if (word.length > 1 && word === word.toUpperCase()) {\r\n return word[0].toUpperCase() + word.substring(1).toLowerCase();\r\n }\r\n return word;\r\n })\r\n .join(' ');\r\n};\r\n\r\nconst action = async (input: ProductPageSummaryInput, context: IActionContext): Promise => {\r\n const { config, productId, apiSettings } = input;\r\n const simpleProductPromise = getByIdAsync({ callerContext: context }, productId, apiSettings.channelId);\r\n const productAttributesPromise = getAttributeValuesAsync(\r\n { callerContext: context, queryResultSettings: {} },\r\n productId,\r\n apiSettings.channelId,\r\n apiSettings.catalogId\r\n );\r\n return Promise.all([simpleProductPromise, productAttributesPromise])\r\n .then(results => {\r\n const simpleProductData = results[0];\r\n const productAttributes = results[1];\r\n let productUrl: string | undefined;\r\n try {\r\n productUrl = getProductUrlSync(simpleProductData, context);\r\n const canonicalDomain = context.requestContext.canonicalDomain;\r\n if (productUrl && canonicalDomain) {\r\n productUrl = `https://${canonicalDomain}${productUrl}`.toLocaleLowerCase();\r\n } else {\r\n productUrl = undefined;\r\n }\r\n } catch {\r\n productUrl = undefined;\r\n }\r\n return {\r\n title: getProductName(simpleProductData.Name ?? ''),\r\n description: getProductDescription(productAttributes, config),\r\n sharingImageUrl: generateImageUrl(simpleProductData.PrimaryImageUrl, apiSettings),\r\n canonicalUrl: productUrl,\r\n faviconUrl: config && config.faviconUrl,\r\n productId: simpleProductData.RecordId,\r\n price: simpleProductData.AdjustedPrice,\r\n productBrand: getProductBrand(productAttributes)\r\n };\r\n })\r\n .catch(e => {\r\n // If the action fails fallback to values defined from config\r\n 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\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/page-summary/product-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\nimport { createObservableDataAction, IAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\r\nimport { createSearchOrgUnitLocationsInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { buildQueryResultSettings } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\n/**\r\n * Search Org Unit Locations action createInput method.\r\n * @param inputData\r\n */\r\nexport function createSearchOrgUnitLocationsInputFunc(\r\n inputData: ICreateActionContext, IGeneric>\r\n): IDataServiceRequest {\r\n const input = createSearchOrgUnitLocationsInput(buildQueryResultSettings(inputData), {});\r\n (input)._query.resultSettings.Paging.Top = 50;\r\n return input;\r\n}\r\n\r\nexport const retailActionDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/search-org-unit-locations',\r\n action: >retailAction,\r\n input: createSearchOrgUnitLocationsInputFunc\r\n});\r\n\r\nexport default retailActionDataAction;\r\n","import { AttributeValueBase, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport MsDyn365, { IActionContext, ICoreContext, IGeneric, IAny } from '@msdyn365-commerce/core';\r\nimport Moment from 'moment';\r\nimport { getProductUrlSync, convertProductDimensionTypeToDimensionTypes } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { isNumber } from 'lodash';\r\nimport { toast } from 'react-toastify';\r\n\r\nexport const _addAttribute = (AttributeName: string, attributeValue: string | undefined) => {\r\n const attributeObj = {\r\n // @ts-ignore\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: AttributeName,\r\n TextValue: attributeValue,\r\n TextValueTranslations: []\r\n };\r\n attributeObj.Name = AttributeName;\r\n return attributeObj;\r\n};\r\n\r\nexport const getQueryParameterByName = (name: string) => {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n return urlParams.get(name);\r\n};\r\n\r\n// Remove Duplicate attributes\r\nexport const mergeAttributes = (\r\n prevAttributes: AttributeValueBase[],\r\n newAttributes: AttributeValueBase[],\r\n prop: string\r\n): AttributeValueBase[] => {\r\n const reduced = prevAttributes.filter(aitem => !newAttributes.find(bitem => aitem[prop].toLowerCase() === bitem[prop].toLowerCase()));\r\n return reduced.concat(newAttributes);\r\n};\r\n// Find attribute id exist update it other wise push\r\nexport const findAttribute = async (\r\n currentAttributes: AttributeValueBase[],\r\n attributeObj: AttributeValueBase\r\n): Promise => {\r\n const attrIndex = currentAttributes.findIndex(\r\n (attr: AttributeValueBase) => attr.Name?.toLowerCase() === attributeObj.Name?.toLowerCase()\r\n );\r\n if (attrIndex > -1) {\r\n currentAttributes[attrIndex] = attributeObj;\r\n } else {\r\n currentAttributes.push(attributeObj);\r\n }\r\n return currentAttributes;\r\n};\r\n\r\n// Set Order and Cart Attribues\r\nexport const setNameAttribute = (attrName: string, value: string): AttributeValueBase => {\r\n const privIdAttribute = {\r\n // @ts-ignore\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: attrName,\r\n ExtensionProperties: [],\r\n TextValue: value,\r\n TextValueTranslations: []\r\n };\r\n return privIdAttribute as AttributeValueBase;\r\n};\r\n\r\nexport const checkImageExists = (path: string): Promise => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = () => resolve('ok');\r\n img.onerror = () => reject('error');\r\n img.src = path;\r\n });\r\n};\r\n\r\nexport function formatPrice(amount: string | undefined, currency: string | undefined, locale: string | undefined): string {\r\n if (!amount || !currency) {\r\n return amount || '';\r\n }\r\n const priceAmount = (amount && Number(amount)) || 0;\r\n let result: string;\r\n\r\n try {\r\n result = new Intl.NumberFormat(locale, {\r\n style: 'currency',\r\n currencyDisplay: 'symbol',\r\n currency: currency,\r\n minimumFractionDigits: 0\r\n }).format(priceAmount);\r\n } catch (e) {\r\n result = `${priceAmount} ${currency}`;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport const _writeToStorage = (key: string, value: string | undefined): void => {\r\n if (!key || !value) {\r\n return;\r\n }\r\n if (MsDyn365.isBrowser) {\r\n const storage = window.localStorage;\r\n storage.setItem(key, value);\r\n }\r\n};\r\nexport const _readFromStorage = (key: string): string | undefined => {\r\n if (!key) {\r\n return undefined;\r\n }\r\n if (MsDyn365.isBrowser) {\r\n const storage = window.localStorage;\r\n const cookieValue = storage.getItem(key);\r\n if (cookieValue) {\r\n return cookieValue;\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const _removeFromStorage = (key: string): void => {\r\n if (!key) {\r\n return;\r\n }\r\n if (MsDyn365.isBrowser) {\r\n const storage = window.localStorage;\r\n storage.removeItem(key);\r\n }\r\n};\r\nexport const _writeToSessionStorage = (key: string, context: ICoreContext>, value?: string): void => {\r\n if (!key || !context || !value) {\r\n return;\r\n }\r\n if (MsDyn365.isBrowser) {\r\n const storage = context.request.sessionStorage;\r\n _isValidJson(value) ? storage.setDataInStorage(key, JSON.parse(value)) : undefined;\r\n }\r\n};\r\nexport const _readFromSessionStorage = (key: string, context: ICoreContext>): string | undefined => {\r\n if (!key || !context) {\r\n return undefined;\r\n }\r\n if (MsDyn365.isBrowser) {\r\n const storage = context.request.sessionStorage;\r\n const sessionValue = storage.getDataFromStorage(key);\r\n if (isNumber(sessionValue) || Object.entries(sessionValue).length !== 0) {\r\n _removeFromSessionStorage(key, context);\r\n return JSON.stringify(sessionValue);\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const _removeFromSessionStorage = (key: string, context: ICoreContext>): void => {\r\n if (!key || !context) {\r\n return;\r\n }\r\n if (MsDyn365.isBrowser) {\r\n const storage = context.request.sessionStorage;\r\n storage.removeDataFromStorage(key);\r\n }\r\n};\r\n\r\n// VSI Customization for Defult selction on PDP\r\nexport const _generateProductUrl = (product: SimpleProduct, actionContext: IActionContext): string => {\r\n if (product.Dimensions && MsDyn365.isBrowser) {\r\n const productUrl = getProductUrlSync(product, actionContext, undefined);\r\n const url = new URL(productUrl, window.location.href);\r\n\r\n for (const dimension of product.Dimensions) {\r\n url.searchParams.set(\r\n convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue),\r\n dimension.DimensionValue?.Value ?? ''\r\n );\r\n }\r\n return url.href;\r\n }\r\n return '#';\r\n};\r\n\r\n// VSI Customization for Date Time Conversion\r\nexport const _dateTimeFormat = (date: string): string => {\r\n if (!date.length) {\r\n return '';\r\n }\r\n const reqFormat = 'YYYY-MM-DD HH:mm:ss';\r\n var dateObj = new Date(date);\r\n return Moment(dateObj).format(reqFormat);\r\n};\r\n\r\n// Will be used to check image existance in media libray\r\nexport async function hasImage(swatchImageUrl?: string): Promise {\r\n if (!swatchImageUrl) {\r\n return false;\r\n }\r\n return new Promise(resolve => {\r\n try {\r\n const http = new XMLHttpRequest();\r\n http.open('HEAD', swatchImageUrl, true);\r\n\r\n http.addEventListener('load', () => {\r\n resolve(http.status === 200 || http.status === 201);\r\n });\r\n\r\n http.addEventListener('error', () => {\r\n resolve(false);\r\n });\r\n\r\n http.send();\r\n } catch {\r\n resolve(false);\r\n }\r\n });\r\n}\r\n\r\n/* VSI Customization - To validate json */\r\nexport const _isValidJson = (json: string): boolean => {\r\n try {\r\n JSON.parse(json);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\n/* VSI Customization - To to get discount in percentage */\r\nexport const _getDiscountPercentage = (price?: number, basePrice?: number): string | null => {\r\n if (!price || !basePrice) {\r\n return null;\r\n }\r\n return (100 - (price / basePrice) * 100).toFixed(0);\r\n};\r\n\r\n/* VSI Customization - To to trigger toast notifications */\r\nexport const _triggerToast = (message?: string): void => {\r\n if (!message) {\r\n return;\r\n }\r\n toast.dark(message, {\r\n position: 'top-right',\r\n autoClose: 3000,\r\n hideProgressBar: true,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n progress: undefined\r\n });\r\n};\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 { \n const actionPath = 'actions/get-media-locations-for-selected-variant.action';\n binding.dataActions[actionPath] = require('partner/actions/get-media-locations-for-selected-variant.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/get-store-location-centiro.action';\n binding.dataActions[actionPath] = require('partner/actions/get-store-location-centiro.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/only-c-get-auto-suggest-suggestions.action';\n binding.dataActions[actionPath] = require('partner/actions/only-c-get-auto-suggest-suggestions.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/only-c-products-by-category.action';\n binding.dataActions[actionPath] = require('partner/actions/only-c-products-by-category.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/store-centiro-location.action';\n binding.dataActions[actionPath] = require('partner/actions/store-centiro-location.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/update-b2c-identity.action';\n binding.dataActions[actionPath] = require('partner/actions/update-b2c-identity.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/only-c-product-page-summary/only-c-product-page-summary.action';\n binding.dataActions[actionPath] = require('partner/modules/only-c-product-page-summary/only-c-product-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'themes/only/actions/search-org-unit-locations.action';\n binding.dataActions[actionPath] = require('partner/themes/only/actions/search-org-unit-locations.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 };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Default mount point name\n */\nexport const LAYOUT_MOUNT_POINT = 'renderPage';\n\n/**\n * Default Proxy Address\n */\nexport const DEFAULT_PROXY_HOST = 'http://127.0.0.1';\n\n/**\n * Default Proxy Port\n */\nexport const DEFAULT_PROXY_PORT = 8888;\n\n/**\n * Default request timeout in ms (1m default);\n */\nexport const DEFAULT_REQUEST_TIMEOUT: number = parseInt(process.env.REQUEST_TIMEOUT || '60000', 10);\n\nexport const GLIMPSE_LOGGER_NAME = '__INTERNAL_GLIPMPSE_LOGGER_!@';\nexport const PAGE_LOGGER_NAME = '__PAGE_LOGGER__';\n\n/**\n * appCacheSetting Name\n */\n\nexport const CACHE_SETTING = '__CACHE_SETTINGS';\n\n/**\n * const for client entry points type\n */\nexport const CLIENT_ENTRY_POINTS_TYPE = '__CEP__';\n\n/**\n * PDP PageType Name\n */\nexport const PDP_PAGE_NAME = 'product';\n\n/**\n * Product recommendtion list\n */\nexport const PRODUCT_RECOMMENDATION_LIST = 'pal';\n\n/**\n * Frequently bought together recommendation list\n */\nexport const FREQUENTLY_BOUGHT_TOGETHER_LIST = 'fbt';\n\n/**\n * Picks for you recommendation list\n */\nexport const PICKS_FOR_YOU_LIST = 'picks';\n\n/**\n * Category PageType Name\n */\nexport const CATEGORY_PAGE_NAME = 'category';\n\n/**\n * List PageType Name\n */\nexport const LIST_PAGE_NAME = 'list';\n\n/*\n * Cache key for module\n */\nexport const MODULE_CACHE_KEY: string = '__M';\n\n/**\n * Cache key for module config\n */\nexport const MODULE_CONFIG_KEY: string = '__MC';\n\n/**\n * Cache key for module disabled properties\n */\nexport const MSDYN365_WYSIWYG_DISABLED_PROPS = '__MDP';\n\n/**\n * Cache key for module disabled properties\n */\nexport const MSDYN365_WYSIWYG_CANADDMODULE = '__MCA';\n\n/**\n * Cache key for module config errors\n */\nexport const MODULE_CONFIG_ERRORS_KEY: string = '__MCE';\n\n/**\n * Cache key for module data\n */\nexport const MODULE_DATA_KEY: string = '__MD';\n\n/**\n * Cache key for module resources\n */\nexport const MODULE_RESOURCES_KEY: string = '__MR';\n\n/**\n * Cache key for module action\n */\nexport const MODULE_ACTION_KEY: string = '__MA';\n\n/**\n * Cache key for module deferred render\n */\nexport const MODULE_DEFERRED_KEY: string = '__MDR';\n\n/**\n * Cache key for module view cache\n */\nexport const MODULE_VIEW_CACHE_KEY = '__VIEWCACHEKEY__';\n\n/**\n * Cache key for module render to string result\n */\nexport const MODULE_RENDER_RESULT_CACHE_KEY = '__MODULE_RENDER_RESULT__';\n\n/**\n * Server Render Error Cache key type\n */\nexport const SERVER_RENDER_ERROR_CACHE_KEY = '__SERVER_RENDER_ERROR__';\n\n/**\n * Cache key for page render results\n */\nexport const PAGE_RENDER_RESULT_CACHE_KEY = '__PAGE_RENDER_RESULT__';\n\n/**\n * Cache key for page insights view extensions\n */\nexport const PAGE_INSIGHTS_VIEWS_KEY = '__VIEW_INSIGHTS__';\n\n/**\n * Cache key for page insights view extensions\n */\nexport const PAGE_INSIGHTS_COMPONENTS_KEY = '__COMPONENT_INSIGHTS__';\n\n/**\n * Cache key for page insights view extensions\n */\nexport const PAGE_INSIGHTS_ACTIONS_KEY = '__ACTION_INSIGHTS__';\n\n/**\n * Cache key for page insights retail api data\n */\nexport const PAGE_INSIGHTS_API_KEY = '__API_INSIGHTS__';\n\n/**\n * The Prefix for the module lazyload feature switch\n */\nexport const LAZYLOAD_SWITCH_PREFIX = 'lazyload_';\n\n/**\n * DEPRECATED Client Render Complete Event Name\n */\nexport const DEPRECATED_CLIENT_RENDER_COMPLETE_EVENT = '_msdyn365_client_render_complete';\n\n/**\n * Client Data Update Event Name\n */\nexport const CLIENT_DATA_UPDATE_EVENT = '_msdyn365_client_data_update';\n\n/**\n * Client Render Complete Event Name\n */\nexport const CLIENT_RENDER_START_EVENT = '_msdyn365_client_render_start';\n\n/**\n * Client Render Complete Event Name\n */\nexport const CLIENT_RENDER_COMPLETE_EVENT = '_msdyn365_client_render_complete';\n\n/**\n * Event that fires when Authoring module or fragment add operation completes rendering\n */\nexport const AUTHORING_ADD_RENDER_COMPLETE_EVENT = '_msdyn365_authoring_add_render_complete';\n\n/**\n * User Consent Given Event Name\n */\nexport const USER_CONSENT_GIVEN_EVENT = '_msdyn365_user_consent_given';\n\n/**\n * Field name of the module layout that authoring sends\n */\nexport const MODULE_LAYOUT_FIELD = 'msdyn365__moduleLayout';\n\n/**\n * Process type enum\n */\nexport const enum PROCESS_TYPE {\n server = 'server',\n client = 'client'\n}\n/**\n * The retail server base URL request header key.\n */\nexport const RETAIL_SERVER_BASE_URL_HEADER_KEY = `x-rs-base-url`;\n/**\n * Error message for when the provider get experiments function fails.\n */\nexport const PROVIDER_GET_EXPERIMENTS_FAIL = 'Provider get experiments call failed. Retail Server Base URL: \"{retailServerBaseUrl}\"';\n\n/**\n * Error message for when the retail server api call fail.\n */\nexport const GET_FEATURE_STATES_API_CALL_FAIL = 'The retail server getFeatureStatesAsync API call failed.';\n\n/**\n * Error message for when the internal get feature states data action fail.\n */\nexport const GET_FEATURE_STATES_INTERNAL_DATA_ACTION_FAIL = 'The internal get feature states data action failed.';\n\n/**\n * Error message for when the internal get feature states data action fail.\n */\nexport const ERROR_PROCESSING_APP_SETTINGS = 'Error processing application settings.';\n\n/**\n * Error message for missing required chunks\n */\nexport const ERROR_MISSING_REQUIRED_CHUNKS = `Failed to get required chunks for module '{moduleId}' of type '{moduleType}'. List of missing chunks: '{listOfMissingChunks}'`;\n\n/**\n * The feature states.\n */\nexport const FEATURE_STATE = {\n ON: 'ON',\n OFF: 'OFF'\n};\n\n/**\n * Application settings configs feature management properties.\n */\nexport const APP_SETTINGS_CONFIG_PROPS = {\n DISABLED_WITH_FEATURE_FLAGS: 'disabledWithFeatureFlags',\n HIDDEN_WITH_FEATURE_FLAGS: 'hiddenWithFeatureFlags',\n DISABLED: 'disabled',\n HIDDEN: 'hidden'\n};\n\n/**\n * Cache type name for module css chunks\n */\nexport const MODULE_CSS_CACHE_TYPENAME = '__ModuleCssChunks__';\n\n/**\n * Cache key name for module css chunks\n */\nexport const MODULE_CSS_CACHE_KEY = 'module-css-chunks';\n\n/**\n * Cache key name for module css chunks\n */\nexport const INLINE_MODULE_CSS_CACHE_KEY = 'inline-module-css-chunks';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICommerceApiSettings } from '@msdyn365-commerce/core-internal';\nimport { ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Generates a Image URL based on data return from retail server\n * @param imageUrl The image url returned by Retail Server\n * @param ctx The request context\n */\nexport const generateImageUrl = (imageUrl: string | undefined, apiSettings: ICommerceApiSettings): string | undefined => {\n if (imageUrl) {\n // Images hosted in CMS include schema\n if (imageUrl.startsWith('http')) {\n return imageUrl;\n }\n\n // Images hosted in Retail Server must be encoded and joined with the base image url\n return apiSettings.baseImageUrl + encodeURIComponent(imageUrl);\n } else {\n // d365Commerce.telemetry.warning(`Unable to generate a proper Image URL for Product: ${product.RecordId}`);\n return undefined;\n }\n};\n\n/**\n * Generates a Image URL for a product based on data return from retail server\n * @param product The Product returned by Retail Server\n * @param ctx The request context\n */\nexport const getProductImageUrls = (\n products: SimpleProduct[] | ProductSearchResult[],\n apiSettings: ICommerceApiSettings\n): SimpleProduct[] | ProductSearchResult[] => {\n const productsWithImageUrls: SimpleProduct[] | ProductSearchResult[] = [];\n\n products &&\n products.forEach(product => {\n if (product && product.RecordId) {\n product.PrimaryImageUrl = generateImageUrl(product.PrimaryImageUrl, apiSettings);\n productsWithImageUrls.push(product);\n }\n });\n\n return productsWithImageUrls;\n};\n\n/**\n * Uses the order in which the product ids were returned from the reco call to order\n * the results from the product hydration call\n *\n * @param itemIdOrder The order of product ids to observe\n * @param unorderedProductSearchResults Unordered set of hydrated products\n */\nexport const orderProductSearchResults = (\n itemIdOrder: number[],\n unorderedProductSearchResults: ProductSearchResult[]\n): ProductSearchResult[] => {\n return itemIdOrder.reduce((result: ProductSearchResult[], itemId: number) => {\n const product = unorderedProductSearchResults.find(element => element.RecordId === itemId);\n if (product) {\n result.push(product);\n }\n return result;\n }, []);\n};\n","var map = {\n\t\"./af\": 125,\n\t\"./af.js\": 125,\n\t\"./ar\": 126,\n\t\"./ar-dz\": 127,\n\t\"./ar-dz.js\": 127,\n\t\"./ar-kw\": 128,\n\t\"./ar-kw.js\": 128,\n\t\"./ar-ly\": 129,\n\t\"./ar-ly.js\": 129,\n\t\"./ar-ma\": 130,\n\t\"./ar-ma.js\": 130,\n\t\"./ar-ps\": 131,\n\t\"./ar-ps.js\": 131,\n\t\"./ar-sa\": 132,\n\t\"./ar-sa.js\": 132,\n\t\"./ar-tn\": 133,\n\t\"./ar-tn.js\": 133,\n\t\"./ar.js\": 126,\n\t\"./az\": 134,\n\t\"./az.js\": 134,\n\t\"./be\": 135,\n\t\"./be.js\": 135,\n\t\"./bg\": 136,\n\t\"./bg.js\": 136,\n\t\"./bm\": 137,\n\t\"./bm.js\": 137,\n\t\"./bn\": 138,\n\t\"./bn-bd\": 139,\n\t\"./bn-bd.js\": 139,\n\t\"./bn.js\": 138,\n\t\"./bo\": 140,\n\t\"./bo.js\": 140,\n\t\"./br\": 141,\n\t\"./br.js\": 141,\n\t\"./bs\": 142,\n\t\"./bs.js\": 142,\n\t\"./ca\": 143,\n\t\"./ca.js\": 143,\n\t\"./cs\": 144,\n\t\"./cs.js\": 144,\n\t\"./cv\": 145,\n\t\"./cv.js\": 145,\n\t\"./cy\": 146,\n\t\"./cy.js\": 146,\n\t\"./da\": 147,\n\t\"./da.js\": 147,\n\t\"./de\": 148,\n\t\"./de-at\": 149,\n\t\"./de-at.js\": 149,\n\t\"./de-ch\": 150,\n\t\"./de-ch.js\": 150,\n\t\"./de.js\": 148,\n\t\"./dv\": 151,\n\t\"./dv.js\": 151,\n\t\"./el\": 152,\n\t\"./el.js\": 152,\n\t\"./en-au\": 153,\n\t\"./en-au.js\": 153,\n\t\"./en-ca\": 154,\n\t\"./en-ca.js\": 154,\n\t\"./en-gb\": 155,\n\t\"./en-gb.js\": 155,\n\t\"./en-ie\": 156,\n\t\"./en-ie.js\": 156,\n\t\"./en-il\": 157,\n\t\"./en-il.js\": 157,\n\t\"./en-in\": 158,\n\t\"./en-in.js\": 158,\n\t\"./en-nz\": 159,\n\t\"./en-nz.js\": 159,\n\t\"./en-sg\": 160,\n\t\"./en-sg.js\": 160,\n\t\"./eo\": 161,\n\t\"./eo.js\": 161,\n\t\"./es\": 162,\n\t\"./es-do\": 163,\n\t\"./es-do.js\": 163,\n\t\"./es-mx\": 164,\n\t\"./es-mx.js\": 164,\n\t\"./es-us\": 165,\n\t\"./es-us.js\": 165,\n\t\"./es.js\": 162,\n\t\"./et\": 166,\n\t\"./et.js\": 166,\n\t\"./eu\": 167,\n\t\"./eu.js\": 167,\n\t\"./fa\": 168,\n\t\"./fa.js\": 168,\n\t\"./fi\": 169,\n\t\"./fi.js\": 169,\n\t\"./fil\": 170,\n\t\"./fil.js\": 170,\n\t\"./fo\": 171,\n\t\"./fo.js\": 171,\n\t\"./fr\": 172,\n\t\"./fr-ca\": 173,\n\t\"./fr-ca.js\": 173,\n\t\"./fr-ch\": 174,\n\t\"./fr-ch.js\": 174,\n\t\"./fr.js\": 172,\n\t\"./fy\": 175,\n\t\"./fy.js\": 175,\n\t\"./ga\": 176,\n\t\"./ga.js\": 176,\n\t\"./gd\": 177,\n\t\"./gd.js\": 177,\n\t\"./gl\": 178,\n\t\"./gl.js\": 178,\n\t\"./gom-deva\": 179,\n\t\"./gom-deva.js\": 179,\n\t\"./gom-latn\": 180,\n\t\"./gom-latn.js\": 180,\n\t\"./gu\": 181,\n\t\"./gu.js\": 181,\n\t\"./he\": 182,\n\t\"./he.js\": 182,\n\t\"./hi\": 183,\n\t\"./hi.js\": 183,\n\t\"./hr\": 184,\n\t\"./hr.js\": 184,\n\t\"./hu\": 185,\n\t\"./hu.js\": 185,\n\t\"./hy-am\": 186,\n\t\"./hy-am.js\": 186,\n\t\"./id\": 187,\n\t\"./id.js\": 187,\n\t\"./is\": 188,\n\t\"./is.js\": 188,\n\t\"./it\": 189,\n\t\"./it-ch\": 190,\n\t\"./it-ch.js\": 190,\n\t\"./it.js\": 189,\n\t\"./ja\": 191,\n\t\"./ja.js\": 191,\n\t\"./jv\": 192,\n\t\"./jv.js\": 192,\n\t\"./ka\": 193,\n\t\"./ka.js\": 193,\n\t\"./kk\": 194,\n\t\"./kk.js\": 194,\n\t\"./km\": 195,\n\t\"./km.js\": 195,\n\t\"./kn\": 196,\n\t\"./kn.js\": 196,\n\t\"./ko\": 197,\n\t\"./ko.js\": 197,\n\t\"./ku\": 198,\n\t\"./ku-kmr\": 199,\n\t\"./ku-kmr.js\": 199,\n\t\"./ku.js\": 198,\n\t\"./ky\": 200,\n\t\"./ky.js\": 200,\n\t\"./lb\": 201,\n\t\"./lb.js\": 201,\n\t\"./lo\": 202,\n\t\"./lo.js\": 202,\n\t\"./lt\": 203,\n\t\"./lt.js\": 203,\n\t\"./lv\": 204,\n\t\"./lv.js\": 204,\n\t\"./me\": 205,\n\t\"./me.js\": 205,\n\t\"./mi\": 206,\n\t\"./mi.js\": 206,\n\t\"./mk\": 207,\n\t\"./mk.js\": 207,\n\t\"./ml\": 208,\n\t\"./ml.js\": 208,\n\t\"./mn\": 209,\n\t\"./mn.js\": 209,\n\t\"./mr\": 210,\n\t\"./mr.js\": 210,\n\t\"./ms\": 211,\n\t\"./ms-my\": 212,\n\t\"./ms-my.js\": 212,\n\t\"./ms.js\": 211,\n\t\"./mt\": 213,\n\t\"./mt.js\": 213,\n\t\"./my\": 214,\n\t\"./my.js\": 214,\n\t\"./nb\": 215,\n\t\"./nb.js\": 215,\n\t\"./ne\": 216,\n\t\"./ne.js\": 216,\n\t\"./nl\": 217,\n\t\"./nl-be\": 218,\n\t\"./nl-be.js\": 218,\n\t\"./nl.js\": 217,\n\t\"./nn\": 219,\n\t\"./nn.js\": 219,\n\t\"./oc-lnc\": 220,\n\t\"./oc-lnc.js\": 220,\n\t\"./pa-in\": 221,\n\t\"./pa-in.js\": 221,\n\t\"./pl\": 222,\n\t\"./pl.js\": 222,\n\t\"./pt\": 223,\n\t\"./pt-br\": 224,\n\t\"./pt-br.js\": 224,\n\t\"./pt.js\": 223,\n\t\"./ro\": 225,\n\t\"./ro.js\": 225,\n\t\"./ru\": 226,\n\t\"./ru.js\": 226,\n\t\"./sd\": 227,\n\t\"./sd.js\": 227,\n\t\"./se\": 228,\n\t\"./se.js\": 228,\n\t\"./si\": 229,\n\t\"./si.js\": 229,\n\t\"./sk\": 230,\n\t\"./sk.js\": 230,\n\t\"./sl\": 231,\n\t\"./sl.js\": 231,\n\t\"./sq\": 232,\n\t\"./sq.js\": 232,\n\t\"./sr\": 233,\n\t\"./sr-cyrl\": 234,\n\t\"./sr-cyrl.js\": 234,\n\t\"./sr.js\": 233,\n\t\"./ss\": 235,\n\t\"./ss.js\": 235,\n\t\"./sv\": 236,\n\t\"./sv.js\": 236,\n\t\"./sw\": 237,\n\t\"./sw.js\": 237,\n\t\"./ta\": 238,\n\t\"./ta.js\": 238,\n\t\"./te\": 239,\n\t\"./te.js\": 239,\n\t\"./tet\": 240,\n\t\"./tet.js\": 240,\n\t\"./tg\": 241,\n\t\"./tg.js\": 241,\n\t\"./th\": 242,\n\t\"./th.js\": 242,\n\t\"./tk\": 243,\n\t\"./tk.js\": 243,\n\t\"./tl-ph\": 244,\n\t\"./tl-ph.js\": 244,\n\t\"./tlh\": 245,\n\t\"./tlh.js\": 245,\n\t\"./tr\": 246,\n\t\"./tr.js\": 246,\n\t\"./tzl\": 247,\n\t\"./tzl.js\": 247,\n\t\"./tzm\": 248,\n\t\"./tzm-latn\": 249,\n\t\"./tzm-latn.js\": 249,\n\t\"./tzm.js\": 248,\n\t\"./ug-cn\": 250,\n\t\"./ug-cn.js\": 250,\n\t\"./uk\": 251,\n\t\"./uk.js\": 251,\n\t\"./ur\": 252,\n\t\"./ur.js\": 252,\n\t\"./uz\": 253,\n\t\"./uz-latn\": 254,\n\t\"./uz-latn.js\": 254,\n\t\"./uz.js\": 253,\n\t\"./vi\": 255,\n\t\"./vi.js\": 255,\n\t\"./x-pseudo\": 256,\n\t\"./x-pseudo.js\": 256,\n\t\"./yo\": 257,\n\t\"./yo.js\": 257,\n\t\"./zh-cn\": 258,\n\t\"./zh-cn.js\": 258,\n\t\"./zh-hk\": 259,\n\t\"./zh-hk.js\": 259,\n\t\"./zh-mo\": 260,\n\t\"./zh-mo.js\": 260,\n\t\"./zh-tw\": 261,\n\t\"./zh-tw.js\": 261\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 290;","module.exports = React;","module.exports = ReactDOM;"],"names":["MediaLocationsForSelectedVariantInput","constructor","productId","channelId","selectedProduct","catalogId","getCacheKey","getCacheObjectType","dataCacheType","this","createMediaLocationsForSelectedVariantInput","inputData","getSelectedProductIdFromActionInput","getCatalogId","requestContext","apiSettings","undefined","Error","async","getMediaLocationsForSelectedVariantAction","input","ctx","AsyncResult","resolve","then","activeProduct","selectedVariantInput","SelectedVariantInput","getSelectedVariant","productResult","_productResult$produc","productVariant","_ctx$requestContext$a","app","config","OmniChannelMedia","mediaLocationsInput","MediaLocationsInput","RecordId","getMediaLocationsForProductAction","getMediaLocationsAsync","callerContext","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","response","map","mediaLocation","_mediaLocation$Uri","Uri","generateImageUrl","AltText","Name","includes","catch","error","trace","telemetry","message","debug","getMediaLocationsForSelectedVariantActionDataAction","createObservableDataAction","id","action","GetStoreLocationCentiroInput","CountryISOCode","City","PostalCode","Networks","StreetAddress","State","MaxDistance","MaxCollectionPoints","Msdyn365","collectionPoints","bSGetCollectionPointsAsync","collectionPoint","_ctx$requestContext$c","_collectionPoint$geoP","_collectionPoint$geoP2","_collectionPoint$name","_collectionPoint$name2","_collectionPoint$stre","_collectionPoint$city","_collectionPoint$zipC","_collectionPoint$stat","_collectionPoint$stat2","addressLines","street","houseNumber","city","zipCode","country","address2","filter","line","trim","length","join","OrgUnitAvailability","OrgUnitLocation","ChannelId","channel","Latitude","geoPoint","latitude","Longitude","longitude","OrgUnitName","name","OrgUnitNumber","Address","Street","StreetNumber","DistrictName","BuildingCompliment","Postbox","Zip","County","CountyName","state","StateName","Country","Distance","distance","InventoryLocationId","InventorySiteId","OpenFrom","OpenTo","openingHours","args","SuggestionType","AutoSuggestInput","searchText","top","suggestionType","hitPrefix","hitSuffix","searchQuery","topResultsCount","getSearchSuggestionsAction","autosuggest","autoSuggestPromises","_getAutoSuggest","Promise","all","searchCriteria","ProductSearchCriteria","SearchCondition","Context","CatalogId","HitPrefix","HitSuffix","searchSuggestions","getSearchSuggestionsAsync","Paging","Top","searchResults","searchByCriteriaAsync","Skip","Ids","item","Id","Number","IncludeAttributes","AllSearchResults","Product","_getDefaultSwatchSele","searchResult","find","result","imageUrl","coreContext","productData","_getDefaultSwatchSele2","_getDefaultSwatchSele3","dimensionToPreSelectInProductCard","DimensionTypes","none","PrimaryImageUrl","swatchSize","getDefaultSwatchSelected","SwatchValue","replace","swatchColor","swatchImage","ItemId","generateSwatchImageUrl","getProductImageUrlFromDefaultColorSwatch","ImageUrl","Value","url","getProductPageUrlSync","encodeURIComponent","attribute","_colorAttribute$Swatc","AttributeValues","colorAttribute","attributeValue","_attributeValue$KeyNa","KeyName","toLocaleLowerCase","ArrayExtensions","hasElements","Swatches","IsDefault","getSearchSuggestionsActionDataAction","getProductsByCategoryList","context","categoryId","urlTokens","listMetadata","categoryIds","pageType","toLowerCase","CATEGORY_PAGE_NAME","recordId","categories","productSearchCriteria","CategoryIds","SkipVariantExpansion","pageSize","products","productsWithImages","getProductImageUrls","expandWithSizeVariants","getProductsByCategoryListAction","CentiroDataActionInput","selectedModalAction","pickUpLocation","deliveryMode","getSecretValue","secretKey","baseUrl","_Msdyn365$msdyn365Com","secretManager","secretValue","value","UpdateB2cIdentityInput","newEmailAddress","token","_random","Math","random","decoded","jwtDecode","console","log","secretPromises","secrets","QueryString","grant_type","client_id","client_secret","resource","tokenResponse","URL","iss","issuerDomain","hostname","substring","indexOf","sub","JSON","stringify","identities","signInType","issuer","issuerAssignedId","headers","Authorization","data","access_token","graphResponse","success","status","reason","user","postBody","email","content","parse","toString","ProductPageSummaryInput","buildCacheKey","title","getProductBrand","productAttributes","_productAttributes$fi","_productAttributes$fi2","TextValue","getProductDescription","_productAttributes$fi3","_pDescription$replace","_pDescription","customDescriptionAttr","friendlyDescriptionAttr","pDescription","_productAttributes$fi4","simpleProductPromise","getByIdAsync","productAttributesPromise","getAttributeValuesAsync","results","_simpleProductData$Na","simpleProductData","productUrl","getProductUrlSync","canonicalDomain","_unused","productName","split","word","toUpperCase","description","sharingImageUrl","canonicalUrl","faviconUrl","price","AdjustedPrice","productBrand","e","sharingImage","src","createSearchOrgUnitLocationsInputFunc","createSearchOrgUnitLocationsInput","buildQueryResultSettings","_query","resultSettings","retailActionDataAction","retailAction","findAttribute","currentAttributes","attributeObj","attrIndex","findIndex","attr","_attr$Name","_attributeObj$Name","push","setNameAttribute","attrName","ExtensionProperties","TextValueTranslations","_writeToStorage","key","MsDyn365","isBrowser","window","localStorage","setItem","_readFromStorage","cookieValue","getItem","_removeFromStorage","removeItem","_writeToSessionStorage","storage","request","sessionStorage","_isValidJson","setDataInStorage","_readFromSessionStorage","sessionValue","getDataFromStorage","_isNumber","Object","entries","_removeFromSessionStorage","removeDataFromStorage","_generateProductUrl","product","actionContext","Dimensions","location","href","dimension","_dimension$DimensionV","_dimension$DimensionV2","searchParams","set","convertProductDimensionTypeToDimensionTypes","DimensionTypeValue","DimensionValue","_dateTimeFormat","date","dateObj","Date","Moment","format","hasImage","swatchImageUrl","http","XMLHttpRequest","open","addEventListener","send","json","_getDiscountPercentage","basePrice","toFixed","_triggerToast","toast","dark","position","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","progress","binding","modules","dataActions","registerActionId","actionPath","default","prototype","keys","forEach","exportName","Action","require","__bindings__","_objectSpread","packageDataActions","LAYOUT_MOUNT_POINT","CACHE_SETTING","parseInt","CLIENT_ENTRY_POINTS_TYPE","PDP_PAGE_NAME","FREQUENTLY_BOUGHT_TOGETHER_LIST","PICKS_FOR_YOU_LIST","MODULE_CACHE_KEY","MODULE_CONFIG_KEY","MSDYN365_WYSIWYG_DISABLED_PROPS","MSDYN365_WYSIWYG_CANADDMODULE","MODULE_CONFIG_ERRORS_KEY","MODULE_DATA_KEY","MODULE_RESOURCES_KEY","MODULE_ACTION_KEY","MODULE_DEFERRED_KEY","SERVER_RENDER_ERROR_CACHE_KEY","PAGE_INSIGHTS_VIEWS_KEY","PAGE_INSIGHTS_COMPONENTS_KEY","PAGE_INSIGHTS_ACTIONS_KEY","LAZYLOAD_SWITCH_PREFIX","DEPRECATED_CLIENT_RENDER_COMPLETE_EVENT","CLIENT_DATA_UPDATE_EVENT","CLIENT_RENDER_START_EVENT","CLIENT_RENDER_COMPLETE_EVENT","AUTHORING_ADD_RENDER_COMPLETE_EVENT","USER_CONSENT_GIVEN_EVENT","MODULE_LAYOUT_FIELD","productsWithImageUrls","startsWith","baseImageUrl","orderProductSearchResults","itemIdOrder","unorderedProductSearchResults","reduce","itemId","element","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","module","exports","React","ReactDOM"],"sourceRoot":""}