{"version":3,"file":"default/js/order.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/components/scrollAnimate.js","webpack://rws/./cartridges/app_rws/cartridge/client/default/js/order/order.js","webpack://rws/./cartridges/app_rws/cartridge/client/default/js/util/urlUtils.js","webpack://rws/./cartridges/app_rws/cartridge/client/default/js/order.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\nmodule.exports = function (element) {\n var position = element && element.length ? element.offset().top : 0;\n $('html, body').animate({\n scrollTop: position\n }, 500);\n if (!element) {\n // Locate first focusable element and focus on it, remove the outline so it doesn't look like a display issue\n $('.js-global-header-wrapper .brand').trigger('focus').css('outline', 'none');\n }\n};\n","'use strict';\n\nconst urlUtils = require('../util/urlUtils');\nvar scrollAnimate = require('app_rws/components/scrollAnimate');\n\n// Swapping \"Estimated Total\" vs. \"Total\" labels\n// This is only done due to template re-use\n$('.before-review-order-stage-label.order-receipt-label').hide();\n$('.review-order-stage-label.order-receipt-label').show();\n\nfunction initializeReturnForm($submitButton, $form) {\n // Disable Submit Return button (will be enabled via quantity selection)\n $submitButton.attr('disabled', 'disabled');\n\n // Update button class and text, enabling form submission\n $submitButton.removeClass('start-return').addClass('submit-return');\n $submitButton.text($submitButton.data('submit-text'));\n $submitButton.attr('value', 'submit-return');\n\n // Update return function links\n $('.js-start-return').addClass('u-visually-hidden');\n\n $form.find('.js-return-form').removeClass('u-visually-hidden');\n\n // Hide quantity text, show quantity selection\n // Trigger quantity change in case the default value isn't 0 (can happen when use backs up)\n $form.find('.js-card-quantity-count').closest('.line-item-pricing-info').addClass('u-visually-hidden');\n $form.find('.js-return-quantity').trigger('change');\n\n // Hide shipping/tracking information\n $form.find('.c-order-status__shipping-details').addClass('u-visually-hidden');\n $form.find('.line-item-returned-quantity').closest('.row').addClass('u-visually-hidden');\n}\n\n// If the user is clicking this button for the first time, display the form elements\n$('.js-order-return-submit').on('click', function (e) {\n var $el = $(this);\n var $form = $el.closest('form');\n\n if ($el.hasClass('start-return')) {\n e.preventDefault();\n initializeReturnForm($el, $form);\n }\n});\n\n$('.js-start-return').on('click', function (e) {\n e.preventDefault();\n var $el = $('.js-order-return-submit');\n var $productSummary = $('.js-product-summary');\n var $form = $el.closest('form');\n $('html, body').animate({\n scrollTop: $($productSummary).offset().top\n }, 'slow');\n initializeReturnForm($el, $form);\n});\n\n/**\n * Handles enabling and disabling form elements based on the user's selection.\n *\n * - Disables the submit button if any quantity is selected but no adjustment reason is selected.\n * - Ensures form usability by dynamically enabling or disabling elements based on the input state.\n */\n$('.js-return-quantity, .js-return-adjustment-reason').on('change', function (e) {\n var $quantityEls = $('.js-return-quantity');\n var $adjustmentReasonEls = $('.js-return-adjustment-reason');\n var $submitButton = $('.js-order-return-submit');\n\n $quantityEls.add($adjustmentReasonEls).on('change', function () {\n var submitEnabled = false;\n\n $quantityEls.each(function (index, quantityEl) {\n var $quantityEl = $(quantityEl);\n var $adjustmentReasonEl = $($adjustmentReasonEls[index]);\n\n // Check if quantity select has only one option\n if (quantityEl.options.length <= 1) {\n $quantityEl.prop('disabled', true);\n $adjustmentReasonEl.prop('disabled', true);\n return;\n }\n\n $quantityEl.prop('disabled', false);\n\n if ($quantityEl.val() > 0) {\n $adjustmentReasonEl.prop('disabled', false);\n\n // Check if an adjustment reason is selected\n if ($adjustmentReasonEl.prop('selectedIndex') !== 0) {\n submitEnabled = true;\n } else {\n // If any quantity is selected and no adjustment reason is selected, disable submit\n submitEnabled = false;\n return false; // Exit early from each\n }\n } else {\n $adjustmentReasonEl.prop('selectedIndex', 0).prop('disabled', true);\n }\n });\n\n // Enable or disable the submit button\n $submitButton.prop('disabled', !submitEnabled);\n });\n});\n\n$('.js-print-return-label').on('click', function (e) {\n $('.ups-label-submit').trigger('click');\n});\n\nfunction parseReturnAddress() {\n var shippingAddress = $('.js-summary-details-shipping').children();\n return {\n firstName: shippingAddress.find('.firstName').prop(\"innerText\") || 'Customer',\n lastName: shippingAddress.find('.lastName').prop(\"innerText\") || 'Return',\n address1: shippingAddress.find('.address1').prop(\"innerText\"),\n address2: shippingAddress.find('.address2').prop(\"innerText\"),\n city: shippingAddress.find('.city').prop(\"innerText\"),\n stateCode: shippingAddress.find('.stateCode').prop(\"innerText\"),\n postalCode: shippingAddress.find('.postalCode').prop(\"innerText\")\n }\n}\n\n$('.js-order-return-form').on('submit', function (e) {\n e.preventDefault();\n var form = $(this).closest('form');\n var url = form.attr('action');\n var returnAddress = parseReturnAddress();\n // Disable the submit button upon submission\n $('button[type=\"submit\"]').attr('disabled', true);\n url = urlUtils.addQueryParams(url, returnAddress);\n\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n if (data.error) {\n $('.js-error-message')\n .show()\n .text(data.errorMessage);\n scrollAnimate($('.page'));\n $('button[type=\"submit\"]').attr('disabled', false);\n } else {\n window.location.reload();\n }\n $(this).spinner().stop();\n }, error: function (err) {\n if (err.responseJSON && err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n }\n });\n})\n","'use strict';\n\nfunction getQueryParams(url) {\n const urlParts = url.split('?'); // Split the URL into [baseUrl, queryString]\n return new URLSearchParams(urlParts[1] || ''); // If no query string, it's empty\n}\n\n/**\n * Adds parameters to the url\n * @param {string} url - base url either with or without parameters\n * @param {Object} params - key value pair to add as parameters to the url\n * @returns {string} full url string with parameters\n */\nfunction addQueryParams(url, params) {\n const urlParts = url.split('?'); // Split the URL into [baseUrl, queryString]\n const baseUrl = urlParts[0];\n\n // Parse the existing query string into an object\n let queryParams = getQueryParams(url);\n\n // Add new parameters (or update existing ones)\n $.each(params, function (key, value) {\n queryParams.set(key, value); // Adds or updates the parameter\n });\n\n // Rebuild the full URL\n return baseUrl + '?' + queryParams.toString();\n}\n\nmodule.exports = {\n addQueryParams: addQueryParams,\n getQueryParams: getQueryParams\n};\n","'use strict';\n\nvar processInclude = require('base/util');\n\n$(document).ready(function () {\n processInclude(require('./order/order'));\n});\n"],"names":["module","element","position","$","urlUtils","require","scrollAnimate","initializeReturnForm","$submitButton","$form","e","$el","$productSummary","$quantityEls","$adjustmentReasonEls","submitEnabled","index","quantityEl","$quantityEl","$adjustmentReasonEl","parseReturnAddress","shippingAddress","form","url","returnAddress","data","window","err","getQueryParams","urlParts","URLSearchParams","addQueryParams","params","baseUrl","queryParams","key","value","processInclude","document"],"mappings":";;;;AAAa;;AAEb,cAAc;AACd;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;ACZa;AAEbA,cAAc,GAAG,SAAUC,OAAO;IAC9B,IAAIC,WAAWD,WAAWA,QAAQ,MAAM,GAAGA,QAAQ,MAAM,GAAG,GAAG,GAAG;IAClEE,EAAE,cAAc,OAAO,CAAC;QACpB,WAAWD;IACf,GAAG;IACH,IAAI,CAACD,SAAS;QACV,6GAA6G;QAC7GE,EAAE,oCAAoC,OAAO,CAAC,SAAS,GAAG,CAAC,WAAW;IAC1E;AACJ;;;;;ACXa;AAEb,MAAMC,WAAWC,mBAAOA,CAAC,2FAAkB;AAC3C,IAAIC,gBAAgBD,mBAAOA,CAAC,sHAAkC;AAE9D,gDAAgD;AAChD,2CAA2C;AAC3CF,EAAE,wDAAwD,IAAI;AAC9DA,EAAE,iDAAiD,IAAI;AAEvD,SAASI,qBAAqBC,aAAa,EAAEC,KAAK;IAC9C,wEAAwE;IACxED,cAAc,IAAI,CAAC,YAAY;IAE/B,yDAAyD;IACzDA,cAAc,WAAW,CAAC,gBAAgB,QAAQ,CAAC;IACnDA,cAAc,IAAI,CAACA,cAAc,IAAI,CAAC;IACtCA,cAAc,IAAI,CAAC,SAAS;IAE5B,+BAA+B;IAC/BL,EAAE,oBAAoB,QAAQ,CAAC;IAE/BM,MAAM,IAAI,CAAC,mBAAmB,WAAW,CAAC;IAE1C,8CAA8C;IAC9C,2FAA2F;IAC3FA,MAAM,IAAI,CAAC,2BAA2B,OAAO,CAAC,2BAA2B,QAAQ,CAAC;IAClFA,MAAM,IAAI,CAAC,uBAAuB,OAAO,CAAC;IAE1C,qCAAqC;IACrCA,MAAM,IAAI,CAAC,qCAAqC,QAAQ,CAAC;IACzDA,MAAM,IAAI,CAAC,gCAAgC,OAAO,CAAC,QAAQ,QAAQ,CAAC;AACxE;AAEA,oFAAoF;AACpFN,EAAE,2BAA2B,EAAE,CAAC,SAAS,SAAUO,CAAC;IAChD,IAAIC,MAAMR,EAAE,IAAI;IAChB,IAAIM,QAAQE,IAAI,OAAO,CAAC;IAExB,IAAIA,IAAI,QAAQ,CAAC,iBAAiB;QAC9BD,EAAE,cAAc;QAChBH,qBAAqBI,KAAKF;IAC9B;AACJ;AAEAN,EAAE,oBAAoB,EAAE,CAAC,SAAS,SAAUO,CAAC;IACzCA,EAAE,cAAc;IAChB,IAAIC,MAAMR,EAAE;IACZ,IAAIS,kBAAkBT,EAAE;IACxB,IAAIM,QAAQE,IAAI,OAAO,CAAC;IACxBR,EAAE,cAAc,OAAO,CAAC;QACpB,WAAWA,EAAES,iBAAiB,MAAM,GAAG,GAAG;IAC9C,GAAG;IACHL,qBAAqBI,KAAKF;AAC9B;AAEA;;;;;CAKC,GACDN,EAAE,qDAAqD,EAAE,CAAC,UAAU,SAAUO,CAAC;IAC3E,IAAIG,eAAeV,EAAE;IACrB,IAAIW,uBAAuBX,EAAE;IAC7B,IAAIK,gBAAgBL,EAAE;IAEtBU,aAAa,GAAG,CAACC,sBAAsB,EAAE,CAAC,UAAU;QAChD,IAAIC,gBAAgB;QAEpBF,aAAa,IAAI,CAAC,SAAUG,KAAK,EAAEC,UAAU;YACzC,IAAIC,cAAcf,EAAEc;YACpB,IAAIE,sBAAsBhB,EAAEW,oBAAoB,CAACE,MAAM;YAEvD,+CAA+C;YAC/C,IAAIC,WAAW,OAAO,CAAC,MAAM,IAAI,GAAG;gBAChCC,YAAY,IAAI,CAAC,YAAY;gBAC7BC,oBAAoB,IAAI,CAAC,YAAY;gBACrC;YACJ;YAEAD,YAAY,IAAI,CAAC,YAAY;YAE7B,IAAIA,YAAY,GAAG,KAAK,GAAG;gBACvBC,oBAAoB,IAAI,CAAC,YAAY;gBAErC,4CAA4C;gBAC5C,IAAIA,oBAAoB,IAAI,CAAC,qBAAqB,GAAG;oBACjDJ,gBAAgB;gBACpB,OAAO;oBACH,mFAAmF;oBACnFA,gBAAgB;oBAChB,OAAO,OAAO,uBAAuB;gBACzC;YACJ,OAAO;gBACHI,oBAAoB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY;YAClE;QACJ;QAEA,sCAAsC;QACtCX,cAAc,IAAI,CAAC,YAAY,CAACO;IACpC;AACJ;AAEAZ,EAAE,0BAA0B,EAAE,CAAC,SAAS,SAAUO,CAAC;IAC/CP,EAAE,qBAAqB,OAAO,CAAC;AACnC;AAEA,SAASiB;IACL,IAAIC,kBAAkBlB,EAAE,gCAAgC,QAAQ;IAChE,OAAO;QACH,WAAWkB,gBAAgB,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB;QACnE,UAAUA,gBAAgB,IAAI,CAAC,aAAa,IAAI,CAAC,gBAAgB;QACjE,UAAUA,gBAAgB,IAAI,CAAC,aAAa,IAAI,CAAC;QACjD,UAAUA,gBAAgB,IAAI,CAAC,aAAa,IAAI,CAAC;QACjD,MAAMA,gBAAgB,IAAI,CAAC,SAAS,IAAI,CAAC;QACzC,WAAWA,gBAAgB,IAAI,CAAC,cAAc,IAAI,CAAC;QACnD,YAAYA,gBAAgB,IAAI,CAAC,eAAe,IAAI,CAAC;IACzD;AACJ;AAEAlB,EAAE,yBAAyB,EAAE,CAAC,UAAU,SAAUO,CAAC;IAC/CA,EAAE,cAAc;IAChB,IAAIY,OAAOnB,EAAE,IAAI,EAAE,OAAO,CAAC;IAC3B,IAAIoB,MAAMD,KAAK,IAAI,CAAC;IACpB,IAAIE,gBAAgBJ;IACpB,4CAA4C;IAC5CjB,EAAE,yBAAyB,IAAI,CAAC,YAAY;IAC5CoB,MAAMnB,SAAS,cAAc,CAACmB,KAAKC;IAEnCrB,EAAE,IAAI,CAAC;QACH,KAAKoB;QACL,MAAM;QACN,UAAU;QACV,MAAMD,KAAK,SAAS;QACpB,SAAS,SAAUG,IAAI;YACnB,IAAIA,KAAK,KAAK,EAAE;gBACZtB,EAAE,qBACG,IAAI,GACJ,IAAI,CAACsB,KAAK,YAAY;gBAC3BnB,cAAcH,EAAE;gBAChBA,EAAE,yBAAyB,IAAI,CAAC,YAAY;YAChD,OAAO;gBACHuB,OAAO,QAAQ,CAAC,MAAM;YAC1B;YACAvB,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;QAC1B;QAAG,OAAO,SAAUwB,GAAG;YACnB,IAAIA,IAAI,YAAY,IAAIA,IAAI,YAAY,CAAC,WAAW,EAAE;gBAClDD,OAAO,QAAQ,CAAC,IAAI,GAAGC,IAAI,YAAY,CAAC,WAAW;YACvD;QACJ;IACJ;AACJ;;;;;ACxJa;AAEb,SAASC,eAAeL,GAAG;IACvB,MAAMM,WAAWN,IAAI,KAAK,CAAC,MAAM,4CAA4C;IAC7E,OAAO,IAAIO,gBAAgBD,QAAQ,CAAC,EAAE,IAAI,KAAK,iCAAiC;AACpF;AAEA;;;;;CAKC,GACD,SAASE,eAAeR,GAAG,EAAES,MAAM;IAC/B,MAAMH,WAAWN,IAAI,KAAK,CAAC,MAAM,4CAA4C;IAC7E,MAAMU,UAAUJ,QAAQ,CAAC,EAAE;IAE3B,iDAAiD;IACjD,IAAIK,cAAcN,eAAeL;IAEjC,+CAA+C;IAC/CpB,EAAE,IAAI,CAAC6B,QAAQ,SAAUG,GAAG,EAAEC,KAAK;QAC/BF,YAAY,GAAG,CAACC,KAAKC,QAAQ,gCAAgC;IACjE;IAEA,uBAAuB;IACvB,OAAOH,UAAU,MAAMC,YAAY,QAAQ;AAC/C;AAEAlC,cAAc,GAAG;IACb,gBAAgB+B;IAChB,gBAAgBH;AACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChCa;AAEb,IAAIS,iBAAiBhC,mBAAOA,CAAC,sIAAW;AAExCF,EAAEmC,UAAU,KAAK,CAAC;IACdD,eAAehC,mBAAOA,CAAC,sFAAe;AAC1C"}