{"version":3,"file":"default/js/storeDrawer.js","sources":["webpack://rws/./dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack://rws/./cartridges/app_rws/cartridge/client/default/js/services/geolocation.js","webpack://rws/./cartridges/app_rws/cartridge/client/default/js/storeDrawer/storeDrawerBase.js","webpack://rws/./cartridges/app_rws/cartridge/client/default/js/storeDrawer.js"],"sourcesContent":["'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","'use strict';\n\nclass GeolocationModel {\n constructor() {\n this.latitude = '';\n this.longitude = '';\n this.locationText = 'Use My location';\n this.error = false;\n this.errorMessage = '';\n }\n\n /**\n * Sets the geolocation data.\n * @param {Object} position - The position object from the geolocation API.\n */\n setGeolocation(position) {\n this.latitude = position.coords.latitude;\n this.longitude = position.coords.longitude;\n this.locationText = 'Using your location';\n this.error = false;\n }\n\n /**\n * Sets the error information based on the error code.\n * @param {Object} error - The error object from the geolocation API.\n */\n setError(error) {\n this.error = true;\n switch (error.code) {\n case error.PERMISSION_DENIED:\n this.locationText = 'User denied geolocation.
Change settings in your browser.';\n break;\n case error.POSITION_UNAVAILABLE:\n this.errorMessage = 'Geolocation information is unavailable. Please try again.';\n break;\n case error.TIMEOUT:\n this.errorMessage = 'Location request has timed out. Please try again.';\n break;\n case error.UNKNOWN_ERROR:\n this.errorMessage = 'Unknown error occurred. Please try again.';\n break;\n }\n }\n\n setNotSupported() {\n this.error = true;\n this.locationText = 'Geolocation is not supported by this browser.';\n }\n}\n\n/**\n * Retrieves the current geolocation coordinates of the user's device.\n * @returns {Promise}\n * A promise that resolves with an instance of `GeolocationModel` containing the geolocation data or error information.\n */\nfunction getGeolocation() {\n return new Promise((resolve) => {\n const geolocationModel = new GeolocationModel();\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n geolocationModel.setGeolocation(position);\n resolve(geolocationModel);\n },\n (error) => {\n geolocationModel.setError(error);\n resolve(geolocationModel);\n }\n );\n } else {\n geolocationModel.setNotSupported();\n resolve(geolocationModel);\n }\n });\n}\n\nmodule.exports = {\n GeolocationModel: GeolocationModel,\n getGeolocation: getGeolocation\n};\n","'use strict';\n\nvar geolocationService = require('../services/geolocation');\n\nvar $modal = $('#inStoreInventoryModal');\nvar $form = $('.js-store-drawer');\nvar $advancedSearch = $('.js-store-drawer-advanced, .js-store-drawer-advanced-inventory');\nvar $search = $('.js-store-drawer-search');\nvar $searchResults = $('.js-store-drawer-results');\nvar $postalCodeInput = $('input[name=postalCode]');\nvar $inventory = $('.js-store-drawer-advanced-inventory');\nvar $geoLocationErrors = $('.js-geolocation-error');\nvar $useMyLocationButton = $('.js-drawer-detect-location');\n\n/**\n * Sets the visibility toggle state for in-stock items based on session storage and a hidden fieldset.\n * @returns {void}\n */\nfunction setStockVisibilityToggleState() {\n var inStockToggleStatus = window.sessionStorage.getItem('show_instock');\n var inStockInput = $('.js-show-instock-input');\n var inStockIgnoreLimit = inStockInput.closest('fieldset').hasClass('d-none');\n var checked = !inStockIgnoreLimit && inStockToggleStatus === '1';\n\n inStockInput.prop('checked', checked);\n}\n\n/**\n * Sets the state of the detect location button.\n * @param {boolean} isError - Indicates if the geolocation was successful.\n */\nfunction setDetectLocationState(isError) {\n var baseClass = 'store-locator__detect-location-button';\n\n $useMyLocationButton.removeClass(baseClass + '--red')\n $useMyLocationButton.removeClass(baseClass + '--green');\n\n if (typeof isError === 'boolean') {\n if (isError) {\n $useMyLocationButton.addClass(baseClass + '--red');\n } else {\n $useMyLocationButton.addClass(baseClass + '--green');\n }\n } else {\n $useMyLocationButton.addClass(baseClass);\n }\n}\n\n/**\n * Sets the store drawer fields and values.\n * @param {Object} data - The store drawer fields and values.\n * @param {string} [data.postalCode] - The postal code.\n * @param {number} data.lat - The latitude.\n * @param {number} data.long - The longitude.\n * @param {boolean} [data.showAdvancedSearch] - Whether to show advanced search.\n * @param {boolean} [data.showInventoryLimit] - Whether to show inventory limit.\n * @param {boolean} [data.search] - Whether to perform a search.\n */\nfunction populateStoreDrawerForm(data) {\n Object.keys(data).forEach(function (item) {\n var $input = $form.find('input[name=' + item + ']');\n if (typeof data[item] === 'boolean') {\n $input.prop('checked', data[item]);\n } else if (typeof data[item] === 'string' || $.isNumeric(data[item])) {\n $input.val(data[item]);\n }\n });\n}\n\n/**\n * Starts the spinner for search results and search input.\n * @returns {void}\n */\nfunction spinnerStart() {\n $searchResults.children('div').spinner().start();\n $search.spinner().start();\n}\n\n/**\n * Stops the spinner for search results and search input.\n * @returns {void}\n */\nfunction spinnerStop() {\n $searchResults.children('div').spinner().stop();\n $search.spinner().stop();\n}\n\n/**\n * Sets the geolocation fields based on the geolocation result.\n * @param {Object} geolocationResult - The result from the geolocation service.\n * @param {boolean} geolocationResult.error - Indicates if there was an error.\n * @param {string} [geolocationResult.errorMessage] - The error message if there was an error.\n * @param {string} [geolocationResult.locationText] - The location text to display.\n * @param {number} [geolocationResult.latitude] - The latitude.\n * @param {number} [geolocationResult.longitude] - The longitude.\n * @returns {void}\n */\nfunction setGeolocationFields(geolocationResult) {\n $geoLocationErrors.html('').hide();\n setDetectLocationState(geolocationResult.error);\n\n if (geolocationResult.error) {\n $geoLocationErrors.html(geolocationResult.errorMessage).show();\n } else {\n var formData = {\n lat: geolocationResult.latitude,\n long: geolocationResult.longitude\n };\n if (geolocationResult.latitude && geolocationResult.longitude) {\n formData.postalCode = '';\n }\n populateStoreDrawerForm(formData);\n }\n\n if (geolocationResult.locationText) {\n $useMyLocationButton.html(geolocationResult.locationText);\n }\n}\n\n/**\n * Performs the search with the filled out store drawer fields.\n * @returns {void}\n */\nfunction storeDrawerSearch() {\n spinnerStart();\n $.ajax({\n url: $form.attr('action'),\n method: 'GET',\n data: $form.serialize(),\n success: function (response) {\n $searchResults.empty();\n if ($('.js-global-header.is-sticky')) {\n $('.js-global-header').removeClass('is-sticky');\n }\n $searchResults.html(response.storesResultsHtml);\n if (response.geolocation.countryCode === 'CA') {\n $('.js-store-locator-ca-users').show();\n }\n if (!response.hasResults) {\n $('.js-store-no-results').show();\n }\n if (response.availabilityKnown) {\n $inventory.removeClass('d-none');\n }\n },\n error: function (err) {\n if (err.responseJSON && err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n },\n complete: function () {\n spinnerStop();\n }\n });\n}\n\nmodule.exports = {\n /**\n * Initializes the store drawer module.\n * @returns {void}\n */\n init: function () {\n $('body').on('store-drawer:open', async function (e, data) {\n e.preventDefault();\n $modal.modal('show');\n spinnerStart();\n\n populateStoreDrawerForm(data);\n\n if (data.showInventoryLimit) {\n $inventory.removeClass('d-none');\n } else {\n $inventory.addClass('d-none');\n }\n\n if (data.showAdvancedSearch) {\n $advancedSearch.removeClass('d-none');\n }\n\n // Check the form to see if it has previously been filled out\n if ($postalCodeInput.val() === '' && $('input#lat').val() === '' && $('input#long').val() === ''){\n var geolocationResult = await geolocationService.getGeolocation();\n setGeolocationFields(geolocationResult);\n }\n\n spinnerStop();\n\n if (data && data.search) {\n setStockVisibilityToggleState();\n storeDrawerSearch();\n }\n });\n },\n /**\n * Binds the search event to the form submit.\n * @returns {void}\n */\n search: function () {\n $form.on('submit', function (e) {\n e.preventDefault();\n storeDrawerSearch();\n });\n },\n /**\n * Binds the searchAjax event to the body.\n * @returns {void}\n */\n searchAjax: function () {\n $('body').on('store-drawer:searchAjax', function (e) {\n e.preventDefault();\n $postalCodeInput.removeAttr('required');\n storeDrawerSearch();\n $postalCodeInput.attr('required', true);\n });\n },\n /**\n * Binds the change event to the postal code input for manual search.\n * @returns {void}\n */\n searchManual: function () {\n $postalCodeInput.off('change').on('change', function (e) {\n e.preventDefault();\n var geolocationResult = new geolocationService.GeolocationModel();\n setGeolocationFields(geolocationResult);\n setDetectLocationState();\n });\n },\n /**\n * Binds the select store event to the body.\n * @returns {void}\n */\n selectStore: function () {\n $('body').on('click', '.js-select-store-link', function (e) {\n e.preventDefault();\n spinnerStart();\n var url = $(this).attr('data-action-url');\n $.ajax({\n url: url,\n method: 'POST',\n data: $form.serialize(),\n success: function () {\n $modal.modal('hide');\n },\n error: function (err) {\n if (err.responseJSON && err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n },\n complete: function () {\n spinnerStop();\n }\n });\n });\n },\n /**\n * Binds the change event to the in-stock input to show in-stock stores.\n * @returns {void}\n */\n showInStockStores: function () {\n $('.js-show-instock-input').on('change', function () {\n window.sessionStorage.setItem('show_instock', $(this).is(':checked') ? '1' : '0');\n $('body').trigger('store-drawer:searchAjax');\n });\n },\n /**\n * Binds the click event to the detect location button.\n * @returns {void}\n */\n detectLocation: function () {\n $('body').on('click', '.js-drawer-detect-location', async function (e) {\n e.preventDefault();\n spinnerStart();\n var geolocationResult = await geolocationService.getGeolocation();\n setGeolocationFields(geolocationResult);\n spinnerStop();\n\n if (!geolocationResult.error) {\n storeDrawerSearch();\n }\n });\n }\n};\n","'use strict';\n\nvar processInclude = require('base/util');\n\n$(document).ready(function () {\n processInclude(require('./storeDrawer/storeDrawerBase'));\n});\n"],"names":["GeolocationModel","position","error","getGeolocation","Promise","resolve","geolocationModel","navigator","module","geolocationService","require","$modal","$","$form","$advancedSearch","$search","$searchResults","$postalCodeInput","$inventory","$geoLocationErrors","$useMyLocationButton","setStockVisibilityToggleState","inStockToggleStatus","window","inStockInput","inStockIgnoreLimit","checked","setDetectLocationState","isError","baseClass","populateStoreDrawerForm","data","Object","item","$input","spinnerStart","spinnerStop","setGeolocationFields","geolocationResult","formData","storeDrawerSearch","response","err","e","url","processInclude","document"],"mappings":"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"}