{"version":3,"file":"static/js/9ffb08b25327ec0da1f4.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/search/components/search.categorysuggest.tsx?9371","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/search.form.tsx?6310","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/search.keywordsuggest.tsx?20bc","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/search.productsuggest.tsx?ebb5","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/language-selector.tsx?a173","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/google-map-modal.tsx?46c5","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/address-list-modal.tsx?bf24","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/location-selector.tsx?abfe","webpack://Msdyn365.Commerce.Online/./src/search-state.ts?dd10","webpack://Msdyn365.Commerce.Online/./src/modules/search/actions/get-auto-suggest-suggestions.ts?832b","webpack://Msdyn365.Commerce.Online/./src/modules/search/search.props.autogenerated.ts?c74a","webpack://Msdyn365.Commerce.Online/./src/modules/search/search.tsx?8bdd","webpack://Msdyn365.Commerce.Online/./src/modules/search/search.view.tsx?4430","webpack://Msdyn365.Commerce.Online/./lib/search/module-registration.js?f197","webpack://Msdyn365.Commerce.Online/./src/actions/get-address-purposes.ts?6b90","webpack://Msdyn365.Commerce.Online/./src/search-state-data-action.ts?8223","webpack://Msdyn365.Commerce.Online/./src/modules/search/search.view.tsx?1505","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.categorysuggest.tsx?6bcf","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.mobile.empty.tsx?ff32","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.form.tsx?d41a","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.keywordsuggest.tsx?2724","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.productsuggest.tsx?6616","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search.view.tsx?bfa7","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\n/* eslint-disable no-duplicate-imports */\nimport MsDyn365, { getRichTextHtml } from '@msdyn365-commerce/core';\nimport { ProductRefiner, ProductRefinerSource, ProductRefinerValue, SearchSuggestion } from '@msdyn365-commerce/retail-proxy';\nimport { format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISearchData } from '../search.data';\nimport { ISearchProps } from '../search.props.autogenerated';\n\nexport interface ISearchCategorySuggestProps {\n searchCategorySuggestClass: string;\n searchPageURL: string;\n searchQsp: string | undefined;\n hitPrefix: string;\n hitSuffix: string;\n autoSuggestProps: ISearchProps;\n searchText: string;\n searchRefiners: ProductRefiner[] | undefined;\n suggestions: SearchSuggestion[] | undefined;\n telemetryContent?: ITelemetryContent;\n shouldShowFullPath?: boolean;\n}\n\nexport interface ISearchCategoryViewProps {\n title: React.ReactNode;\n text: React.ReactNode[];\n}\n\nlet payLoad: IPayLoad;\n\n/**\n * CategorySuggestionsComponent.\n * @param props\n */\nexport const CategorySuggestionsComponent = (props: ISearchCategorySuggestProps): ISearchCategoryViewProps | undefined => {\n const {\n suggestions,\n searchText,\n autoSuggestProps: {\n resources: { categorySuggestionHeading }\n }\n } = props;\n\n const reactNodes: React.ReactNode[] = [];\n payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n suggestions?.map(item => {\n reactNodes.push(_assembleNode(item, props));\n });\n\n const titleNode = _renderTitle(categorySuggestionHeading, searchText);\n\n return { title: titleNode, text: reactNodes };\n};\n\nconst _renderTitle = (categorySuggestionHeading: string, searchText: string) => {\n const categoryAutoSuggestionHeading = categorySuggestionHeading\n ? format(categorySuggestionHeading, searchText)\n : `Search \"${searchText}\" in categories`;\n\n return
  • {categoryAutoSuggestionHeading}
  • ;\n};\n\nconst _assembleNode = (item: SearchSuggestion, props: ISearchCategorySuggestProps) => {\n const { searchText, hitPrefix, hitSuffix, shouldShowFullPath } = props;\n\n const splitValue = shouldShowFullPath ? item.Value : item.Value && item.Value.split('|').pop();\n const ariaLabel = splitValue\n ? splitValue.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '')\n : item.Value && item.Value.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n payLoad.contentAction.etext = item.Value;\n const attribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return (\n
  • \n \n {_generateLink(item, searchText, props) && _getHighlightedText(splitValue ? splitValue : '', hitPrefix, hitSuffix)}\n \n
  • \n );\n};\n\nconst _generateLink = (suggestion: SearchSuggestion, searchText: string, props: ISearchCategorySuggestProps): string => {\n return suggestion && suggestion.Id ? _getCategoryLink(suggestion.Id, searchText, props) : '';\n};\n\nconst _getCategoryLink = (id: string, searchText: string, props: ISearchCategorySuggestProps): string => {\n const { searchPageURL, searchQsp, searchRefiners } = props;\n\n if (!MsDyn365.isBrowser) {\n return '';\n }\n\n const queryUrl = new URL(searchPageURL, window.location.href);\n\n if (searchQsp && searchText) {\n queryUrl.searchParams.set(searchQsp, searchText);\n }\n\n const categoryRefiners = searchRefiners?.find(refiners => {\n return refiners.SourceValue === ProductRefinerSource.Category;\n });\n const refiner = categoryRefiners?.Values?.find(item => {\n return item.RefinerRecordId === Number.parseInt(id, 10);\n });\n\n const encodedRefiner = refiner && JSON.stringify(compressRefiners([refiner]));\n if (encodedRefiner) {\n queryUrl.searchParams.set('refiners', encodedRefiner);\n }\n\n return queryUrl.href;\n};\n\nconst _getHighlightedText = (suggestion: string, hitPrefix: string, hitSuffix: string): JSX.Element => {\n const formattedText = suggestion\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n // eslint-disable-next-line react/no-danger\n return ;\n};\n\n// TODO: This code is currently duplicated in categoryautosuggest need to either remove one of these files\n// or move this code to a common place\nconst compressedRefinerKeys = [\n 'DataTypeValue',\n 'LeftValueBoundString',\n 'RefinerRecordId',\n 'RefinerSourceValue',\n 'RightValueBoundString',\n 'UnitText'\n];\n\n/**\n * Compressed a list of refiners for use in URLs.\n * @param refiners The uncompressed refiners.\n */\nconst compressRefiners = (refiners: ProductRefinerValue[]) => {\n const compressedRefiners: (string | number)[][] = [];\n\n refiners.forEach(refiner => {\n const compressedRefiner: any = [];\n compressedRefinerKeys.forEach(refinerKey => {\n compressedRefiner.push(refiner[refinerKey]);\n });\n compressedRefiners.push(compressedRefiner);\n });\n\n return compressedRefiners;\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 { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISearchFormProps {\n hideSearchLabel: boolean | undefined;\n disableSubmitSearch: boolean | undefined;\n searchTextInput: React.RefObject;\n maxChars: number;\n searchQsp: string;\n searchPlaceholder: string;\n query: string;\n ariaLabelCancel: string;\n ariaLabelSearch: string;\n ariaLabelSubmit: string;\n handleCancelSearchChange(): void;\n handleInputChange(query: string): void;\n}\n\nexport interface ISearchFormViewProps {\n input: React.ReactNode;\n submitBtn: React.ReactNode;\n cancelBtn: React.ReactNode;\n}\n\n/**\n * On Input Change functionality.\n * @param handleInputChange -Input change function.\n * @returns Set updated input value.\n */\nconst onInputChangeFunction = (handleInputChange: (query: string) => void) => (event: React.ChangeEvent) => {\n handleInputChange(event.target.value || '');\n};\nexport const FormComponent = (props: ISearchFormProps): ISearchFormViewProps => {\n const {\n searchQsp,\n searchPlaceholder,\n // hideSearchLabel,\n searchTextInput,\n handleInputChange,\n maxChars,\n disableSubmitSearch,\n handleCancelSearchChange,\n query,\n ariaLabelCancel,\n ariaLabelSearch,\n ariaLabelSubmit\n } = props;\n\n const onInputChange = onInputChangeFunction(handleInputChange);\n const inputNode = (\n <>\n \n \n );\n\n const submitBtnNode = !disableSubmitSearch && \n \n );\n }\n}\n","/* eslint-disable no-template-curly-in-string */\n/* eslint-disable prettier/prettier */\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 */\n// import { GoogleMap, Marker } from \"react-google-maps\";\nimport React from 'react';\nimport { observer } from 'mobx-react';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { Loader } from \"@googlemaps/js-api-loader\";\n\nexport interface IGoogleSearchState {\n mapApiLoaded: any;\n mapInstance: any;\n mapApi: any;\n places: any;\n scriptLoaded: boolean;\n latLng: any;\n CurrentLocation: any;\n}\nexport interface ICustomModalProps {\n isOpen: any;\n onRequestClose: () => void;\n setSelectedMarker: (marker: any) => void;\n mapApiKey: string;\n address: any;\n activeModalContent: string;\n setActiveModalContent: (data: string) => void;\n setAddressBarDetails: (data: string) => void;\n}\n\n/**\n *\n * CustomModal component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class CustomModal extends React.PureComponent {\n constructor(props: ICustomModalProps) {\n super(props);\n this.state = {\n mapApiLoaded: false,\n mapInstance: null,\n mapApi: null,\n places: [],\n scriptLoaded: false,\n latLng: {},\n CurrentLocation: {}\n };\n // console.log(\"coming here first\");\n }\n\n public componentDidMount() {\n // this._loadGoogleApi();\n this.closeData();\n }\n public componentDidUpdate(): void {\n const value = this.props.isOpen;\n if(value){\n this._onGoogleMapRender();\n }\n }\n private async _onGoogleMapRender() {\n const loader = new Loader({\n apiKey: \"AIzaSyD66_xLEnleDPn7wcYOMwcmQYDKA-XiZsA\",\n version: \"weekly\",\n libraries: ['geometry','places'],\n language: \"en\",\n region: 'AE'\n// ...additionalOptions\n });\n void loader.load().then(async () => {\n const center = {\n lat: this.state.latLng.lat ? this.state.latLng.lat : 25.2048493,\n lng: this.state.latLng.lng ? this.state.latLng.lng : 55.2707828\n };\n\n const map = new google.maps.Map(document.getElementById('map-header') as HTMLElement, {\n center,\n zoom: 13,\n disableDefaultUI: true,\n // add back fullscreen, streetview, zoom\n zoomControl: true\n });\n const marker = new google.maps.Marker({\n map,\n draggable: true,\n anchorPoint: new google.maps.Point(0, -29)\n });\n const input = document.getElementById('pac-input-header') as HTMLInputElement;\n // Location bounds start\n // Base64 encoded polylines for Dubai and Hatta zones\n const dubaiZonePolyline = \"c35xeUNtYHpwSWpBZUdkQGNBbkBhQXhDZ0J8QUFgQkh+R25BbkdmQHJTakV+WmhWaE9oQ25BaUlucUFraUFQaUBuR3VHcEd5akB3RnlmQGlca3VAYm5AaV9DfEBjQmZGZ1RsQ2FLaGFAX3pBeENjQlx1QFlXVWtAQWVAZEVvT0JfQGRIe1ZGa0B+ckhzZVhiQWBAakRIYUNpTGx0Q3lpS3BzRntxQFJbakBEekBbZkBQakVpQFJQWD9gQXNAZEN1QHBAVmRZc0RqQXdAZUBGbkFEZUl3QXxPeEBuaEp3a0F4WGNDYGhIb31AemBGfkFsfEByQHxsQHhCYl9BfUFgZ11jd0l8fU15fkJ+akB4ZUJgbEZkbVd8X0hkaUd+X0Jwd0R2akR8emNAa19GanhYdWBoQGh0YUBleERkZk9uQHxBY0BsQ2RFYERpekB4fEV1UXpsQHV5SGZwTWV8Um9rVH1lfkBzbHxA\";\n const hattaZonePolyline = \"aXJ4dkN9cGR1SXpiQnxNdkN+QWREbEF8Q3xAbEV0QGpFTnxBQ2BCSWZFX0BgQld6QVtkXmJEZmxAa3dAYGdBYW1EbG9AYX1AZFBlWHJKYUxwSWJJaGlCeGdDYHRBeEdiX0JuV2JfQ3ZBeF5tZEVvX0hpaFB1ekthXA==\";\n\n // Function to decode a polyline string into a Google Maps LatLng array\n function decodePolyline(encoded: string): google.maps.LatLng[] {\n return google.maps.geometry.encoding.decodePath(encoded);\n }\n\n // Decoding the encoded polylines\n const dubaiCoords = decodePolyline(atob(dubaiZonePolyline));\n const hattaCoords = decodePolyline(atob(hattaZonePolyline));\n\n // Creating polygons from the decoded coordinates\n const dubaiPolygon = new google.maps.Polygon({paths: dubaiCoords});\n const hattaPolygon = new google.maps.Polygon({paths: hattaCoords});\n // Location bounds end\n const options = {\n fields: ['formatted_address', 'geometry', 'name'],\n strictBounds: false\n };\n const autocomplete = new google.maps.places.Autocomplete(input, options);\n autocomplete.bindTo('bounds', map);\n const infowindow = new google.maps.InfoWindow();\n const infowindowContent = document.getElementById('infowindow-content-header')as HTMLElement;\n infowindow.setContent(infowindowContent);\n const geocoder = new google.maps.Geocoder();\n\n\n // Common function to move user to its current location if in dubai bounds or move pin to dubai\n const moveToCurrentLocation = (lat: number, lng: number) => {\n const newmapser = new google.maps.LatLng(lat, lng);\n // Checking if the point is within Dubai or Hatta polygons\n if (google.maps.geometry.poly.containsLocation(newmapser, dubaiPolygon) || google.maps.geometry.poly.containsLocation(newmapser, hattaPolygon)){\n const latLng = new google.maps.LatLng(lat, lng);\n void geocoder.geocode({ location: latLng }, (results : any, status : any) => {\n if (status === 'OK' && results[0]) {\n this.setMapPlaceDetails(results[0].formatted_address, results[0].name);\n if (results[0].geometry.viewport) {\n map.fitBounds(results[0].geometry.viewport);\n } else {\n map.setCenter(results[0].geometry.location);\n map.setZoom(17);\n }\n marker.setPosition(results[0].geometry.location);\n marker.setVisible(true);\n const mapData = {\n lat: results[0].geometry.location.lat(),\n lng: results[0].geometry.location.lng(),\n address_name: results[0].formatted_address,\n name: results[0].name\n };\n this.props.setSelectedMarker(mapData);\n infowindow.open(map, marker);\n } else {\n console.error(`Geocoder failed due to: ${status}`);\n }\n });\n } else {\n const latLng = new google.maps.LatLng(25.2048493, 55.2707828);\n void geocoder.geocode({ location: latLng }, (results : any, status : any) => {\n if (status === 'OK' && results[0]) {\n this.setMapPlaceDetails(results[0].formatted_address, results[0].name);\n if (results[0].geometry.viewport) {\n map.fitBounds(results[0].geometry.viewport);\n } else {\n map.setCenter(results[0].geometry.location);\n map.setZoom(17);\n }\n marker.setPosition(results[0].geometry.location);\n marker.setVisible(true);\n const mapData = {\n lat: results[0].geometry.location.lat(),\n lng: results[0].geometry.location.lng(),\n address_name: results[0].formatted_address,\n name: results[0].name\n };\n this.props.setSelectedMarker(mapData);\n infowindow.open(map, marker);\n } else {\n console.error(`Geocoder failed due to: ${status}`);\n }\n });\n }\n };\n //\n\n // Set current location on load\n if(this.state.latLng.lat && this.state.latLng.lng){\n moveToCurrentLocation(this.state.latLng.lat, this.state.latLng.lng);\n }\n\n // Search map event\n autocomplete.addListener('place_changed', () => {\n marker.setVisible(false);\n const place = autocomplete.getPlace();\n // Location check starts\n const latttituede = place.geometry?.location?.lat() || 0;\n const longitutude = place.geometry?.location?.lng();\n const newmapser = new google.maps.LatLng(latttituede, longitutude);\n\n // Checking if the point is within Dubai or Hatta polygons\n if (google.maps.geometry.poly.containsLocation(newmapser, dubaiPolygon) || google.maps.geometry.poly.containsLocation(newmapser, hattaPolygon)) {\n this.setMapPlaceDetails(place.formatted_address, place.name);\n if (!place.geometry || !place.geometry.location) {\n // User entered the name of a Place that was not suggested and\n // pressed the Enter key, or the Place Details request failed.\n window.alert(`No details available for input: '${place.name}'`);\n return;\n }\n // If the place has a geometry, then present it on a map.\n if (place.geometry.viewport) {\n map.fitBounds(place.geometry.viewport);\n } else {\n map.setCenter(place.geometry.location);\n map.setZoom(17);\n }\n marker.setPosition(place.geometry.location);\n marker.setVisible(true);\n\n this.props.setSelectedMarker({\n lat: place.geometry.location.lat(),\n lng: place.geometry.location.lng(),\n address_name: place?.formatted_address,\n name: place?.name});\n infowindow.open(map, marker);\n } else {\n // The marker is outside the bounds of Dubai city, snap the marker position to the nearest boundary\n moveToCurrentLocation(this.state.CurrentLocation.lat, this.state.CurrentLocation.lng);\n alert('Delivery is not available at this location');\n }\n\n });\n\n // Marker dragged event\n google.maps.event.addListener(marker, 'dragend', () => {\n marker.setVisible(false);\n const latLng = marker.getPosition();\n void geocoder.geocode({ location: latLng }, (results:any, status:any) => {\n if (status === 'OK' && results[0]) {\n const newmapser = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng());\n if (google.maps.geometry.poly.containsLocation(newmapser, dubaiPolygon) || google.maps.geometry.poly.containsLocation(newmapser, hattaPolygon)){\n this.setMapPlaceDetails(results[0].formatted_address, results[0].name);\n if (results[0].geometry.viewport) {\n map.fitBounds(results[0].geometry.viewport);\n } else {\n map.setCenter(results[0].geometry.location);\n map.setZoom(17);\n }\n marker.setPosition(results[0].geometry.location);\n marker.setVisible(true);\n this.props.setSelectedMarker({\n lat: results[0].geometry.location.lat(),\n lng: results[0].geometry.location.lng(),\n address_name: results[0]?.formatted_address,\n name: results[0]?.name\n });\n infowindow.open(map, marker);\n } else{\n // The marker is outside the bounds of Dubai city, snap the marker position to the nearest boundary\n moveToCurrentLocation(this.state.CurrentLocation.lat, this.state.CurrentLocation.lng);\n alert('Delivery is not available at this location');\n }\n\n } else {\n console.error(`Geocoder failed due to: ${status}`);\n }\n });\n });\n\n // Move to current location event\n const locationButton = document.getElementById('move-to-current-location-header') as HTMLInputElement;\n locationButton.addEventListener(\"click\", () => {\n moveToCurrentLocation(this.state.CurrentLocation.lat, this.state.CurrentLocation.lng);\n });\n });\n }\n\n private async getMapDefaultProps() {\n // Get the user's current location using the browser's geolocation API\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n position => {\n this.setState({latLng: {\n lat: position.coords.latitude,\n lng: position.coords.longitude\n }});\n this.setState({CurrentLocation: {\n lat: position.coords.latitude,\n lng: position.coords.longitude\n }});\n },\n error => {\n console.error('Error getting user location:', error);\n }\n );\n } else {\n this.setState({latLng: {\n lat: 25.2048493,\n lng: 55.2707828\n }});\n }\n }\n\n private setMapPlaceDetails(formatted_address :any, name:any){\n const placeAddressElement = document.getElementById('place-address-header')as HTMLElement;\n if (placeAddressElement) {\n const addressText: string = formatted_address || '';\n placeAddressElement.textContent = addressText;\n }\n const placeNameElement = document.getElementById('place-name-header')as HTMLElement;\n if (placeNameElement) {\n const nameText: string = name || '';\n placeNameElement.textContent = nameText;\n }\n }\n\n // private _loadGoogleApi() {\n // const mapsURL = `https://maps.googleapis.com/maps/api/js?key=AIzaSyD66_xLEnleDPn7wcYOMwcmQYDKA-XiZsA&libraries=geometry,places&language=no®ion=NO&v=quarterly`;\n // //const mapsURL = `https://maps.googleapis.com/maps/api/js?key=AIzaSyD66_xLEnleDPn7wcYOMwcmQYDKA-XiZsA`;\n // // var scriptser =\n // // '';\n // const scripts = document.getElementsByTagName('script');\n // // Go through existing script tags, and return google maps api tag when found.\n // for (let i = 0; i < scripts.length; i++) {\n // if (scripts[i].src.indexOf(mapsURL) === 0) {\n // return scripts[i];\n // }\n // }\n // const googleMapScript = document.createElement('script');\n // googleMapScript.src = mapsURL;\n // googleMapScript.async = true;\n // googleMapScript.defer = true;\n // window.document.body.appendChild(googleMapScript);\n // return null;\n // }\n public renderAnyReactComponent(text: any) {\n return
    {text}
    ;\n }\n // private _updateStateScript() {\n // void this.initMap();\n // console.log(\"its updated\");\n // // this.setState({scriptLoaded: true});\n // }\n public apiHasLoaded = (map: any, maps: any) => {\n this.setState({\n mapApiLoaded: true,\n mapInstance: map,\n mapApi: maps\n });\n };\n public closeData(){\n void this.getMapDefaultProps();\n this.setState({mapApiLoaded: true});\n }\n public render(): JSX.Element {\n return (\n \n
    \n \n {this.props.address && this.props.address.length > 0 && (\n \n )}\n
    \n
    \n

    Delivery location

    \n

    Search or move the pin to match the location on map

    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n );\n }\n}","/* eslint-disable no-template-curly-in-string */\n/* eslint-disable prettier/prettier */\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 */\n// import { GoogleMap, Marker } from \"react-google-maps\";\nimport React from 'react';\nimport { observer } from 'mobx-react';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\n\nexport interface IAddressListModalProps {\n isOpen: any;\n onRequestClose: () => void;\n addressData: any;\n activeModalContent: string;\n setActiveModalContent: (data: string) => void;\n addressPurposes: any;\n selectedAddress: any;\n setSelectedAddress: (data: any) => void;\n setAddressBarDetails: (data: string) => void;\n}\n\n/**\n *\n * AddressListModal component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class AddressListModal extends React.PureComponent {\n constructor(props: IAddressListModalProps) {\n super(props);\n }\n\n public componentDidMount() {\n\n }\n public componentDidUpdate(): void {\n\n }\n\n public confirmSelectAddress(): void {\n this.props.onRequestClose();\n const element = document.querySelector(`input[type='radio'][name=selected-address]:checked`) as HTMLInputElement;\n if(element){\n this.props.setAddressBarDetails(element.dataset?.street ? element.dataset?.street : 'Select location');\n }\n }\n public render(): JSX.Element {\n return (\n \n
    \n \n
    \n
    \n Saved Address\n
    \n
    \n \n
    \n
    \n
    \n \n {this.props.addressData.map((item: any) => {\n const addressType = this.props.addressPurposes.filter(\n (addressTypeValue: { AddressType: any }) => addressTypeValue.AddressType === item.AddressTypeValue\n );\n const addressTypeValue = addressType.length > 0 ? addressType[0].Description : '';\n return (\n <>\n
    \n {\n this.props.setSelectedAddress(item.RecordId);\n this.props.setAddressBarDetails(`${addressTypeValue} - ${item.Street}`);\n }}\n data-street={`${addressTypeValue} - ${item.Street}`}\n className=\"msc-address-select__input\">\n\n
    \n

    \n {addressTypeValue}\n

    \n

    \n {`${item.Street}`}\n {item?.StreetNumber && item?.StreetNumber !== '' && ` , ${item.StreetNumber}`}\n {item?.BuildingCompliment && item?.BuildingCompliment !== '' && ` , ${item.BuildingCompliment}`}\n {item?.City && item?.City !== '' && ` , ${item.City}`}\n

    \n

    {`${item.Name}, ${item.Phone}`}

    \n
    \n
    \n \n );\n })}\n
    \n \n \n\n \n
    \n
    \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 { CustomModal } from './google-map-modal';\nimport { AddressListModal } from './address-list-modal';\nimport { observer } from 'mobx-react';\nimport React from 'react';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\n\nexport interface ILocationSelectorProps {\n isModalOpen: any;\n toggleMapModal: () => void;\n setSelectedMarker: (marker: any) => void;\n setAddressBarDetails: (data: string) => void;\n mapApiKey: string;\n selectedMarker: any;\n address: any;\n addressPurposes: any;\n addressBarDetails: string;\n setActiveModalContent: (data: string) => void;\n activeModalContent: string;\n selectedAddress: any;\n setSelectedAddress: (data: any) => void;\n}\n\n/**\n *\n * LocationSelector component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class LocationSelector extends React.PureComponent {\n constructor(props: ILocationSelectorProps) {\n super(props);\n }\n\n public componentDidMount() {\n // Show current location pin details\n if (this.props.selectedMarker) {\n if (this.props.selectedMarker?.name) {\n this.props.setAddressBarDetails(this.props.selectedMarker.name);\n } else if (this.props.selectedMarker?.address_name) {\n this.props.setAddressBarDetails(this.props.selectedMarker.address_name);\n }\n }\n\n if (this.props.address && this.props.address.length > 0) {\n this.props.setActiveModalContent('address');\n }\n // Show Nearest address location pin details if no saved address in LS & if no location pin selected by user\n if (\n this.props.address &&\n this.props.address.length > 0 &&\n this.props.selectedAddress === 0 &&\n this.props.addressBarDetails !== 'Select location'\n ) {\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n position => {\n // Calculate the distance between the user and each address\n const sortedAddressObject = this.props.address.map((addr: any) => {\n const latLng = addr.DistrictName.split(',');\n const dist = this.fetchDistance(latLng[0], latLng[1], position.coords.latitude, position.coords.longitude);\n return { distance: dist, ...addr };\n });\n\n // Sort by distance nearest address\n sortedAddressObject.sort(\n (a: { distance: string }, b: { distance: string }) => parseFloat(a.distance) - parseFloat(b.distance)\n );\n\n // console.log('thiss Distance (km): ', sortedAddressObject);\n if (sortedAddressObject && sortedAddressObject[0]) {\n const addressType = this.props.addressPurposes.filter(\n (addressTypeValue: { AddressType: any }) =>\n addressTypeValue.AddressType === sortedAddressObject[0].AddressTypeValue\n );\n const addressTypeValue = addressType.length > 0 ? addressType[0].Description : '';\n this.props.setActiveModalContent('address');\n this.props.setAddressBarDetails(`${addressTypeValue} - ${sortedAddressObject[0].Street}`);\n this.props.setSelectedAddress(sortedAddressObject[0].RecordId);\n }\n },\n error => {\n console.error('Error getting user location:', error);\n }\n );\n }\n }\n // Show selected address from LS here\n if (this.props.selectedAddress !== 0) {\n const selectAddDetails = this.props.address.filter((item: { RecordId: any }) => item.RecordId === this.props.selectedAddress);\n if (selectAddDetails && selectAddDetails.length > 0) {\n const addressType = this.props.addressPurposes.filter(\n (addressTypeValue: { AddressType: any }) => addressTypeValue.AddressType === selectAddDetails[0].AddressTypeValue\n );\n const addressTypeValue = addressType.length > 0 ? addressType[0].Description : '';\n this.props.setAddressBarDetails(`${addressTypeValue} - ${selectAddDetails[0].Street}`);\n this.props.setActiveModalContent('address');\n }\n }\n }\n\n // Haversine formula in JavaScript\n public fetchDistance(lat: number, lon: number, currentLat: number, currentLng: number) {\n const R = 6371; // Radius of the earth in km\n const dLat = (lat - currentLat) * (Math.PI / 180);\n const dLon = (lon - currentLng) * (Math.PI / 180);\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos((currentLat * Math.PI) / 180) * Math.cos((lat * Math.PI) / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n }\n ///\n public render(): JSX.Element {\n return (\n <>\n \n {this.props.isModalOpen && this.props.activeModalContent === 'location' && (\n \n )}\n {this.props.isModalOpen && this.props.activeModalContent === 'address' && (\n \n )}\n \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 { observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a autosuggest.\n */\nexport class SearchState {\n @observable public searchText?: string;\n\n @observable public defaultBasicSearchUrl?: string;\n\n @observable public searchQueryStringParameter?: string;\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 { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { SearchSuggestion, SearchSuggestionCriteria } from '@msdyn365-commerce/retail-proxy';\nimport { getSearchSuggestionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\n\nexport enum SuggestionType {\n Category = 'ScopedCategory',\n Keyword = 'Keyword',\n Product = 'Product',\n None = 'None'\n}\n\n/**\n * Input class for auto suggest search input.\n */\nexport class AutoSuggestInput implements IActionInput {\n public searchQuery?: string;\n\n public topResultsCount?: number;\n\n public suggestionType?: string;\n\n public hitPrefix?: string;\n\n public hitSuffix?: string;\n\n public constructor(searchText?: string, top?: number, suggestionType?: string, hitPrefix?: string, hitSuffix?: string) {\n this.searchQuery = searchText;\n this.topResultsCount = top;\n this.suggestionType = suggestionType;\n this.hitPrefix = hitPrefix;\n this.hitSuffix = hitSuffix;\n }\n\n public getCacheKey = () => 'AutoSuggestSearchSuggestions';\n\n public getCacheObjectType = () => 'AutoSuggestSearchSuggestions';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new AutoSuggestInput();\n};\n\n/**\n * Calls the Retail API and returns a auto-suggest suggestions.\n * @param input\n * @param ctx\n */\nexport async function getSearchSuggestionsAction(input: AutoSuggestInput, ctx: IActionContext): Promise {\n // If no input is provided fail out\n if (!input || !input.searchQuery) {\n throw new Error('[getSearchSuggestionsAction]No valid Input was provided, failing');\n }\n\n const autosuggest: Autosuggestions = {};\n\n const autoSuggestPromises = [_getAutoSuggest(input, autosuggest, ctx)];\n return Promise.all(autoSuggestPromises).then(() => {\n return autosuggest;\n });\n}\n\nasync function _getAutoSuggest(input: AutoSuggestInput, autosuggest: Autosuggestions, ctx: IActionContext): Promise {\n const catalogId = getCatalogId(ctx.requestContext);\n const searchCriteria: SearchSuggestionCriteria = {\n ProductSearchCriteria: {\n SearchCondition: input.searchQuery && input.searchQuery.length > 0 ? input.searchQuery : '',\n Context: {\n ChannelId: +ctx.requestContext.apiSettings.channelId,\n CatalogId: catalogId\n }\n },\n HitPrefix: input.hitPrefix,\n HitSuffix: input.hitSuffix,\n SuggestionType: input.suggestionType\n };\n\n const searchSuggestions = await getSearchSuggestionsAsync(\n { callerContext: ctx, queryResultSettings: { Paging: { Top: input.topResultsCount } } },\n searchCriteria\n );\n\n if (searchSuggestions && searchSuggestions.length > 0) {\n // Generate image url\n searchSuggestions.map(\n (item: SearchSuggestion) =>\n (item.ImageUrl = item.ImageUrl ? generateImageUrl(item.ImageUrl, ctx.requestContext.apiSettings) : '')\n );\n\n autosuggest.AllSearchResults = searchSuggestions;\n } else {\n ctx.telemetry.error(\n `[getSearchSuggestionsAction] unable to get availabilites for search with suggestion type ${searchCriteria.SuggestionType}`\n );\n }\n}\n\nexport const getSearchSuggestionsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/search/get-auto-suggest-suggestions',\n action: >getSearchSuggestionsAction,\n input: createInput\n});\n\nexport default getSearchSuggestionsActionDataAction;\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ISearch contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport interface ISearchConfig extends Msdyn365.IModuleConfig {\r\n suggestionTypeCriterion?: ISuggestionTypeCriterionData[];\r\n topResultsCount?: number;\r\n imageSettings?: Msdyn365.IImageSettings;\r\n hideSearchLabel?: boolean;\r\n disableSubmitSearch?: boolean;\r\n searchplaceholderText?: string;\r\n shouldShowFullCategoryPath?: boolean;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface ISearchResources {\r\n searchtext: string;\r\n searchLabelArialLabel: string;\r\n cancelBtnAriaLabel: string;\r\n searchBtnAriaLabel: string;\r\n submitBtnAriaLabel: string;\r\n autoSuggestFoundMessage: string;\r\n noAutoSuggestionMessage: string;\r\n productSuggestionHeading: string;\r\n categorySuggestionHeading: string;\r\n autoSuggestResultLoadingMessage: string;\r\n freePriceText: string;\r\n}\r\n\r\nexport const enum SuggestionTypeCriterionSuggestionType {\r\n product = 'product',\r\n keyword = 'keyword',\r\n scopedCategory = 'scopedCategory'\r\n}\r\n\r\nexport interface ISuggestionTypeCriterionData {\r\n SuggestionType?: SuggestionTypeCriterionSuggestionType;\r\n}\r\n\r\nexport interface ISearchProps extends Msdyn365.IModule {\r\n resources: ISearchResources;\r\n config: ISearchConfig;\r\n}\r\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 { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { getCatalogId, getUrlSync } from '@msdyn365-commerce/core';\nimport { ProductRefiner, ProductRefinerSource, ProductsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { createSearchStateInput } from '@msdyn365-commerce-modules/search-utilities';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, KeyCodes } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { debounce } from 'lodash';\nimport { Spinner, SpinnerSize } from 'office-ui-fabric-react';\nimport * as React from 'react';\n\nimport getSearchSuggestionsAction, { AutoSuggestInput, SuggestionType } from './actions/get-auto-suggest-suggestions';\nimport {\n CategorySuggestionsComponent,\n FormComponent,\n ISearchCategoryViewProps,\n ISearchKeywordViewProps,\n ISearchProductViewProps,\n KeywordSuggestionsComponent,\n ProductSuggestionsComponent\n // LanguageSelector\n} from './components';\nimport { ISearchData } from './search.data';\nimport { ISearchProps, ISuggestionTypeCriterionData, SuggestionTypeCriterionSuggestionType } from './search.props.autogenerated';\n\nexport interface ISearchState {\n searchText: string;\n searchKeywordSuggestClass: string;\n searchProductSuggestClass: string;\n searchCategorySuggestClass: string;\n suggestions: Autosuggestions | undefined;\n searchRefiners?: ProductRefiner[] | undefined;\n autoSuggestAriaLabel: string;\n isInitialState: boolean;\n isLoadingAutoSuggest?: boolean;\n isModalOpen?: boolean;\n selectedMarker?: any;\n mapApiKey: string;\n addressBarDetails: string;\n activeModalContent: string;\n selectedAddress: number;\n}\n\nexport interface ISearchViewProps extends ISearchProps {\n Search: IModuleProps;\n AutoSuggestAriaLabel: INodeProps;\n AutoSuggestAriaLabelText: string;\n searchText: string;\n AutoSuggest: INodeProps;\n KeywordSuggest: INodeProps;\n ProductSuggest: INodeProps;\n CategorySuggest: INodeProps;\n SearchForm: INodeProps;\n FormWrapper: INodeProps;\n UlKeyword: INodeProps;\n UlProduct: INodeProps;\n UlCategory: INodeProps;\n form: React.ReactNode;\n languageSelector?: React.ReactNode;\n autosuggestKeyword?: ISearchKeywordViewProps;\n autosuggestProduct?: ISearchProductViewProps;\n autosuggestCategory?: ISearchCategoryViewProps;\n callbacks: {\n handleCancelSearchChange(): void;\n handleCancelSearchFocused?(): void;\n };\n isLoadingAutoSuggest?: boolean;\n isLoadingNode?: React.ReactNode;\n isModalOpen?: boolean;\n selectedMarker?: any;\n mapApiKey: string;\n toggleMapModal: () => void;\n setSelectedMarker: (marker: any) => void;\n setAddressBarDetails: (marker: any) => void;\n addressBarDetails: string;\n activeModalContent: string;\n setActiveModalContent: (data: string) => void;\n selectedAddress: any;\n setSelectedAddress: (data: any) => void;\n}\n\n/**\n *\n * Search module.\n * @extends {React.Component, ISearchState>}\n */\nclass Search extends React.Component, ISearchState> {\n private readonly searchTextInput: React.RefObject;\n\n private readonly formReference: React.RefObject;\n\n private readonly maxChars: number;\n\n private readonly topResultsCount?: number;\n\n private readonly hitPrefix: string = '{';\n\n private readonly hitSuffix: string = '}';\n\n private readonly waitTime: number = 500;\n\n private readonly autoSuggestResultScreenReaderDiv: React.RefObject;\n\n private readonly autoSuggestResultDiv: React.RefObject;\n\n private readonly searchFormClass: string;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private loadSuggestionsRequestId?: string;\n\n private inputSuggestionType: ISuggestionTypeCriterionData[];\n\n // @ts-expect-error\n private cancellabelDebounce: debounce;\n\n public constructor(props: ISearchProps) {\n super(props);\n this.searchTextInput = React.createRef();\n this.autoSuggestResultScreenReaderDiv = React.createRef();\n this.autoSuggestResultDiv = React.createRef();\n this.formReference = React.createRef();\n\n this.state = {\n searchText: '',\n searchKeywordSuggestClass: 'ms-search__autoSuggest__keyword',\n searchProductSuggestClass: 'ms-search__autoSuggest__product',\n searchCategorySuggestClass: 'ms-search__autoSuggest__category',\n suggestions: undefined,\n searchRefiners: undefined,\n autoSuggestAriaLabel: '',\n isInitialState: true,\n isLoadingAutoSuggest: false,\n isModalOpen: false,\n selectedMarker: '',\n mapApiKey: 'AIzaSyD66_xLEnleDPn7wcYOMwcmQYDKA-XiZsA',\n addressBarDetails: 'Select location',\n activeModalContent: 'location',\n selectedAddress: 0\n };\n this.maxChars =\n (this.props.context &&\n this.props.context.app &&\n this.props.context.app.config &&\n this.props.context.app.config.searchInputMaxLength) ||\n 50;\n\n this.inputSuggestionType = [];\n this.topResultsCount = this.props.config && this.props.config.topResultsCount ? this.props.config.topResultsCount : 5;\n this.searchFormClass = 'ms-search__form';\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.toggleMapModal = this.toggleMapModal.bind(this);\n this.setAddressBarDetails = this.setAddressBarDetails.bind(this);\n this.setSelectedMarker = this.setSelectedMarker.bind(this);\n this.setActiveModalContent = this.setActiveModalContent.bind(this);\n this.setSelectedAddress = this.setSelectedAddress.bind(this);\n this._initSuggestionTypes();\n }\n\n public async componentDidMount(): Promise {\n document.body && document.body.addEventListener('mousedown', this._focusOutTarget);\n window && window.addEventListener('keyup', this._keyup);\n const locationDetails = localStorage.getItem('delivery-location');\n locationDetails && this.setState({ selectedMarker: JSON.parse(locationDetails) });\n\n // Save in state selected address record id from LS\n const selectAddRecordId = localStorage?.getItem('selected-address');\n const addBarDetails = localStorage?.getItem('address-bar-details');\n addBarDetails && this.setState({ addressBarDetails: addBarDetails });\n selectAddRecordId && this.setState({ selectedAddress: Number(selectAddRecordId) });\n // Show Nearest address location pin details if no saved address in LS & if no location pin selected by user\n if (this.props.data.address.result && this.props.data.address.result.length > 0 && !selectAddRecordId && !addBarDetails) {\n if (navigator && navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n position => {\n // Calculate the distance between the user and each address\n const sortedAddressObject =\n this.props.data.address?.result &&\n this.props.data.address?.result.map((addr: any) => {\n const latLng = addr.DistrictName.split(',');\n const dist = this.fetchDistance(latLng[0], latLng[1], position.coords.latitude, position.coords.longitude);\n return { distance: dist, ...addr };\n });\n\n // Sort by distance nearest address\n sortedAddressObject &&\n sortedAddressObject.sort(\n (a: { distance: string }, b: { distance: string }) => parseFloat(a.distance) - parseFloat(b.distance)\n );\n\n // console.log('thiss Distance (km): ', sortedAddressObject);\n if (sortedAddressObject && sortedAddressObject[0]) {\n const addressType =\n this.props.data.addressPurposes?.result &&\n this.props.data.addressPurposes?.result.filter(\n (addressTypeValue: { AddressType: any }) =>\n addressTypeValue.AddressType === sortedAddressObject[0].AddressTypeValue\n );\n const addressTypeValue = addressType && addressType.length > 0 ? addressType[0].Description : '';\n this.setActiveModalContent('address');\n this.setAddressBarDetails(`${addressTypeValue} - ${sortedAddressObject[0].Street}`);\n this.setSelectedAddress(sortedAddressObject[0].RecordId);\n }\n },\n error => {\n console.error('Error getting user location:', error);\n }\n );\n }\n }\n }\n\n public componentWillUnmount(): void {\n document.body && document.body.removeEventListener('mousedown', this._focusOutTarget, false);\n window && window.removeEventListener('keyup', this._keyup, false);\n }\n\n public componentDidUpdate(): void {\n // const {\n // config: { hideSearchLabel }\n // } = this.props;\n // const { isInitialState } = this.state;\n\n if (!this.props.context.request.params.isEditor) {\n // this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\n // if (!hideSearchLabel && isSearchFormExpanded) {\n // this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\n // } else if (!isInitialState) {\n // this.searchCollapsedLabel && this.searchCollapsedLabel.current && this.searchCollapsedLabel.current.focus();\n // }\n }\n }\n\n public shouldComponentUpdate(nextProps: ISearchProps, nextState: ISearchState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- ignore complexity.\n public render(): JSX.Element {\n const {\n context,\n resources: { cancelBtnAriaLabel, searchBtnAriaLabel, submitBtnAriaLabel },\n config: { hideSearchLabel, disableSubmitSearch, searchplaceholderText, shouldShowFullCategoryPath, className = '' }\n } = this.props;\n\n const {\n searchText,\n searchKeywordSuggestClass,\n searchProductSuggestClass,\n searchCategorySuggestClass,\n suggestions,\n searchRefiners,\n isLoadingAutoSuggest\n } = this.state;\n\n const searchQsp = (context && context.app && context.app.config && context.app.config.searchQueryStringParameter) || 'q';\n const searchPageURL = getUrlSync('search', context && context.actionContext) || '';\n const searchURL = this._appendQueryParams(searchPageURL, searchText, searchQsp);\n const searchPlaceholder =\n searchplaceholderText && searchplaceholderText.length > 0 ? searchplaceholderText : \"icon Search in 'product name'\";\n\n const keywordSuggestions = suggestions?.AllSearchResults?.filter(\n suggestion => suggestion.SuggestionType === SuggestionType.Keyword || suggestion.SuggestionType === SuggestionType.None\n );\n const productSuggestions = suggestions?.AllSearchResults?.filter(\n suggestion => suggestion.SuggestionType === SuggestionType.Product\n );\n const categoryRefiners = searchRefiners?.find(refiner => {\n return refiner.SourceValue === ProductRefinerSource.Category;\n });\n const categorySuggestions = suggestions?.AllSearchResults?.filter(suggestion => {\n if (suggestion.SuggestionType !== SuggestionType.Category) {\n return false;\n }\n const refiner = categoryRefiners?.Values?.find(item => {\n return `${item.RefinerRecordId ?? 0}` === suggestion.Id;\n });\n\n return !ObjectExtensions.isNullOrUndefined(refiner);\n });\n\n const viewProps: ISearchViewProps = {\n ...(this.props as ISearchProps),\n\n Search: {\n moduleProps: this.props,\n className: `${classnames('ms-search', className)} ${disableSubmitSearch ? 'no-submit' : 'with-submit'}`\n },\n AutoSuggestAriaLabel: {\n tag: 'div',\n className: 'msc-autoSuggest__screen-reader',\n 'aria-live': 'assertive',\n ref: this.autoSuggestResultScreenReaderDiv\n },\n // languageSelector: ,\n addressBarDetails: this.state.addressBarDetails,\n setAddressBarDetails: this.setAddressBarDetails,\n activeModalContent: this.state.activeModalContent,\n setActiveModalContent: this.setActiveModalContent,\n isModalOpen: this.state.isModalOpen,\n toggleMapModal: this.toggleMapModal,\n setSelectedMarker: this.setSelectedMarker,\n setSelectedAddress: this.setSelectedAddress,\n selectedAddress: this.state.selectedAddress,\n mapApiKey: this.state.mapApiKey,\n selectedMarker: this.state.selectedMarker,\n AutoSuggestAriaLabelText: this.state.autoSuggestAriaLabel,\n searchText: this.state.searchText,\n AutoSuggest: {\n ref: this.autoSuggestResultDiv,\n className: 'ms-search__autoSuggest'\n },\n KeywordSuggest: {\n className: searchKeywordSuggestClass\n },\n ProductSuggest: {\n className: searchProductSuggestClass\n },\n CategorySuggest: {\n className: searchCategorySuggestClass\n },\n SearchForm: {\n className: `${this.searchFormClass} bx-show`\n },\n FormWrapper: {\n tag: 'form',\n ref: this.formReference,\n className: 'ms-search__searchForm',\n 'aria-label': 'Search',\n name: 'searchForm',\n role: 'search',\n action: searchURL,\n autoComplete: 'off',\n onSubmit: this._handleSubmit\n },\n UlKeyword: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__keywordResults-items', className)\n },\n UlProduct: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__productResults-items', className)\n },\n UlCategory: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__categoryResults-items', className)\n },\n // label: LabelComponent({\n // isSearchFormExpanded,\n // searchLabelClass: `${this.searchLabelClass} ${isSearchFormExpanded ? 'bx-hide' : 'bx-show'}`,\n // searchtext,\n // searchLabelArialLabel,\n // searchCollapsedLabel: this.searchCollapsedLabel,\n // hideSearchLabel,\n // handleCancelSearchChange: this._handleCancelSearchChange,\n // telemetryContent: this.telemetryContent\n // }),\n form: FormComponent({\n ariaLabelCancel: cancelBtnAriaLabel,\n ariaLabelSearch: searchBtnAriaLabel,\n ariaLabelSubmit: submitBtnAriaLabel,\n hideSearchLabel,\n searchTextInput: this.searchTextInput,\n disableSubmitSearch,\n handleInputChange: this._handleInputChange,\n handleCancelSearchChange: this._handleCancelSearchChange,\n maxChars: this.maxChars,\n searchQsp,\n searchPlaceholder,\n query: searchText\n }),\n autosuggestKeyword:\n searchText &&\n searchText.length > 0 &&\n (isLoadingAutoSuggest || (keywordSuggestions && ArrayExtensions.hasElements(keywordSuggestions)))\n ? KeywordSuggestionsComponent({\n searchKeywordSuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: keywordSuggestions,\n telemetryContent: this.telemetryContent\n })\n : undefined,\n autosuggestProduct:\n searchText &&\n searchText.length > 0 &&\n (isLoadingAutoSuggest || (productSuggestions && ArrayExtensions.hasElements(productSuggestions)))\n ? ProductSuggestionsComponent({\n searchProductSuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: productSuggestions,\n telemetry: this.props.telemetry,\n moduleType: this.props.typeName,\n moduleId: this.props.id,\n telemetryContent: this.telemetryContent,\n resources: this.props.resources\n })\n : undefined,\n autosuggestCategory:\n searchText &&\n searchText.length > 0 &&\n (isLoadingAutoSuggest || (categorySuggestions && ArrayExtensions.hasElements(categorySuggestions)))\n ? CategorySuggestionsComponent({\n searchCategorySuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: categorySuggestions,\n searchRefiners,\n telemetryContent: this.telemetryContent,\n shouldShowFullPath: shouldShowFullCategoryPath\n })\n : undefined,\n callbacks: {\n handleCancelSearchChange: this._handleCancelSearchChange,\n handleCancelSearchFocused: this._handleCancelSearchFocused\n },\n isLoadingAutoSuggest,\n isLoadingNode: this._isLoadingNode()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n // Haversine formula in JavaScript\n public fetchDistance(lat: number, lon: number, currentLat: number, currentLng: number) {\n const R = 6371; // Radius of the earth in km\n const dLat = (lat - currentLat) * (Math.PI / 180);\n const dLon = (lon - currentLng) * (Math.PI / 180);\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos((currentLat * Math.PI) / 180) * Math.cos((lat * Math.PI) / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n }\n\n private _initSuggestionTypes() {\n const suggestionTypes = this.props.config.suggestionTypeCriterion;\n\n const suggestions = ArrayExtensions.unique(ArrayExtensions.validValues(suggestionTypes));\n if (!ArrayExtensions.hasElements(suggestions)) {\n this.inputSuggestionType = [\n { SuggestionType: SuggestionTypeCriterionSuggestionType.keyword },\n { SuggestionType: SuggestionTypeCriterionSuggestionType.product },\n { SuggestionType: SuggestionTypeCriterionSuggestionType.scopedCategory }\n ];\n return;\n }\n\n const validSuggestions = suggestions.filter(suggestion => suggestion.SuggestionType);\n if (ArrayExtensions.hasElements(validSuggestions)) {\n this.inputSuggestionType = validSuggestions;\n return;\n }\n\n this.inputSuggestionType = [];\n }\n\n /**\n * Function to create the ReactNode for loading Autosuggest result.\n * @returns ReachNode for loading Autosuggest result.\n */\n private readonly _isLoadingNode = (): React.ReactNode => {\n const loadingText = this.props.resources.autoSuggestResultLoadingMessage;\n return ;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _focusOutTarget = (e: any): void => {\n const { suggestions } = this.state;\n\n if (suggestions && suggestions.AllSearchResults && e.target.closest('.ms-search') === null) {\n this._clearAutoSuggestState();\n }\n };\n\n private readonly _keyup = (e: KeyboardEvent): void => {\n const { suggestions } = this.state;\n\n if (suggestions && suggestions.AllSearchResults && e.keyCode === KeyCodes.Escape) {\n this._clearAutoSuggestState();\n }\n\n if (\n !(\n (this.formReference.current && this.formReference.current.contains((e.target as unknown) as Node)) ||\n (this.autoSuggestResultDiv.current && this.autoSuggestResultDiv.current.contains((e.target as unknown) as Node))\n )\n ) {\n if (suggestions && suggestions.AllSearchResults) {\n this._clearAutoSuggestState();\n }\n }\n };\n\n private readonly _clearAutoSuggestState = (): void => {\n const {\n context: { actionContext },\n data: { searchState }\n } = this.props;\n\n if (this.searchTextInput.current && this.searchTextInput.current.value.length > 0) {\n searchState.searchText = '';\n searchState.defaultBasicSearchUrl = '';\n searchState.searchQueryStringParameter = '';\n actionContext ? actionContext.update(createSearchStateInput(searchState), searchState) : null;\n this.searchTextInput.current.value = '';\n }\n\n this.setState({ searchText: '', suggestions: undefined, searchRefiners: undefined });\n };\n\n private async toggleMapModal(): Promise {\n this.setState({ isModalOpen: !this.state.isModalOpen });\n }\n\n private async setAddressBarDetails(data: string): Promise {\n this.setState({ addressBarDetails: data });\n localStorage.setItem('address-bar-details', data);\n }\n\n private async setActiveModalContent(data: string): Promise {\n this.setState({ activeModalContent: data });\n }\n private async setSelectedAddress(data: any): Promise {\n localStorage.setItem('selected-address', data);\n this.setState({ selectedAddress: data });\n }\n private async setSelectedMarker(marker: any): Promise {\n localStorage.setItem('delivery-location', JSON.stringify(marker));\n this.setState({ selectedMarker: marker });\n void this.setAddressBarDetails(marker?.address_name !== '' ? marker?.address_name : marker?.name);\n void this.setActiveModalContent('location');\n localStorage.removeItem('selected-address');\n }\n\n private async _getSearchSuggestions(loadSuggestionsRequestId: string, query: string) {\n try {\n const searchSuggestions = await getSearchSuggestionsAction(\n new AutoSuggestInput(query, this.topResultsCount, this._getSuggestionType(), this.hitPrefix, this.hitSuffix),\n this.props.context.actionContext\n );\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return undefined;\n }\n return searchSuggestions;\n } catch (error) {\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return undefined;\n }\n this.setState({ suggestions: undefined, searchRefiners: undefined, autoSuggestAriaLabel: this._setAutoSuggestResultCount() });\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Unable to get auto suggest results');\n return undefined;\n }\n }\n\n private async _updateSearchRefiners(loadSuggestionsRequestId: string, query: string, suggestions: Autosuggestions | undefined) {\n try {\n const refiners = await this._getSearchRefiners(query);\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return;\n }\n this.setState({\n suggestions,\n searchRefiners: refiners,\n autoSuggestAriaLabel: this._setAutoSuggestResultCount(suggestions),\n isLoadingAutoSuggest: false\n });\n } catch (error) {\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return;\n }\n this.setState({ suggestions, searchRefiners: undefined, autoSuggestAriaLabel: this._setAutoSuggestResultCount(suggestions) });\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Unable to get refiners results');\n }\n }\n\n private _loadSuggestions(query: string) {\n this.cancellabelDebounce = debounce(async () => {\n this.setState({ isLoadingAutoSuggest: true });\n const loadSuggestionsRequestId = Random.Guid.generateGuid();\n this.loadSuggestionsRequestId = loadSuggestionsRequestId;\n const searchSuggestions = await this._getSearchSuggestions(loadSuggestionsRequestId, query);\n await this._updateSearchRefiners(loadSuggestionsRequestId, query, searchSuggestions);\n }, this.waitTime);\n\n setTimeout(() => {\n this.cancellabelDebounce();\n }, 0);\n }\n\n private readonly _handleInputChange = (query: string): void => {\n if (!query || query.length <= this.maxChars) {\n this.setState({ searchText: query });\n }\n\n if (this.cancellabelDebounce) {\n this.cancellabelDebounce.cancel();\n }\n\n const {\n context,\n data: { searchState }\n } = this.props;\n\n if (context) {\n if (query && query.length > 0) {\n if (query.length > this.maxChars) {\n return;\n }\n\n if (ArrayExtensions.hasElements(this.inputSuggestionType)) {\n this._loadSuggestions(query);\n }\n\n searchState.searchText = query;\n } else {\n this.setState({ suggestions: undefined, searchRefiners: undefined });\n searchState.searchText = '';\n }\n context.actionContext.update(createSearchStateInput(searchState), searchState);\n }\n };\n\n private _getSuggestionType(): string {\n const distinctSuggestionTypes: string[] = this.inputSuggestionType.map(\n suggestionTypeItem => suggestionTypeItem.SuggestionType!.charAt(0).toUpperCase() + suggestionTypeItem.SuggestionType!.slice(1)\n );\n return distinctSuggestionTypes.join(',');\n }\n\n private async _getSearchRefiners(searchText: string): Promise {\n const { actionContext: ctx } = this.props.context;\n const catalogId = getCatalogId(ctx.requestContext);\n validateCatalogId(catalogId);\n return ProductsDataActions.getProductSearchRefinersAsync(\n { callerContext: ctx },\n {\n SearchCondition: searchText,\n Context: {\n ChannelId: +ctx.requestContext.apiSettings.channelId,\n CatalogId: catalogId\n }\n }\n );\n }\n\n private readonly _handleSubmit = (\n e: React.MouseEvent | React.KeyboardEvent | React.FormEvent\n ): void => {\n const {\n config: { disableSubmitSearch },\n context: {\n actionContext,\n app: {\n config: { searchQueryStringParameter }\n }\n }\n } = this.props;\n\n const query = this.searchTextInput.current && this.searchTextInput.current.value;\n e.preventDefault();\n\n if (!query || (query && query.length === 0) || disableSubmitSearch) {\n this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\n } else {\n const searchQsp = searchQueryStringParameter || 'q';\n const searchURL = this._appendQueryParams(getUrlSync('search', actionContext) || '', query, searchQsp);\n document.location.href = searchURL;\n }\n };\n\n private readonly _handleCancelSearchChange = (): void => {\n const { suggestions } = this.state;\n\n if (suggestions && suggestions.AllSearchResults) {\n this._clearAutoSuggestState();\n }\n };\n\n private readonly _handleCancelSearchFocused = (): void => {\n const { suggestions } = this.state;\n if (!(suggestions && suggestions.AllSearchResults)) {\n this._clearAutoSuggestState();\n }\n };\n\n private readonly _appendQueryParams = (route: string, query: string, qsp: string): string => {\n if (!MsDyn365.isBrowser) {\n return '';\n }\n\n const queryUrl = new URL(route, window.location.href);\n if (qsp && query) {\n queryUrl.searchParams.set(qsp, query);\n }\n\n return queryUrl.href;\n };\n\n private readonly _setAutoSuggestResultCount = (result?: Autosuggestions) => {\n if (this.autoSuggestResultScreenReaderDiv.current !== null) {\n const ariaLiveRegion = this.autoSuggestResultScreenReaderDiv.current;\n const suggestResultString = this.props.resources.autoSuggestFoundMessage;\n const emptyResultString = this.props.resources.noAutoSuggestionMessage;\n ariaLiveRegion.innerText =\n result && result.AllSearchResults && result.AllSearchResults.length > 0 ? suggestResultString : emptyResultString;\n ariaLiveRegion.setAttribute('aria-live', 'assertive');\n return ariaLiveRegion.innerText;\n }\n return '';\n };\n}\n\nexport default Search;\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 { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { LocationSelector } from './components';\nimport { ISearchCategoryViewProps, ISearchProductViewProps, ISearchFormViewProps } from './components';\nimport { ISearchViewProps } from './search';\n\nconst SearchView: React.FC = props => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n // KeywordSuggest,\n ProductSuggest,\n CategorySuggest,\n // UlKeyword,\n UlProduct,\n UlCategory,\n form,\n autosuggestCategory,\n // autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n // label,\n isLoadingAutoSuggest,\n isLoadingNode\n } = props;\n return (\n \n {/* {label} */}\n \n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\n \n {searchText && searchText.length > 0 ? {AutoSuggestAriaLabelText} : ''}\n {/* {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword, isLoadingAutoSuggest, isLoadingNode)} */}\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct, isLoadingAutoSuggest, isLoadingNode)}\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory, isLoadingAutoSuggest, isLoadingNode)}\n \n {props.languageSelector}\n \n );\n};\n\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\n return (\n \n \n {form.input}\n {/* {form.cancelBtn}\n {form.submitBtn} */}\n \n \n );\n};\n\n// const _renderKeywordSuggestions = (\n// KeywordSuggest: INodeProps,\n// UlKeyword: INodeProps,\n// keywordSuggestions?: ISearchKeywordViewProps,\n// isLoadingAutoSuggest?: boolean,\n// isLoadingNode?: React.ReactNode\n// ) => {\n// return (\n// keywordSuggestions && (\n// \n// \n// {isLoadingAutoSuggest && isLoadingNode}\n// {!isLoadingAutoSuggest &&\n// keywordSuggestions.text.map(text => {\n// return text;\n// })}\n// \n// \n// )\n// );\n// };\n\nconst _renderProductSuggestions = (\n ProductSuggest: INodeProps,\n UlProduct: INodeProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n productSuggestions && (\n \n \n {productSuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {/* {item.price} */}\n \n \n );\n })}\n \n \n )\n );\n};\n\nconst _renderCategorySuggestions = (\n CategorySuggest: INodeProps,\n UlCategory: INodeProps,\n categorySuggestions?: ISearchCategoryViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n categorySuggestions && (\n \n \n {categorySuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n categorySuggestions.text.map(text => {\n return text;\n })}\n \n \n )\n );\n};\n\nexport default SearchView;\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['search'] = {\n c: () => require('partner/modules/search/search.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'searchState', path:'@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'search',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/search'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-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|search|search'] = {\n c: () => require('partner/modules/search/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['@msdyn365-commerce-modules|search|modules|search|search'] = {\n c: () => require('@msdyn365-commerce-modules/search/dist/lib/modules/search/search.view.js'),\n cn: '@msdyn365-commerce-modules-search-search'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|search'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/search.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-search'\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 {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getAddressPurposesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for get Address Purposes data action.\n */\nexport class GetAddressPurposesInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('AddressPurpose', this.apiSettings);\n\n public getCacheObjectType = () => 'AddressPurpose';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetAddressPurposesInput => {\n return new GetAddressPurposesInput(inputData.requestContext.apiSettings);\n};\n\nexport async function getAddressPurposesAction(input: GetAddressPurposesInput, ctx: IActionContext): Promise {\n return getAddressPurposesAsync({\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n });\n}\n\nexport const getAddressPurposesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/address/get-address-purposes',\n action: >getAddressPurposesAction,\n input: createInput\n});\n\nexport default getAddressPurposesActionDataAction;\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 { SearchState } from './search-state';\n\nexport function createSearchStateInput(result: SearchState): GenericInput {\n return new GenericInput('searchState', result, 'SearchState');\n}\n\nconst createsearchStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createSearchStateInput({ searchText: '' });\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createsearchStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps } from './components';\nimport { ISearchViewProps } from './search';\n\nconst SearchView: React.FC = props => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n CategorySuggest,\n UlKeyword,\n UlProduct,\n UlCategory,\n form,\n autosuggestCategory,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n isLoadingAutoSuggest,\n isLoadingNode\n } = props;\n\n return (\n \n {label}\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\n \n {searchText && searchText.length > 0 ? {AutoSuggestAriaLabelText} : ''}\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword, isLoadingAutoSuggest, isLoadingNode)}\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct, isLoadingAutoSuggest, isLoadingNode)}\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory, isLoadingAutoSuggest, isLoadingNode)}\n \n \n );\n};\n\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\n return (\n \n \n {form.input}\n {form.cancelBtn}\n {form.submitBtn}\n \n \n );\n};\n\nconst _renderKeywordSuggestions = (\n KeywordSuggest: INodeProps,\n UlKeyword: INodeProps,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n keywordSuggestions && (\n \n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n )\n );\n};\n\nconst _renderProductSuggestions = (\n ProductSuggest: INodeProps,\n UlProduct: INodeProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n productSuggestions && (\n \n \n {productSuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n )\n );\n};\n\nconst _renderCategorySuggestions = (\n CategorySuggest: INodeProps,\n UlCategory: INodeProps,\n categorySuggestions?: ISearchCategoryViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n categorySuggestions && (\n \n \n {categorySuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n categorySuggestions.text.map(text => {\n return text;\n })}\n \n \n )\n );\n};\n\nexport default SearchView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Categories heading.\n * @param inCategoriesHeading - The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\n\n return
    {categoryAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render Categories suggestion result.\n * @param inCategoriesHeading - The Categories result heading.\n * @param noResultText - The \"No Result\" text.\n * @param props - The Categories suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const CategorySuggestionsComponent = (\n inCategoriesHeading: string,\n noResultText: string,\n props: ISearchViewProps & ISearchProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return props.autosuggestCategory ? (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n props.autosuggestCategory.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n
  • {noResultText}
  • \n
    \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 { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n const imageSettings = {\n lazyload: true,\n viewports: {\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\n }\n };\n return (\n \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param props -The props.\n * @returns The JSX Element.\n */\nexport const MobileAutoSuggestEmptyComponent = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    \n
    {props.resources.emptyMobileSearchTextHeading}
    \n
    {props.resources.emptyMobileSearchText}
    \n
    \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 { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\n\n/**\n * Render Clear button for mobile viewport.\n * @param clearSearchButtonText -The Clear button text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\n return (\n \n );\n};\n\n/**\n * Render Search form.\n * @param form -Form view props.\n * @param searchForm -Search Form props.\n * @param formWrapper -Form Wrapper props.\n * @param isMobile -Is mobile viewport flag.\n * @param clearSearchButtonText -The Clear button text.\n * @param props -The props for resource.\n * @param isSearchText -Is SearchText flag for input text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nexport const FormComponent = (\n form: ISearchFormViewProps,\n searchForm: INodeProps,\n formWrapper: INodeProps,\n isMobile: boolean,\n clearSearchButtonText: string,\n props: ISearchProps,\n isSearchText: boolean,\n clearSearch: () => void\n): JSX.Element => {\n const cancelButtonNode = (\n \n );\n\n return isMobile ? (\n \n {form.cancelBtn}\n \n {form.input}\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\n \n \n ) : (\n \n \n {form.submitBtn}\n {form.input}\n {isSearchText && cancelButtonNode}\n \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 { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Render keywords heading.\n * @param keywordsHeading -The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\n\n return
    {categoryAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render keywords reults.\n * @param keywordSuggest -The Keywords suggest Node props.\n * @param ulKeyword -The List Node props.\n * @param keywordsHeading -The Keywords result heading.\n * @param noResultText -The \"No Result\" text.\n * @param keywordSuggestions -The Keywords suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns -The JSX Element.\n */\nexport const KeywordSuggestionsComponent = (\n keywordSuggest: INodeProps,\n ulKeyword: INodeProps,\n keywordsHeading: string,\n noResultText: string,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return keywordSuggestions ? (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n
  • {noResultText}
  • \n
    \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 { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param productSuggestionsHeading -The products suggestion result heading.\n * @returns The JSX Element.\n */\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\n\n return
    {productAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n return (\n \n );\n};\n\n/**\n * Render Products No result section.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    {props.resources.noResultContentHeadingText}
    \n
    \n {props.resources.noResultContentParagraphText}\n
    \n
    \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param productSuggest -The product suggest Node props.\n * @param ulProduct -The List Node props.\n * @param props -The props.\n * @param productSuggestions -The Product suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const ProductSuggestionsComponent = (\n productSuggest: INodeProps,\n ulProduct: INodeProps,\n props: ISearchProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n const liProduct: INodeProps = {\n tag: 'li',\n className: 'msc-no-result-content'\n };\n return productSuggestions ? (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n ) : (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {renderProductNotFoundResults(props)}\n \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 { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\nimport { FormComponent } from './components/search.form';\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\n\n/**\n * Render Title for AutoSuggest.\n * @param searchSuggestionHeading -The heading resource string.\n * @param searchText -The search string.\n * @returns -The JSX Element.\n */\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\n const searchTextString = '\"'.concat(searchText.concat('\"'));\n const searchAutoSuggestionHeading = searchSuggestionHeading\n ? format(searchSuggestionHeading, searchTextString)\n : `Search for ${searchTextString}`;\n\n return {searchAutoSuggestionHeading};\n};\n\n/**\n * Search View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst SearchView: React.FC> = (\n props: ISearchViewProps & ISearchProps\n): JSX.Element => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n UlKeyword,\n UlProduct,\n form,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n context,\n isLoadingAutoSuggest,\n isLoadingNode,\n callbacks: { handleCancelSearchFocused }\n } = props;\n\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\n\n const [searchTextString, setSearchTextString] = useState();\n const [isMobilePort, setIsMobile] = useState(false);\n\n useEffect(() => {\n setSearchTextString(searchText);\n }, [searchText]);\n\n /**\n * ClearSearch callback method to clear search string.\n */\n const clearSearch = (): void => {\n setSearchTextString('');\n\n const propsForm = props.form as ISearchFormViewProps;\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\n\n if (propsFormInputCurrent) {\n propsFormInputCurrent.value = '';\n }\n\n propsFormInput.value = '';\n props.searchText = '';\n props.FormWrapper.action = '';\n };\n\n const isMobileViewport = useCallback(() => {\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\n setIsMobile(isMobileView);\n }, [context]);\n\n useEffect(() => {\n window.addEventListener('resize', isMobileViewport);\n isMobileViewport();\n }, [isMobileViewport]);\n\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isMobileView = viewport === 'sm' || viewport === 'xs';\n\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString)\n ? `${AutoSuggest.className} show`\n : `${AutoSuggest.className} hide`;\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\n\n return (\n \n {label}\n {FormComponent(\n form as ISearchFormViewProps,\n SearchForm,\n FormWrapper,\n isMobilePort,\n clearSearchButtonText,\n props,\n isSearchText,\n clearSearch\n )}\n {!isMobileView && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n \n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n {isMobileView && props.isSearchFormExpanded && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n {(form as ISearchFormViewProps).cancelBtn}\n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n \n );\n};\nexport default SearchView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["payLoad","CategorySuggestionsComponent","props","suggestions","searchText","autoSuggestProps","resources","categorySuggestionHeading","reactNodes","getPayloadObject","telemetryContent","map","item","push","_assembleNode","title","_renderTitle","text","categoryAutoSuggestionHeading","format","React","className","hitPrefix","hitSuffix","shouldShowFullPath","splitValue","Value","split","pop","ariaLabel","replace","RegExp","contentAction","etext","attribute","getTelemetryAttributes","key","Id","Object","assign","href","_generateLink","_getHighlightedText","suggestion","_getCategoryLink","id","_categoryRefiners$Val","searchPageURL","searchQsp","searchRefiners","MsDyn365","isBrowser","queryUrl","URL","window","location","searchParams","set","categoryRefiners","find","refiners","SourceValue","ProductRefinerSource","Category","refiner","Values","RefinerRecordId","Number","parseInt","encodedRefiner","JSON","stringify","compressRefiners","formattedText","dangerouslySetInnerHTML","getRichTextHtml","compressedRefinerKeys","compressedRefiners","forEach","compressedRefiner","refinerKey","FormComponent","searchPlaceholder","searchTextInput","handleInputChange","maxChars","disableSubmitSearch","handleCancelSearchChange","query","ariaLabelCancel","ariaLabelSearch","ariaLabelSubmit","onInputChange","event","target","value","onInputChangeFunction","inputNode","type","name","placeholder","ref","onChange","maxLength","submitBtnNode","Button","input","cancelBtn","onClick","submitBtn","KeywordSuggestionsComponent","formattedLink","ProductSuggestionsComponent","context","actionContext","productSuggestionHeading","moduleType","moduleId","items","productAutoSuggestionHeading","_item$Value","altText","price","Value3","DecimalValue","thumbnail","_renderThumbnail","ObjectExtensions","isNullOrUndefined","_renderPrice","LiProduct","_getLiWrapper","AProduct","_getAWrapper","tag","recid","_objectSpread","cultureFormatter","formatCurrency","getProductPageUrlSync","undefined","adjustedPrice","basePrice","_props$resources","PriceComponent","typeName","data","CustomerContextualPrice","BasePrice","freePriceText","request","gridSettings","config","imageSettings","cropFocalRegion","ImageUrl","telemetry","error","Image","requestContext","src","viewports","xs","q","w","h","lg","xl","lazyload","loadFailureBehavior","LanguageSelector","constructor","super","render","__decorate","observer","CustomModal","apiHasLoaded","maps","this","setState","mapApiLoaded","mapInstance","mapApi","state","places","scriptLoaded","latLng","CurrentLocation","componentDidMount","closeData","componentDidUpdate","isOpen","_onGoogleMapRender","Loader","apiKey","version","libraries","language","region","load","then","async","center","lat","lng","google","Map","document","getElementById","zoom","disableDefaultUI","zoomControl","marker","Marker","draggable","anchorPoint","Point","decodePolyline","encoded","geometry","encoding","decodePath","dubaiCoords","atob","hattaCoords","dubaiPolygon","Polygon","paths","hattaPolygon","autocomplete","Autocomplete","fields","strictBounds","bindTo","infowindow","InfoWindow","infowindowContent","setContent","geocoder","Geocoder","moveToCurrentLocation","newmapser","LatLng","poly","containsLocation","geocode","results","status","setMapPlaceDetails","formatted_address","viewport","fitBounds","setCenter","setZoom","setPosition","setVisible","mapData","address_name","setSelectedMarker","open","console","addListener","_place$geometry","_place$geometry2","place","getPlace","latttituede","longitutude","alert","getPosition","_results$","_results$2","addEventListener","navigator","geolocation","getCurrentPosition","position","coords","latitude","longitude","placeAddressElement","addressText","textContent","placeNameElement","nameText","renderAnyReactComponent","getMapDefaultProps","Modal","toggle","onRequestClose","modalClassName","ModalHeader","address","length","setActiveModalContent","width","height","viewBox","fill","xmlns","clipPath","maskUnits","x","y","d","mask","stroke","strokeLinecap","strokeLinejoin","ModalBody","style","ModalFooter","AddressListModal","confirmSelectAddress","element","querySelector","_element$dataset","_element$dataset2","setAddressBarDetails","dataset","street","addressData","addressType","addressPurposes","filter","addressTypeValue","AddressType","AddressTypeValue","Description","RecordId","checked","selectedAddress","setSelectedAddress","Street","StreetNumber","BuildingCompliment","City","Name","Phone","LocationSelector","_this$props$selectedM","_this$props$selectedM2","selectedMarker","addressBarDetails","sortedAddressObject","addr","DistrictName","distance","fetchDistance","sort","a","b","parseFloat","selectAddDetails","lon","currentLat","currentLng","dLat","Math","PI","dLon","sin","cos","atan2","sqrt","toggleMapModal","substring","isModalOpen","activeModalContent","mapApiKey","SearchState","observable","SuggestionType","AutoSuggestInput","top","suggestionType","getCacheKey","getCacheObjectType","dataCacheType","searchQuery","topResultsCount","_getAutoSuggest","autosuggest","ctx","catalogId","getCatalogId","searchCriteria","ProductSearchCriteria","SearchCondition","Context","ChannelId","apiSettings","channelId","CatalogId","HitPrefix","HitSuffix","searchSuggestions","getSearchSuggestionsAsync","callerContext","queryResultSettings","Paging","Top","generateImageUrl","AllSearchResults","createObservableDataAction","action","Error","autoSuggestPromises","Promise","all","inputData","SuggestionTypeCriterionSuggestionType","Search","waitTime","_isLoadingNode","loadingText","autoSuggestResultLoadingMessage","Spinner","label","size","SpinnerSize","medium","labelPosition","_focusOutTarget","e","closest","_clearAutoSuggestState","_keyup","keyCode","KeyCodes","Escape","formReference","current","contains","autoSuggestResultDiv","searchState","defaultBasicSearchUrl","searchQueryStringParameter","update","createSearchStateInput","_handleInputChange","cancellabelDebounce","cancel","ArrayExtensions","hasElements","inputSuggestionType","_loadSuggestions","_handleSubmit","app","preventDefault","focus","searchURL","_appendQueryParams","getUrlSync","_handleCancelSearchChange","_handleCancelSearchFocused","route","qsp","_setAutoSuggestResultCount","result","autoSuggestResultScreenReaderDiv","ariaLiveRegion","suggestResultString","autoSuggestFoundMessage","emptyResultString","noAutoSuggestionMessage","innerText","setAttribute","searchKeywordSuggestClass","searchProductSuggestClass","searchCategorySuggestClass","autoSuggestAriaLabel","isInitialState","isLoadingAutoSuggest","searchInputMaxLength","searchFormClass","getTelemetryObject","telemetryPageName","friendlyName","bind","_initSuggestionTypes","_localStorage","_localStorage2","body","locationDetails","localStorage","getItem","parse","selectAddRecordId","addBarDetails","_navigator","_this$props$data$addr","_this$props$data$addr2","_this$props$data$addr3","_this$props$data$addr4","componentWillUnmount","removeEventListener","params","isEditor","shouldComponentUpdate","nextProps","nextState","_suggestions$AllSearc","_suggestions$AllSearc2","_suggestions$AllSearc3","cancelBtnAriaLabel","searchBtnAriaLabel","submitBtnAriaLabel","hideSearchLabel","searchplaceholderText","shouldShowFullCategoryPath","keywordSuggestions","Keyword","None","productSuggestions","Product","categorySuggestions","_item$RefinerRecordId","viewProps","moduleProps","classnames","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","CategorySuggest","SearchForm","FormWrapper","role","autoComplete","onSubmit","UlKeyword","UlProduct","UlCategory","form","autosuggestKeyword","autosuggestProduct","autosuggestCategory","callbacks","handleCancelSearchFocused","isLoadingNode","renderView","suggestionTypes","suggestionTypeCriterion","unique","validValues","keyword","product","scopedCategory","validSuggestions","setItem","removeItem","loadSuggestionsRequestId","getSearchSuggestionsAction","_getSuggestionType","exception","debug","_getSearchRefiners","_debounce","Random","Guid","generateGuid","_getSearchSuggestions","_updateSearchRefiners","setTimeout","suggestionTypeItem","charAt","toUpperCase","slice","join","validateCatalogId","ProductsDataActions","_renderForm","Node","_renderProductSuggestions","index","_renderCategorySuggestions","Module","languageSelector","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","prototype","RegistrationId","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","GetAddressPurposesInput","buildCacheKey","getAddressPurposesAction","getAddressPurposesAsync","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","getAddressPurposesActionDataAction","GenericInput","getGenericActionDataAction","getGenericAction","_renderKeywordSuggestions","renderCategorySuggestionsTitle","inCategoriesHeading","noResultText","MobileAutoSuggestEmptyComponent","noSearchResultImage","renderProductNotFoundResultsImage","emptyMobileSearchTextHeading","emptyMobileSearchText","searchForm","formWrapper","isMobile","clearSearchButtonText","isSearchText","clearSearch","cancelButtonNode","renderClearButton","renderKeywordSuggestionsTitle","keywordsHeading","keywordSuggest","ulKeyword","renderProductSuggestionsTitle","productSuggestionsHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","productSuggest","ulProduct","_item$id","renderTitle","searchSuggestionHeading","searchTextString","concat","searchAutoSuggestionHeading","setSearchTextString","useState","isMobilePort","setIsMobile","useEffect","propsFormInput","propsFormInputCurrent","isMobileViewport","useCallback","isMobileView","variant","VariantType","Browser","StringExtensions","isNullOrEmpty","onBlur","isSearchFormExpanded","module","exports","ReactDOM"],"sourceRoot":""}