{"version":3,"file":"static/js/8bf1c7a66f96ee6e1c80.bundle.js","mappings":"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","sources":["webpack://henrys-ecommerce/./src/modules/store-selector-button/store-selector-button.tsx?7eba","webpack://henrys-ecommerce/./src/modules/store-selector-button/store-selector-button.view.tsx?b146","webpack://henrys-ecommerce/./lib/store-selector-button/module-registration.js?abb6","webpack://henrys-ecommerce/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://henrys-ecommerce/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://henrys-ecommerce/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://henrys-ecommerce/external var \"React\"?0d3b","webpack://henrys-ecommerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IStoreSelectorButtonData } from './store-selector-button.data';\r\nimport { IStoreSelectorButtonProps } from './store-selector-button.props.autogenerated';\r\n\r\nexport interface IStoreSelectorButtonViewProps extends IStoreSelectorButtonProps {}\r\n\r\n/**\r\n *\r\n * StoreSelectorButton component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass StoreSelectorButton extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default StoreSelectorButton;\r\n","import * as React from 'react';\r\nimport { IStoreSelectorButtonViewProps } from './store-selector-button';\r\n\r\nexport default (props: IStoreSelectorButtonViewProps) => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n modules,\r\n slots,\r\n telemetry,\r\n resources\r\n } = props;\r\n\r\n const handleClick = React.useCallback(() => {\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n let storeSelectorId: string = '';\r\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\r\n storeSelectorId = modules.storeSelector[0].id;\r\n }\r\n storeSelectorStateManager\r\n .openDialog({\r\n id: storeSelectorId,\r\n showMapViewLink: false,\r\n onLocationSelected: _orgUnitLocation => {\r\n return Promise.resolve();\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (telemetry) {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to set preferred store');\r\n }\r\n return;\r\n });\r\n }, [storeSelectorStateManager, modules, telemetry]);\r\n\r\n if (!slots?.storeSelector?.length) {\r\n return null;\r\n }\r\n\r\n const storeName = storeSelectorStateManager?.preferredStore?.StoreName || resources.headerPreferredStoreText;\r\n\r\n return (\r\n
\r\n
\r\n \r\n {storeName}\r\n
\r\n {slots.storeSelector}\r\n
\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 (binding.modules['store-selector-button'] = {\n c: () => require('partner/modules/store-selector-button/store-selector-button.tsx'),\n $type: 'containerModule',\n da: [{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'store-selector-button',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/store-selector-button'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-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 };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|store-selector-button|store-selector-button'] = {\n c: () => require('partner/modules/store-selector-button/store-selector-button.view.tsx'),\n cn: '__local__-__local__-store-selector-button'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n IListMapViewState,\n ILoadMapApiInput,\n IStoreInfo,\n IStoreSelectionStateContext,\n IStoreSelectorLocation,\n IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(\n storeId?: string,\n storeName?: string | undefined,\n writeToCookie: boolean = false,\n latitude?: number,\n longitude?: number\n ): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (\n !searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled\n ) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl =\n actionContext.requestContext.app &&\n actionContext.requestContext.app.config &&\n actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${\n geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n if (window) {\n const currentWindowAPI = window.mapAPIReady;\n window.mapAPIReady = () => {\n if (currentWindowAPI) {\n currentWindowAPI();\n }\n this.isMapApiLoaded = true;\n };\n }\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n input.market ? `&setMkt=${input.market}` : ''\n }`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["StoreSelectorButton","React","render","this","props","renderView","_slots$storeSelector","_storeSelectorStateMa","data","storeSelectorStateManager","result","modules","slots","telemetry","resources","handleClick","storeSelectorId","Object","keys","length","storeSelector","id","openDialog","showMapViewLink","onLocationSelected","_orgUnitLocation","Promise","resolve","catch","error","message","debug","storeName","preferredStore","StoreName","headerPreferredStoreText","className","role","onClick","binding","dataActions","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","window","__bindings__","_objectSpread","viewDictionary","cn","BaseStoreSelectorStateManager","constructor","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","value","_readFromToCookie","storeInfo","JSON","parse","undefined","_unused","_context","input","storeId","selectedStoreLocationId","writeToCookie","arguments","StoreId","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","key","MsDyn365","isBrowser","localStorage","removeItem","setItem","cookieValue","getItem","__decorate","computed","observable","action","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","actionContext","requestContext","channel","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","trim","query","encodeURI","geolocationApiUrl","app","config","requestUrl","script","document","createElement","setAttribute","remove","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","isNullOrEmpty","getElementById","currentWindowAPI","mapAPIReady","isMapApiLoaded","url","lang","market","reject","_document2","_document3","type","async","defer","src","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","module","exports","ReactDOM"],"sourceRoot":""}