{"version":3,"file":"static/js/0281392854d7139e616e.bundle.js","mappings":"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","sources":["webpack://nss-commerce/./src/themes/newsunshine-b2c/views/store-selector.view.tsx?7681","webpack://nss-commerce/./src/themes/newsunshine/views/store-selector.view.tsx?cd0f","webpack://nss-commerce/./lib/store-selector/module-registration.js?8817","webpack://nss-commerce/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://nss-commerce/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://nss-commerce/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://nss-commerce/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://nss-commerce/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://nss-commerce/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://nss-commerce/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://nss-commerce/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://nss-commerce/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://nss-commerce/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://nss-commerce/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://nss-commerce/./src/modules/store-selector/store-selector.tsx?e416","webpack://nss-commerce/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://nss-commerce/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","webpack://nss-commerce/external var \"React\"?0d3b","webpack://nss-commerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport {\r\n    ContactInformationType,\r\n    DeliveryOption,\r\n    IDictionary,\r\n    OrgUnitContact,\r\n    OrgUnitLocation,\r\n    StoreHours\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n    buildStoreHours,\r\n    IHoursDisplayInfo,\r\n    ILocationHours,\r\n    IStoreSelectorFoundLocationsMessage,\r\n    IStoreSelectorLocationLineItemProps,\r\n    IStoreSelectorLocationLineItemResources,\r\n    IStoreSelectorViewProps,\r\n    secondsToTime\r\n} from '@msdyn365-commerce-modules/store-selector';\r\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\r\nimport {\r\n    getPayloadObject,\r\n    getTelemetryAttributes,\r\n    getTelemetryObject,\r\n    IPayLoad,\r\n    isMobile,\r\n    Module,\r\n    Node,\r\n    TelemetryConstant,\r\n    VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\r\n\r\n/**\r\n * PickUpMethodComponent View Props Interface.\r\n */\r\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\r\n    pickUpStatesProps: IStoreSelectorViewProps;\r\n}\r\n\r\nexport interface IPickUpButtonComponent {\r\n    attributes: IDictionary<string> | undefined;\r\n    onPickupInStoreClickHandler?(): void;\r\n}\r\n\r\n/**\r\n * Found Locations Message component in Store Selector.\r\n * @param props - The component props.\r\n * @returns The JSX Element.\r\n */\r\nconst StoreSelectorFoundLocationsMessageComponent: React.FC<IStoreSelectorFoundLocationsMessage> = props => {\r\n    const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\r\n    if (locations) {\r\n        const storeCountMessage =\r\n            preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\r\n\r\n        return (\r\n            <RichTextComponent\r\n                className='ms-store-select__found-locations__text'\r\n                text={\r\n                    isSeeAllStore\r\n                        ? resources.storeAllCountMessage.replace(\r\n                              '{count}',\r\n                              `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\r\n                          )\r\n                        : storeCountMessage\r\n                              .replace(\r\n                                  '{count}',\r\n                                  `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\r\n                              )\r\n                              .replace(\r\n                                  '{radius}',\r\n                                  `<span class='ms-store-select__found-locations__radius'>${searchRadius.toString()}</span>`\r\n                              )\r\n                }\r\n            />\r\n        );\r\n    }\r\n\r\n    return null;\r\n};\r\n\r\n/**\r\n * Build distance string.\r\n * @param distance - The distance.\r\n * @param preferredDistanceUnit - The preferred distance unit.\r\n * @param resources - The module resources.\r\n * @param isLocationDisabled - True if location is disabled.\r\n * @returns The distance string.\r\n */\r\nconst buildDistanceString = (\r\n    distance: number | undefined,\r\n    preferredDistanceUnit: string,\r\n    resources: IStoreSelectorResources & IStoreSelectorResources,\r\n    isLocationDisabled?: boolean\r\n): string | undefined => {\r\n    const closeDistance: number = 1;\r\n    if (distance === undefined || isLocationDisabled) {\r\n        return undefined;\r\n    } else if (distance < closeDistance) {\r\n        const closeDistanceString: string = resources.closeDistanceString;\r\n        return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\r\n    }\r\n    const distanceAsString: string = resources.distanceString;\r\n    return distanceAsString\r\n        .replace('{preferredDistanceUnit}', preferredDistanceUnit)\r\n        .replace('{distance}', Math.floor(distance).toString());\r\n};\r\n\r\n/**\r\n * Extract phone number.\r\n * @param contacts - Contacts array.\r\n * @returns Phone number.\r\n */\r\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n    if (!contacts) {\r\n        return undefined;\r\n    }\r\n\r\n    const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\r\n\r\n    if (ArrayExtensions.hasElements(allPhoneContacts)) {\r\n        const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n        if (primaryPhoneContact) {\r\n            return primaryPhoneContact.Locator;\r\n        }\r\n\r\n        return allPhoneContacts[0].Locator;\r\n    }\r\n\r\n    return undefined;\r\n};\r\n\r\n/**\r\n * Render Store Hours Day.\r\n * @param displayTime - Store Hours Information.\r\n * @param storeHoursDayPeriodString - The string for store hours day period.\r\n * @param storeHoursDayString - The string for store hours day period.\r\n * @returns JSX element with store hours day.\r\n */\r\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\r\n    return (\r\n        <RichTextComponent\r\n            className='ms-store-select__store-hours-day'\r\n            text={\r\n                displayTime.endDayShort\r\n                    ? storeHoursDayPeriodString\r\n                          .replace('{startDay}', `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`)\r\n                          .replace(\r\n                              '{endDay}',\r\n                              `<abbr title=${displayTime.endDayFull ? displayTime.endDayFull : ''}>${displayTime.endDayShort}</abbr>`\r\n                          )\r\n                    : storeHoursDayString.replace(\r\n                          '{startDay}',\r\n                          `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`\r\n                      )\r\n            }\r\n        />\r\n    );\r\n};\r\n\r\n/**\r\n * Render Store Hours.\r\n * @param storeHours - Store hours.\r\n * @param storeHoursList - Store hours list.\r\n * @param locationOpen - Location open.\r\n * @param resources - The module resources.\r\n * @returns JSX element with store hours.\r\n */\r\nconst renderStoreHours = (\r\n    storeHours: StoreHours | undefined,\r\n    storeHoursList: IHoursDisplayInfo[] | undefined,\r\n    locationOpen: ILocationHours | undefined,\r\n    resources: IStoreSelectorResources & IStoreSelectorResources\r\n): JSX.Element | null => {\r\n    // First, use the store hours. This will allow listing day by day hours\r\n    if (storeHours?.RegularStoreHours) {\r\n        return (\r\n            <div className='ms-store-select__store-hours-details-group'>\r\n                {storeHoursList?.map(displayTime => (\r\n                    <div className='ms-store-select__store-hours-details' key={JSON.stringify(displayTime)}>\r\n                        {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\r\n                        <div className='ms-store-select__store-hours-time'>{displayTime.timeRange}</div>\r\n                    </div>\r\n                ))}\r\n            </div>\r\n        );\r\n    }\r\n\r\n    // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n    const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\r\n    const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\r\n    return (\r\n        <div className='ms-store-select__store-hours-details'>\r\n            {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * Match delivery options.\r\n * @param productDeliveryOptions - The list of product delivery options.\r\n * @param storePickUpOptionList - The list of store pick up options.\r\n * @returns Matched delivery option.\r\n */\r\nconst matchDeliveryOptions = (\r\n    productDeliveryOptions: DeliveryOption[] | undefined,\r\n    storePickUpOptionList: DeliveryOption[] | undefined\r\n): DeliveryOption[] => {\r\n    if (!productDeliveryOptions) {\r\n        return [] as DeliveryOption[];\r\n    }\r\n    return productDeliveryOptions\r\n        .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\r\n        .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\r\n};\r\n\r\n/**\r\n * PickUpMethod Resources Interface.\r\n */\r\nexport interface IPickUpButtonResources {\r\n    pickupInStoreAriaLabel: string;\r\n    pickupInStoreButtonText: string;\r\n    pickupDeliveryOptionErrorMessage: string;\r\n}\r\n\r\n/**\r\n * PickUpMethod Resources Interface.\r\n */\r\nexport interface IPickUpMethodResources {\r\n    selectStoreText: string;\r\n    pickUpMethodLabel: string;\r\n    pickUpOptionPlaceholder: string;\r\n    pickupOptionDropdownError: string;\r\n    pickupButtonAriaLabel: string;\r\n}\r\n\r\n/**\r\n * PickUp method dropdown component.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\r\n    const {\r\n        handlers,\r\n        location,\r\n        pickUpStatesProps,\r\n        selectStoreText,\r\n        pickUpMethodLabel,\r\n        pickUpOptionPlaceholder,\r\n        pickupOptionDropdownError,\r\n        pickupButtonAriaLabel,\r\n        productPickUpOptionList,\r\n        storePickUpOptionList\r\n    } = props;\r\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n    const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\r\n    const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\r\n    const [isDropdownOpen, toggleDropdown] = React.useState(false);\r\n    const [isError, setError] = React.useState(false);\r\n\r\n    /**\r\n     * Method to handle the store pickup option change.\r\n     * @param event - Change Event.\r\n     */\r\n    const onChangeHandler = React.useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\r\n        event.preventDefault();\r\n        selectStorePickUpOption(event.currentTarget.value);\r\n        setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\r\n        toggleDropdown(false);\r\n        setError(false);\r\n    }, []);\r\n\r\n    /**\r\n     * Method to render store location line pick up button.\r\n     * @param filteredDeliveryMode - Filtered Delivery Mode.\r\n     * @returns JSX Element.\r\n     */\r\n    const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\r\n        return filteredDeliveryMode !== undefined ? (\r\n            <div className='ms-store-select__location-line-pickup-list-container'>\r\n                <button\r\n                    role='menuitem'\r\n                    aria-label={filteredDeliveryMode.Description}\r\n                    value={filteredDeliveryMode.Code}\r\n                    data-description={filteredDeliveryMode.Description}\r\n                    className='ms-store-select__location-line-pickup-list-toggle preselected'\r\n                >\r\n                    {filteredDeliveryMode.Description}\r\n                </button>\r\n            </div>\r\n        ) : null;\r\n    };\r\n\r\n    /**\r\n     * Method to handle the store pickup option submit.\r\n     */\r\n    const onClickHandler = React.useCallback(() => {\r\n        if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\r\n            handlers.onSelected(location, selectedStorePickUpOption);\r\n        } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\r\n            handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\r\n        } else {\r\n            toggleDropdown(false);\r\n            setError(true);\r\n        }\r\n    }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\r\n\r\n    const handleDropdownToggle = React.useCallback(() => {\r\n        toggleDropdown(!isDropdownOpen);\r\n        setError(false);\r\n    }, [isDropdownOpen]);\r\n\r\n    const filterDeliveryOption = deliveryOptionList.find(\r\n        (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\r\n    );\r\n\r\n    const pickupInStoreButtonText: string = selectStoreText;\r\n    const filteredDeliveryMode: DeliveryOption | undefined =\r\n        pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\r\n\r\n    return (\r\n        <div\r\n            className='ms-store-select__location-line-pickup'\r\n            data-selected={\r\n                (pickUpStatesProps.state.filteredPickupMode !== undefined && filteredDeliveryMode !== undefined) ||\r\n                selectedStorePickUpOption !== ''\r\n            }\r\n            data-error={isError}\r\n        >\r\n            <div className='ms-store-select__location-line-pickup-label'>{pickUpMethodLabel}</div>\r\n            {pickUpStatesProps.state.filteredPickupMode === undefined ? (\r\n                <div className='ms-store-select__location-line-pickup-list-container'>\r\n                    <button\r\n                        className='ms-store-select__location-line-pickup-list-toggle'\r\n                        onClick={handleDropdownToggle}\r\n                        aria-expanded={isDropdownOpen}\r\n                    >\r\n                        {currentStorePickUpOption}\r\n                    </button>\r\n                    <ul className={classnames('ms-store-select__location-line-pickup-list', isDropdownOpen ? 'show' : '')}>\r\n                        {deliveryOptionList.map((delivery: DeliveryOption) => (\r\n                            <li\r\n                                role='presentation'\r\n                                className='ms-store-select__location-line-pickup-list-item'\r\n                                key={delivery.Code}\r\n                                value={delivery.Code}\r\n                            >\r\n                                <button\r\n                                    role='menuitem'\r\n                                    aria-label={delivery.Description}\r\n                                    value={delivery.Code}\r\n                                    data-description={delivery.Description}\r\n                                    onClick={onChangeHandler}\r\n                                    className='ms-store-select__location-line-pickup-list-item-button'\r\n                                >\r\n                                    {delivery.Description}\r\n                                </button>\r\n                            </li>\r\n                        ))}\r\n                    </ul>\r\n                    <div className='ms-store-select__location-line-pickup-list-error'>{pickupOptionDropdownError}</div>\r\n                </div>\r\n            ) : (\r\n                renderLocationLinePickupButton(filteredDeliveryMode)\r\n            )}\r\n            <button className='ms-store-select__location-line-pickup-menu' aria-label={pickupButtonAriaLabel} onClick={onClickHandler}>\r\n                {pickupInStoreButtonText}\r\n            </button>\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * PickUp button component.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\r\n    const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\r\n    const [isError, setError] = React.useState(false);\r\n    const onPickupButtonClickHandler = () => () => {\r\n        setError(true);\r\n    };\r\n\r\n    return (\r\n        <>\r\n            <button\r\n                className='ms-store-select__location-line-select-store'\r\n                aria-label={pickupInStoreAriaLabel}\r\n                onClick={onPickupButtonClickHandler()}\r\n                {...attributes}\r\n            >\r\n                {pickupInStoreButtonText}\r\n            </button>\r\n            <div className='ms-store-select__location-line-pickup-button-error' data-pickup-error={isError}>\r\n                {pickupDeliveryOptionErrorMessage}\r\n            </div>\r\n        </>\r\n    );\r\n};\r\n\r\n/**\r\n * Method to render store location line item.\r\n * @param locationLineItem - The Location Line item view props.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderStoreLocationLineItem = (\r\n    locationLineItem: IStoreSelectorLocationLineItemProps,\r\n    props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>\r\n) => {\r\n    const {\r\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n        hideStockStatus,\r\n        index,\r\n        isInStock,\r\n        preferredStoreLocationId,\r\n        isPreferredStoreEnabled,\r\n        location,\r\n        resources,\r\n        storeHours,\r\n        storeHoursList,\r\n        stockStatusLabel,\r\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n        storeLocatorView,\r\n        telemetryContent\r\n    } = locationLineItem;\r\n    const storeName = location.OrgUnitName;\r\n    const distanceAsString: string | undefined = buildDistanceString(\r\n        location.Distance,\r\n        locationLineItem.preferredDistanceUnit,\r\n        props.resources,\r\n        locationLineItem.isLocationDisabled\r\n    );\r\n    const storeAddress: string | undefined = location.Address;\r\n    const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n\r\n    const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n    const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\r\n    const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\r\n\r\n    const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n\r\n    /**\r\n     * Method to handle the change for preferred store.\r\n     * @returns Void.\r\n     */\r\n    const onSetPreferredStoreClickHandler = () => () => {\r\n        locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\r\n    };\r\n\r\n    const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\r\n    payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n    const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n    payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n    const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n    return (\r\n        <div className='ms-store-select__location-line-item'>\r\n            <div className='ms-store-select__location-line-item-header'>\r\n                {storeLocatorView && <span className='ms-store-select__location-line-item-store-index'>{index}</span>}\r\n                <span className='ms-store-select__location-line-item-store-name'>{storeName}</span>\r\n                {distanceAsString ? <span className='ms-store-select__location-line-item-store-distance'>{distanceAsString}</span> : false}\r\n            </div>\r\n            <div className='ms-store-select__location-line-item-content'>\r\n                <div className='ms-store-select__location-line-item-contact-info'>\r\n                    <p className='ms-store-select__location-line-header'>{locationLineItem.resources.contactInfoHeader}</p>\r\n                    {storeAddress && (\r\n                        <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\r\n                            <span\r\n                                className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\r\n                                aria-hidden='true'\r\n                            />\r\n                            <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\r\n                                {storeAddress}\r\n                            </span>\r\n                        </div>\r\n                    )}\r\n                    {phoneNumber && (\r\n                        <div className='ms-store-select__location-line-shop-phone-section'>\r\n                            <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\r\n                            <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\r\n                        </div>\r\n                    )}\r\n                </div>\r\n                <div className='ms-store-select__location-line-item-store-hours'>\r\n                    <p className='ms-store-select__location-line-header'>{locationLineItem.resources.storeHoursHeader}</p>\r\n                    {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\r\n                </div>\r\n                {!storeLocatorView && (\r\n                    <div className='ms-store-select__location-line-item-store-availability'>\r\n                        <p className='ms-store-select__location-line-header'>{resources.availabilityInfoHeader}</p>\r\n                        {stockText && <p className='ms-store-select__location-line-stock-status'>{stockText}</p>}\r\n                    </div>\r\n                )}\r\n                {isPreferredStoreEnabled &&\r\n                    (isPreferredStore ? (\r\n                        <button\r\n                            role='checkbox'\r\n                            className='ms-store-select__location-line-item-preferred-store'\r\n                            aria-live='polite'\r\n                            aria-checked='true'\r\n                            aria-label={resources.preferredStoreAriaLabel}\r\n                            onClick={locationLineItem.handlers.onRemovePreferredStore}\r\n                            {...removePreferredStoreAttribute}\r\n                        >\r\n                            {resources.preferredStoreText}\r\n                        </button>\r\n                    ) : (\r\n                        <button\r\n                            role='checkbox'\r\n                            className='ms-store-select__location-line-item-set-as-preferred-store'\r\n                            aria-live='polite'\r\n                            aria-checked='false'\r\n                            aria-label={resources.setAsPreferredStoreTextAriaLabel}\r\n                            {...preferredStoreAttribute}\r\n                            onClick={onSetPreferredStoreClickHandler()}\r\n                        >\r\n                            {resources.setAsPreferredStoreText}\r\n                        </button>\r\n                    ))}\r\n            </div>\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * Render Store Location.\r\n * @param location - The location props.\r\n * @param index - The location index.\r\n * @param props - The view props.\r\n * @param selectedLocationReference - The ref.\r\n * @returns The JSX Element.\r\n */\r\nconst renderStoreLocation = (\r\n    location: IStoreSelectorLocationLineItemProps,\r\n    index: number,\r\n    props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>,\r\n    selectedLocationReference: React.RefObject<HTMLDivElement>\r\n): JSX.Element | undefined => {\r\n    const {\r\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n        hideStockStatus,\r\n        storeLocatorView,\r\n        isCurrentLocation,\r\n        isInStock,\r\n        productPickUpOptionList,\r\n        resources,\r\n        storePickUpOptionList,\r\n        telemetryContent\r\n    } = location;\r\n\r\n    const orgUnitLocation = location.location;\r\n    const selectedStoreLocationId = location.selectedStoreLocationId;\r\n    const defaultAriaSetsize = 0;\r\n    const canSelectLocation = hideStockStatus ?? isInStock;\r\n    const storeName = location.location.OrgUnitName;\r\n    const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\r\n    const pickupInStoreButtonText: string = resources.selectLocation;\r\n    const pickUpOptionDropdownPlaceholderText: string = props.resources.pickupOptionDropdownPlaceholderText;\r\n\r\n    const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n    const selectStoreText = props.resources.selectStoreText;\r\n    const pickUpMethodLabel = props.resources.pickUpMethodLabel;\r\n\r\n    /**\r\n     * Method to handle the pick up in store.\r\n     * @returns Void.\r\n     */\r\n    const onPickupInStoreClickHandler = () => () => {\r\n        location.handlers.onSelected(location.location);\r\n    };\r\n\r\n    /**\r\n     * Render Store Locations.\r\n     * @param unitLocation - The org unit location.\r\n     * @returns Handler for onClick.\r\n     */\r\n    const onClickHandler = (unitLocation: OrgUnitLocation | undefined) => () => {\r\n        location.onClick(unitLocation?.OrgUnitNumber);\r\n    };\r\n\r\n    const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\r\n        <PickUpButtonComponent\r\n            attributes={attributes}\r\n            pickupInStoreAriaLabel={pickupInStoreAriaLabel}\r\n            pickupInStoreButtonText={pickupInStoreButtonText}\r\n            pickupDeliveryOptionErrorMessage={props.resources.pickupDeliveryOptionErrorMessage}\r\n            onPickupInStoreClickHandler={onPickupInStoreClickHandler}\r\n        />\r\n    ) : (\r\n        <PickUpMethodDropdownComponent\r\n            {...location}\r\n            pickUpStatesProps={props}\r\n            selectStoreText={selectStoreText}\r\n            pickUpMethodLabel={pickUpMethodLabel}\r\n            pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\r\n            pickupOptionDropdownError={props.resources.pickupOptionDropdownErrorText}\r\n            pickupButtonAriaLabel={pickupInStoreAriaLabel}\r\n        />\r\n    );\r\n    const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\r\n\r\n    return (\r\n        <div\r\n            className={classnames('ms-store-select__location-wrapper', {\r\n                selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber && !props.isMobileView\r\n            })}\r\n        >\r\n            <div\r\n                className={classnames('ms-store-select__location', { selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber })}\r\n                key={index}\r\n                role='listitem'\r\n                aria-setsize={ArrayExtensions.hasElements(props.locationListProps) ? props.locationListProps.length : defaultAriaSetsize}\r\n                aria-posinset={Number.parseInt(location.index, 10)}\r\n                onClick={onClickHandler(orgUnitLocation)}\r\n                onKeyDown={onClickHandler(orgUnitLocation)}\r\n                ref={selectedStoreLocationId === orgUnitLocation.OrgUnitNumber ? selectedLocationReference : undefined}\r\n            >\r\n                {renderStoreLocationLineItem(location, props)}\r\n            </div>\r\n            {!storeLocatorView &&\r\n                (isCurrentLocation ? (\r\n                    <p className='ms-store-select__location-line-current-location'>{resources.currentLocation}</p>\r\n                ) : (\r\n                    pickUpMethodSelection\r\n                ))}\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * Render Store Locations.\r\n * @param props - The view props.\r\n * @param selectedLocationReference - The ref.\r\n * @returns The JSX Element.\r\n */\r\nconst renderStoreLocations = (\r\n    props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>,\r\n    selectedLocationReference: React.RefObject<HTMLDivElement>\r\n) => {\r\n    return (\r\n        <div\r\n            className={classnames('ms-store-select__locations', {\r\n                show: props.data.storeSelectorStateManager.result?.listMapViewState.displayList\r\n            })}\r\n            role='list'\r\n        >\r\n            {props.locationListProps?.map((store, index) => {\r\n                return renderStoreLocation(store, index, props, selectedLocationReference);\r\n            })}\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * Method to map resources with Location Item.\r\n * @param resources - List of strings for module.\r\n * @returns Resources for StoreSelector location line.\r\n */\r\nconst mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\r\n    return {\r\n        contactInfoHeader: resources.contactText,\r\n        storeHoursHeader: resources.timeText,\r\n        availabilityInfoHeader: resources.availabilityText,\r\n\r\n        closedText: resources.storeHoursClosedText,\r\n        outOfStock: resources.outOfStockText,\r\n        inStock: resources.inStockText,\r\n\r\n        currentLocation: resources.selectedStoreLocationText,\r\n        selectLocation: resources.selectStoreText,\r\n        selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n        setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n        setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n        preferredStoreText: resources.preferredStoreText,\r\n        preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n\r\n        days: {\r\n            monday: resources.storeHoursMondayText,\r\n            tuesday: resources.storeHoursTuesdayText,\r\n            wednesday: resources.storeHoursWednesdayText,\r\n            thursday: resources.storeHoursThursdayText,\r\n            friday: resources.storeHoursFridayText,\r\n            saturday: resources.storeHoursSaturdayText,\r\n            sunday: resources.storeHoursSundayText,\r\n            mondayFull: resources.storeHoursMondayFullText,\r\n            tuesdayFull: resources.storeHoursTuesdayFullText,\r\n            wednesdayFull: resources.storeHoursWednesdayFullText,\r\n            thursdayFull: resources.storeHoursThursdayFullText,\r\n            fridayFull: resources.storeHoursFridayFullText,\r\n            saturdayFull: resources.storeHoursSaturdayFullText,\r\n            sundayFull: resources.storeHoursSundayFullText\r\n        }\r\n    };\r\n};\r\n\r\n/**\r\n * Render the selected store.\r\n * @param selectedLocationProps -- Selected store view props.\r\n * @param storeSelectorViewProps -- Store selector view props.\r\n * @returns -- HTML.\r\n */\r\nexport const renderSelectedStore = (\r\n    selectedLocationProps: ISelectedStoreViewProps,\r\n    storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>\r\n): JSX.Element => {\r\n    const {\r\n        storeDetailsMain,\r\n        storeHeader,\r\n        storeName,\r\n        storeDetailsCloseButton,\r\n        storeDistance,\r\n        storeDetailsAvailabilityContainer,\r\n        productAvailability,\r\n        stockStatus,\r\n        isPreferredStore,\r\n        preferredStoreButton,\r\n        removePreferredStoreButton,\r\n        selectedStore\r\n    } = selectedLocationProps;\r\n\r\n    const storeAddress: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Address;\r\n    const phoneNumber: string | undefined = extractPhoneNumber(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Contacts);\r\n    const storeHoursList = selectedStore?.StoreHours?.RegularStoreHours\r\n        ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours, mapResources(storeSelectorViewProps.resources))\r\n        : [];\r\n    const storeOpenFrom: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenFrom);\r\n    const storeOpenTo: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenTo);\r\n    const locationOpen = { openFrom: storeOpenFrom, openTo: storeOpenTo };\r\n    const storeNameValue = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\r\n    const pickupInStoreAriaLabel: string = selectedLocationProps.resources.selectLocationAriaLabelFormat.replace(\r\n        '{StoreName}',\r\n        storeNameValue ?? ''\r\n    );\r\n    const telemetryContent = getTelemetryObject(\r\n        storeSelectorViewProps.context.request.telemetryPageName!,\r\n        storeSelectorViewProps.friendlyName,\r\n        storeSelectorViewProps.telemetry\r\n    );\r\n    const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.PickupInStore);\r\n    const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n    const pickupInStoreButtonText: string = selectedLocationProps.resources.selectLocation;\r\n    const selectStoreText = storeSelectorViewProps.resources.selectStoreText;\r\n    const pickUpMethodLabel = storeSelectorViewProps.resources.pickUpMethodLabel;\r\n    const pickUpOptionDropdownPlaceholderText: string = storeSelectorViewProps.resources.pickupOptionDropdownPlaceholderText;\r\n    const orgUnitNumber = selectedStore?.OrgUnitAvailability?.OrgUnitLocation!.OrgUnitNumber;\r\n    const productPickUpOptionList = storeSelectorViewProps.data.storeSelectorStateManager.result?.context?.deliveryOptions?.DeliveryOptions;\r\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, selectedLocationProps.deliveryOptions);\r\n    const selectedLocation = storeSelectorViewProps.locationListProps?.find(location => location.location.OrgUnitNumber === orgUnitNumber);\r\n\r\n    /**\r\n     * Method to handle the pick up in store.\r\n     * @returns Void.\r\n     */\r\n    const onPickupInStoreClickHandler = () => () => {\r\n        selectedLocationProps.handlers.onSelected(selectedStore!.OrgUnitAvailability!.OrgUnitLocation!);\r\n    };\r\n    const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\r\n        <PickUpButtonComponent\r\n            attributes={attributes}\r\n            pickupInStoreAriaLabel={pickupInStoreAriaLabel}\r\n            pickupInStoreButtonText={pickupInStoreButtonText}\r\n            pickupDeliveryOptionErrorMessage={storeSelectorViewProps.resources.pickupDeliveryOptionErrorMessage}\r\n            onPickupInStoreClickHandler={onPickupInStoreClickHandler}\r\n        />\r\n    ) : (\r\n        selectedLocation && (\r\n            <PickUpMethodDropdownComponent\r\n                {...selectedLocation}\r\n                pickUpStatesProps={storeSelectorViewProps}\r\n                selectStoreText={selectStoreText}\r\n                pickUpMethodLabel={pickUpMethodLabel}\r\n                pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\r\n                pickupOptionDropdownError={storeSelectorViewProps.resources.pickupOptionDropdownErrorText}\r\n                pickupButtonAriaLabel={pickupInStoreAriaLabel}\r\n            />\r\n        )\r\n    );\r\n\r\n    return (\r\n        <Node {...storeDetailsMain}>\r\n            <Node {...storeHeader}>\r\n                {storeDetailsCloseButton}\r\n                {storeName}\r\n                {storeDistance}\r\n            </Node>\r\n            <Node {...storeDetailsAvailabilityContainer}>\r\n                <div className='ms-store-select__location-line-item-contact-info'>\r\n                    <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.contactText}</p>\r\n                    {storeAddress && (\r\n                        <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\r\n                            <span\r\n                                className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\r\n                                aria-hidden='true'\r\n                            />\r\n                            <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\r\n                                {storeAddress}\r\n                            </span>\r\n                        </div>\r\n                    )}\r\n                    {phoneNumber && (\r\n                        <div className='ms-store-select__location-line-shop-phone-section'>\r\n                            <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\r\n                            <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\r\n                        </div>\r\n                    )}\r\n                </div>\r\n                <div className='ms-store-select__location-line-item-store-hours'>\r\n                    <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.timeText}</p>\r\n                    {renderStoreHours(selectedStore?.StoreHours, storeHoursList, locationOpen, storeSelectorViewProps.resources)}\r\n                </div>\r\n                {productAvailability && (\r\n                    <div className='ms-store-select__location-line-item-store-availability'>\r\n                        <p className='ms-store-select__location-line-header'>{productAvailability}</p>\r\n                        {stockStatus && <p className='ms-store-select__location-line-stock-status'>{stockStatus}</p>}\r\n                    </div>\r\n                )}\r\n            </Node>\r\n            {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\r\n            {canSelectPickUpMethod}\r\n        </Node>\r\n    );\r\n};\r\n\r\n/**\r\n * Store Selector View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst StoreSelectorViewComponent: React.FC<IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>> = props => {\r\n    // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\r\n    const {\r\n        BodyContainerProps,\r\n        storeResultContainerProps,\r\n        FooterContainerProps,\r\n        HeaderContainerProps,\r\n        HeaderProps,\r\n        ModuleProps,\r\n        locationsMessage,\r\n        search,\r\n        state,\r\n        spinner,\r\n        maps,\r\n        locationsList,\r\n        noLocationsMessage,\r\n        terms,\r\n        storeDetailsModal,\r\n        selectedLocation,\r\n        bodyWrapperProps,\r\n        data,\r\n        context\r\n    } = props;\r\n    const selectedLocationReference = React.useRef(null);\r\n    const [isDesktopPort, setIsDesktopPort] = React.useState<boolean>(false);\r\n\r\n    const isDesktopViewport = React.useCallback(() => {\r\n        const portView = isMobile({ variant: VariantType.Browser, context: context.request });\r\n        const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\r\n        setIsDesktopPort(isDesktopPorts);\r\n    }, [context]);\r\n\r\n    React.useEffect(() => {\r\n        if (props.locationsList) {\r\n            /**\r\n             * Method to handle scrolling.\r\n             */\r\n            const scrollIntoView = () => {\r\n                const selectedLocationDiv = (selectedLocationReference as React.RefObject<HTMLDivElement>).current;\r\n                if (selectedLocationDiv !== null) {\r\n                    const offset = selectedLocationDiv.getBoundingClientRect();\r\n                    const parent = selectedLocationDiv.parentElement?.parentElement;\r\n                    if (parent && offset) {\r\n                        const totalHeight = parent.scrollTop + offset.top;\r\n                        parent.scrollTop = totalHeight - parent.clientHeight;\r\n                    }\r\n                }\r\n            };\r\n            scrollIntoView();\r\n        }\r\n    }, [props.locationsList]);\r\n\r\n    React.useEffect(() => {\r\n        if (MsDyn365.isBrowser) {\r\n            window.addEventListener('resize', isDesktopViewport);\r\n        }\r\n        isDesktopViewport();\r\n    }, [isDesktopViewport]);\r\n    const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\r\n\r\n    const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\r\n\r\n    if (!isDesktopView || !isDesktopPort) {\r\n        return (\r\n            <Module {...ModuleProps}>\r\n                <Node {...HeaderContainerProps}>{HeaderProps}</Node>\r\n                <Node {...BodyContainerProps}>\r\n                    <Node {...storeResultContainerProps!}>\r\n                        {locationsMessage && (\r\n                            <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\r\n                        )}\r\n                        {search}\r\n                        <Node {...bodyWrapperProps!}>\r\n                            <Node {...storeResultContainerProps!}>\r\n                                {state.isSearchInProgress ? (\r\n                                    spinner\r\n                                ) : (\r\n                                    <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\r\n                                )}\r\n                                <Node\r\n                                    className={`ms-store-select__map_view ${\r\n                                        data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\r\n                                    }`}\r\n                                >\r\n                                    {maps}\r\n                                </Node>\r\n                                <Node {...storeDetailsModal!}>{selectedLocation && renderSelectedStore(selectedLocation, props)}</Node>\r\n                            </Node>\r\n                        </Node>\r\n                    </Node>\r\n                </Node>\r\n                <Node {...FooterContainerProps}>{terms}</Node>\r\n            </Module>\r\n        );\r\n    }\r\n    return (\r\n        <Module {...ModuleProps}>\r\n            <Node {...HeaderContainerProps}>{HeaderProps}</Node>\r\n            <Node {...BodyContainerProps}>\r\n                <Node\r\n                    className={`ms-store-select__store_container ${\r\n                        data.storeSelectorStateManager.result?.listMapViewState.displayList ? 'show' : ''\r\n                    }`}\r\n                >\r\n                    {locationsMessage && (\r\n                        <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\r\n                    )}\r\n                    {search}\r\n                    {state.isSearchInProgress ? (\r\n                        spinner\r\n                    ) : (\r\n                        <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\r\n                    )}\r\n                </Node>\r\n                <Node\r\n                    className={`ms-store-select__map_container ${\r\n                        data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\r\n                    }`}\r\n                >\r\n                    {maps}\r\n                </Node>\r\n            </Node>\r\n            <Node {...FooterContainerProps}>{terms}</Node>\r\n        </Module>\r\n    );\r\n};\r\n\r\nexport default StoreSelectorViewComponent;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport {\r\n    ContactInformationType,\r\n    DeliveryOption,\r\n    IDictionary,\r\n    OrgUnitContact,\r\n    OrgUnitLocation,\r\n    StoreHours\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n    buildStoreHours,\r\n    IHoursDisplayInfo,\r\n    ILocationHours,\r\n    IStoreSelectorFoundLocationsMessage,\r\n    IStoreSelectorLocationLineItemProps,\r\n    IStoreSelectorLocationLineItemResources,\r\n    IStoreSelectorViewProps,\r\n    secondsToTime\r\n} from '@msdyn365-commerce-modules/store-selector';\r\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\r\nimport {\r\n    getPayloadObject,\r\n    getTelemetryAttributes,\r\n    getTelemetryObject,\r\n    IPayLoad,\r\n    isMobile,\r\n    Module,\r\n    Node,\r\n    TelemetryConstant,\r\n    VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\r\n\r\n/**\r\n * PickUpMethodComponent View Props Interface.\r\n */\r\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\r\n    pickUpStatesProps: IStoreSelectorViewProps;\r\n}\r\n\r\nexport interface IPickUpButtonComponent {\r\n    attributes: IDictionary<string> | undefined;\r\n    onPickupInStoreClickHandler?(): void;\r\n}\r\n\r\n/**\r\n * Found Locations Message component in Store Selector.\r\n * @param props - The component props.\r\n * @returns The JSX Element.\r\n */\r\nconst StoreSelectorFoundLocationsMessageComponent: React.FC<IStoreSelectorFoundLocationsMessage> = props => {\r\n    const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\r\n    if (locations) {\r\n        const storeCountMessage =\r\n            preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\r\n\r\n        return (\r\n            <RichTextComponent\r\n                className='ms-store-select__found-locations__text'\r\n                text={\r\n                    isSeeAllStore\r\n                        ? resources.storeAllCountMessage.replace(\r\n                              '{count}',\r\n                              `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\r\n                          )\r\n                        : storeCountMessage\r\n                              .replace(\r\n                                  '{count}',\r\n                                  `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\r\n                              )\r\n                              .replace(\r\n                                  '{radius}',\r\n                                  `<span class='ms-store-select__found-locations__radius'>${searchRadius.toString()}</span>`\r\n                              )\r\n                }\r\n            />\r\n        );\r\n    }\r\n\r\n    return null;\r\n};\r\n\r\n/**\r\n * Build distance string.\r\n * @param distance - The distance.\r\n * @param preferredDistanceUnit - The preferred distance unit.\r\n * @param resources - The module resources.\r\n * @param isLocationDisabled - True if location is disabled.\r\n * @returns The distance string.\r\n */\r\nconst buildDistanceString = (\r\n    distance: number | undefined,\r\n    preferredDistanceUnit: string,\r\n    resources: IStoreSelectorResources & IStoreSelectorResources,\r\n    isLocationDisabled?: boolean\r\n): string | undefined => {\r\n    const closeDistance: number = 1;\r\n    if (distance === undefined || isLocationDisabled) {\r\n        return undefined;\r\n    } else if (distance < closeDistance) {\r\n        const closeDistanceString: string = resources.closeDistanceString;\r\n        return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\r\n    }\r\n    const distanceAsString: string = resources.distanceString;\r\n    return distanceAsString\r\n        .replace('{preferredDistanceUnit}', preferredDistanceUnit)\r\n        .replace('{distance}', Math.floor(distance).toString());\r\n};\r\n\r\n/**\r\n * Extract phone number.\r\n * @param contacts - Contacts array.\r\n * @returns Phone number.\r\n */\r\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n    if (!contacts) {\r\n        return undefined;\r\n    }\r\n\r\n    const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\r\n\r\n    if (ArrayExtensions.hasElements(allPhoneContacts)) {\r\n        const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n        if (primaryPhoneContact) {\r\n            return primaryPhoneContact.Locator;\r\n        }\r\n\r\n        return allPhoneContacts[0].Locator;\r\n    }\r\n\r\n    return undefined;\r\n};\r\n\r\n/**\r\n * Render Store Hours Day.\r\n * @param displayTime - Store Hours Information.\r\n * @param storeHoursDayPeriodString - The string for store hours day period.\r\n * @param storeHoursDayString - The string for store hours day period.\r\n * @returns JSX element with store hours day.\r\n */\r\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\r\n    return (\r\n        <RichTextComponent\r\n            className='ms-store-select__store-hours-day'\r\n            text={\r\n                displayTime.endDayShort\r\n                    ? storeHoursDayPeriodString\r\n                          .replace('{startDay}', `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`)\r\n                          .replace(\r\n                              '{endDay}',\r\n                              `<abbr title=${displayTime.endDayFull ? displayTime.endDayFull : ''}>${displayTime.endDayShort}</abbr>`\r\n                          )\r\n                    : storeHoursDayString.replace(\r\n                          '{startDay}',\r\n                          `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`\r\n                      )\r\n            }\r\n        />\r\n    );\r\n};\r\n\r\n/**\r\n * Render Store Hours.\r\n * @param storeHours - Store hours.\r\n * @param storeHoursList - Store hours list.\r\n * @param locationOpen - Location open.\r\n * @param resources - The module resources.\r\n * @returns JSX element with store hours.\r\n */\r\nconst renderStoreHours = (\r\n    storeHours: StoreHours | undefined,\r\n    storeHoursList: IHoursDisplayInfo[] | undefined,\r\n    locationOpen: ILocationHours | undefined,\r\n    resources: IStoreSelectorResources & IStoreSelectorResources\r\n): JSX.Element | null => {\r\n    // First, use the store hours. This will allow listing day by day hours\r\n    if (storeHours?.RegularStoreHours) {\r\n        return (\r\n            <div className='ms-store-select__store-hours-details-group'>\r\n                {storeHoursList?.map(displayTime => (\r\n                    <div className='ms-store-select__store-hours-details' key={JSON.stringify(displayTime)}>\r\n                        {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\r\n                        <div className='ms-store-select__store-hours-time'>{displayTime.timeRange}</div>\r\n                    </div>\r\n                ))}\r\n            </div>\r\n        );\r\n    }\r\n\r\n    // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n    const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\r\n    const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\r\n    return (\r\n        <div className='ms-store-select__store-hours-details'>\r\n            {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * Match delivery options.\r\n * @param productDeliveryOptions - The list of product delivery options.\r\n * @param storePickUpOptionList - The list of store pick up options.\r\n * @returns Matched delivery option.\r\n */\r\nconst matchDeliveryOptions = (\r\n    productDeliveryOptions: DeliveryOption[] | undefined,\r\n    storePickUpOptionList: DeliveryOption[] | undefined\r\n): DeliveryOption[] => {\r\n    if (!productDeliveryOptions) {\r\n        return [] as DeliveryOption[];\r\n    }\r\n    return productDeliveryOptions\r\n        .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\r\n        .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\r\n};\r\n\r\n/**\r\n * PickUpMethod Resources Interface.\r\n */\r\nexport interface IPickUpButtonResources {\r\n    pickupInStoreAriaLabel: string;\r\n    pickupInStoreButtonText: string;\r\n    pickupDeliveryOptionErrorMessage: string;\r\n}\r\n\r\n/**\r\n * PickUpMethod Resources Interface.\r\n */\r\nexport interface IPickUpMethodResources {\r\n    selectStoreText: string;\r\n    pickUpMethodLabel: string;\r\n    pickUpOptionPlaceholder: string;\r\n    pickupOptionDropdownError: string;\r\n    pickupButtonAriaLabel: string;\r\n}\r\n\r\n/**\r\n * PickUp method dropdown component.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\r\n    const {\r\n        handlers,\r\n        location,\r\n        pickUpStatesProps,\r\n        selectStoreText,\r\n        pickUpMethodLabel,\r\n        pickUpOptionPlaceholder,\r\n        pickupOptionDropdownError,\r\n        pickupButtonAriaLabel,\r\n        productPickUpOptionList,\r\n        storePickUpOptionList\r\n    } = props;\r\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n    const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\r\n    const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\r\n    const [isDropdownOpen, toggleDropdown] = React.useState(false);\r\n    const [isError, setError] = React.useState(false);\r\n\r\n    /**\r\n     * Method to handle the store pickup option change.\r\n     * @param event - Change Event.\r\n     */\r\n    const onChangeHandler = React.useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\r\n        event.preventDefault();\r\n        selectStorePickUpOption(event.currentTarget.value);\r\n        setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\r\n        toggleDropdown(false);\r\n        setError(false);\r\n    }, []);\r\n\r\n    /**\r\n     * Method to render store location line pick up button.\r\n     * @param filteredDeliveryMode - Filtered Delivery Mode.\r\n     * @returns JSX Element.\r\n     */\r\n    const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\r\n        return filteredDeliveryMode !== undefined ? (\r\n            <div className='ms-store-select__location-line-pickup-list-container'>\r\n                <button\r\n                    role='menuitem'\r\n                    aria-label={filteredDeliveryMode.Description}\r\n                    value={filteredDeliveryMode.Code}\r\n                    data-description={filteredDeliveryMode.Description}\r\n                    className='ms-store-select__location-line-pickup-list-toggle preselected'\r\n                >\r\n                    {filteredDeliveryMode.Description}\r\n                </button>\r\n            </div>\r\n        ) : null;\r\n    };\r\n\r\n    /**\r\n     * Method to handle the store pickup option submit.\r\n     */\r\n    const onClickHandler = React.useCallback(() => {\r\n        if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\r\n            handlers.onSelected(location, selectedStorePickUpOption);\r\n        } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\r\n            handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\r\n        } else {\r\n            toggleDropdown(false);\r\n            setError(true);\r\n        }\r\n    }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\r\n\r\n    const handleDropdownToggle = React.useCallback(() => {\r\n        toggleDropdown(!isDropdownOpen);\r\n        setError(false);\r\n    }, [isDropdownOpen]);\r\n\r\n    const filterDeliveryOption = deliveryOptionList.find(\r\n        (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\r\n    );\r\n\r\n    const pickupInStoreButtonText: string = selectStoreText;\r\n    const filteredDeliveryMode: DeliveryOption | undefined =\r\n        pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\r\n\r\n    return (\r\n        <div\r\n            className='ms-store-select__location-line-pickup'\r\n            data-selected={\r\n                (pickUpStatesProps.state.filteredPickupMode !== undefined && filteredDeliveryMode !== undefined) ||\r\n                selectedStorePickUpOption !== ''\r\n            }\r\n            data-error={isError}\r\n        >\r\n            <div className='ms-store-select__location-line-pickup-label'>{pickUpMethodLabel}</div>\r\n            {pickUpStatesProps.state.filteredPickupMode === undefined ? (\r\n                <div className='ms-store-select__location-line-pickup-list-container'>\r\n                    <button\r\n                        className='ms-store-select__location-line-pickup-list-toggle'\r\n                        onClick={handleDropdownToggle}\r\n                        aria-expanded={isDropdownOpen}\r\n                    >\r\n                        {currentStorePickUpOption}\r\n                    </button>\r\n                    <ul className={classnames('ms-store-select__location-line-pickup-list', isDropdownOpen ? 'show' : '')}>\r\n                        {deliveryOptionList.map((delivery: DeliveryOption) => (\r\n                            <li\r\n                                role='presentation'\r\n                                className='ms-store-select__location-line-pickup-list-item'\r\n                                key={delivery.Code}\r\n                                value={delivery.Code}\r\n                            >\r\n                                <button\r\n                                    role='menuitem'\r\n                                    aria-label={delivery.Description}\r\n                                    value={delivery.Code}\r\n                                    data-description={delivery.Description}\r\n                                    onClick={onChangeHandler}\r\n                                    className='ms-store-select__location-line-pickup-list-item-button'\r\n                                >\r\n                                    {delivery.Description}\r\n                                </button>\r\n                            </li>\r\n                        ))}\r\n                    </ul>\r\n                    <div className='ms-store-select__location-line-pickup-list-error'>{pickupOptionDropdownError}</div>\r\n                </div>\r\n            ) : (\r\n                renderLocationLinePickupButton(filteredDeliveryMode)\r\n            )}\r\n            <button className='ms-store-select__location-line-pickup-menu' aria-label={pickupButtonAriaLabel} onClick={onClickHandler}>\r\n                {pickupInStoreButtonText}\r\n            </button>\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * PickUp button component.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\r\n    const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\r\n    const [isError, setError] = React.useState(false);\r\n    const onPickupButtonClickHandler = () => () => {\r\n        setError(true);\r\n    };\r\n\r\n    return (\r\n        <>\r\n            <button\r\n                className='ms-store-select__location-line-select-store'\r\n                aria-label={pickupInStoreAriaLabel}\r\n                onClick={onPickupButtonClickHandler()}\r\n                {...attributes}\r\n            >\r\n                {pickupInStoreButtonText}\r\n            </button>\r\n            <div className='ms-store-select__location-line-pickup-button-error' data-pickup-error={isError}>\r\n                {pickupDeliveryOptionErrorMessage}\r\n            </div>\r\n        </>\r\n    );\r\n};\r\n\r\n/**\r\n * Method to render store location line item.\r\n * @param locationLineItem - The Location Line item view props.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderStoreLocationLineItem = (\r\n    locationLineItem: IStoreSelectorLocationLineItemProps,\r\n    props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>\r\n) => {\r\n    const {\r\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n        hideStockStatus,\r\n        index,\r\n        isInStock,\r\n        preferredStoreLocationId,\r\n        isPreferredStoreEnabled,\r\n        location,\r\n        resources,\r\n        storeHours,\r\n        storeHoursList,\r\n        stockStatusLabel,\r\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n        storeLocatorView,\r\n        telemetryContent\r\n    } = locationLineItem;\r\n    const storeName = location.OrgUnitName;\r\n    const distanceAsString: string | undefined = buildDistanceString(\r\n        location.Distance,\r\n        locationLineItem.preferredDistanceUnit,\r\n        props.resources,\r\n        locationLineItem.isLocationDisabled\r\n    );\r\n    const storeAddress: string | undefined = location.Address;\r\n    const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n\r\n    const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n    const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\r\n    const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\r\n\r\n    const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n\r\n    /**\r\n     * Method to handle the change for preferred store.\r\n     * @returns Void.\r\n     */\r\n    const onSetPreferredStoreClickHandler = () => () => {\r\n        locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\r\n    };\r\n\r\n    const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\r\n    payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n    const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n    payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n    const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n    return (\r\n        <div className='ms-store-select__location-line-item'>\r\n            <div className='ms-store-select__location-line-item-header'>\r\n                {storeLocatorView && <span className='ms-store-select__location-line-item-store-index'>{index}</span>}\r\n                <span className='ms-store-select__location-line-item-store-name'>{storeName}</span>\r\n                {distanceAsString ? <span className='ms-store-select__location-line-item-store-distance'>{distanceAsString}</span> : false}\r\n            </div>\r\n            <div className='ms-store-select__location-line-item-content'>\r\n                <div className='ms-store-select__location-line-item-contact-info'>\r\n                    <p className='ms-store-select__location-line-header'>{locationLineItem.resources.contactInfoHeader}</p>\r\n                    {storeAddress && (\r\n                        <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\r\n                            <span\r\n                                className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\r\n                                aria-hidden='true'\r\n                            />\r\n                            <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\r\n                                {storeAddress}\r\n                            </span>\r\n                        </div>\r\n                    )}\r\n                    {phoneNumber && (\r\n                        <div className='ms-store-select__location-line-shop-phone-section'>\r\n                            <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\r\n                            <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\r\n                        </div>\r\n                    )}\r\n                </div>\r\n                <div className='ms-store-select__location-line-item-store-hours'>\r\n                    <p className='ms-store-select__location-line-header'>{locationLineItem.resources.storeHoursHeader}</p>\r\n                    {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\r\n                </div>\r\n                {!storeLocatorView && (\r\n                    <div className='ms-store-select__location-line-item-store-availability'>\r\n                        <p className='ms-store-select__location-line-header'>{resources.availabilityInfoHeader}</p>\r\n                        {stockText && <p className='ms-store-select__location-line-stock-status'>{stockText}</p>}\r\n                    </div>\r\n                )}\r\n                {isPreferredStoreEnabled &&\r\n                    (isPreferredStore ? (\r\n                        <button\r\n                            role='checkbox'\r\n                            className='ms-store-select__location-line-item-preferred-store'\r\n                            aria-live='polite'\r\n                            aria-checked='true'\r\n                            aria-label={resources.preferredStoreAriaLabel}\r\n                            onClick={locationLineItem.handlers.onRemovePreferredStore}\r\n                            {...removePreferredStoreAttribute}\r\n                        >\r\n                            {resources.preferredStoreText}\r\n                        </button>\r\n                    ) : (\r\n                        <button\r\n                            role='checkbox'\r\n                            className='ms-store-select__location-line-item-set-as-preferred-store'\r\n                            aria-live='polite'\r\n                            aria-checked='false'\r\n                            aria-label={resources.setAsPreferredStoreTextAriaLabel}\r\n                            {...preferredStoreAttribute}\r\n                            onClick={onSetPreferredStoreClickHandler()}\r\n                        >\r\n                            {resources.setAsPreferredStoreText}\r\n                        </button>\r\n                    ))}\r\n            </div>\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * Render Store Location.\r\n * @param location - The location props.\r\n * @param index - The location index.\r\n * @param props - The view props.\r\n * @param selectedLocationReference - The ref.\r\n * @returns The JSX Element.\r\n */\r\nconst renderStoreLocation = (\r\n    location: IStoreSelectorLocationLineItemProps,\r\n    index: number,\r\n    props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>,\r\n    selectedLocationReference: React.RefObject<HTMLDivElement>\r\n): JSX.Element | undefined => {\r\n    const {\r\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n        hideStockStatus,\r\n        storeLocatorView,\r\n        isCurrentLocation,\r\n        isInStock,\r\n        productPickUpOptionList,\r\n        resources,\r\n        storePickUpOptionList,\r\n        telemetryContent\r\n    } = location;\r\n\r\n    const orgUnitLocation = location.location;\r\n    const selectedStoreLocationId = location.selectedStoreLocationId;\r\n    const defaultAriaSetsize = 0;\r\n    const canSelectLocation = hideStockStatus ?? isInStock;\r\n    const storeName = location.location.OrgUnitName;\r\n    const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\r\n    const pickupInStoreButtonText: string = resources.selectLocation;\r\n    const pickUpOptionDropdownPlaceholderText: string = props.resources.pickupOptionDropdownPlaceholderText;\r\n\r\n    const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n    const selectStoreText = props.resources.selectStoreText;\r\n    const pickUpMethodLabel = props.resources.pickUpMethodLabel;\r\n\r\n    /**\r\n     * Method to handle the pick up in store.\r\n     * @returns Void.\r\n     */\r\n    const onPickupInStoreClickHandler = () => () => {\r\n        location.handlers.onSelected(location.location);\r\n    };\r\n\r\n    /**\r\n     * Render Store Locations.\r\n     * @param unitLocation - The org unit location.\r\n     * @returns Handler for onClick.\r\n     */\r\n    const onClickHandler = (unitLocation: OrgUnitLocation | undefined) => () => {\r\n        location.onClick(unitLocation?.OrgUnitNumber);\r\n    };\r\n\r\n    const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\r\n        <PickUpButtonComponent\r\n            attributes={attributes}\r\n            pickupInStoreAriaLabel={pickupInStoreAriaLabel}\r\n            pickupInStoreButtonText={pickupInStoreButtonText}\r\n            pickupDeliveryOptionErrorMessage={props.resources.pickupDeliveryOptionErrorMessage}\r\n            onPickupInStoreClickHandler={onPickupInStoreClickHandler}\r\n        />\r\n    ) : (\r\n        <PickUpMethodDropdownComponent\r\n            {...location}\r\n            pickUpStatesProps={props}\r\n            selectStoreText={selectStoreText}\r\n            pickUpMethodLabel={pickUpMethodLabel}\r\n            pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\r\n            pickupOptionDropdownError={props.resources.pickupOptionDropdownErrorText}\r\n            pickupButtonAriaLabel={pickupInStoreAriaLabel}\r\n        />\r\n    );\r\n    const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\r\n\r\n    return (\r\n        <div\r\n            className={classnames('ms-store-select__location-wrapper', {\r\n                selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber && !props.isMobileView\r\n            })}\r\n        >\r\n            <div\r\n                className={classnames('ms-store-select__location', { selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber })}\r\n                key={index}\r\n                role='listitem'\r\n                aria-setsize={ArrayExtensions.hasElements(props.locationListProps) ? props.locationListProps.length : defaultAriaSetsize}\r\n                aria-posinset={Number.parseInt(location.index, 10)}\r\n                onClick={onClickHandler(orgUnitLocation)}\r\n                onKeyDown={onClickHandler(orgUnitLocation)}\r\n                ref={selectedStoreLocationId === orgUnitLocation.OrgUnitNumber ? selectedLocationReference : undefined}\r\n            >\r\n                {renderStoreLocationLineItem(location, props)}\r\n            </div>\r\n            {!storeLocatorView &&\r\n                (isCurrentLocation ? (\r\n                    <p className='ms-store-select__location-line-current-location'>{resources.currentLocation}</p>\r\n                ) : (\r\n                    pickUpMethodSelection\r\n                ))}\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * Render Store Locations.\r\n * @param props - The view props.\r\n * @param selectedLocationReference - The ref.\r\n * @returns The JSX Element.\r\n */\r\nconst renderStoreLocations = (\r\n    props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>,\r\n    selectedLocationReference: React.RefObject<HTMLDivElement>\r\n) => {\r\n    return (\r\n        <div\r\n            className={classnames('ms-store-select__locations', {\r\n                show: props.data.storeSelectorStateManager.result?.listMapViewState.displayList\r\n            })}\r\n            role='list'\r\n        >\r\n            {props.locationListProps?.map((store, index) => {\r\n                return renderStoreLocation(store, index, props, selectedLocationReference);\r\n            })}\r\n        </div>\r\n    );\r\n};\r\n\r\n/**\r\n * Method to map resources with Location Item.\r\n * @param resources - List of strings for module.\r\n * @returns Resources for StoreSelector location line.\r\n */\r\nconst mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\r\n    return {\r\n        contactInfoHeader: resources.contactText,\r\n        storeHoursHeader: resources.timeText,\r\n        availabilityInfoHeader: resources.availabilityText,\r\n\r\n        closedText: resources.storeHoursClosedText,\r\n        outOfStock: resources.outOfStockText,\r\n        inStock: resources.inStockText,\r\n\r\n        currentLocation: resources.selectedStoreLocationText,\r\n        selectLocation: resources.selectStoreText,\r\n        selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n        setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n        setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n        preferredStoreText: resources.preferredStoreText,\r\n        preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n\r\n        days: {\r\n            monday: resources.storeHoursMondayText,\r\n            tuesday: resources.storeHoursTuesdayText,\r\n            wednesday: resources.storeHoursWednesdayText,\r\n            thursday: resources.storeHoursThursdayText,\r\n            friday: resources.storeHoursFridayText,\r\n            saturday: resources.storeHoursSaturdayText,\r\n            sunday: resources.storeHoursSundayText,\r\n            mondayFull: resources.storeHoursMondayFullText,\r\n            tuesdayFull: resources.storeHoursTuesdayFullText,\r\n            wednesdayFull: resources.storeHoursWednesdayFullText,\r\n            thursdayFull: resources.storeHoursThursdayFullText,\r\n            fridayFull: resources.storeHoursFridayFullText,\r\n            saturdayFull: resources.storeHoursSaturdayFullText,\r\n            sundayFull: resources.storeHoursSundayFullText\r\n        }\r\n    };\r\n};\r\n\r\n/**\r\n * Render the selected store.\r\n * @param selectedLocationProps -- Selected store view props.\r\n * @param storeSelectorViewProps -- Store selector view props.\r\n * @returns -- HTML.\r\n */\r\nexport const renderSelectedStore = (\r\n    selectedLocationProps: ISelectedStoreViewProps,\r\n    storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>\r\n): JSX.Element => {\r\n    const {\r\n        storeDetailsMain,\r\n        storeHeader,\r\n        storeName,\r\n        storeDetailsCloseButton,\r\n        storeDistance,\r\n        storeDetailsAvailabilityContainer,\r\n        productAvailability,\r\n        stockStatus,\r\n        isPreferredStore,\r\n        preferredStoreButton,\r\n        removePreferredStoreButton,\r\n        selectedStore\r\n    } = selectedLocationProps;\r\n\r\n    const storeAddress: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Address;\r\n    const phoneNumber: string | undefined = extractPhoneNumber(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Contacts);\r\n    const storeHoursList = selectedStore?.StoreHours?.RegularStoreHours\r\n        ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours, mapResources(storeSelectorViewProps.resources))\r\n        : [];\r\n    const storeOpenFrom: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenFrom);\r\n    const storeOpenTo: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenTo);\r\n    const locationOpen = { openFrom: storeOpenFrom, openTo: storeOpenTo };\r\n    const storeNameValue = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\r\n    const pickupInStoreAriaLabel: string = selectedLocationProps.resources.selectLocationAriaLabelFormat.replace(\r\n        '{StoreName}',\r\n        storeNameValue ?? ''\r\n    );\r\n    const telemetryContent = getTelemetryObject(\r\n        storeSelectorViewProps.context.request.telemetryPageName!,\r\n        storeSelectorViewProps.friendlyName,\r\n        storeSelectorViewProps.telemetry\r\n    );\r\n    const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.PickupInStore);\r\n    const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n    const pickupInStoreButtonText: string = selectedLocationProps.resources.selectLocation;\r\n    const selectStoreText = storeSelectorViewProps.resources.selectStoreText;\r\n    const pickUpMethodLabel = storeSelectorViewProps.resources.pickUpMethodLabel;\r\n    const pickUpOptionDropdownPlaceholderText: string = storeSelectorViewProps.resources.pickupOptionDropdownPlaceholderText;\r\n    const orgUnitNumber = selectedStore?.OrgUnitAvailability?.OrgUnitLocation!.OrgUnitNumber;\r\n    const productPickUpOptionList = storeSelectorViewProps.data.storeSelectorStateManager.result?.context?.deliveryOptions?.DeliveryOptions;\r\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, selectedLocationProps.deliveryOptions);\r\n    const selectedLocation = storeSelectorViewProps.locationListProps?.find(location => location.location.OrgUnitNumber === orgUnitNumber);\r\n\r\n    /**\r\n     * Method to handle the pick up in store.\r\n     * @returns Void.\r\n     */\r\n    const onPickupInStoreClickHandler = () => () => {\r\n        selectedLocationProps.handlers.onSelected(selectedStore!.OrgUnitAvailability!.OrgUnitLocation!);\r\n    };\r\n    const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\r\n        <PickUpButtonComponent\r\n            attributes={attributes}\r\n            pickupInStoreAriaLabel={pickupInStoreAriaLabel}\r\n            pickupInStoreButtonText={pickupInStoreButtonText}\r\n            pickupDeliveryOptionErrorMessage={storeSelectorViewProps.resources.pickupDeliveryOptionErrorMessage}\r\n            onPickupInStoreClickHandler={onPickupInStoreClickHandler}\r\n        />\r\n    ) : (\r\n        selectedLocation && (\r\n            <PickUpMethodDropdownComponent\r\n                {...selectedLocation}\r\n                pickUpStatesProps={storeSelectorViewProps}\r\n                selectStoreText={selectStoreText}\r\n                pickUpMethodLabel={pickUpMethodLabel}\r\n                pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\r\n                pickupOptionDropdownError={storeSelectorViewProps.resources.pickupOptionDropdownErrorText}\r\n                pickupButtonAriaLabel={pickupInStoreAriaLabel}\r\n            />\r\n        )\r\n    );\r\n\r\n    return (\r\n        <Node {...storeDetailsMain}>\r\n            <Node {...storeHeader}>\r\n                {storeDetailsCloseButton}\r\n                {storeName}\r\n                {storeDistance}\r\n            </Node>\r\n            <Node {...storeDetailsAvailabilityContainer}>\r\n                <div className='ms-store-select__location-line-item-contact-info'>\r\n                    <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.contactText}</p>\r\n                    {storeAddress && (\r\n                        <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\r\n                            <span\r\n                                className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\r\n                                aria-hidden='true'\r\n                            />\r\n                            <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\r\n                                {storeAddress}\r\n                            </span>\r\n                        </div>\r\n                    )}\r\n                    {phoneNumber && (\r\n                        <div className='ms-store-select__location-line-shop-phone-section'>\r\n                            <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\r\n                            <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\r\n                        </div>\r\n                    )}\r\n                </div>\r\n                <div className='ms-store-select__location-line-item-store-hours'>\r\n                    <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.timeText}</p>\r\n                    {renderStoreHours(selectedStore?.StoreHours, storeHoursList, locationOpen, storeSelectorViewProps.resources)}\r\n                </div>\r\n                {productAvailability && (\r\n                    <div className='ms-store-select__location-line-item-store-availability'>\r\n                        <p className='ms-store-select__location-line-header'>{productAvailability}</p>\r\n                        {stockStatus && <p className='ms-store-select__location-line-stock-status'>{stockStatus}</p>}\r\n                    </div>\r\n                )}\r\n            </Node>\r\n            {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\r\n            {canSelectPickUpMethod}\r\n        </Node>\r\n    );\r\n};\r\n\r\n/**\r\n * Store Selector View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst StoreSelectorViewComponent: React.FC<IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>> = props => {\r\n    // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\r\n    const {\r\n        BodyContainerProps,\r\n        storeResultContainerProps,\r\n        FooterContainerProps,\r\n        HeaderContainerProps,\r\n        HeaderProps,\r\n        ModuleProps,\r\n        locationsMessage,\r\n        search,\r\n        state,\r\n        spinner,\r\n        maps,\r\n        locationsList,\r\n        noLocationsMessage,\r\n        terms,\r\n        storeDetailsModal,\r\n        selectedLocation,\r\n        bodyWrapperProps,\r\n        data,\r\n        context\r\n    } = props;\r\n    const selectedLocationReference = React.useRef(null);\r\n    const [isDesktopPort, setIsDesktopPort] = React.useState<boolean>(false);\r\n\r\n    const isDesktopViewport = React.useCallback(() => {\r\n        const portView = isMobile({ variant: VariantType.Browser, context: context.request });\r\n        const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\r\n        setIsDesktopPort(isDesktopPorts);\r\n    }, [context]);\r\n\r\n    React.useEffect(() => {\r\n        if (props.locationsList) {\r\n            /**\r\n             * Method to handle scrolling.\r\n             */\r\n            const scrollIntoView = () => {\r\n                const selectedLocationDiv = (selectedLocationReference as React.RefObject<HTMLDivElement>).current;\r\n                if (selectedLocationDiv !== null) {\r\n                    const offset = selectedLocationDiv.getBoundingClientRect();\r\n                    const parent = selectedLocationDiv.parentElement?.parentElement;\r\n                    if (parent && offset) {\r\n                        const totalHeight = parent.scrollTop + offset.top;\r\n                        parent.scrollTop = totalHeight - parent.clientHeight;\r\n                    }\r\n                }\r\n            };\r\n            scrollIntoView();\r\n        }\r\n    }, [props.locationsList]);\r\n\r\n    React.useEffect(() => {\r\n        if (MsDyn365.isBrowser) {\r\n            window.addEventListener('resize', isDesktopViewport);\r\n        }\r\n        isDesktopViewport();\r\n    }, [isDesktopViewport]);\r\n    const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\r\n\r\n    const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\r\n\r\n    if (!isDesktopView || !isDesktopPort) {\r\n        return (\r\n            <Module {...ModuleProps}>\r\n                <Node {...HeaderContainerProps}>{HeaderProps}</Node>\r\n                <Node {...BodyContainerProps}>\r\n                    <Node {...storeResultContainerProps!}>\r\n                        {locationsMessage && (\r\n                            <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\r\n                        )}\r\n                        {search}\r\n                        <Node {...bodyWrapperProps!}>\r\n                            <Node {...storeResultContainerProps!}>\r\n                                {state.isSearchInProgress ? (\r\n                                    spinner\r\n                                ) : (\r\n                                    <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\r\n                                )}\r\n                                <Node\r\n                                    className={`ms-store-select__map_view ${\r\n                                        data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\r\n                                    }`}\r\n                                >\r\n                                    {maps}\r\n                                </Node>\r\n                                <Node {...storeDetailsModal!}>{selectedLocation && renderSelectedStore(selectedLocation, props)}</Node>\r\n                            </Node>\r\n                        </Node>\r\n                    </Node>\r\n                </Node>\r\n                <Node {...FooterContainerProps}>{terms}</Node>\r\n            </Module>\r\n        );\r\n    }\r\n    return (\r\n        <Module {...ModuleProps}>\r\n            <Node {...HeaderContainerProps}>{HeaderProps}</Node>\r\n            <Node {...BodyContainerProps}>\r\n                <Node\r\n                    className={`ms-store-select__store_container ${\r\n                        data.storeSelectorStateManager.result?.listMapViewState.displayList ? 'show' : ''\r\n                    }`}\r\n                >\r\n                    {locationsMessage && (\r\n                        <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\r\n                    )}\r\n                    {search}\r\n                    {state.isSearchInProgress ? (\r\n                        spinner\r\n                    ) : (\r\n                        <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\r\n                    )}\r\n                </Node>\r\n                <Node\r\n                    className={`ms-store-select__map_container ${\r\n                        data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\r\n                    }`}\r\n                >\r\n                    {maps}\r\n                </Node>\r\n            </Node>\r\n            <Node {...FooterContainerProps}>{terms}</Node>\r\n        </Module>\r\n    );\r\n};\r\n\r\nexport default StoreSelectorViewComponent;\r\n","const binding = { modules: {}, dataActions: {} };\n\n    const registerActionId = (actionPath) => {\n        if (binding.dataActions[actionPath] &&\n            binding.dataActions[actionPath].default &&\n            binding.dataActions[actionPath].default.prototype &&\n            binding.dataActions[actionPath].default.prototype.id) {\n            binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n        } else {\n            Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n                if (binding.dataActions[actionPath][exportName] &&\n                    binding.dataActions[actionPath][exportName].prototype &&\n                    binding.dataActions[actionPath][exportName].prototype.Action) {\n                    binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n                }\n            })\n        }\n    };\n\n    const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n        if (process.env.NODE_ENV === 'development') {\n            if (!dataAction.default) {\n                throw new Error('Data action path does not have a default export');\n            }\n            if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n                binding.dataActions[sanitizedActionPath] = dataAction;\n            }\n        } else {\n            binding.dataActions[sanitizedActionPath] = dataAction;\n            if (!binding.dataActions[sanitizedActionPath].default) {\n                throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n            }\n            binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n            if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n                binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n            }\n        }\n    };\n    \n\n    (binding.modules['store-selector'] = {\n        c: () => require('@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector'),\n        $type: 'containerModule',\n        da: [{name:'availabilitiesWithHours',  path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby', runOn: 1},{name:'storeLocations',  path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information', runOn: 1},{name:'storeSelectorStateManager',  path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n        \n        iNM: true,\n        ns: '@msdyn365-commerce-modules',\n        n: 'store-selector',\n        p: 'store-selector',\n        \n        pdp: '',\n        \n        \n        md: 'node_modules/@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector'\n    });\n        \n\n        {\n            const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n            let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n            registerSanitizedActionPath(sanitizedActionPath, dataAction);\n        }\n            \n\n        {\n            const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby';\n            let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby');\n            registerSanitizedActionPath(sanitizedActionPath, dataAction);\n        }\n            \n\n        {\n            const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information';\n            let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information');\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__|themes|newsunshine-b2c|views|store-selector'] = {\n                c: () => require('partner/themes/newsunshine-b2c/views/store-selector.view.tsx'),\n                cn: '__local__-__local__-store-selector'\n            };\nviewDictionary['__local__|__local__|themes|newsunshine|views|store-selector'] = {\n                c: () => require('partner/themes/newsunshine/views/store-selector.view.tsx'),\n                cn: '__local__-__local__-store-selector'\n            };\nviewDictionary['@msdyn365-commerce-modules|store-selector|modules|store-selector|store-selector'] = {\n                c: () => require('@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector.view.js'),\n                cn: '@msdyn365-commerce-modules-store-selector-store-selector'\n            };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|store-selector'] = {\n                c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/store-selector.view.js'),\n                cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-store-selector'\n            };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n                        ...window.__bindings__.viewDictionary || {},\n                        ...viewDictionary\n                    };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n    IListMapViewState,\n    ILoadMapApiInput,\n    IStoreInfo,\n    IStoreSelectionStateContext,\n    IStoreSelectorLocation,\n    IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n    @computed public get isDialogOpen(): Readonly<boolean> {\n        return this._context !== undefined;\n    }\n\n    @computed public get context(): Readonly<IStoreSelectionStateContext | undefined> {\n        return this._context;\n    }\n\n    @observable public isMapApiLoaded?: boolean;\n\n    @observable public selectedStoreLocationId?: string;\n\n    @observable public preferredStore?: IStoreInfo;\n\n    @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n    @observable public isMapModuleLoaded?: boolean;\n\n    @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n    @observable protected _context?: IStoreSelectionStateContext;\n\n    private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n    constructor() {\n        this.isMapModuleLoaded = false;\n        const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n        try {\n            const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n            if (storeInfo) {\n                this.preferredStore = storeInfo;\n            }\n        } catch {\n            this.preferredStore = undefined;\n        }\n    }\n\n    public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise<IStoreSelectorLocation | undefined>;\n\n    public abstract loadMapApi(input: ILoadMapApiInput): Promise<void>;\n\n    @action\n    public async toggleListMapViewState(): Promise<void> {\n        this.listMapViewState = {\n            displayList: !this.listMapViewState.displayList,\n            displayMap: !this.listMapViewState.displayMap\n        };\n    }\n\n    @action\n    public async setMapModuleLoaded(input: boolean): Promise<void> {\n        this.isMapModuleLoaded = input;\n    }\n\n    @action\n    public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise<void> {\n        this._context = input;\n    }\n\n    @action\n    public async setSelectedStoreLocationId(storeId: string | undefined): Promise<void> {\n        this.selectedStoreLocationId = storeId;\n    }\n\n    @action\n    public async setPreferredStoreLocation(\n        storeId?: string,\n        storeName?: string | undefined,\n        writeToCookie: boolean = false,\n        latitude?: number,\n        longitude?: number\n    ): Promise<void> {\n        const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n        this.preferredStore = storeInfo;\n        if (writeToCookie) {\n            this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n        }\n    }\n\n    @action\n    public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise<void> {\n        const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n        this.lastInlineShownStoreInfo = storeInfo;\n    }\n\n    @action\n    public async clearPreferredStore(writeToCookie: boolean): Promise<void> {\n        this.preferredStore = undefined;\n        if (writeToCookie) {\n            this._removeCookie(this.preferredStoreLocalStorageKey);\n        }\n    }\n\n    @action\n    public async openDialog(input: IStoreSelectionStateContext): Promise<void> {\n        if (this._context && this._context.id === input.id) {\n            throw new Error('Dialog is already opened');\n        }\n\n        this._context = input;\n    }\n\n    @action\n    public async closeDialog(): Promise<void> {\n        this._context = undefined;\n    }\n\n    private _removeCookie(key: string): void {\n        if (!key) {\n            return;\n        }\n        if (MsDyn365.isBrowser) {\n            const storage = window.localStorage;\n            storage.removeItem(key);\n        }\n    }\n\n    private _writeToCookie(key: string, value: string | undefined): void {\n        if (!key || !value) {\n            return;\n        }\n        if (MsDyn365.isBrowser) {\n            const storage = window.localStorage;\n            storage.setItem(key, value);\n        }\n    }\n\n    private _readFromToCookie(key: string): string | undefined {\n        if (!key) {\n            return undefined;\n        }\n        if (MsDyn365.isBrowser) {\n            const storage = window.localStorage;\n            const cookieValue = storage.getItem(key);\n            if (cookieValue) {\n                return cookieValue;\n            }\n        }\n\n        return undefined;\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n    private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n    private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n    @action\n    public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise<IStoreSelectorLocation | undefined> {\n        if (\n            !searchTerm ||\n            !actionContext.requestContext.channel ||\n            !actionContext.requestContext.channel.BingMapsApiKey ||\n            !actionContext.requestContext.channel.BingMapsEnabled\n        ) {\n            return undefined;\n        }\n\n        let searchContent: string = searchTerm;\n\n        const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n        if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n            searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n        }\n\n        const query = encodeURI(searchContent);\n        const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n        const geolocationApiUrl =\n            actionContext.requestContext.app &&\n            actionContext.requestContext.app.config &&\n            actionContext.requestContext.app.config.geolocationApiUrl;\n        const requestUrl = `${\n            geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n        }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n        return new Promise<IStoreSelectorLocation | undefined>(resolve => {\n            const script = document.createElement('script');\n            script.setAttribute('type', 'text/javascript');\n            script.setAttribute('src', requestUrl);\n\n            window[jsonp] = (data: MapLocationsResult) => {\n                delete window[jsonp];\n                script.remove();\n\n                if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n                    resolve({\n                        latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n                        longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n                    });\n                }\n\n                resolve(undefined);\n            };\n\n            document.body.appendChild(script);\n        });\n    }\n\n    @action\n    public async loadMapApi(input: ILoadMapApiInput): Promise<void> {\n        if (StringExtensions.isNullOrEmpty(input.key)) {\n            return Promise.resolve();\n        }\n\n        const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n        if (isScriptAlreadyLoaded) {\n            if (window) {\n                const currentWindowAPI = window.mapAPIReady;\n                window.mapAPIReady = () => {\n                    if (currentWindowAPI) {\n                        currentWindowAPI();\n                    }\n                    this.isMapApiLoaded = true;\n                };\n            }\n            // Prevents from loading multiple script into the body\n            return Promise.resolve();\n        }\n\n        const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n            input.market ? `&setMkt=${input.market}` : ''\n        }`;\n\n        return new Promise((resolve, reject) => {\n            const script = document?.createElement('script');\n            script.type = 'text/javascript';\n            script.async = true;\n            script.defer = true;\n            script.src = url;\n            script.id = 'msdyn_map-api-script';\n            if (window) {\n                window.mapAPIReady = () => {\n                    this.isMapApiLoaded = true;\n                    resolve();\n                };\n            }\n            script.addEventListener('error', (error: string | Event) => {\n                reject(error);\n            });\n            document?.body?.appendChild(script);\n        });\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput<IStoreSelectorStateManager> {\n    return new GenericInput<IStoreSelectorStateManager>('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext<IGeneric<IAny>>): IActionInput => {\n    return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n    action: <IAction<IStoreSelectorStateManager>>getGenericAction,\n    input: createStoreSelectorStateInputInternal\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 { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n    productPickupListOptionMenuText?: string;\n    productPickupModeList?: DeliveryOption[];\n    defaultOptionText?: string;\n    onChange(deliveryCode: string): Promise<void>;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n    isFilterExpanded: boolean;\n    selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent<IStorePickUpOptionListProps, IStorePickOptionListState> {\n    private readonly _storePickupListOptionMenu: React.RefObject<HTMLUListElement>;\n\n    public constructor(props: IStorePickUpOptionListProps) {\n        super(props);\n        this._storePickupListOptionMenu = React.createRef();\n        this.state = {\n            isFilterExpanded: false,\n            selectedPickupMode: ''\n        };\n    }\n\n    public render(): JSX.Element {\n        const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n        const selectedPickupModeDesc = defaultOptionText\n            ? defaultOptionText\n            : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n        const role = 'menu';\n        return (\n            <div className='ms-store-select__search-header-pickup'>\n                <button className='ms-store-select__search-header-pickup-menu' onClick={this._rendeDeliveryOptions}>\n                    {selectedPickupModeDesc !== undefined ? selectedPickupModeDesc : productPickupListOptionMenuText}\n                    <span className='ms-store-select__search-header-pickup-span' />\n                </button>\n                {this.state.isFilterExpanded ? (\n                    <ul className='ms-store-select__search-header-pickup-list' role={role} ref={this._storePickupListOptionMenu}>\n                        {productPickupModeList?.map((delivery: DeliveryOption) => {\n                            return (\n                                <li className='ms-store-select__search-header-pickup-list-item' key={delivery.Code} role='presentation'>\n                                    <a\n                                        key={delivery.Code}\n                                        data-value={delivery.Code}\n                                        role='menuitem'\n                                        className='ms-store-select__search-header-pickup-list-link'\n                                        tabIndex={0}\n                                        aria-label={delivery.Description}\n                                        onClick={this._onSelect}\n                                        onKeyDown={this._onKeyDown}\n                                    >\n                                        <span className='ms-store-select__search-header-pickup-list-item__text'>\n                                            {delivery.Description}\n                                        </span>\n                                    </a>\n                                </li>\n                            );\n                        })}\n                    </ul>\n                ) : null}\n            </div>\n        );\n    }\n\n    /**\n     * Method to call when drop dwon get selected.\n     */\n    private readonly _rendeDeliveryOptions = () => {\n        const isExpandOptionsState = this.state.isFilterExpanded;\n        this.setState({\n            isFilterExpanded: !isExpandOptionsState\n        });\n    };\n\n    /**\n     * Method to call on select pickup mode.\n     * @param event - Mouse event.\n     * @returns Void.\n     */\n    private readonly _onSelect = async (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>): Promise<void> => {\n        event.preventDefault();\n        const deliveryCode = event.currentTarget.getAttribute('data-value');\n        if (deliveryCode !== null) {\n            this.setState({\n                selectedPickupMode: deliveryCode\n            });\n\n            this._rendeDeliveryOptions();\n            await this.props.onChange(deliveryCode);\n        }\n    };\n\n    /**\n     * Method to call on select pickup mode.\n     * @param event - Mouse event.\n     * @returns Void.\n     */\n    private readonly _onKeyDown = async (event: React.KeyboardEvent<HTMLAnchorElement>): Promise<void> => {\n        event.preventDefault();\n        const deliveryCode = event.currentTarget.getAttribute('data-value');\n        if (deliveryCode !== null) {\n            this.setState({\n                selectedPickupMode: deliveryCode\n            });\n\n            this._rendeDeliveryOptions();\n            await this.props.onChange(deliveryCode);\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 { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n    locations?: IFullOrgUnitAvailability[];\n    resources: IStoreSelectorResources;\n    preferredDistanceUnit?: string;\n\n    alreadySelectedLocation?: OrgUnitLocation;\n    outOfStockThreshold: number;\n    enableOutOfStockCheck: boolean;\n    storeLocatorView?: boolean;\n    selectedStoreLocationId?: string;\n    isPreferredStoreEnabled?: boolean;\n    displayList?: boolean;\n    isLocationDisabled?: boolean;\n    productPickUpDeliveryOptions?: DeliveryOption[];\n    onClick: (locationId: string | undefined) => void;\n    preferredStoreLocationId: string | null;\n    onSetAsPreferredStore: (locationId: string | undefined) => void;\n    onRemovePreferredStore: () => void;\n    filteredPickupMode?: string;\n    shouldShowIndex?: boolean;\n\n    /**\n     * The telemetry content.\n     */\n    telemetryContent?: ITelemetryContent;\n    onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent<IStoreSelectorLocationLinesProps> {\n    @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n    private readonly selectedLocationRef: React.RefObject<HTMLDivElement>;\n\n    private storeCounter: number;\n\n    public constructor(props: IStoreSelectorLocationLinesProps) {\n        super(props);\n        this.selectedLocationRef = React.createRef();\n        this.storeCounter = 0;\n    }\n\n    public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n        if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n            this._scrollIntoView();\n        }\n    }\n\n    public componentDidMount(): void {\n        if (this.props.locations) {\n            this._stores = this._sortStores(this.props.locations);\n        }\n\n        reaction(\n            () => this.props.locations,\n            () => {\n                if (this.props.locations) {\n                    this._stores = this._sortStores(this.props.locations);\n                }\n            }\n        );\n    }\n\n    public render(): JSX.Element | null {\n        if (!ArrayExtensions.hasElements(this._stores)) {\n            return null;\n        }\n\n        this.storeCounter = 0;\n\n        return (\n            <div className={classnames('ms-store-select__locations', { show: this.props.displayList })} role='list'>\n                {this._stores.map((store, index) => {\n                    return this._renderStoreLocation(store, index);\n                })}\n            </div>\n        );\n    }\n\n    /**\n     * On click Handler function.\n     * @param orgUnitLocation -OrgUnit location.\n     * @returns Click action on orgUnit Location.\n     */\n    private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n        this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n    };\n\n    private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n        const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n        const selectedStoreLocationId = this.props.selectedStoreLocationId;\n        const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n        const defaultAriaSetsize = 0;\n        if (orgUnitLocation) {\n            ++this.storeCounter;\n            return (\n                <div\n                    className={classnames('ms-store-select__location', {\n                        selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber\n                    })}\n                    key={index}\n                    role='listitem'\n                    aria-setsize={ArrayExtensions.hasElements(this._stores) ? this._stores.length : defaultAriaSetsize}\n                    aria-posinset={this.storeCounter}\n                    onClick={this.onClickHandler(orgUnitLocation)}\n                    ref={selectedStoreLocationId === orgUnitLocation.OrgUnitNumber ? this.selectedLocationRef : undefined}\n                >\n                    <StoreSelectorLocationLineItemComponent\n                        location={orgUnitLocation}\n                        storeHours={store.StoreHours}\n                        resources={this._mapResources(this.props.resources)}\n                        preferredDistanceUnit={this.props.preferredDistanceUnit!}\n                        isCurrentLocation={this._isCurrentLocation(orgUnitLocation)}\n                        isInStock={this._isProductInStock(store?.OrgUnitAvailability?.ItemAvailabilities)}\n                        hideStockStatus={!this.props.enableOutOfStockCheck}\n                        handlers={{\n                            onSelected: this.props.onLocationSelected,\n                            onSetAsPreferredStore: this.props.onSetAsPreferredStore,\n                            onRemovePreferredStore: this.props.onRemovePreferredStore\n                        }}\n                        stockStatusLabel={this._stockInventoryLabel(store)}\n                        storeLocatorView={this.props.storeLocatorView}\n                        index={this.storeCounter.toString()}\n                        preferredStoreLocationId={this.props.preferredStoreLocationId}\n                        isPreferredStoreEnabled={this.props.isPreferredStoreEnabled}\n                        telemetryContent={this.props.telemetryContent}\n                        isLocationDisabled={this.props.isLocationDisabled}\n                        storePickUpOptionList={deliveryOptions?.DeliveryOptions}\n                        productPickUpOptionList={this.props.productPickUpDeliveryOptions}\n                        filteredPickupMode={this.props.filteredPickupMode}\n                        shouldShowIndex={this.props.shouldShowIndex}\n                    />\n                </div>\n            );\n        }\n        return undefined;\n    }\n\n    /**\n     * Sort store.\n     * @param stores - Array of stores data.\n     * @returns Sorted stores array.\n     */\n    private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n        /**\n         * IsPreferredStore.\n         * @param value - Array of stores data.\n         * @returns IsPreferred store boolean value.\n         */\n        const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n            this.props.isPreferredStoreEnabled &&\n            this.props.preferredStoreLocationId &&\n            value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n        return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n    }\n\n    /**\n     * Scroll into view.\n     */\n    private readonly _scrollIntoView = () => {\n        const selectedLocationDiv = this.selectedLocationRef.current;\n        const parent = selectedLocationDiv?.parentElement;\n        if (selectedLocationDiv && parent) {\n            if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n                parent.scrollTop = selectedLocationDiv.offsetTop;\n            } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n                parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n            }\n        }\n    };\n\n    /**\n     * Is current location.\n     * @param location - Org unit location.\n     * @returns The current location.\n     */\n    private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n        (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n        false;\n\n    /**\n     * Check the product is in stock or not.\n     * @param itemAvailabilities - Item availabilities.\n     * @returns If the product is in stock.\n     */\n    private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n        if (!this.props.enableOutOfStockCheck) {\n            return true;\n        }\n\n        if (ArrayExtensions.hasElements(itemAvailabilities)) {\n            return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n        }\n\n        return false;\n    };\n\n    /**\n     * Get the stock inventory label.\n     * @param availabilityWithHours - Full org unit availability.\n     * @returns The stock label.\n     */\n    private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n        if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n            for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n                if (\n                    availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n                    availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n                ) {\n                    return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n                }\n            }\n        }\n\n        return undefined;\n    };\n\n    /**\n     * Map resources.\n     * @param resources - Store resources.\n     * @returns Resources.\n     */\n    private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n        return {\n            contactInfoHeader: resources.contactText,\n            storeHoursHeader: resources.timeText,\n            availabilityInfoHeader: resources.availabilityText,\n\n            closedText: resources.storeHoursClosedText,\n            outOfStock: resources.outOfStockText,\n            inStock: resources.inStockText,\n\n            currentLocation: resources.selectedStoreLocationText,\n            selectLocation: resources.selectStoreText,\n            selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n            setAsPreferredStoreText: resources.setAsPreferredStoreText,\n            setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n            preferredStoreText: resources.preferredStoreText,\n            preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n            pickupDeliveryOptionErrorMessage: resources.pickupDeliveryOptionErrorMessage,\n\n            days: {\n                monday: resources.storeHoursMondayText,\n                tuesday: resources.storeHoursTuesdayText,\n                wednesday: resources.storeHoursWednesdayText,\n                thursday: resources.storeHoursThursdayText,\n                friday: resources.storeHoursFridayText,\n                saturday: resources.storeHoursSaturdayText,\n                sunday: resources.storeHoursSundayText,\n                mondayFull: resources.storeHoursMondayFullText,\n                tuesdayFull: resources.storeHoursTuesdayFullText,\n                wednesdayFull: resources.storeHoursWednesdayFullText,\n                thursdayFull: resources.storeHoursThursdayFullText,\n                fridayFull: resources.storeHoursFridayFullText,\n                saturdayFull: resources.storeHoursSaturdayFullText,\n                sundayFull: resources.storeHoursSundayFullText\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n    getPayloadObject,\n    getTelemetryAttributes,\n    IPayLoad,\n    ITelemetryContent,\n    KeyCodes,\n    TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n    resources: {\n        searchInputAriaLabel: string;\n        searchButtonAriaLabel: string;\n        searchPlaceholderText: string;\n        seeAllStoresText: string;\n        viewListText: string;\n        viewMapText: string;\n        pickupFilterByHeading?: string;\n        pickupFilterMenuHeading?: string;\n    };\n\n    id: string;\n    value: string;\n    isMapDisabled?: boolean;\n    showAllStores?: boolean;\n    displayList?: boolean;\n    locatorView?: boolean;\n    productPickUpDeliveryOptions?: DeliveryOption[];\n    hasEnabledPickupFilterToShowStore?: boolean;\n    filteredPickupMode?: string;\n\n    /**\n     * The telemetry content.\n     */\n    telemetryContent?: ITelemetryContent;\n    onShowAllStores(): void;\n    onToggleListMapViewState(): void;\n    performSearch(searchTerm: string): Promise<void>;\n    searchTermChanged(searchTerm: string): Promise<void>;\n    filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent<IStoreSelectorSearchFormProps> {\n    private readonly searchBoxRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n    private readonly storeSearchAttributes: Msdyn365.IDictionary<string> | undefined;\n\n    private readonly showAllStoreAttributes: Msdyn365.IDictionary<string> | undefined;\n\n    private readonly toggleMapViewAttributes: Msdyn365.IDictionary<string> | undefined;\n\n    private previousValue: string = '';\n\n    private isSearchResultOpened: boolean = false;\n\n    public constructor(props: IStoreSelectorSearchFormProps) {\n        super(props);\n        this.state = { value: '' };\n        this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n        const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n        this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n        payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n        this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n        payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n        this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n    }\n\n    public render(): JSX.Element {\n        const {\n            resources: {\n                searchButtonAriaLabel,\n                searchPlaceholderText,\n                seeAllStoresText,\n                viewListText,\n                viewMapText,\n                pickupFilterByHeading,\n                pickupFilterMenuHeading\n            },\n            id,\n            value,\n            isMapDisabled,\n            showAllStores,\n            displayList,\n            locatorView,\n            onShowAllStores,\n            productPickUpDeliveryOptions,\n            hasEnabledPickupFilterToShowStore\n        } = this.props;\n\n        const toggleButtonText = displayList ? viewMapText : viewListText;\n\n        return (\n            <div className='ms-store-select__search'>\n                <form\n                    className='ms-store-select__search-form'\n                    aria-label={searchButtonAriaLabel}\n                    name='storeSelectorSearchForm'\n                    autoComplete='off'\n                    onSubmit={this._onSubmit}\n                    id={`ms-store-select__search-box-container_${id}`}\n                >\n                    <input\n                        type='text'\n                        aria-label={this.props.resources.searchInputAriaLabel}\n                        className='msc-form-control ms-store-select__search-input'\n                        placeholder={searchPlaceholderText}\n                        value={value}\n                        onChange={this._searchTextChanged}\n                        id={`ms-store-select__search-box_${id}`}\n                        ref={this.searchBoxRef}\n                        role='combobox'\n                        aria-expanded='false'\n                        aria-controls='as_containerSearch'\n                        onKeyUp={this._handleInputKeyPress}\n                    />\n                    <button\n                        className={`ms-store-select__search-button${isMapDisabled ? ' search-btn-disabled' : ''}`}\n                        aria-label={searchButtonAriaLabel}\n                        color='primary'\n                        {...this.storeSearchAttributes}\n                    />\n                </form>\n                {showAllStores && (\n                    <div\n                        className='ms-store-select__search-see-all-stores'\n                        tabIndex={0}\n                        role='button'\n                        onKeyUp={this._handleKeyPressPrev}\n                        onClick={onShowAllStores}\n                        {...this.showAllStoreAttributes}\n                    >\n                        {seeAllStoresText}\n                    </div>\n                )}\n                {this.renderPickupModesList(\n                    this.props,\n                    toggleButtonText,\n                    productPickUpDeliveryOptions,\n                    pickupFilterMenuHeading,\n                    locatorView,\n                    pickupFilterByHeading,\n                    hasEnabledPickupFilterToShowStore,\n                    displayList\n                )}\n            </div>\n        );\n    }\n\n    /**\n     * Handles the key press on the input box.\n     * @param event - Event object.\n     */\n    private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n        // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n        // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n        // In order to avoid that. Checking if the search result is open or not.\n        if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n            const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n            if (activeDescedantValue) {\n                if (this.previousValue === '') {\n                    this.previousValue = activeDescedantValue;\n                    this.isSearchResultOpened = true;\n                    return;\n                }\n\n                if (activeDescedantValue !== this.previousValue) {\n                    this.previousValue = activeDescedantValue;\n                    this.isSearchResultOpened = true;\n                } else {\n                    this.isSearchResultOpened = false;\n                }\n            }\n        }\n    };\n\n    /**\n     * Calls method display result.\n     * @param event - The first number.\n     */\n    private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n        if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n            this.props.onShowAllStores();\n        }\n    };\n\n    /**\n     * Method called on search text changed.\n     * @param event - Input value.\n     */\n    private readonly _searchTextChanged = async (event: React.ChangeEvent<HTMLInputElement>): Promise<void> => {\n        const inputValue: string = event.target.value;\n\n        await this.props.searchTermChanged(inputValue);\n    };\n\n    /**\n     * Method called on search submit.\n     * @param event - Input value.\n     */\n    private readonly _onSubmit = async (event: React.SyntheticEvent): Promise<void> => {\n        event.preventDefault(); // Prevents form submission\n        this.searchBoxRef.current?.blur();\n        if (!this.isSearchResultOpened) {\n            await this.props.performSearch(this.props.value);\n        }\n        this.isSearchResultOpened = false;\n    };\n\n    /**\n     * Method called on product pickup option change.\n     * @returns - Void.\n     */\n    private readonly _onChangeHandler = () => async (deliveryCode: string): Promise<void> => {\n        this.props.filterPickupModeSelected(deliveryCode);\n        return Promise.resolve();\n    };\n\n    /**\n     * Method to render pickup mode list.\n     * @param props - Store selector search form props.\n     * @param toggleButtonText - Locator view button text.\n     * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n     * @param pickupFilterMenuHeading - Pickup store button text.\n     * @param locatorView - Locator View is on\\off.\n     * @param pickupFilterByHeading - Pickup list label text.\n     * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n     * @param shouldDisplayList - Display List.\n     * @returns Jsx component.\n     */\n    private readonly renderPickupModesList = (\n        props: IStoreSelectorSearchFormProps,\n        toggleButtonText: string,\n        productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n        pickupFilterMenuHeading: string | undefined,\n        locatorView: boolean | undefined,\n        pickupFilterByHeading: string | undefined,\n        hasEnabledPickupFilterToShowStore: boolean | undefined,\n        shouldDisplayList?: boolean\n    ): JSX.Element | null => {\n        const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n        if (hasEnabledPickupFilterToShowStore) {\n            return (\n                <div className='ms-store-select__search-header'>\n                    {locatorView && (\n                        <button\n                            className={`ms-store-select__toggle-view ${toggleButtonClass}`}\n                            onClick={props.onToggleListMapViewState}\n                            {...this.toggleMapViewAttributes}\n                        >\n                            {toggleButtonText}\n                        </button>\n                    )}\n                    <StorePickUpOptionList\n                        productPickupListOptionMenuText={pickupFilterMenuHeading}\n                        defaultOptionText={props.filteredPickupMode ? undefined : pickupFilterMenuHeading}\n                        productPickupModeList={productPickUpDeliveryOptions}\n                        onChange={this._onChangeHandler()}\n                    />\n                    <div className='ms-store-select__search-header-heading'>{pickupFilterByHeading}</div>\n                </div>\n            );\n        }\n        if (locatorView) {\n            return (\n                <button\n                    className={`ms-store-select__toggle-view ${toggleButtonClass}`}\n                    onClick={props.onToggleListMapViewState}\n                    {...this.toggleMapViewAttributes}\n                >\n                    {toggleButtonText}\n                </button>\n            );\n        }\n        return null;\n    };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n    resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC<IStoreSelectorEmptyMessageProps> = ({ resources }) => (\n    <div className='ms-store-select__no-locations'>\n        <p>{resources.emptyLocationsText}</p>\n    </div>\n);\n\nexport const StoreSelectorWaiting: React.FC = () => <div className={classnames('msc-waiting', 'ms-store-select__search-in-progress')} />;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n    link?: ITermsOfServiceLinkData;\n    requestContext: Msdyn365.IRequestContext;\n    onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC<IStoreSelectorTermsOfServiceProps> = ({ link, requestContext, onTextChange }) => {\n    if (link) {\n        const editableLink: Msdyn365.ILinksData = {\n            ariaLabel: link.ariaLabel,\n            className: 'ms-store-select__terms-link',\n            linkText: link.linkText,\n            linkUrl: link.linkUrl.destinationUrl,\n            openInNewTab: link.openInNewTab,\n            role: 'link'\n        };\n\n        return (\n            <div className='ms-store-select__footer'>\n                <Msdyn365.Link link={editableLink} editProps={{ onTextChange, requestContext }} />\n            </div>\n        );\n    }\n    return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n    resources: IStoreSelectorResources;\n    locations?: IFullOrgUnitAvailability[];\n    searchRadius: number;\n    preferredDistanceUnit: string;\n    isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC<IStoreSelectorFoundLocationsMessage> = ({\n    locations,\n    searchRadius,\n    resources,\n    isSeeAllStore,\n    preferredDistanceUnit\n}) => {\n    if (locations) {\n        const storeCountMessage =\n            preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n        return (\n            <div className='ms-store-select__found-locations'>\n                {isSeeAllStore\n                    ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n                    : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n            </div>\n        );\n    }\n\n    return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n    pickupListOptionMenuText: string;\n    pickupmodeList?: DeliveryOption[];\n    onChange(deliveryCode: string): Promise<void>;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n    expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent<IPickUpOptionListProps, IPickOptionListState> {\n    private readonly _pickupListOptionMenu: React.RefObject<HTMLUListElement>;\n\n    private readonly _pickupListOptionButton: React.RefObject<HTMLButtonElement>;\n\n    private readonly eventsToBeBind = ['click', 'touchstart'];\n\n    public constructor(props: IPickUpOptionListProps) {\n        super(props);\n        this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n        this._pickupListOptionMenu = React.createRef();\n        this._pickupListOptionButton = React.createRef();\n        this.state = {\n            expandSiteOptions: false\n        };\n    }\n\n    public componentDidMount(): void {\n        for (const event of this.eventsToBeBind) {\n            window.addEventListener(event, this.handleDocumentClick, true);\n        }\n    }\n\n    public componentWillUnmount(): void {\n        for (const event of this.eventsToBeBind) {\n            window.removeEventListener(event, this.handleDocumentClick, true);\n        }\n    }\n\n    public render(): JSX.Element {\n        const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n        return (\n            <div className='ms-store-select__location-line-pickup'>\n                <button\n                    className='ms-store-select__location-line-pickup-menu'\n                    onClick={this._renderDeliveryOptions}\n                    ref={this._pickupListOptionButton}\n                >\n                    {pickupListOptionMenuText}\n                    <span className='ms-store-select__location-line-pickup-span' />\n                </button>\n                {this.state.expandSiteOptions ? (\n                    <ul className='ms-store-select__location-line-pickup-list' role='menu' ref={this._pickupListOptionMenu}>\n                        {pickupmodeList?.map((delivery: DeliveryOption) => {\n                            return (\n                                <li role='menu' className='ms-store-select__location-line-pickup-list-item' key={delivery.Code}>\n                                    <a\n                                        key={delivery.Code}\n                                        data-value={delivery.Code}\n                                        className='ms-store-select__location-line-pickup-list-link'\n                                        tabIndex={0}\n                                        aria-label={delivery.Description}\n                                        onClick={this._onSelect}\n                                        role='menuitem'\n                                    >\n                                        <span className='ms-store-select__location-line-pickup-list-item__text'>\n                                            {delivery.Description}\n                                        </span>\n                                    </a>\n                                </li>\n                            );\n                        })}\n                    </ul>\n                ) : null}\n            </div>\n        );\n    }\n\n    /**\n     * Handle the document click.\n     * @param event -- Event object.\n     */\n    private readonly handleDocumentClick = (event: Event): void => {\n        const htmlElement = event.target as HTMLElement;\n        if (\n            !(\n                (this._pickupListOptionButton.current !== null &&\n                    (event.target === this._pickupListOptionButton.current ||\n                        this._pickupListOptionButton.current.contains(htmlElement))) ||\n                (this._pickupListOptionMenu.current !== null &&\n                    (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n            )\n        ) {\n            this.setState({\n                expandSiteOptions: false\n            });\n        }\n    };\n\n    private _renderDeliveryOptions(event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void {\n        event.stopPropagation();\n        const isExpandSiteOptionsState = this.state.expandSiteOptions;\n        this.setState({\n            expandSiteOptions: !isExpandSiteOptionsState\n        });\n    }\n\n    /**\n     * Select Delivery option.\n     * @param event -- Event Object.\n     */\n    private readonly _onSelect = async (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>): Promise<void> => {\n        event.preventDefault();\n        const deliveryCode = event.currentTarget.getAttribute('data-value');\n        if (deliveryCode && deliveryCode.length > 0) {\n            await this.props.onChange(deliveryCode);\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 { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n    Button,\n    getPayloadObject,\n    getTelemetryAttributes,\n    INodeProps,\n    IPayLoad,\n    ITelemetryContent,\n    NodeTag,\n    TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n    availabilityInfoHeader: string;\n    closedText: string;\n    outOfStock: string;\n    inStock: string;\n    currentLocation: string;\n    selectLocation: string;\n    selectLocationAriaLabelFormat: string;\n    setAsPreferredStoreText: string;\n    setAsPreferredStoreTextAriaLabel: string;\n    preferredStoreText: string;\n    preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n    className?: string;\n    shouldHideStockStatus?: boolean;\n    isCurrentLocation?: boolean;\n    isInStock?: boolean;\n    selectedStore?: IFullOrgUnitAvailability;\n    resources: ISelectedStoreResources;\n    stockStatusLabel?: string;\n    preferredStoreLocationId: string | null;\n    isPreferredStoreEnabled?: boolean;\n    isLocationDisabled?: boolean;\n    telemetryContent?: ITelemetryContent;\n    storePickUpOptionList?: DeliveryOption[];\n    productPickUpOptionList?: DeliveryOption[];\n    preferredDistanceUnit: string;\n    filteredPickupMode?: string;\n    handlers: {\n        onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n        onSetAsPreferredStore(locationId: string | undefined): void;\n        onRemovePreferredStore(): void;\n        closeStoreDetailsModal(): Promise<void>;\n    };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n    isCurrentLocation?: boolean;\n    canSelectLocation?: boolean;\n    selectedStore?: IFullOrgUnitAvailability;\n    deliveryOptions?: DeliveryOption[];\n    isPreferredStore?: boolean;\n    resources: ISelectedStoreResources;\n\n    storeDetailsMain: INodeProps;\n    storeHeader: INodeProps;\n    storeName: React.ReactNode;\n    storeDistance: React.ReactNode;\n    storeDetailsAvailabilityContainer: INodeProps;\n    productAvailability: React.ReactNode;\n    stockStatus: React.ReactNode;\n    currentLocation: React.ReactNode;\n    pickUpDeliveryOptionButton: React.ReactNode;\n    pickupModes?: React.ReactNode;\n    preferredStoreButton?: React.ReactNode;\n    removePreferredStoreButton?: React.ReactNode;\n    storeDetailsCloseButton?: React.ReactNode;\n    handlers: {\n        onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n        onSetAsPreferredStore(locationId: string | undefined): void;\n        onRemovePreferredStore(): void;\n        closeStoreDetailsModal(): Promise<void>;\n    };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n    if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n        props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n    }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n    props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise<void> => {\n    if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n        props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n    }\n    return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n    props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n    if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n        props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n    }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise<void> => {\n    await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n    props: ISelectedStoreProps,\n    deliveryOptionList: DeliveryOption[],\n    pickupInStoreButtonText: string,\n    pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n    if (props.filteredPickupMode === undefined) {\n        return (\n            <PickUpOptionList\n                pickupListOptionMenuText={pickupInStoreButtonText}\n                pickupmodeList={deliveryOptionList}\n                onChange={onChangeHandler(props)}\n            />\n        );\n    }\n    return (\n        <button\n            className='ms-store-select__location-line-select-store'\n            aria-label={pickupInStoreAriaLabel}\n            onClick={onPickupModeSelectHandler(props, props.filteredPickupMode)}\n        >\n            {pickupInStoreButtonText}\n        </button>\n    );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n    const {\n        className,\n        shouldHideStockStatus,\n        isCurrentLocation,\n        isInStock,\n        selectedStore,\n        resources,\n        stockStatusLabel,\n        preferredStoreLocationId,\n        isPreferredStoreEnabled,\n        isLocationDisabled,\n        telemetryContent,\n        storePickUpOptionList,\n        productPickUpOptionList,\n        preferredDistanceUnit\n    } = props;\n\n    const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n    const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n    const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n    const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n    const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n    const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n    // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n    const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n    const canSelectLocation = !shouldHideStockStatus && isInStock;\n    const pickupInStoreButtonText: string = resources.selectLocation;\n    const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n    const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n    const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n    const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n    const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n    const viewProps: ISelectedStoreViewProps = {\n        selectedStore,\n        isCurrentLocation,\n        canSelectLocation,\n        isPreferredStore,\n        resources,\n        deliveryOptions: deliveryOptionList,\n        storeDetailsMain: {\n            tag: 'div' as NodeTag,\n            className: `${parentClassName}__main`\n        },\n        storeHeader: {\n            tag: 'div' as NodeTag,\n            className: `${parentClassName}__header`\n        },\n        storeName: <span className={`${parentClassName}__header_store_name`}>{storeName}</span>,\n        storeDetailsCloseButton: <Button className={`${parentClassName}__header_close_button`} onClick={storeDetailsModalHandler(props)} />,\n        // eslint-disable-next-line prettier/prettier\n        storeDistance: distanceAsString ? <span className={`${parentClassName}__header_store-distance`}>\n        {' '}\n        {distanceAsString}</span> : '',\n        storeDetailsAvailabilityContainer: {\n            tag: 'div' as NodeTag,\n            className: `${parentClassName}__container`\n        },\n        productAvailability: !shouldHideStockStatus && (\n            <p className={`${parentClassName}__container_product-availability`}>{resources.availabilityInfoHeader}</p>\n        ),\n        stockStatus: stockText && <p className={`${parentClassName}__container_stock-status`}>{stockText}</p>,\n        currentLocation: <p className={`${parentClassName}__container_current-location`}>{resources.currentLocation}</p>,\n        pickUpDeliveryOptionButton: (\n            <button\n                className='ms-store-select__location-line-select-store'\n                aria-label={pickupInStoreAriaLabel}\n                onClick={onPickupInStoreClickHandler(props)}\n                {...attributes}\n            >\n                {pickupInStoreButtonText}\n            </button>\n        ),\n        pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n        preferredStoreButton: isPreferredStoreEnabled ? (\n            <button\n                role='checkbox'\n                className='ms-store-select__location-line-item-preferred-store'\n                aria-live='polite'\n                aria-checked='true'\n                aria-label={resources.preferredStoreAriaLabel}\n                onClick={removePreferredStoreHandler(props)}\n                {...removePreferredStoreAttributes}\n            >\n                {resources.preferredStoreText}\n            </button>\n        ) : null,\n        removePreferredStoreButton: isPreferredStoreEnabled ? (\n            <button\n                role='checkbox'\n                className='ms-store-select__location-line-item-set-as-preferred-store'\n                aria-live='polite'\n                aria-checked='false'\n                aria-label={resources.setAsPreferredStoreTextAriaLabel}\n                {...preferredStoreAttributes}\n                onClick={onSetPreferredStoreClickHandler(props)}\n            >\n                {resources.setAsPreferredStoreText}\n            </button>\n        ) : null,\n        handlers: {\n            onSelected: props.handlers.onSelected,\n            onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n            onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n            closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n        }\n    };\n\n    return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n    startDayShort: string;\n    startDayFull: string;\n    endDayShort?: string;\n    endDayFull?: string;\n    timeRange: string;\n}\n\ninterface IHoursInfo {\n    isClosed: boolean;\n    openTime?: number;\n    closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n    if (seconds === undefined) {\n        return undefined;\n    }\n    let hours = Math.floor(seconds / (60 * 60));\n    const ampm = hours >= 12 ? 'pm' : 'am';\n    hours %= 12;\n    hours = hours ? hours : 12;\n    const divisorForMinutes = seconds % (60 * 60);\n    const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n    return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n    switch (day) {\n        case 'MON':\n            return resources.days.monday;\n        case 'TUE':\n            return resources.days.tuesday;\n        case 'WED':\n            return resources.days.wednesday;\n        case 'THU':\n            return resources.days.thursday;\n        case 'FRI':\n            return resources.days.friday;\n        case 'SAT':\n            return resources.days.saturday;\n        default:\n            // Case 'SUN':\n            return resources.days.sunday;\n    }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n    switch (day) {\n        case 'MON':\n            return resources.days.mondayFull;\n        case 'TUE':\n            return resources.days.tuesdayFull;\n        case 'WED':\n            return resources.days.wednesdayFull;\n        case 'THU':\n            return resources.days.thursdayFull;\n        case 'FRI':\n            return resources.days.fridayFull;\n        case 'SAT':\n            return resources.days.saturdayFull;\n        default:\n            // Case 'SUN':\n            return resources.days.sundayFull;\n    }\n};\n\nconst buildHoursDisplayInfo = (\n    startDay: DayType,\n    endDay: DayType,\n    hoursInfo: string,\n    resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n    return {\n        startDayShort: getShortTimeString(startDay, resources),\n        startDayFull: getFullTimeString(startDay, resources),\n        endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n        endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n        timeRange: hoursInfo\n    };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n    if (firstLine.isClosed && secondLine.isClosed) {\n        return true;\n    }\n\n    if (!firstLine.isClosed && !secondLine.isClosed) {\n        return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n    }\n\n    return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n    return {\n        isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n        openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n        closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n    };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n    if (hoursInfo.isClosed) {\n        return resources.closedText;\n    }\n    const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n    const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n    return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n    const storeHoursList: IHoursDisplayInfo[] = [];\n\n    const mondayHours = getStoreHoursData(storeHours, 'Monday');\n    const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n    const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n    const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n    const fridayHours = getStoreHoursData(storeHours, 'Friday');\n    const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n    const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n    let periodStart: DayType = 'MON';\n    let periodEnd: DayType = 'MON';\n\n    if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n        storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n        periodStart = 'TUE';\n    }\n    periodEnd = 'TUE';\n\n    if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n        storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n        periodStart = 'WED';\n    }\n    periodEnd = 'WED';\n\n    if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n        storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n        periodStart = 'THU';\n    }\n    periodEnd = 'THU';\n\n    if (!shouldMergeLines(thursdayHours, fridayHours)) {\n        storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n        periodStart = 'FRI';\n    }\n    periodEnd = 'FRI';\n\n    if (!shouldMergeLines(fridayHours, saturdayHours)) {\n        storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n        periodStart = 'SAT';\n    }\n    periodEnd = 'SAT';\n\n    if (!shouldMergeLines(saturdayHours, sundayHours)) {\n        storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n        periodStart = 'SUN';\n    }\n    periodEnd = 'SUN';\n\n    storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n    return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n    getPayloadObject,\n    getTelemetryAttributes,\n    IPayLoad,\n    ITelemetryContent,\n    TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n    contactInfoHeader: string;\n    storeHoursHeader: string;\n    availabilityInfoHeader: string;\n\n    closedText: string;\n\n    outOfStock: string;\n    inStock: string;\n\n    currentLocation: string;\n    selectLocation: string;\n    selectLocationAriaLabelFormat: string;\n    setAsPreferredStoreText: string;\n    setAsPreferredStoreTextAriaLabel: string;\n    preferredStoreText: string;\n    preferredStoreAriaLabel: string;\n    pickupDeliveryOptionErrorMessage?: string;\n\n    days: {\n        monday: string;\n        tuesday: string;\n        wednesday: string;\n        thursday: string;\n        friday: string;\n        saturday: string;\n        sunday: string;\n        mondayFull: string;\n        tuesdayFull: string;\n        wednesdayFull: string;\n        thursdayFull: string;\n        fridayFull: string;\n        saturdayFull: string;\n        sundayFull: string;\n    };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n    location: OrgUnitLocation;\n    storeHours?: StoreHours;\n\n    hideStockStatus?: boolean;\n    isInStock?: boolean;\n    isCurrentLocation?: boolean;\n\n    resources: IStoreSelectorLocationLineItemResources;\n    stockStatusLabel?: string;\n    storeLocatorView?: boolean;\n    isPreferredStoreEnabled?: boolean;\n    index: string;\n    preferredStoreLocationId: string | null;\n    storePickUpOptionList?: DeliveryOption[];\n    productPickUpOptionList?: DeliveryOption[];\n    filteredPickupMode?: string;\n    shouldShowIndex?: boolean;\n\n    /**\n     * The telemetry content.\n     */\n    telemetryContent?: ITelemetryContent;\n    preferredDistanceUnit: string;\n    isLocationDisabled?: boolean;\n    handlers: {\n        onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n        onSetAsPreferredStore(locationId: string | undefined): void;\n        onRemovePreferredStore(): void;\n    };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n    onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n        props.handlers.onSelected(props.location, deliveryMode);\n    },\n    onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n        props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n    },\n    onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n        props.handlers.onRemovePreferredStore();\n    }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n    storeHours: StoreHours | undefined,\n    location: OrgUnitLocation,\n    resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n    // First, use the store hours. This will allow listing day by day houts\n    if (storeHours?.RegularStoreHours) {\n        const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n        return (\n            <div className='ms-store-select__store-hours-details-group'>\n                {storeHoursList.map(displayTime => (\n                    <div className='ms-store-select__store-hours-details' key={JSON.stringify(displayTime)}>\n                        {displayTime.endDayShort ? (\n                            <div className='ms-store-select__store-hours-day'>\n                                <abbr title={displayTime.startDayFull}>{displayTime.startDayShort}</abbr>–\n                                <abbr title={displayTime.endDayFull}>{displayTime.endDayShort}</abbr>\n                            </div>\n                        ) : (\n                            <div className='ms-store-select__store-hours-day'>\n                                <abbr title={displayTime.startDayFull}>{displayTime.startDayShort}</abbr>\n                            </div>\n                        )}\n                        <div className='ms-store-select__store-hours-time'>{displayTime.timeRange}</div>\n                    </div>\n                ))}\n            </div>\n        );\n    }\n\n    // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n    const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n    const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n    return (\n        <div className='ms-store-select__store-hours-details'>\n            {storeOpenFrom}-{storeOpenTo}\n        </div>\n    );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n    distance: number | undefined,\n    preferredDistanceUnit: string,\n    isLocationDisabled?: boolean\n): string | undefined => {\n    if (distance === undefined || isLocationDisabled) {\n        return undefined;\n    } else if (distance < 1) {\n        return `(<1 ${preferredDistanceUnit})`;\n    }\n    return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n    if (!contacts) {\n        return undefined;\n    }\n\n    const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n    if (ArrayExtensions.hasElements(allPhoneContacts)) {\n        const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n        if (primaryPhoneContact) {\n            return primaryPhoneContact.Locator;\n        }\n\n        return allPhoneContacts[0].Locator;\n    }\n\n    return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n    storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n    storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n    storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise<void> => {\n    storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n    return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n    props: IStoreSelectorLocationLineItemProps,\n    deliveryOptionList: DeliveryOption[],\n    pickupInStoreButtonText: string,\n    pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n    if (props.filteredPickupMode === undefined) {\n        return (\n            <PickUpOptionList\n                pickupListOptionMenuText={pickupInStoreButtonText}\n                pickupmodeList={deliveryOptionList}\n                onChange={onChangeHandler(props)}\n            />\n        );\n    }\n    return (\n        <button\n            className='ms-store-select__location-line-select-store'\n            aria-label={pickupInStoreAriaLabel}\n            onClick={onPickupModeSelectHandler(props, props.filteredPickupMode)}\n        >\n            {pickupInStoreButtonText}\n        </button>\n    );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n    productdeliveryOptions: DeliveryOption[] | undefined,\n    storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n    const deliveryOption: DeliveryOption[] = [];\n    productdeliveryOptions?.map(delivery => {\n        const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n        if (pickup) {\n            deliveryOption.push(pickup);\n        }\n    });\n\n    return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC<IStoreSelectorLocationLineItemProps> = (props: IStoreSelectorLocationLineItemProps) => {\n    const {\n        hideStockStatus,\n        isCurrentLocation,\n        isInStock,\n        location,\n        resources,\n        storeHours,\n        stockStatusLabel,\n        storeLocatorView,\n        index,\n        preferredStoreLocationId,\n        isPreferredStoreEnabled,\n        isLocationDisabled,\n        telemetryContent,\n        storePickUpOptionList,\n        productPickUpOptionList,\n        shouldShowIndex\n    } = props;\n\n    const storeName: string | undefined = location.OrgUnitName;\n    const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n    const storeAddress: string | undefined = location.Address;\n    const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n    const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n    const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n    const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n    const canSelectLocation = hideStockStatus || isInStock;\n    const pickupInStoreButtonText: string = resources.selectLocation;\n    const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n    const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n    const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n    const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n    const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n    const [isError, setError] = React.useState(false);\n\n    const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n        if (deliveryOptionList.length === 0) {\n            setError(true);\n        } else {\n            storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n        }\n    };\n\n    /* eslint-disable prettier/prettier */\n    return (\n        <div className='ms-store-select__location-line-item'>\n            <div className='ms-store-select__location-line-item-header'>\n                {(shouldShowIndex || storeLocatorView) && <span className='ms-store-select__location-line-item-store-index'>{index}</span>}\n                <span className='ms-store-select__location-line-item-store-name'>{storeName}</span>\n                {distanceAsString ? <span className='ms-store-select__location-line-item-store-distance'>\n                {' '}\n                {distanceAsString}\n                </span> : false}\n            </div>\n            <div className='ms-store-select__location-line-item-content'>\n                <div className='ms-store-select__location-line-item-contact-info'>\n                    <p className='ms-store-select__location-line-header'>{resources.contactInfoHeader}</p>\n                    {storeAddress && (\n                        <div className='ms-store-select__location-line-shop-address-section'>\n                            <span className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon' />\n                            <span className='ms-store-select__location-line-shop-address-text'>{storeAddress}</span>\n                        </div>\n                    )}\n                    {phoneNumber && (\n                        <div className='ms-store-select__location-line-shop-phone-section'>\n                            <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\n                            <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\n                        </div>\n                    )}\n                </div>\n                <div className='ms-store-select__location-line-item-store-hours'>\n                    <p className='ms-store-select__location-line-header'>{resources.storeHoursHeader}</p>\n                    {renderStoreHours(storeHours, location, resources)}\n                </div>\n                {!storeLocatorView && (\n                    <div className='ms-store-select__location-line-item-store-availability'>\n                        {!hideStockStatus && <p className='ms-store-select__location-line-header'>{resources.availabilityInfoHeader}</p>}\n                        {stockText && <p className='ms-store-select__location-line-stock-status'>{stockText}</p>}\n                        {isCurrentLocation ? (\n                            <p className='ms-store-select__location-line-current-location'>{resources.currentLocation}</p>\n                        ) : canSelectLocation ? (\n                            deliveryOptionList.length === 0 ? (\n                                <button\n                                    className='ms-store-select__location-line-select-store'\n                                    aria-label={pickupInStoreAriaLabel}\n                                    onClick={pickUpButtonClickHandler(props)}\n                                    {...attributes}\n                                >\n                                    {pickupInStoreButtonText}\n                                </button>\n                            ) : (\n                                renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n                            )\n                        ) : (\n                            false\n                        )}\n                    </div>\n                )}\n                {isPreferredStoreEnabled ? (\n                    isPreferredStore ? (\n                        <button\n                            role='checkbox'\n                            className='ms-store-select__location-line-item-preferred-store'\n                            aria-live='polite'\n                            aria-checked='true'\n                            aria-label={resources.preferredStoreAriaLabel}\n                            onClick={removePreferredStoreHandler(props)}\n                            {...removePreferredStoreAttributes}\n                        >\n                            {resources.preferredStoreText}\n                        </button>\n                    ) : (\n                        <button\n                            role='checkbox'\n                            className='ms-store-select__location-line-item-set-as-preferred-store'\n                            aria-live='polite'\n                            aria-checked='false'\n                            aria-label={resources.setAsPreferredStoreTextAriaLabel}\n                            {...preferredStoreAttributes}\n                            onClick={onSetPreferredStoreClickHandler(props)}\n                        >\n                            {resources.setAsPreferredStoreText}\n                        </button>\n                    )\n                ) : null}\n            </div>\n            {isError ? (\n                <span className='ms-store-select__location-line-pickup-list-error msc-alert msc-alert-noborder msc-alert-danger'>\n                    <span className='msi-exclamation-triangle' aria-hidden='true' />\n                    <span>{props.resources.pickupDeliveryOptionErrorMessage}</span>\n                </span>\n            ) : ('')}\n        </div>\n    );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n    props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// <reference types=\"bingmaps\" />\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n    ArrayExtensions,\n    getFullAvailableInventoryNearby,\n    GetFullAvailableInventoryNearbyInput,\n    getOrgUnitLocationsByArea,\n    GetOrgUnitLocationsByAreaInput,\n    IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n    getTelemetryObject,\n    IModuleProps,\n    INodeProps,\n    isMobile,\n    ITelemetryContent,\n    Modal,\n    ModalBody,\n    ModalFooter,\n    ModalHeader,\n    NodeTag,\n    VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n    StoreSelectorEmptyMessage,\n    StoreSelectorFoundLocationsMessage,\n    StoreSelectorLocationLines,\n    StoreSelectorSearchForm,\n    StoreSelectorTermsOfService,\n    StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n    IStoreSelectorProps,\n    IStoreSelectorResources,\n    mode as modeEnum,\n    searchRadiusUnit as SearchRadiusUnit,\n    style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n    isSearchInProgress: boolean;\n    searchTerm?: string;\n    isSeeAllStoreValue: boolean;\n    isLocationDisabled?: boolean;\n    filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps<IStoreSelectorData> {\n    state: IStoreSelectorState;\n\n    // Containers:\n    ModuleProps: IModuleProps;\n    BodyContainerProps: INodeProps;\n    FooterContainerProps: INodeProps;\n    HeaderContainerProps: INodeProps;\n    HeaderProps?: React.ReactNode;\n\n    // Components\n    locationsMessage?: React.ReactNode;\n    search?: React.ReactNode;\n    spinner?: React.ReactNode;\n    locationsList?: React.ReactNode;\n    selectedLocation?: ISelectedStoreViewProps;\n    noLocationsMessage?: React.ReactNode;\n    terms?: React.ReactNode;\n    headerText?: React.ReactNode;\n    sortLocations?: IFullOrgUnitAvailability[];\n    locationListProps?: IStoreSelectorLocationLineItemProps[];\n    bodyWrapperProps?: INodeProps;\n    storeResultContainerProps?: INodeProps;\n    mapContainerProps?: INodeProps;\n    maps?: React.ReactNode;\n    isMobileView?: boolean;\n    storeDetailsModal?: INodeProps;\n\n    callbacks: {\n        closeDialog(): Promise<void>;\n        searchTermChanged(searchTerm: string): Promise<void>;\n        performSearch(searchTerm: string): Promise<void>;\n        selectedLocation(location: OrgUnitLocation | undefined): Promise<void>;\n        getAndUpdateUserLocation(): Promise<void>;\n        attachMapAutoSuggest(): Promise<void>;\n        onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise<void>;\n        setPreferredStore(storeId: string | undefined): Promise<void>;\n        removePreferredStore(): Promise<void>;\n        setSelectedStore(storeId: string | undefined): Promise<void>;\n        setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise<void>;\n    };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n    contactInfoHeader: string;\n    storeHoursHeader: string;\n    availabilityInfoHeader: string;\n    closedText: string;\n    outOfStock: string;\n    inStock: string;\n    currentLocation: string;\n    selectLocation: string;\n    selectLocationAriaLabelFormat: string;\n    setAsPreferredStoreText: string;\n    setAsPreferredStoreTextAriaLabel: string;\n    preferredStoreText: string;\n    preferredStoreAriaLabel: string;\n\n    days: {\n        monday: string;\n        tuesday: string;\n        wednesday: string;\n        thursday: string;\n        friday: string;\n        saturday: string;\n        sunday: string;\n        mondayFull: string;\n        tuesdayFull: string;\n        wednesdayFull: string;\n        thursdayFull: string;\n        fridayFull: string;\n        saturdayFull: string;\n        sundayFull: string;\n    };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n    openFrom?: string;\n    openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n    location: OrgUnitLocation;\n    storeHours?: StoreHours;\n    storeHoursList?: IHoursDisplayInfo[];\n\n    hideStockStatus?: boolean;\n    isInStock?: boolean;\n    isCurrentLocation?: boolean;\n\n    resources: IStoreSelectorLocationLineItemResources;\n    stockStatusLabel?: string;\n    storeLocatorView?: boolean;\n    isPreferredStoreEnabled?: boolean;\n    index: string;\n    preferredStoreLocationId: string | null;\n    storePickUpOptionList?: DeliveryOption[];\n    productPickUpOptionList?: DeliveryOption[];\n    selectedStoreLocationId?: string;\n    locationOpen?: ILocationHours;\n\n    /**\n     * The telemetry content.\n     */\n    telemetryContent?: ITelemetryContent;\n    preferredDistanceUnit: string;\n    isLocationDisabled?: boolean;\n    handlers: {\n        onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n        onSetAsPreferredStore(locationId: string | undefined): void;\n        onRemovePreferredStore(): void;\n        closeStoreDetailsModal(): Promise<void>;\n    };\n    onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component<IPickUpInStoreProps<IPickUpInStoreData>>}\n */\n@observer\nclass StoreSelector extends React.Component<IStoreSelectorProps<IStoreSelectorData>, IStoreSelectorState> {\n    private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n    private readonly telemetryContent: ITelemetryContent;\n\n    private storeCounter: number;\n\n    private isPreferredStoreEnabled?: boolean;\n\n    public constructor(props: IStoreSelectorProps<IStoreSelectorData>) {\n        super(props);\n        // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n        this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n        this.telemetryContent = getTelemetryObject(\n            this.props.context.request.telemetryPageName!,\n            this.props.friendlyName,\n            this.props.telemetry\n        );\n        this.storeCounter = 0;\n    }\n\n    public async componentDidMount(): Promise<void> {\n        const {\n            context: {\n                actionContext: {\n                    requestContext: { channel }\n                }\n            },\n            config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n        } = this.props;\n\n        // Adding Timeout to make sure it loads the data based upon the preferred store.\n        setTimeout(() => {\n            this._getAndUpdateStoreLocation();\n        }, 0);\n\n        reaction(\n            () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n            async () => {\n                const context = this.props.data.storeSelectorStateManager.result?.context;\n                if (context?.id === this.props.id) {\n                    this._getAndUpdateStoreLocation();\n                }\n            }\n        );\n\n        reaction(\n            () => this.props.data.storeSelectorStateManager.result?.context?.id,\n            async () => {\n                const context = this.props.data.storeSelectorStateManager.result?.context;\n                if (!context || context.id === this.props.id) {\n                    await this._searchTermChanged('');\n                    this._getAndUpdateStoreLocation();\n                }\n            }\n        );\n\n        if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n            await this.props.data.storeSelectorStateManager.result.loadMapApi({\n                key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n                lang: this.props.context.actionContext.requestContext.locale,\n                market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n            });\n        }\n\n        reaction(\n            () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n            () => {\n                this.props.data.storeSelectorStateManager.result?.loadMapApi({\n                    key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n                    lang: this.props.context.actionContext.requestContext.locale,\n                    market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n                });\n            }\n        );\n\n        reaction(\n            () => this.props.data.availabilitiesWithHours.result,\n            async () => {\n                if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n                    const storeLocationList = this.props.data.availabilitiesWithHours.result;\n                    if (storeLocationList) {\n                        await this._setOrgUnitStoreInformation(storeLocationList);\n                    }\n                }\n            }\n        );\n\n        if (isAutoSuggestionEnabled) {\n            when(\n                () => {\n                    const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n                    const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n                    const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n                    return isMapApiLoaded && isDialogOpen && isSameContext;\n                },\n                () => {\n                    setTimeout(async () => {\n                        await this._attachMapAutoSuggest();\n                    }, 0);\n                }\n            );\n        }\n    }\n\n    public shouldComponentUpdate(): boolean {\n        const {\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n        const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n        if (context && context.id === this.props.id) {\n            return true;\n        }\n        return false;\n    }\n\n    // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n    public render(): JSX.Element {\n        const {\n            config: {\n                termsOfServiceLink,\n                className,\n                heading,\n                mode,\n                style,\n                setAsPreferredStore: shouldSetAsPreferredStore,\n                showAllStores: shouldShowAllStores,\n                lookupRadius,\n                enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n                searchRadiusUnit\n            },\n            context: {\n                telemetry,\n                app: { config: appConfig },\n                actionContext: {\n                    requestContext: { channel, cookies }\n                }\n            },\n            slots: { maps: mapSlot },\n            resources,\n            data: {\n                availabilitiesWithHours: { result: availabilitiesWithHours },\n                storeSelectorStateManager: { result: storeSelectorStateManager },\n                storeLocations: { result: storeLocations }\n            }\n        } = this.props;\n\n        this.storeCounter = 0;\n        const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n        const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n        const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n        const isDialogOpen: boolean = storeSelectorStateManager\n            ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n            : false;\n        const styleDefault = style !== undefined ? style : styleEnum.dialog;\n        const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n        const isInlineView = styleDefault === styleEnum.inline;\n        const isLocatorView = modeDefault === modeEnum.findStores;\n        const shouldHideInventory = isLocatorView;\n        const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n        const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n        const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n        this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n        const canShowLocationView =\n            context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n        const storeSelectorActions = {\n            async toggleListMapViewState(): Promise<void> {\n                await storeSelectorStateManager?.toggleListMapViewState();\n            }\n        };\n\n        if (!channel?.BingMapsApiKey) {\n            telemetry.error('BingMapsApiKey is missing.');\n        }\n\n        const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n        const preferredDistanceUnit =\n            searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n        const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n        let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n        const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n        const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n        const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n        if (this.state.filteredPickupMode && storeLocationList) {\n            storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n        }\n\n        let sortLocation = null;\n        if (storeLocationList) {\n            sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n        }\n\n        const locationListProps = this._getStoreLocationListProps(\n            isEnableOutofStock,\n            isLocatorView,\n            preferredLocationId,\n            this.isPreferredStoreEnabled,\n            selectedStoreLocationId,\n            sortLocation ?? null,\n            preferredDistanceUnit,\n            alreadySelectedLocation,\n            productPickUpOptionList\n        );\n\n        const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n        const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n        const viewProps: IStoreSelectorViewProps = {\n            ...(this.props as IStoreSelectorProps<IStoreSelectorData>),\n            state: this.state,\n            maps: hasMapSlot ? mapSlot[0] : undefined,\n\n            ModuleProps: {\n                tag: isInlineView ? ('div' as NodeTag) : Modal,\n                moduleProps: this.props,\n                className: classname(\n                    `ms-store-${isInlineView ? 'locate' : 'select'}`,\n                    className,\n                    dialogClassName,\n                    isInlineView ? '' : 'msc-modal-input-required'\n                ),\n                autoFocus: true,\n                fade: true,\n                isOpen: isDialogOpen,\n                'aria-label': configHeading,\n                onClosed: this._closeDialog,\n                horizontalPosition: 'center',\n                verticalPosition: 'center',\n                toggle: this._closeDialog\n            },\n            isMobileView: isMobileDevice,\n            HeaderContainerProps: {\n                tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n                className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n                toggle: this._closeDialog\n            },\n            HeaderProps: configHeading && (\n                <Msdyn365.Text\n                    className='msc-modal__title'\n                    {...configHeading}\n                    tag='h2'\n                    text={configHeading}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            FooterContainerProps: {\n                tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n                className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n            },\n            BodyContainerProps: {\n                tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n                className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n            },\n            bodyWrapperProps: {\n                tag: 'div' as NodeTag,\n                className: 'ms-store-select__body_wrapper'\n            },\n            storeResultContainerProps: {\n                tag: 'div' as NodeTag,\n                className: 'ms-store-select__store_container'\n            },\n            mapContainerProps: {\n                tag: 'div' as NodeTag,\n                className: 'ms-store-select__map_container'\n            },\n            storeDetailsModal: {\n                tag: 'div' as NodeTag,\n                className: `ms-store-select__map__selected_store__modal ${\n                    selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n                }`\n            },\n            locationsMessage: !this.state.isLocationDisabled && (\n                <StoreSelectorFoundLocationsMessage\n                    resources={resources}\n                    locations={storeLocationList}\n                    searchRadius={lookupRadius || 50}\n                    preferredDistanceUnit={preferredDistanceUnit}\n                    isSeeAllStore={this.state.isSeeAllStoreValue}\n                />\n            ),\n            selectedLocation: this.renderSelectedStore(\n                shouldHideInventory,\n                preferredDistanceUnit,\n                preferredStore,\n                this.isPreferredStoreEnabled,\n                isEnableOutofStock,\n                productPickUpOptionList,\n                shouldDisplayList\n            ),\n            search: (\n                <StoreSelectorSearchForm\n                    value={this.state.searchTerm || ''}\n                    resources={resources}\n                    performSearch={this._performSearch}\n                    searchTermChanged={this._searchTermChanged}\n                    isMapDisabled={isMapDisabled}\n                    showAllStores={shouldShowAllStores}\n                    id={this.props.id}\n                    onShowAllStores={this.onShowAllStoresHandler}\n                    onToggleListMapViewState={storeSelectorActions.toggleListMapViewState}\n                    displayList={shouldDisplayList}\n                    locatorView={canShowLocationView}\n                    productPickUpDeliveryOptions={storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions}\n                    telemetryContent={this.telemetryContent}\n                    filterPickupModeSelected={this.onFilteredPickupMode}\n                    hasEnabledPickupFilterToShowStore={hasEnablePickupFilterToShowStore}\n                    filteredPickupMode={this.state.filteredPickupMode}\n                />\n            ),\n            spinner: <StoreSelectorWaiting />,\n            locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n                <StoreSelectorLocationLines\n                    locations={storeLocationList}\n                    resources={resources}\n                    preferredDistanceUnit={preferredDistanceUnit}\n                    alreadySelectedLocation={context ? context.alreadySelectedLocation : undefined}\n                    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- Reading config value.\n                    outOfStockThreshold={appConfig.outOfStockThreshold || 0}\n                    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- Reading config value.\n                    enableOutOfStockCheck={appConfig.enableStockCheck || false}\n                    onLocationSelected={this._onOrgUnitLocationSelected}\n                    storeLocatorView={isLocatorView}\n                    selectedStoreLocationId={selectedStoreLocationId}\n                    onClick={this._setSelectedStore}\n                    preferredStoreLocationId={preferredStore?.StoreId ? preferredStore.StoreId : ''}\n                    onSetAsPreferredStore={this._setPreferredStore}\n                    onRemovePreferredStore={this._removePreferredStore}\n                    isPreferredStoreEnabled={this.isPreferredStoreEnabled}\n                    displayList={shouldDisplayList}\n                    telemetryContent={this.telemetryContent}\n                    isLocationDisabled={this.state.isLocationDisabled}\n                    productPickUpDeliveryOptions={storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions}\n                    filteredPickupMode={this.state.filteredPickupMode}\n                    shouldShowIndex={hasMapSlot}\n                />\n            ) : (\n                undefined\n            ),\n            noLocationsMessage: <StoreSelectorEmptyMessage resources={resources} />,\n            terms: (\n                <StoreSelectorTermsOfService\n                    link={termsOfServiceLink}\n                    onTextChange={this.handleLinkTextChange}\n                    requestContext={this.props.context.request}\n                />\n            ),\n\n            // Not being used in current context, we can use it here to pass more props.\n            headerText: (\n                <span>{heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}</span>\n            ),\n            sortLocations: sortLocation,\n            locationListProps,\n            callbacks: {\n                searchTermChanged: this._searchTermChanged,\n                performSearch: this._performSearch,\n                closeDialog: this._closeDialog,\n                selectedLocation: this._onOrgUnitLocationSelected,\n                getAndUpdateUserLocation: async () => {\n                    this._getAndUpdateStoreLocation();\n                    return Promise.resolve();\n                },\n                attachMapAutoSuggest: this._attachMapAutoSuggest,\n                onSuggestionSelected: this._onOrgUnitLocationSelected,\n                setPreferredStore: this._setPreferredStore,\n                removePreferredStore: this._removePreferredStore,\n                setSelectedStore: this._setSelectedStore,\n                setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n            }\n        } as IStoreSelectorViewProps;\n\n        return this.props.renderView(viewProps) as React.ReactElement;\n    }\n\n    /**\n     * Render the selected store for the mobile devices.\n     * @param shouldHideInventory -- Hide Inventory.\n     * @param preferredDistanceUnit -- Preferred Distance Unit.\n     * @param preferredStore -- Preferred Store.\n     * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n     * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n     * @param productPickUpOptionList -- Product pickup option list.\n     * @param shouldDisplayList - Should Display list.\n     * @returns -- Returns the view props.\n     */\n    public renderSelectedStore = (\n        shouldHideInventory: boolean,\n        preferredDistanceUnit: string,\n        preferredStore: IStoreInfo | undefined,\n        isPreferredStoreEnabled: boolean | undefined,\n        hasEnabledOutOfStockCheck: boolean,\n        productPickUpOptionList?: DeliveryOption[],\n        shouldDisplayList?: boolean\n    ): ISelectedStoreViewProps | undefined => {\n        const {\n            resources,\n            data: {\n                availabilitiesWithHours: { result: availabilitiesWithHours },\n                storeSelectorStateManager: { result: storeSelectorStateManager },\n                storeLocations: { result: storeLocations }\n            }\n        } = this.props;\n\n        const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n        const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n        const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n            store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n        );\n        const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n        const selectedStoreResources = this._mapResources(resources);\n\n        if (!shouldDisplayList && selectedStore) {\n            const selectedProps: ISelectedStoreProps = {\n                shouldHideStockStatus: shouldHideInventory,\n                isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n                isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n                selectedStore,\n                resources: selectedStoreResources,\n                stockStatusLabel: this._stockInventoryLabel(selectedStore),\n                preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n                isPreferredStoreEnabled,\n                isLocationDisabled: this.state.isLocationDisabled,\n                telemetryContent: this.telemetryContent,\n                storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n                productPickUpOptionList,\n                preferredDistanceUnit,\n                handlers: {\n                    onSelected: this._onOrgUnitLocationSelected,\n                    onSetAsPreferredStore: this._setPreferredStore,\n                    onRemovePreferredStore: this._removePreferredStore,\n                    closeStoreDetailsModal: this._closeStoreDetailModal\n                }\n            };\n\n            return SelectedStoreComponent(selectedProps);\n        }\n\n        return undefined;\n    };\n\n    /**\n     * Method to be called on link text change.\n     * @param event -Content Edit Event.\n     */\n    public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n        if (this.props.config.termsOfServiceLink) {\n            this.props.config.termsOfServiceLink.linkText = event.target.value;\n        }\n    };\n\n    /**\n     * Method to be called on heading change.\n     * @param event -Content Edit Event.\n     */\n    public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n        this.props.config.heading = event.target.value;\n    };\n\n    /**\n     * Show all stores handler function.\n     */\n    private readonly onShowAllStoresHandler = () => {\n        this._getAndUpdateStoreLocation(true);\n        this.setState({ filteredPickupMode: undefined });\n    };\n\n    /**\n     * Method to be called for filtered the store location based on the filter selected by the user.\n     * @param stores -All the stores from the API.\n     * @param filteredPickupMode -Filter selected by the user.\n     * @returns -Filtered stores.\n     */\n    private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n        return stores.filter(location => {\n            return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n                return deliveryOption.Code === filteredPickupMode;\n            });\n        });\n    };\n\n    /**\n     * Filter Store by pickup mode.\n     * @param deliveryCode -Delivery Code.\n     */\n    private readonly onFilteredPickupMode = (deliveryCode: string) => {\n        this.setState({ filteredPickupMode: deliveryCode });\n    };\n\n    /**\n     * Method will sort all stores.\n     * @param stores -Stores List.\n     * @param isPreferredStoreEnabled -Module config value.\n     * @param preferredStoreLocationId -Store Id.\n     * @returns List of Stores.\n     */\n    // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n    private _sortStores(\n        stores: IFullOrgUnitAvailability[],\n        isPreferredStoreEnabled: boolean | undefined,\n        preferredStoreLocationId: string\n    ): IFullOrgUnitAvailability[] {\n        const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n            isPreferredStoreEnabled &&\n            preferredStoreLocationId &&\n            value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n        return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n    }\n\n    /**\n     * Method will list of store selector location line.\n     * @param hasEnabledOutOfStockCheck -Stores List.\n     * @param isStoreLocatorView -Module config value.\n     * @param preferredStoreLocationId -Store Id.\n     * @param isPreferredStoreEnabled -Stores List.\n     * @param selectedStoreLocationId -Module config value.\n     * @param stores -Store Id.\n     * @param preferredDistanceUnit -Module config value.\n     * @param alreadySelectedLocation -Already Selected Location.\n     * @param productPickUpOptionList -Product supported Pickup Modes List.\n     * @returns List of StoreSelectorLocation Line.\n     */\n    private _getStoreLocationListProps(\n        hasEnabledOutOfStockCheck: boolean,\n        isStoreLocatorView: boolean,\n        preferredStoreLocationId: string,\n        isPreferredStoreEnabled: boolean | undefined,\n        selectedStoreLocationId: string | undefined,\n        stores: IFullOrgUnitAvailability[] | null,\n        preferredDistanceUnit?: string | undefined,\n        alreadySelectedLocation?: OrgUnitLocation,\n        productPickUpOptionList?: DeliveryOption[]\n    ): IStoreSelectorLocationLineItemProps[] {\n        const storeList: IStoreSelectorLocationLineItemProps[] = [];\n        if (ArrayExtensions.hasElements(stores)) {\n            stores.map((store, index: number) => {\n                const storeLineProps = this._createStoreLocationList(\n                    store,\n                    index,\n                    hasEnabledOutOfStockCheck,\n                    isStoreLocatorView,\n                    preferredStoreLocationId,\n                    isPreferredStoreEnabled,\n                    selectedStoreLocationId,\n                    preferredDistanceUnit,\n                    alreadySelectedLocation,\n                    productPickUpOptionList\n                );\n                if (storeLineProps) {\n                    storeList.push(storeLineProps);\n                }\n            });\n        }\n        return storeList;\n    }\n\n    /**\n     * Initialize Map AutoSuggest.\n     */\n    private readonly _attachMapAutoSuggest = async (): Promise<void> => {\n        const {\n            config: { autoSuggestOptions },\n            context: {\n                telemetry,\n                actionContext: {\n                    requestContext: { channel }\n                }\n            },\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n\n        if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n            Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n                /**\n                 * Callback for the autosuggest API.\n                 */\n                callback: () => {\n                    const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n                    this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n                    this.autoSuggestManager.attachAutosuggest(\n                        `#ms-store-select__search-box_${this.props.id}`,\n                        `#ms-store-select__search-box-container_${this.props.id}`,\n                        this._onSuggestionSelected\n                    );\n                },\n\n                /**\n                 * Error call back for autosuggest API.\n                 */\n                errorCallback: () => {\n                    if (telemetry) {\n                        telemetry.debug('Unable to attach map auto suggest.');\n                    }\n                },\n                credentials: channel?.BingMapsApiKey\n            });\n        }\n    };\n\n    /**\n     * On Selecting Location Suggestion.\n     * @param result - Map Suggestions List.\n     */\n    private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise<void> => {\n        const context = this.props.data.storeSelectorStateManager.result?.context;\n        if (context && context.id === this.props.id) {\n            await this._searchTermChanged(result.formattedSuggestion);\n            await this._performSearch(result.formattedSuggestion);\n        }\n    };\n\n    /**\n     * On Selecting Preferred Store.\n     * @param storeId - Store Id.\n     */\n    private readonly _setPreferredStore = async (storeId: string | undefined): Promise<void> => {\n        if (!storeId) {\n            return;\n        }\n\n        const {\n            context: {\n                actionContext: {\n                    requestContext: { cookies }\n                }\n            },\n            config: { mode },\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager },\n                storeLocations: { result: storeLocations },\n                availabilitiesWithHours: { result: availabilitiesWithHours }\n            }\n        } = this.props;\n\n        if (!storeSelectorStateManager) {\n            return;\n        }\n        const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n        let stores: IFullOrgUnitAvailability[];\n        if (modeDefault === modeEnum.findStores && storeLocations) {\n            stores = storeLocations;\n        } else {\n            stores = availabilitiesWithHours!;\n        }\n\n        const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n        await storeSelectorStateManager.setPreferredStoreLocation(\n            storeId,\n            preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n            cookies.isConsentGiven(),\n            preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n            preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n        );\n    };\n\n    /**\n     * On Removing Preferred Store.\n     */\n    private readonly _removePreferredStore = async (): Promise<void> => {\n        const {\n            context: {\n                actionContext: {\n                    requestContext: { cookies }\n                }\n            },\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n\n        if (!storeSelectorStateManager) {\n            return;\n        }\n\n        await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n    };\n\n    /**\n     * Method called to close the store details modal that comes up on clicking the pushpin.\n     * @returns Void promise.\n     */\n    private readonly _closeStoreDetailModal = async (): Promise<void> => {\n        const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n        await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n    };\n\n    /**\n     * On Selecting Store for pickup.\n     * @param storeId - Store Id.\n     */\n    private readonly _setSelectedStore = async (storeId: string | undefined): Promise<void> => {\n        const {\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n\n        if (!storeSelectorStateManager) {\n            return;\n        }\n\n        await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n    };\n\n    /**\n     * Method to be called on search.\n     * @param searchTerm - Search string.\n     */\n    private readonly _performSearch = async (searchTerm: string): Promise<void> => {\n        const {\n            context: { actionContext },\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n\n        if (!searchTerm || !storeSelectorStateManager) {\n            return;\n        }\n\n        // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n        this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n        const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n        if (location) {\n            await this._updateLocations(location.latitude, location.longitude);\n        } else {\n            await this._updateLocations();\n        }\n\n        // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n        this.setState({ isSearchInProgress: false });\n    };\n\n    /**\n     * Method to be called on search term changed.\n     * @param searchTerm - Search string.\n     */\n    private readonly _searchTermChanged = async (searchTerm: string): Promise<void> => {\n        this.setState({ searchTerm });\n    };\n\n    /**\n     * Method to be called updating the store location.\n     * @param shouldShowAllStores - Flag to show all stores.\n     */\n    private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n        const {\n            config: { style },\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n\n        const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n        if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n            // Store selector dialog isn't open yet, so don't try and update anything\n            return;\n        }\n\n        // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n        this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n        if (navigator?.geolocation) {\n            navigator.geolocation.getCurrentPosition(\n                async position => {\n                    // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n                    this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n                    if (shouldShowAllStores) {\n                        this.setState({ isSeeAllStoreValue: true });\n                        await this._searchTermChanged('');\n                        await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n                    } else {\n                        await this._updateLocations(position.coords.latitude, position.coords.longitude);\n                    }\n\n                    // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n                    this.setState({ isSearchInProgress: false });\n                },\n                async error => {\n                    // If the location setting is turned off\n                    if (error.PERMISSION_DENIED) {\n                        this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n                        await this._searchTermChanged('');\n                        await this._updateLocations(0, 0, 0);\n                    }\n\n                    // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n                    this.setState({ isSearchInProgress: false });\n                },\n                { timeout: 5000 }\n            );\n        } else {\n            // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n            this.setState({ isSearchInProgress: false });\n        }\n    };\n\n    /**\n     * Method to be called closing the store selector dialog.\n     * @returns Void promise.\n     */\n    private readonly _closeDialog = async (): Promise<void> => {\n        const {\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n\n        this.setState({ searchTerm: '' });\n\n        if (storeSelectorStateManager) {\n            storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n            return storeSelectorStateManager.closeDialog();\n        }\n    };\n\n    /**\n     * Method to set store info.\n     * @param orgUnitStoreInformation - Store Info Object.\n     * @returns Void promise.\n     */\n    private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise<void> => {\n        const {\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            },\n            config: { style },\n            telemetry\n        } = this.props;\n\n        if (!storeSelectorStateManager) {\n            return;\n        }\n\n        const context = storeSelectorStateManager.context;\n        const moduleId: string = context?.id ? context.id : this.props.id;\n        const styleDefault = style !== undefined ? style : styleEnum.dialog;\n        let input: IStoreSelectionStateContext = {\n            /**\n             * On Location selected.\n             * @returns - Returns promise.\n             */\n            onLocationSelected: async () => {\n                // TO-DO handle event for when location in selected\n                return Promise.resolve();\n            }\n        };\n\n        if (storeSelectorStateManager.context) {\n            input = storeSelectorStateManager.context;\n        }\n\n        const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n        const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n        const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n        input = {\n            ...input,\n            id: moduleId,\n            showMapViewLink: context?.showMapViewLink,\n            parentElementRef: context?.parentElementRef,\n            isDialog: styleDefault === styleEnum.dialog,\n            orgUnitStoreInformation: storeLocationList,\n            product: context?.product\n        };\n\n        await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n            if (telemetry) {\n                telemetry.error(error.message);\n                telemetry.debug('Unable to Update store location state');\n            }\n        });\n    };\n\n    /**\n     * Method to update user location.\n     * @param latitude - User location.\n     * @param longitude - User location.\n     * @param radius - Search Criteria Radius.\n     * @returns Void promise.\n     */\n    private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise<void> => {\n        const {\n            config: { mode, lookupRadius, style, searchRadiusUnit },\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n\n        const styleDefault = style !== undefined ? style : styleEnum.dialog;\n        const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n        const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n        const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n        const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n        let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n        let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n        if (styleDefault === styleEnum.inline) {\n            const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n            if (lastInlineStoreLocation && !this.state.searchTerm) {\n                localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n                long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n            }\n            await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n        }\n\n        if (modeDefault === modeEnum.findStores) {\n            await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n            return;\n        }\n\n        await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n    };\n\n    /**\n     * Get org unit location by area.\n     * @param calRadius - Radius.\n     * @param distanceUnitValue - Distance unit value.\n     * @param latitude - Latitude.\n     * @param longitude - Longitude.\n     * @returns - Returns a void promise.\n     */\n    private readonly getOrgUnitLocationByArea = async (\n        calRadius: number,\n        distanceUnitValue: number,\n        latitude?: number,\n        longitude?: number\n    ): Promise<void> => {\n        const {\n            context: { actionContext }\n        } = this.props;\n        const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n            latitude,\n            longitude,\n            calRadius,\n            distanceUnitValue,\n            this.state.isLocationDisabled\n        );\n\n        const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n        if (orgUnitLocations) {\n            await this._setOrgUnitStoreInformation(orgUnitLocations);\n            await this._setSelectedStore(undefined);\n        }\n    };\n\n    /**\n     * Get full available inventory nearby.\n     * @param calRadius - Radius.\n     * @param distanceUnitValue - Distance unit value.\n     * @param latitude - Latitude.\n     * @param longitude - Longitude.\n     * @returns - Returns a void promise.\n     */\n    private readonly getFullAvailableInventoryNearby = async (\n        calRadius: number,\n        distanceUnitValue: number,\n        latitude?: number,\n        longitude?: number\n    ): Promise<void> => {\n        const {\n            telemetry,\n            context: { actionContext },\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n\n        if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n            // Store selector dialog isn't open yet, so don't try and update anything\n            return;\n        }\n\n        if (!storeSelectorStateManager.context.product) {\n            // TODO: Use alternative search method here to not make inventory check\n            return;\n        }\n\n        const input = new GetFullAvailableInventoryNearbyInput(\n            storeSelectorStateManager.context.product.RecordId,\n            latitude ?? 0,\n            longitude ?? 0,\n            calRadius,\n            distanceUnitValue,\n            this.state.isLocationDisabled\n        );\n\n        await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n            telemetry.warning(error);\n            telemetry.error(error.message);\n            telemetry.debug('Unable to get full available inventory near by');\n        });\n    };\n\n    /**\n     * Method to called on store selected.\n     * @param location - Store Info.\n     * @param deliveryMode - Pickup mode.\n     * @returns Void promise.\n     */\n    private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise<void> => {\n        const {\n            telemetry,\n            data: {\n                storeSelectorStateManager: { result: storeSelectorStateManager }\n            }\n        } = this.props;\n\n        if (storeSelectorStateManager) {\n            if (location && storeSelectorStateManager.context) {\n                // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n                await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n                    telemetry.warning(error);\n                    telemetry.error(error.message);\n                    telemetry.debug('Unable to get on org unit location selected');\n                });\n            }\n\n            await storeSelectorStateManager.closeDialog();\n        }\n    };\n\n    /**\n     * Method will list of store selector location line.\n     * @param store -Store Info.\n     * @param index - List index.\n     * @param hasEnabledOutOfStockCheck -Stores List.\n     * @param isStoreLocatorView -Module config value.\n     * @param preferredStoreLocationId -Store Id.\n     * @param isPreferredStoreEnabled -Stores List.\n     * @param selectedStoreLocationId -Module config value.\n     * @param preferredDistanceUnit -Module config value.\n     * @param alreadySelectedLocation -Already Selected Location.\n     * @param productPickUpOptionList -Product supported Pickup Modes List.\n     * @returns StoreSelectorLocation Line Prop.\n     */\n    private _createStoreLocationList(\n        store: IFullOrgUnitAvailability,\n        index: number,\n        hasEnabledOutOfStockCheck: boolean,\n        isStoreLocatorView: boolean,\n        preferredStoreLocationId: string,\n        isPreferredStoreEnabled: boolean | undefined,\n        selectedStoreLocationId: string | undefined,\n        preferredDistanceUnit?: string | undefined,\n        alreadySelectedLocation?: OrgUnitLocation,\n        productPickUpOptionList?: DeliveryOption[]\n    ): IStoreSelectorLocationLineItemProps | undefined {\n        const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n        const selectedStoreLocation = selectedStoreLocationId;\n        const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n        const lineResources = this._mapResources(this.props.resources);\n        const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n        const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n        const storeHours = store.StoreHours;\n\n        if (orgUnitLocation) {\n            ++this.storeCounter;\n            return {\n                location: orgUnitLocation,\n                selectedStoreLocationId: selectedStoreLocation,\n                storeHours,\n                resources: lineResources,\n                preferredDistanceUnit: preferredDistanceUnit!,\n                isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n                hideStockStatus: !hasEnabledOutOfStockCheck,\n                isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n                stockStatusLabel: this._stockInventoryLabel(store),\n                storeLocatorView: isStoreLocatorView,\n                index: this.storeCounter.toString(),\n                preferredStoreLocationId,\n                isPreferredStoreEnabled,\n                telemetryContent: this.telemetryContent,\n                isLocationDisabled: this.state.isLocationDisabled,\n                storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n                productPickUpOptionList,\n                locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n                storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n                onClick: this._setSelectedStore,\n                handlers: {\n                    onSelected: this._onOrgUnitLocationSelected,\n                    onSetAsPreferredStore: this._setPreferredStore,\n                    onRemovePreferredStore: this._removePreferredStore,\n                    closeStoreDetailsModal: this._closeStoreDetailModal\n                }\n            };\n        }\n        return undefined;\n    }\n\n    /**\n     * Method to map resources with Location Item.\n     * @param resources - List of strings for module.\n     * @returns Resources for StoreSelector location line.\n     */\n    private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n        return {\n            contactInfoHeader: resources.contactText,\n            storeHoursHeader: resources.timeText,\n            availabilityInfoHeader: resources.availabilityText,\n\n            closedText: resources.storeHoursClosedText,\n            outOfStock: resources.outOfStockText,\n            inStock: resources.inStockText,\n\n            currentLocation: resources.selectedStoreLocationText,\n            selectLocation: resources.selectStoreText,\n            selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n            setAsPreferredStoreText: resources.setAsPreferredStoreText,\n            setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n            preferredStoreText: resources.preferredStoreText,\n            preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n            days: {\n                monday: resources.storeHoursMondayText,\n                tuesday: resources.storeHoursTuesdayText,\n                wednesday: resources.storeHoursWednesdayText,\n                thursday: resources.storeHoursThursdayText,\n                friday: resources.storeHoursFridayText,\n                saturday: resources.storeHoursSaturdayText,\n                sunday: resources.storeHoursSundayText,\n                mondayFull: resources.storeHoursMondayFullText,\n                tuesdayFull: resources.storeHoursTuesdayFullText,\n                wednesdayFull: resources.storeHoursWednesdayFullText,\n                thursdayFull: resources.storeHoursThursdayFullText,\n                fridayFull: resources.storeHoursFridayFullText,\n                saturdayFull: resources.storeHoursSaturdayFullText,\n                sundayFull: resources.storeHoursSundayFullText\n            }\n        };\n    };\n\n    private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n        (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n    /**\n     * Method to get stock.\n     * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n     * @param itemAvailabilities - Item quantity availability.\n     * @returns Boolean value for item stock.\n     */\n    private readonly _isProductInStock = (\n        hasEnableOutOfStockCheck: boolean,\n        itemAvailabilities: ItemAvailability[] | undefined\n    ): boolean => {\n        if (!hasEnableOutOfStockCheck) {\n            return true;\n        }\n        const quantityCount = 0;\n        if (ArrayExtensions.hasElements(itemAvailabilities)) {\n            return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n        }\n\n        return false;\n    };\n\n    /**\n     * Method to get stocklevel label.\n     * @param isInStock - Stock available in store.\n     * @returns Label for stock status.\n     */\n    private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n        if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n            for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n                if (\n                    isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n                    isInStock.ProductInventoryInformation[index].InventLocationId\n                ) {\n                    return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n                }\n            }\n        }\n\n        return undefined;\n    };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps, IStoreSelectorViewProps } from './index';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC<ISelectedStoreViewProps> = props => {\n    const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n    return (\n        <>\n            {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n            {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n        </>\n    );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC<ISelectedStoreViewProps> = props => {\n    const {\n        storeDetailsMain,\n        storeHeader,\n        storeName,\n        storeDetailsCloseButton,\n        storeDistance,\n        storeDetailsAvailabilityContainer,\n        productAvailability,\n        stockStatus,\n        isCurrentLocation,\n        currentLocation,\n        isPreferredStore,\n        preferredStoreButton,\n        removePreferredStoreButton\n    } = props;\n\n    return (\n        <Node {...storeDetailsMain}>\n            <Node {...storeHeader}>\n                {storeDetailsCloseButton}\n                {storeName}\n                {storeDistance}\n            </Node>\n            <Node {...storeDetailsAvailabilityContainer}>\n                {productAvailability}\n                {stockStatus}\n            </Node>\n            {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n            {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n        </Node>\n    );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC<IStoreSelectorViewProps> = props => {\n    const {\n        BodyContainerProps,\n        locationsMessage,\n        search,\n        state,\n        spinner,\n        locationsList,\n        noLocationsMessage,\n        maps,\n        bodyWrapperProps,\n        storeResultContainerProps,\n        mapContainerProps,\n        isMobileView,\n        storeDetailsModal,\n        selectedLocation\n    } = props;\n\n    if (isMobileView) {\n        return (\n            <Node {...BodyContainerProps}>\n                {locationsMessage}\n                {search}\n                <Node {...bodyWrapperProps!}>\n                    <Node {...storeResultContainerProps!}>\n                        {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}</>}\n                        {maps}\n                        <Node {...storeDetailsModal!}>{selectedLocation && renderSelectedStore(selectedLocation)}</Node>\n                    </Node>\n                </Node>\n            </Node>\n        );\n    }\n\n    return (\n        <Node {...BodyContainerProps}>\n            <Node {...bodyWrapperProps!}>\n                <Node {...storeResultContainerProps!}>\n                    {locationsMessage}\n                    {search}\n                    {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}</>}\n                </Node>\n                <Node {...mapContainerProps!}>{maps}</Node>\n            </Node>\n        </Node>\n    );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC<IStoreSelectorViewProps> = props => {\n    const {\n        FooterContainerProps,\n        HeaderContainerProps,\n        HeaderProps,\n        ModuleProps,\n\n        terms\n    } = props;\n\n    return (\n        <Module {...ModuleProps}>\n            <Node {...HeaderContainerProps}>{HeaderProps}</Node>\n            {renderBody(props)}\n            <Node {...FooterContainerProps}>{terms}</Node>\n        </Module>\n    );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n    ContactInformationType,\n    DeliveryOption,\n    IDictionary,\n    OrgUnitContact,\n    OrgUnitLocation,\n    StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n    buildStoreHours,\n    IHoursDisplayInfo,\n    ILocationHours,\n    IStoreSelectorFoundLocationsMessage,\n    IStoreSelectorLocationLineItemProps,\n    IStoreSelectorLocationLineItemResources,\n    IStoreSelectorViewProps,\n    secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n    getPayloadObject,\n    getTelemetryAttributes,\n    getTelemetryObject,\n    IPayLoad,\n    isMobile,\n    Module,\n    Node,\n    TelemetryConstant,\n    VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n    pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n    attributes: IDictionary<string> | undefined;\n    onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC<IStoreSelectorFoundLocationsMessage> = props => {\n    const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n    if (locations) {\n        const storeCountMessage =\n            preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n        return (\n            <RichTextComponent\n                className='ms-store-select__found-locations__text'\n                text={\n                    isSeeAllStore\n                        ? resources.storeAllCountMessage.replace(\n                              '{count}',\n                              `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\n                          )\n                        : storeCountMessage\n                              .replace(\n                                  '{count}',\n                                  `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\n                              )\n                              .replace(\n                                  '{radius}',\n                                  `<span class='ms-store-select__found-locations__radius'>${searchRadius.toString()}</span>`\n                              )\n                }\n            />\n        );\n    }\n\n    return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n    distance: number | undefined,\n    preferredDistanceUnit: string,\n    resources: IStoreSelectorResources & IStoreSelectorResources,\n    isLocationDisabled?: boolean\n): string | undefined => {\n    const closeDistance: number = 1;\n    if (distance === undefined || isLocationDisabled) {\n        return undefined;\n    } else if (distance < closeDistance) {\n        const closeDistanceString: string = resources.closeDistanceString;\n        return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n    }\n    const distanceAsString: string = resources.distanceString;\n    return distanceAsString\n        .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n        .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n    if (!contacts) {\n        return undefined;\n    }\n\n    const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n    if (ArrayExtensions.hasElements(allPhoneContacts)) {\n        const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n        if (primaryPhoneContact) {\n            return primaryPhoneContact.Locator;\n        }\n\n        return allPhoneContacts[0].Locator;\n    }\n\n    return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n    return (\n        <RichTextComponent\n            className='ms-store-select__store-hours-day'\n            text={\n                displayTime.endDayShort\n                    ? storeHoursDayPeriodString\n                          .replace('{startDay}', `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`)\n                          .replace(\n                              '{endDay}',\n                              `<abbr title=${displayTime.endDayFull ? displayTime.endDayFull : ''}>${displayTime.endDayShort}</abbr>`\n                          )\n                    : storeHoursDayString.replace(\n                          '{startDay}',\n                          `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`\n                      )\n            }\n        />\n    );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n    storeHours: StoreHours | undefined,\n    storeHoursList: IHoursDisplayInfo[] | undefined,\n    locationOpen: ILocationHours | undefined,\n    resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n    // First, use the store hours. This will allow listing day by day hours\n    if (storeHours?.RegularStoreHours) {\n        return (\n            <div className='ms-store-select__store-hours-details-group'>\n                {storeHoursList?.map(displayTime => (\n                    <div className='ms-store-select__store-hours-details' key={JSON.stringify(displayTime)}>\n                        {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n                        <div className='ms-store-select__store-hours-time'>{displayTime.timeRange}</div>\n                    </div>\n                ))}\n            </div>\n        );\n    }\n\n    // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n    const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n    const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n    return (\n        <div className='ms-store-select__store-hours-details'>\n            {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n        </div>\n    );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n    productDeliveryOptions: DeliveryOption[] | undefined,\n    storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n    if (!productDeliveryOptions) {\n        return [] as DeliveryOption[];\n    }\n    return productDeliveryOptions\n        .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n        .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n    pickupInStoreAriaLabel: string;\n    pickupInStoreButtonText: string;\n    pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n    selectStoreText: string;\n    pickUpMethodLabel: string;\n    pickUpOptionPlaceholder: string;\n    pickupOptionDropdownError: string;\n    pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n    const {\n        handlers,\n        location,\n        pickUpStatesProps,\n        selectStoreText,\n        pickUpMethodLabel,\n        pickUpOptionPlaceholder,\n        pickupOptionDropdownError,\n        pickupButtonAriaLabel,\n        productPickUpOptionList,\n        storePickUpOptionList\n    } = props;\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n    const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n    const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n    const [isDropdownOpen, toggleDropdown] = React.useState(false);\n    const [isError, setError] = React.useState(false);\n\n    /**\n     * Method to handle the store pickup option change.\n     * @param event - Change Event.\n     */\n    const onChangeHandler = React.useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\n        event.preventDefault();\n        selectStorePickUpOption(event.currentTarget.value);\n        setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n        toggleDropdown(false);\n        setError(false);\n    }, []);\n\n    /**\n     * Method to render store location line pick up button.\n     * @param filteredDeliveryMode - Filtered Delivery Mode.\n     * @returns JSX Element.\n     */\n    const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n        return filteredDeliveryMode !== undefined ? (\n            <div className='ms-store-select__location-line-pickup-list-container'>\n                <button\n                    role='menuitem'\n                    aria-label={filteredDeliveryMode.Description}\n                    value={filteredDeliveryMode.Code}\n                    data-description={filteredDeliveryMode.Description}\n                    className='ms-store-select__location-line-pickup-list-toggle preselected'\n                >\n                    {filteredDeliveryMode.Description}\n                </button>\n            </div>\n        ) : null;\n    };\n\n    /**\n     * Method to handle the store pickup option submit.\n     */\n    const onClickHandler = React.useCallback(() => {\n        if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n            handlers.onSelected(location, selectedStorePickUpOption);\n        } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n            handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n        } else {\n            toggleDropdown(false);\n            setError(true);\n        }\n    }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n    const handleDropdownToggle = React.useCallback(() => {\n        toggleDropdown(!isDropdownOpen);\n        setError(false);\n    }, [isDropdownOpen]);\n\n    const filterDeliveryOption = deliveryOptionList.find(\n        (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n    );\n\n    const pickupInStoreButtonText: string = selectStoreText;\n    const filteredDeliveryMode: DeliveryOption | undefined =\n        pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n    return (\n        <div\n            className='ms-store-select__location-line-pickup'\n            data-selected={\n                (pickUpStatesProps.state.filteredPickupMode !== undefined && filteredDeliveryMode !== undefined) ||\n                selectedStorePickUpOption !== ''\n            }\n            data-error={isError}\n        >\n            <div className='ms-store-select__location-line-pickup-label'>{pickUpMethodLabel}</div>\n            {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n                <div className='ms-store-select__location-line-pickup-list-container'>\n                    <button\n                        className='ms-store-select__location-line-pickup-list-toggle'\n                        onClick={handleDropdownToggle}\n                        aria-expanded={isDropdownOpen}\n                    >\n                        {currentStorePickUpOption}\n                    </button>\n                    <ul className={classnames('ms-store-select__location-line-pickup-list', isDropdownOpen ? 'show' : '')}>\n                        {deliveryOptionList.map((delivery: DeliveryOption) => (\n                            <li\n                                role='presentation'\n                                className='ms-store-select__location-line-pickup-list-item'\n                                key={delivery.Code}\n                                value={delivery.Code}\n                            >\n                                <button\n                                    role='menuitem'\n                                    aria-label={delivery.Description}\n                                    value={delivery.Code}\n                                    data-description={delivery.Description}\n                                    onClick={onChangeHandler}\n                                    className='ms-store-select__location-line-pickup-list-item-button'\n                                >\n                                    {delivery.Description}\n                                </button>\n                            </li>\n                        ))}\n                    </ul>\n                    <div className='ms-store-select__location-line-pickup-list-error'>{pickupOptionDropdownError}</div>\n                </div>\n            ) : (\n                renderLocationLinePickupButton(filteredDeliveryMode)\n            )}\n            <button className='ms-store-select__location-line-pickup-menu' aria-label={pickupButtonAriaLabel} onClick={onClickHandler}>\n                {pickupInStoreButtonText}\n            </button>\n        </div>\n    );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n    const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n    const [isError, setError] = React.useState(false);\n    const onPickupButtonClickHandler = () => () => {\n        setError(true);\n    };\n\n    return (\n        <>\n            <button\n                className='ms-store-select__location-line-select-store'\n                aria-label={pickupInStoreAriaLabel}\n                onClick={onPickupButtonClickHandler()}\n                {...attributes}\n            >\n                {pickupInStoreButtonText}\n            </button>\n            <div className='ms-store-select__location-line-pickup-button-error' data-pickup-error={isError}>\n                {pickupDeliveryOptionErrorMessage}\n            </div>\n        </>\n    );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n    locationLineItem: IStoreSelectorLocationLineItemProps,\n    props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>\n) => {\n    const {\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n        hideStockStatus,\n        index,\n        isInStock,\n        preferredStoreLocationId,\n        isPreferredStoreEnabled,\n        location,\n        resources,\n        storeHours,\n        storeHoursList,\n        stockStatusLabel,\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n        storeLocatorView,\n        telemetryContent\n    } = locationLineItem;\n    const storeName = location.OrgUnitName;\n    const distanceAsString: string | undefined = buildDistanceString(\n        location.Distance,\n        locationLineItem.preferredDistanceUnit,\n        props.resources,\n        locationLineItem.isLocationDisabled\n    );\n    const storeAddress: string | undefined = location.Address;\n    const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n    const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n    const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n    const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n    const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n    /**\n     * Method to handle the change for preferred store.\n     * @returns Void.\n     */\n    const onSetPreferredStoreClickHandler = () => {\n        locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n    };\n\n    /**\n     * Method to handle the removal of the preferred store.\n     * @returns Void.\n     */\n    const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n        event.stopPropagation();\n        locationLineItem.handlers.onRemovePreferredStore();\n        await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n    };\n\n    const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n    payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n    const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n    payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n    const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n    return (\n        <div className='ms-store-select__location-line-item'>\n            <div className='ms-store-select__location-line-item-header'>\n                {storeLocatorView && <span className='ms-store-select__location-line-item-store-index'>{index}</span>}\n                <span className='ms-store-select__location-line-item-store-name'>{storeName}</span>\n                {distanceAsString ? <span className='ms-store-select__location-line-item-store-distance'>{distanceAsString}</span> : false}\n            </div>\n            <div className='ms-store-select__location-line-item-content'>\n                <div className='ms-store-select__location-line-item-contact-info'>\n                    <p className='ms-store-select__location-line-header'>{locationLineItem.resources.contactInfoHeader}</p>\n                    {storeAddress && (\n                        <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\n                            <span\n                                className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\n                                aria-hidden='true'\n                            />\n                            <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\n                                {storeAddress}\n                            </span>\n                        </div>\n                    )}\n                    {phoneNumber && (\n                        <div className='ms-store-select__location-line-shop-phone-section'>\n                            <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\n                            <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\n                        </div>\n                    )}\n                </div>\n                <div className='ms-store-select__location-line-item-store-hours'>\n                    <p className='ms-store-select__location-line-header'>{locationLineItem.resources.storeHoursHeader}</p>\n                    {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\n                </div>\n                {!storeLocatorView && !hideStockStatus && (\n                    <div className='ms-store-select__location-line-item-store-availability'>\n                        <p className='ms-store-select__location-line-header'>{resources.availabilityInfoHeader}</p>\n                        {stockText && <p className='ms-store-select__location-line-stock-status'>{stockText}</p>}\n                    </div>\n                )}\n                {isPreferredStoreEnabled &&\n                    (isPreferredStore ? (\n                        <button\n                            role='checkbox'\n                            className='ms-store-select__location-line-item-preferred-store'\n                            aria-live='polite'\n                            aria-checked='true'\n                            aria-label={resources.preferredStoreAriaLabel}\n                            onClick={onRemovePreferredStoreClickHandler}\n                            {...removePreferredStoreAttribute}\n                        >\n                            {resources.preferredStoreText}\n                        </button>\n                    ) : (\n                        <button\n                            role='checkbox'\n                            className='ms-store-select__location-line-item-set-as-preferred-store'\n                            aria-live='polite'\n                            aria-checked='false'\n                            aria-label={resources.setAsPreferredStoreTextAriaLabel}\n                            {...preferredStoreAttribute}\n                            onClick={onSetPreferredStoreClickHandler}\n                        >\n                            {resources.setAsPreferredStoreText}\n                        </button>\n                    ))}\n            </div>\n        </div>\n    );\n};\n\n/**\n * Render Store Location.\n * @param location - The location props.\n * @param index - The location index.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocation = (\n    location: IStoreSelectorLocationLineItemProps,\n    index: number,\n    props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>,\n    selectedLocationReference: React.RefObject<HTMLDivElement>\n): JSX.Element | undefined => {\n    const {\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n        hideStockStatus,\n        storeLocatorView,\n        isCurrentLocation,\n        isInStock,\n        productPickUpOptionList,\n        resources,\n        storePickUpOptionList,\n        telemetryContent\n    } = location;\n\n    const orgUnitLocation = location.location;\n    const selectedStoreLocationId = location.selectedStoreLocationId;\n    const defaultAriaSetsize = 0;\n    const canSelectLocation = hideStockStatus || isInStock;\n    const storeName = location.location.OrgUnitName;\n    const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n    const pickupInStoreButtonText: string = resources.selectLocation;\n    const pickUpOptionDropdownPlaceholderText: string = props.resources.pickupOptionDropdownPlaceholderText;\n\n    const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n    const selectStoreText = props.resources.selectStoreText;\n    const pickUpMethodLabel = props.resources.pickUpMethodLabel;\n\n    /**\n     * Method to handle the pick up in store.\n     * @returns Void.\n     */\n    const onPickupInStoreClickHandler = () => () => {\n        location.handlers.onSelected(location.location);\n    };\n\n    /**\n     * Render Store Locations.\n     * @param unitLocation - The org unit location.\n     * @returns Handler for onClick.\n     */\n    const onClickHandler = (unitLocation: OrgUnitLocation | undefined) => () => {\n        location.onClick(unitLocation?.OrgUnitNumber);\n    };\n\n    const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n        <PickUpButtonComponent\n            attributes={attributes}\n            pickupInStoreAriaLabel={pickupInStoreAriaLabel}\n            pickupInStoreButtonText={pickupInStoreButtonText}\n            pickupDeliveryOptionErrorMessage={props.resources.pickupDeliveryOptionErrorMessage}\n            onPickupInStoreClickHandler={onPickupInStoreClickHandler}\n        />\n    ) : (\n        <PickUpMethodDropdownComponent\n            {...location}\n            pickUpStatesProps={props}\n            selectStoreText={selectStoreText}\n            pickUpMethodLabel={pickUpMethodLabel}\n            pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\n            pickupOptionDropdownError={props.resources.pickupOptionDropdownErrorText}\n            pickupButtonAriaLabel={pickupInStoreAriaLabel}\n        />\n    );\n    const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\n\n    return (\n        <div\n            className={classnames('ms-store-select__location-wrapper', {\n                selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber && !props.isMobileView\n            })}\n        >\n            <div\n                className={classnames('ms-store-select__location', { selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber })}\n                key={index}\n                role='listitem'\n                aria-setsize={ArrayExtensions.hasElements(props.locationListProps) ? props.locationListProps.length : defaultAriaSetsize}\n                aria-posinset={Number.parseInt(location.index, 10)}\n                onClick={onClickHandler(orgUnitLocation)}\n                onKeyDown={onClickHandler(orgUnitLocation)}\n                ref={selectedStoreLocationId === orgUnitLocation.OrgUnitNumber ? selectedLocationReference : undefined}\n            >\n                {renderStoreLocationLineItem(location, props)}\n            </div>\n            {!storeLocatorView &&\n                (isCurrentLocation ? (\n                    <p className='ms-store-select__location-line-current-location'>{resources.currentLocation}</p>\n                ) : (\n                    pickUpMethodSelection\n                ))}\n        </div>\n    );\n};\n\n/**\n * Render Store Locations.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocations = (\n    props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>,\n    selectedLocationReference: React.RefObject<HTMLDivElement>\n) => {\n    return (\n        <div\n            className={classnames('ms-store-select__locations', {\n                show: props.data.storeSelectorStateManager.result?.listMapViewState.displayList\n            })}\n            role='list'\n        >\n            {props.locationListProps?.map((store, index) => {\n                return renderStoreLocation(store, index, props, selectedLocationReference);\n            })}\n        </div>\n    );\n};\n\n/**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\nconst mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n    return {\n        contactInfoHeader: resources.contactText,\n        storeHoursHeader: resources.timeText,\n        availabilityInfoHeader: resources.availabilityText,\n\n        closedText: resources.storeHoursClosedText,\n        outOfStock: resources.outOfStockText,\n        inStock: resources.inStockText,\n\n        currentLocation: resources.selectedStoreLocationText,\n        selectLocation: resources.selectStoreText,\n        selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n        setAsPreferredStoreText: resources.setAsPreferredStoreText,\n        setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n        preferredStoreText: resources.preferredStoreText,\n        preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n        days: {\n            monday: resources.storeHoursMondayText,\n            tuesday: resources.storeHoursTuesdayText,\n            wednesday: resources.storeHoursWednesdayText,\n            thursday: resources.storeHoursThursdayText,\n            friday: resources.storeHoursFridayText,\n            saturday: resources.storeHoursSaturdayText,\n            sunday: resources.storeHoursSundayText,\n            mondayFull: resources.storeHoursMondayFullText,\n            tuesdayFull: resources.storeHoursTuesdayFullText,\n            wednesdayFull: resources.storeHoursWednesdayFullText,\n            thursdayFull: resources.storeHoursThursdayFullText,\n            fridayFull: resources.storeHoursFridayFullText,\n            saturdayFull: resources.storeHoursSaturdayFullText,\n            sundayFull: resources.storeHoursSundayFullText\n        }\n    };\n};\n\n/**\n * Render the selected store.\n * @param selectedLocationProps -- Selected store view props.\n * @param storeSelectorViewProps -- Store selector view props.\n * @returns -- HTML.\n */\nexport const renderSelectedStore = (\n    selectedLocationProps: ISelectedStoreViewProps,\n    storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>\n): JSX.Element => {\n    const {\n        storeDetailsMain,\n        storeHeader,\n        storeName,\n        storeDetailsCloseButton,\n        storeDistance,\n        storeDetailsAvailabilityContainer,\n        productAvailability,\n        stockStatus,\n        isPreferredStore,\n        preferredStoreButton,\n        removePreferredStoreButton,\n        selectedStore\n    } = selectedLocationProps;\n\n    const storeAddress: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Address;\n    const phoneNumber: string | undefined = extractPhoneNumber(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Contacts);\n    const storeHoursList = selectedStore?.StoreHours?.RegularStoreHours\n        ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours, mapResources(storeSelectorViewProps.resources))\n        : [];\n    const storeOpenFrom: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenFrom);\n    const storeOpenTo: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenTo);\n    const locationOpen = { openFrom: storeOpenFrom, openTo: storeOpenTo };\n    const storeNameValue = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n    const pickupInStoreAriaLabel: string = selectedLocationProps.resources.selectLocationAriaLabelFormat.replace(\n        '{StoreName}',\n        storeNameValue ?? ''\n    );\n    const telemetryContent = getTelemetryObject(\n        storeSelectorViewProps.context.request.telemetryPageName!,\n        storeSelectorViewProps.friendlyName,\n        storeSelectorViewProps.telemetry\n    );\n    const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.PickupInStore);\n    const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n    const pickupInStoreButtonText: string = selectedLocationProps.resources.selectLocation;\n    const selectStoreText = storeSelectorViewProps.resources.selectStoreText;\n    const pickUpMethodLabel = storeSelectorViewProps.resources.pickUpMethodLabel;\n    const pickUpOptionDropdownPlaceholderText: string = storeSelectorViewProps.resources.pickupOptionDropdownPlaceholderText;\n    const orgUnitNumber = selectedStore?.OrgUnitAvailability?.OrgUnitLocation!.OrgUnitNumber;\n    const productPickUpOptionList = storeSelectorViewProps.data.storeSelectorStateManager.result?.context?.deliveryOptions?.DeliveryOptions;\n    const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, selectedLocationProps.deliveryOptions);\n    const selectedLocation = storeSelectorViewProps.locationListProps?.find(location => location.location.OrgUnitNumber === orgUnitNumber);\n\n    /**\n     * Method to handle the pick up in store.\n     * @returns Void.\n     */\n    const onPickupInStoreClickHandler = () => () => {\n        selectedLocationProps.handlers.onSelected(selectedStore!.OrgUnitAvailability!.OrgUnitLocation!);\n    };\n    const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n        <PickUpButtonComponent\n            attributes={attributes}\n            pickupInStoreAriaLabel={pickupInStoreAriaLabel}\n            pickupInStoreButtonText={pickupInStoreButtonText}\n            pickupDeliveryOptionErrorMessage={storeSelectorViewProps.resources.pickupDeliveryOptionErrorMessage}\n            onPickupInStoreClickHandler={onPickupInStoreClickHandler}\n        />\n    ) : (\n        selectedLocation && (\n            <PickUpMethodDropdownComponent\n                {...selectedLocation}\n                pickUpStatesProps={storeSelectorViewProps}\n                selectStoreText={selectStoreText}\n                pickUpMethodLabel={pickUpMethodLabel}\n                pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\n                pickupOptionDropdownError={storeSelectorViewProps.resources.pickupOptionDropdownErrorText}\n                pickupButtonAriaLabel={pickupInStoreAriaLabel}\n            />\n        )\n    );\n\n    return (\n        <Node {...storeDetailsMain}>\n            <Node {...storeHeader}>\n                {storeDetailsCloseButton}\n                {storeName}\n                {storeDistance}\n            </Node>\n            <Node {...storeDetailsAvailabilityContainer}>\n                <div className='ms-store-select__location-line-item-contact-info'>\n                    <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.contactText}</p>\n                    {storeAddress && (\n                        <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\n                            <span\n                                className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\n                                aria-hidden='true'\n                            />\n                            <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\n                                {storeAddress}\n                            </span>\n                        </div>\n                    )}\n                    {phoneNumber && (\n                        <div className='ms-store-select__location-line-shop-phone-section'>\n                            <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\n                            <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\n                        </div>\n                    )}\n                </div>\n                <div className='ms-store-select__location-line-item-store-hours'>\n                    <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.timeText}</p>\n                    {renderStoreHours(selectedStore?.StoreHours, storeHoursList, locationOpen, storeSelectorViewProps.resources)}\n                </div>\n                {productAvailability && (\n                    <div className='ms-store-select__location-line-item-store-availability'>\n                        <p className='ms-store-select__location-line-header'>{productAvailability}</p>\n                        {stockStatus && <p className='ms-store-select__location-line-stock-status'>{stockStatus}</p>}\n                    </div>\n                )}\n            </Node>\n            {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n            {canSelectPickUpMethod}\n        </Node>\n    );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC<IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>> = props => {\n    // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n    const {\n        BodyContainerProps,\n        storeResultContainerProps,\n        FooterContainerProps,\n        HeaderContainerProps,\n        HeaderProps,\n        ModuleProps,\n        locationsMessage,\n        search,\n        state,\n        spinner,\n        maps,\n        locationsList,\n        noLocationsMessage,\n        terms,\n        storeDetailsModal,\n        selectedLocation,\n        bodyWrapperProps,\n        data,\n        context\n    } = props;\n    const selectedLocationReference = React.useRef(null);\n    const [isDesktopPort, setIsDesktopPort] = React.useState<boolean>(false);\n\n    const isDesktopViewport = React.useCallback(() => {\n        const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n        const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n        setIsDesktopPort(isDesktopPorts);\n    }, [context]);\n\n    React.useEffect(() => {\n        if (props.locationsList) {\n            /**\n             * Method to handle scrolling.\n             */\n            const scrollIntoView = () => {\n                const selectedLocationDiv = (selectedLocationReference as React.RefObject<HTMLDivElement>).current;\n                if (selectedLocationDiv !== null) {\n                    const offset = selectedLocationDiv.getBoundingClientRect();\n                    const parent = selectedLocationDiv.parentElement?.parentElement;\n                    if (parent && offset) {\n                        const totalHeight = parent.scrollTop + offset.top;\n                        parent.scrollTop = totalHeight - parent.clientHeight;\n                    }\n                }\n            };\n            scrollIntoView();\n        }\n    }, [props.locationsList]);\n\n    React.useEffect(() => {\n        if (MsDyn365.isBrowser) {\n            window.addEventListener('resize', isDesktopViewport);\n        }\n        isDesktopViewport();\n    }, [isDesktopViewport]);\n    const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n    const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n    if (!isDesktopView || !isDesktopPort) {\n        return (\n            <Module {...ModuleProps}>\n                <Node {...HeaderContainerProps}>{HeaderProps}</Node>\n                <Node {...BodyContainerProps}>\n                    <Node {...storeResultContainerProps!}>\n                        {locationsMessage && (\n                            <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\n                        )}\n                        {search}\n                        <Node {...bodyWrapperProps!}>\n                            <Node {...storeResultContainerProps!}>\n                                {state.isSearchInProgress ? (\n                                    spinner\n                                ) : (\n                                    <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\n                                )}\n                                <Node\n                                    className={`ms-store-select__map_view ${\n                                        data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\n                                    }`}\n                                >\n                                    {maps}\n                                </Node>\n                                <Node {...storeDetailsModal!}>{selectedLocation && renderSelectedStore(selectedLocation, props)}</Node>\n                            </Node>\n                        </Node>\n                    </Node>\n                </Node>\n                <Node {...FooterContainerProps}>{terms}</Node>\n            </Module>\n        );\n    }\n    return (\n        <Module {...ModuleProps}>\n            <Node {...HeaderContainerProps}>{HeaderProps}</Node>\n            <Node {...BodyContainerProps}>\n                <Node\n                    className={`ms-store-select__store_container ${\n                        data.storeSelectorStateManager.result?.listMapViewState.displayList ? 'show' : ''\n                    }`}\n                >\n                    {locationsMessage && (\n                        <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\n                    )}\n                    {search}\n                    {state.isSearchInProgress ? (\n                        spinner\n                    ) : (\n                        <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\n                    )}\n                </Node>\n                <Node\n                    className={`ms-store-select__map_container ${\n                        data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\n                    }`}\n                >\n                    {maps}\n                </Node>\n            </Node>\n            <Node {...FooterContainerProps}>{terms}</Node>\n        </Module>\n    );\n};\n\nexport default StoreSelectorViewComponent;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["StoreSelectorFoundLocationsMessageComponent","props","locations","searchRadius","resources","isSeeAllStore","preferredDistanceUnit","storeCountMessage","milesShortText","storeCountMessageInKm","React","RichTextComponent","className","text","storeAllCountMessage","replace","length","toString","extractPhoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","ContactInformationType","Phone","IsPrivate","ArrayExtensions","hasElements","primaryPhoneContact","find","IsPrimary","Locator","renderStoreHours","storeHours","storeHoursList","locationOpen","RegularStoreHours","map","displayTime","key","JSON","stringify","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","endDayShort","startDayFull","startDayShort","endDayFull","storeHoursDayPeriod","storeHoursDay","timeRange","storeOpenFrom","openFrom","storeOpenTo","openTo","matchDeliveryOptions","productDeliveryOptions","storePickUpOptionList","productDeliveryOption","delivery","Code","PickUpMethodDropdownComponent","handlers","location","pickUpStatesProps","selectStoreText","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","productPickUpOptionList","deliveryOptionList","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","isError","setError","onChangeHandler","event","preventDefault","currentTarget","value","dataset","description","onClickHandler","StringExtensions","isNullOrEmpty","undefined","state","filteredPickupMode","onSelected","handleDropdownToggle","filterDeliveryOption","pickupInStoreButtonText","filteredDeliveryMode","onClick","classnames","role","Description","renderLocationLinePickupButton","PickUpButtonComponent","pickupInStoreAriaLabel","pickupDeliveryOptionErrorMessage","attributes","Object","assign","renderStoreLocationLineItem","locationLineItem","hideStockStatus","index","isInStock","preferredStoreLocationId","isPreferredStoreEnabled","stockStatusLabel","storeLocatorView","telemetryContent","storeName","OrgUnitName","distanceAsString","buildDistanceString","distance","isLocationDisabled","closeDistanceString","distanceString","Math","floor","Distance","storeAddress","Address","phoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockText","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","isPreferredStore","OrgUnitNumber","contentAction","etext","PreferredStore","preferredStoreAttribute","getTelemetryAttributes","RemovePreferredStore","removePreferredStoreAttribute","contactInfoHeader","storeHoursHeader","availabilityInfoHeader","preferredStoreAriaLabel","onRemovePreferredStore","preferredStoreText","setAsPreferredStoreTextAriaLabel","onSetAsPreferredStore","setAsPreferredStoreText","renderStoreLocations","selectedLocationReference","_props$data$storeSele","_props$locationListPr","show","data","storeSelectorStateManager","result","listMapViewState","displayList","locationListProps","store","renderStoreLocation","isCurrentLocation","orgUnitLocation","selectedStoreLocationId","canSelectLocation","selectLocationAriaLabelFormat","selectLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","onPickupInStoreClickHandler","pickUpMethodSelection","selected","isMobileView","Number","parseInt","onKeyDown","ref","currentLocation","renderSelectedStore","selectedLocationProps","storeSelectorViewProps","_selectedStore$OrgUni","_selectedStore$OrgUni2","_selectedStore$StoreH","_selectedStore$OrgUni3","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","preferredStoreButton","removePreferredStoreButton","selectedStore","OrgUnitAvailability","OrgUnitLocation","StoreHours","buildStoreHours","contactText","timeText","availabilityText","closedText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreAriaFormatText","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","secondsToTime","OpenFrom","OpenTo","storeNameValue","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","orgUnitNumber","deliveryOptions","DeliveryOptions","selectedLocation","Node","_data$storeSelectorSt2","_data$storeSelectorSt3","BodyContainerProps","storeResultContainerProps","FooterContainerProps","HeaderContainerProps","HeaderProps","ModuleProps","locationsMessage","search","spinner","maps","locationsList","noLocationsMessage","terms","storeDetailsModal","bodyWrapperProps","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","isMobile","variant","VariantType","Browser","scrollIntoView","selectedLocationDiv","current","_selectedLocationDiv$","offset","getBoundingClientRect","parent","parentElement","totalHeight","scrollTop","top","clientHeight","MsDyn365","isBrowser","window","addEventListener","viewport","_data$storeSelectorSt","Module","isSearchInProgress","displayMap","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","id","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","_objectSpread","viewDictionary","cn","BaseStoreSelectorStateManager","constructor","preferredStoreLocalStorageKey","this","isMapModuleLoaded","_readFromToCookie","storeInfo","parse","preferredStore","_unused","_context","input","storeId","writeToCookie","arguments","StoreId","StoreName","Latitude","Longitude","_writeToCookie","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","localStorage","removeItem","setItem","cookieValue","getItem","__decorate","computed","observable","action","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","actionContext","requestContext","channel","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","trim","query","encodeURI","geolocationApiUrl","app","config","requestUrl","Promise","resolve","script","document","createElement","setAttribute","remove","resourceSets","point","coordinates","body","appendChild","_document","getElementById","currentWindowAPI","mapAPIReady","isMapApiLoaded","url","lang","market","reject","_document2","_document3","type","async","defer","src","error","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","StorePickUpOptionList","super","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","setState","_onSelect","deliveryCode","getAttribute","selectedPickupMode","onChange","_onKeyDown","_storePickupListOptionMenu","render","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","tabIndex","StoreSelectorLocationLines","_scrollIntoView","selectedLocationRef","offsetTop","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","storeCounter","componentDidUpdate","previousProps","componentDidMount","_stores","_sortStores","reaction","_renderStoreLocation","_store$OrgUnitAvailab","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","StoreSelectorLocationLineItemComponent","ItemAvailabilities","onLocationSelected","productPickUpDeliveryOptions","shouldShowIndex","stores","_value$OrgUnitAvailab","observer","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","target","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","bind","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","color","StoreSelectorEmptyMessage","_ref","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","link","onTextChange","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","_ref3","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","stopPropagation","isExpandSiteOptionsState","_props$selectedStore","onSetPreferredStoreClickHandler","_props$selectedStore2","_props$selectedStore3","removePreferredStoreHandler","onPickupModeSelectHandler","pickupMode","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","renderPickupModes","SelectedStoreComponent","shouldHideStockStatus","parentClassName","stockLabel","preferredStoreAttributes","removePreferredStoreAttributes","tag","Button","pickUpDeliveryOptionButton","pickupModes","seconds","hours","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","get","buildStoreHoursString","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","push","storeSelectorLocationLineItemComponentActions","deliveryMode","productdeliveryOptions","deliveryOption","pickup","_delivery","title","pickUpButtonClickHandler","StoreSelector","shouldHideInventory","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeLocations","selectedStoreResources","selectedProps","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","handleLinkTextChange","termsOfServiceLink","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","cookies","mode","setPreferredStoreLocation","isConsentGiven","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","isSeeAllStoreValue","geoLocate","_updateLocations","shouldShowAllStores","_navigator","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","locale","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","slots","mapSlot","isMobileDevice","Viewport","isInlineView","isLocatorView","canShowLocationView","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","_getStoreLocationListProps","hasMapSlot","dialogClassName","viewProps","Modal","moduleProps","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","ModalHeader","onEdit","ModalFooter","ModalBody","mapContainerProps","outOfStockThreshold","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","renderView","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","renderDeliveryOptions","renderBody","_props$data$storeSele2","module","exports","ReactDOM"],"sourceRoot":""}