PageSourceSearch

https://www.martinguitar.com/on/demandware.static/Sites-MartinGuit…/-/default/v1790099069325/js/vcn.js

js martinguitar.com collected 2026-09-24 09:18:39 UTC 9,463 bytes, 247 lines download raw bytes

vendor: 3,702 bytes, lines 1-89
1/*! ab v3.3.0 */
2/******/ (function(modules) { // webpackBootstrap
3/******/ 	// The module cache
4/******/ 	var installedModules = {};
5/******/
6/******/ 	// The require function
7/******/ 	function __webpack_require__(moduleId) {
8/******/
9/******/ 		// Check if module is in cache
10/******/ 		if(installedModules[moduleId]) {
11/******/ 			return installedModules[moduleId].exports;
12/******/ 		}
13/******/ 		// Create a new module (and put it into the cache)
14/******/ 		var module = installedModules[moduleId] = {
15/******/ 			i: moduleId,
16/******/ 			l: false,
17/******/ 			exports: {}
18/******/ 		};
19/******/
20/******/ 		// Execute the module function
21/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22/******/
23/******/ 		// Flag the module as loaded
24/******/ 		module.l = true;
25/******/
26/******/ 		// Return the exports of the module
27/******/ 		return module.exports;
28/******/ 	}
29/******/
30/******/
31/******/ 	// expose the modules object (__webpack_modules__)
32/******/ 	__webpack_require__.m = modules;
33/******/
34/******/ 	// expose the module cache
35/******/ 	__webpack_require__.c = installedModules;
36/******/
37/******/ 	// define getter function for harmony exports
38/******/ 	__webpack_require__.d = function(exports, name, getter) {
39/******/ 		if(!__webpack_require__.o(exports, name)) {
40/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
41/******/ 		}
42/******/ 	};
43/******/
44/******/ 	// define __esModule on exports
45/******/ 	__webpack_require__.r = function(exports) {
46/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
47/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
48/******/ 		}
49/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
50/******/ 	};
51/******/
52/******/ 	// create a fake namespace object
53/******/ 	// mode & 1: value is a module id, require it
54/******/ 	// mode & 2: merge all properties of value into the ns
55/******/ 	// mode & 4: return value when already ns object
56/******/ 	// mode & 8|1: behave like require
57/******/ 	__webpack_require__.t = function(value, mode) {
58/******/ 		if(mode & 1) value = __webpack_require__(value);
59/******/ 		if(mode & 8) return value;
60/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
61/******/ 		var ns = Object.create(null);
62/******/ 		__webpack_require__.r(ns);
63/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
64/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
65/******/ 		return ns;
66/******/ 	};
67/******/
68/******/ 	// getDefaultExport function for compatibility with non-harmony modules
69/******/ 	__webpack_require__.n = function(module) {
70/******/ 		var getter = module && module.__esModule ?
71/******/ 			function getDefault() { return module['default']; } :
72/******/ 			function getModuleExports() { return module; };
73/******/ 		__webpack_require__.d(getter, 'a', getter);
74/******/ 		return getter;
75/******/ 	};
76/******/
77/******/ 	// Object.prototype.hasOwnProperty.call
78/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
79/******/
80/******/ 	// __webpack_public_path__
81/******/ 	__webpack_require__.p = "";
82/******/
83/******/
84/******/ 	// Load entry module and return exports
85/******/ 	return __webpack_require__(__webpack_require__.s = "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/vcn.js");
86/******/ })
87/************************************************************************/
88/******/ ({
89
90/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/vcn.js":
91/*!**************************************************************************************************!*\
92  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/vcn.js ***!
93  \**************************************************************************************************/
94/*! no static exports found */
95/***/ (function(module, exports) {
96
97$(function () {
98  function affirmConfirmationThenOrderConfirm(affirmUserConfirmationUrl) {
99    $('body').spinner().start();
100    $.ajax({
101      url: affirmUserConfirmationUrl,
102      method: 'GET',
103      success: function success(data) {
104        var redirect = $('<form>').appendTo(document.body).attr({
105          method: 'POST',
106          action: data.continueUrl
107        });
108        $('<input>').appendTo(redirect).attr({
109          name: 'orderID',
110          value: data.orderID
111        });
112        $('<input>').appendTo(redirect).attr({
113          name: 'orderToken',
114          value: data.orderToken
115        });
116        redirect.submit();
117      },
118      error: function error(_error) {
119        $('body').spinner().stop(); // enable the placeOrder button here
120
121        $('body').trigger('checkout:enableButton', $('.next-step-button button'));
122
123        if (err.responseJSON && err.responseJSON.redirectUrl) {
124          window.location.href = err.responseJSON.redirectUrl;
125        }
126      }
127    });
128  } // Note: changed .place-order to .submit-order
129
130
131  $(document).on('click', '.submit-order', function (e) {
132    if ($('.payment-information').data('payment-method-id') !== 'Affirm') {
133      return true;
134    }
135
136    if (!$('#vcn-data').data('affirmselected') || window.vcn_approved) {
137      return true;
138    }
139
140    var checkoutObject = $('#vcn-data').data('vcndata');
141
142    if ($('#affirm-inline-container').length > 0) {
143      affirm.checkout.init();
144    }
145
146    if ($('#vcn-data').data('enabled')) {
147      var $thisBtn = $(this);
148      $('#vcn-data').data('vcncomplete', 'true');
149      e.preventDefault();
150      affirm.checkout.open_vcn({
151        success: function success(card_details) {
152          $.ajax({
153            url: $('#vcn-data').data('updateurl') + '?' + $('#vcn-data').data('csrfname') + '=' + $('#vcn-data').data('csrftoken'),
154            data: card_details,
155            dataType: 'json',
156            method: 'POST',
157            success: function success(response) {
158              if (!response.error) {
159                window.vcn_approved = true;
160                $thisBtn.click();
161              } else if ($('div.error-form').length) {
162                $('div.error-form').text($('#vcn-data').data('errormessages')["default"]);
163              } else {
164                $('table.item-list').before('<div class=\'error-form\'>' + $('#vcn-data').data('errormessages')["default"] + '</div>');
165              }
166            },
167            error: function error(_error2) {
168              $('table.item-list').before('<div class="error-form">Error in establishing connection with Affirm VCN service!</div>');
169            },
170            done: function done() {}
171          });
172        },
173        error: function error(_error3) {
174          if (_error3.reason == 'canceled' || _error3.reason == 'closed') {
175            window.location.assign($('#vcn-data').data('errorurl'));
176            return;
177          }
178
179          var errorText = '';
180          var errorCollection = $('#vcn-data').data('errormessages');
181          errorText = errorCollection[_error3.reason] || errorCollection["default"];
182
183          if ($('div.error-form').length) {
184            $('div.error-form').text(errorText);
185          } else {
186            $('table.item-list').before('<div class=\'error-form\'>' + errorText + '</div>');
187          }
188        },
189        checkout_data: checkoutObject
190      });
191    } else if (checkoutObject.metadata.mode == 'modal') {
192      $('.submit-order').addClass('disabled');
193      e.preventDefault();
194      affirm.checkout(checkoutObject);
195      affirm.checkout.open({
196        onFail: function onFail(a) {
197          window.location.assign(checkoutObject.merchant.user_cancel_url);
198          $('.submit-order').removeClass('disabled');
199        },
200        onSuccess: function onSuccess(data) {
201          var csrftoken = $('#vcn-data').data('csrfname') + '=' + $('#vcn-data').data('csrftoken');
202          var url = checkoutObject.merchant.user_confirmation_url + '?checkout_token=' 
202+ data.checkout_token + '&' + csrftoken;
203          affirmConfirmationThenOrderConfirm(url);
204        }
205      });
206    } else {
207      e.preventDefault();
208      affirm.checkout(checkoutObject);
209      affirm.checkout.post();
210    }
211  });
212  $(document).on('product:afterAttributeSelect', function (data, container) {
213    var newPrice = null;
214    var product = container.data.product;
215
216    if (product.price.sales) {
217      newPrice = product.price.sales.value;
218    } else if (product.price.list) {
219      newPrice = product.price.list.value;
220    } else if (product.price.startingFromPrice) {
221      newPrice = product.price.startingFromPrice.sales.value;
222    }
223
224    $('.affirm-as-low-as').attr('data-amount', (newPrice * 100).toFixed());
225
226    if (typeof affirm.ui.refresh !== 'undefined') {
227      affirm.ui.refresh();
228    }
229  });
230  $(document).on('checkout:updateCheckoutView', function (e, data) {
231    $('.affirm-product-modal').attr('data-amount', (data.order.totals.grandTotal.substr(1) * 100).toFixed());
232
233    if (typeof affirm.ui.refresh !== 'undefined') {
234      affirm.ui.refresh();
235    }
236  });
237  affirm.ui.ready(function () {
238    affirm.ui.error.on('close', function () {
239      window.location.replace($('#vcn-data').data('errorurl'));
240    });
241  });
242});
243
244/***/ })
244
245
246/******/ });
247//# sourceMappingURL=vcn.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.