@paydock/client-sdk 1.141.0 → 1.143.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +85 -0
  2. package/bundles/index.cjs +370 -204
  3. package/bundles/index.cjs.d.ts +535 -481
  4. package/bundles/index.mjs +205 -38
  5. package/bundles/index.mjs.d.ts +535 -481
  6. package/bundles/types/components/apple-pay-version.d.ts +29 -0
  7. package/bundles/types/components/apple-pay-version.d.ts.map +1 -0
  8. package/bundles/types/index.d.ts +2 -2
  9. package/bundles/types/index.d.ts.map +1 -1
  10. package/bundles/types/open-wallets/base/open-wallet-buttons.d.ts.map +1 -1
  11. package/bundles/types/open-wallets/index.d.ts +1 -1
  12. package/bundles/types/open-wallets/index.d.ts.map +1 -1
  13. package/bundles/types/open-wallets/services/apple-pay/apple-pay.open-wallet.service.d.ts.map +1 -1
  14. package/bundles/types/payment-source-widget/index.d.ts +1 -1
  15. package/bundles/types/payment-source-widget/index.d.ts.map +1 -1
  16. package/bundles/types/vault-display-widget/vault-display-widget.d.ts.map +1 -1
  17. package/bundles/types/wallet-buttons/wallet-services/apple.wallet-service.d.ts +1 -0
  18. package/bundles/types/wallet-buttons/wallet-services/apple.wallet-service.d.ts.map +1 -1
  19. package/bundles/types/wallet-buttons-express/base.wallet-button-express.d.ts +16 -0
  20. package/bundles/types/wallet-buttons-express/base.wallet-button-express.d.ts.map +1 -1
  21. package/bundles/types/wallet-buttons-express/index.d.ts +36 -0
  22. package/bundles/types/wallet-buttons-express/index.d.ts.map +1 -1
  23. package/bundles/types/wallet-buttons-express/services/apple-pay/apple-pay.wallet-button-express.d.ts.map +1 -1
  24. package/bundles/types/wallet-buttons-express/services/paypal/paypal.wallet-button-express.d.ts +1 -1
  25. package/bundles/types/wallet-buttons-express/services/paypal/paypal.wallet-button-express.d.ts.map +1 -1
  26. package/bundles/types/widget/html-multi-widget.d.ts +4 -1
  27. package/bundles/types/widget/html-multi-widget.d.ts.map +1 -1
  28. package/bundles/types/widget/index.d.ts +2 -1
  29. package/bundles/types/widget/index.d.ts.map +1 -1
  30. package/bundles/types/widget/widget-event-map.d.ts +37 -0
  31. package/bundles/types/widget/widget-event-map.d.ts.map +1 -0
  32. package/bundles/widget.umd.js +370 -204
  33. package/bundles/widget.umd.js.d.ts +535 -481
  34. package/bundles/widget.umd.js.min.d.ts +535 -481
  35. package/bundles/widget.umd.min.js +1 -1
  36. package/docs/wallet-buttons-express.md +85 -0
  37. package/package.json +12 -5
package/bundles/index.cjs CHANGED
@@ -1194,7 +1194,7 @@ SDK.headerKeys = Object.freeze({
1194
1194
  version: 'x-sdk-version',
1195
1195
  type: 'x-sdk-type'
1196
1196
  });
1197
- SDK._version = 'v1.141.0';
1197
+ SDK._version = 'v1.143.0-beta';
1198
1198
 
1199
1199
  function isFunction(value) {
1200
1200
  return typeof value === 'function';
@@ -5035,7 +5035,7 @@ var IFrame = /*#__PURE__*/function () {
5035
5035
  }]);
5036
5036
  }();
5037
5037
 
5038
- var EVENT$5 = {
5038
+ var EVENT$4 = {
5039
5039
  AFTER_LOAD: 'afterLoad',
5040
5040
  SUBMIT: 'submit',
5041
5041
  FINISH: 'finish',
@@ -5092,9 +5092,9 @@ var IFrameEvent = /*#__PURE__*/function () {
5092
5092
  }, {
5093
5093
  key: "on",
5094
5094
  value: function on(eventName, widgetId, cb) {
5095
- for (var event in EVENT$5) {
5096
- if (!EVENT$5.hasOwnProperty(event)) continue;
5097
- if (eventName === EVENT$5[event]) {
5095
+ for (var event in EVENT$4) {
5096
+ if (!EVENT$4.hasOwnProperty(event)) continue;
5097
+ if (eventName === EVENT$4[event]) {
5098
5098
  this.listeners.push({
5099
5099
  event: eventName,
5100
5100
  listener: cb,
@@ -5219,7 +5219,7 @@ var GPaymentsService = /*#__PURE__*/function () {
5219
5219
  key: "setupIFrameEvents",
5220
5220
  value: function setupIFrameEvents(widgetId) {
5221
5221
  var _this = this;
5222
- this.iFrameEvent.on(EVENT$5.CHARGE_AUTH, widgetId, function (data) {
5222
+ this.iFrameEvent.on(EVENT$4.CHARGE_AUTH, widgetId, function (data) {
5223
5223
  if (data.status === IFRAME_STATUS.SKIPPED || data.status === IFRAME_STATUS.FINISHED) {
5224
5224
  if (data.info) _this.eventEmitter.emit(GPAYMENTS_EVENT.INFO, {
5225
5225
  info: data.info
@@ -5229,7 +5229,7 @@ var GPaymentsService = /*#__PURE__*/function () {
5229
5229
  status: data.status
5230
5230
  }, data.charge_3ds_id));
5231
5231
  });
5232
- this.iFrameEvent.on(EVENT$5.CHARGE_AUTH_SUCCESS, widgetId, function (data) {
5232
+ this.iFrameEvent.on(EVENT$4.CHARGE_AUTH_SUCCESS, widgetId, function (data) {
5233
5233
  _this.processResult(data.charge_3ds_id);
5234
5234
  });
5235
5235
  }
@@ -6781,7 +6781,7 @@ var ZipmoneyContextualRunner = /*#__PURE__*/function (_ContextualRunner) {
6781
6781
  key: "setCompleteCheckoutListener",
6782
6782
  value: function setCompleteCheckoutListener() {
6783
6783
  var _this5 = this;
6784
- this.event.on(EVENT$5.FINISH, this.widgetId, function (event) {
6784
+ this.event.on(EVENT$4.FINISH, this.widgetId, function (event) {
6785
6785
  _this5.event.clear();
6786
6786
  clearInterval(_this5.checkInterval);
6787
6787
  if (_this5.checkoutTab && !_this5.checkoutTab.closed) {
@@ -6868,15 +6868,15 @@ var StorageDispatcher = /*#__PURE__*/function () {
6868
6868
  value: function setupIframeEventListeners() {
6869
6869
  var _this = this;
6870
6870
  if (!this.widgetId) return;
6871
- this.iframeEvent.on(EVENT$5.AFTER_LOAD, this.widgetId, function (_event) {
6871
+ this.iframeEvent.on(EVENT$4.AFTER_LOAD, this.widgetId, function (_event) {
6872
6872
  var _a;
6873
6873
  (_a = _this.onLoadCallback) === null || _a === void 0 ? void 0 : _a.call(_this);
6874
6874
  });
6875
- this.iframeEvent.on(EVENT$5.DISPATCH_SUCCESS, this.widgetId, function (_event) {
6875
+ this.iframeEvent.on(EVENT$4.DISPATCH_SUCCESS, this.widgetId, function (_event) {
6876
6876
  var _a, _b;
6877
6877
  (_b = (_a = _this.pushCallbacks) === null || _a === void 0 ? void 0 : _a.onSuccess) === null || _b === void 0 ? void 0 : _b.call(_a);
6878
6878
  });
6879
- this.iframeEvent.on(EVENT$5.DISPATCH_ERROR, this.widgetId, function (_event) {
6879
+ this.iframeEvent.on(EVENT$4.DISPATCH_ERROR, this.widgetId, function (_event) {
6880
6880
  var _a, _b;
6881
6881
  (_b = (_a = _this.pushCallbacks) === null || _a === void 0 ? void 0 : _a.onError) === null || _b === void 0 ? void 0 : _b.call(_a);
6882
6882
  });
@@ -8090,7 +8090,7 @@ var AfterPayWalletService = /*#__PURE__*/function (_WalletService) {
8090
8090
  }]);
8091
8091
  }(WalletService);
8092
8092
 
8093
- /*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */
8093
+ /*! @license DOMPurify 3.4.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.0/LICENSE */
8094
8094
 
8095
8095
  var purify_cjs;
8096
8096
  var hasRequiredPurify_cjs;
@@ -8298,7 +8298,7 @@ function requirePurify_cjs () {
8298
8298
 
8299
8299
  const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);
8300
8300
  const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
8301
- const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
8301
+ const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnalign', 'columnlines', 'columnspacing', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lquote', 'lspace', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
8302
8302
  const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
8303
8303
 
8304
8304
  // eslint-disable-next-line unicorn/better-regex
@@ -8395,7 +8395,7 @@ function requirePurify_cjs () {
8395
8395
  function createDOMPurify() {
8396
8396
  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
8397
8397
  const DOMPurify = root => createDOMPurify(root);
8398
- DOMPurify.version = '3.3.3';
8398
+ DOMPurify.version = '3.4.0';
8399
8399
  DOMPurify.removed = [];
8400
8400
  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
8401
8401
  // Not running in a browser, provide a factory function
@@ -8671,7 +8671,7 @@ function requirePurify_cjs () {
8671
8671
  NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
8672
8672
  MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
8673
8673
  HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
8674
- CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
8674
+ CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || create(null);
8675
8675
  if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
8676
8676
  CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
8677
8677
  }
@@ -8711,13 +8711,10 @@ function requirePurify_cjs () {
8711
8711
  addToSet(ALLOWED_ATTR, xml);
8712
8712
  }
8713
8713
  }
8714
- /* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */
8715
- if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) {
8716
- EXTRA_ELEMENT_HANDLING.tagCheck = null;
8717
- }
8718
- if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) {
8719
- EXTRA_ELEMENT_HANDLING.attributeCheck = null;
8720
- }
8714
+ /* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent
8715
+ * leaking across calls when switching from function to array config */
8716
+ EXTRA_ELEMENT_HANDLING.tagCheck = null;
8717
+ EXTRA_ELEMENT_HANDLING.attributeCheck = null;
8721
8718
  /* Merge configuration parameters */
8722
8719
  if (cfg.ADD_TAGS) {
8723
8720
  if (typeof cfg.ADD_TAGS === 'function') {
@@ -9040,6 +9037,11 @@ function requirePurify_cjs () {
9040
9037
  _forceRemove(currentNode);
9041
9038
  return true;
9042
9039
  }
9040
+ /* Remove risky CSS construction leading to mXSS */
9041
+ if (SAFE_FOR_XML && currentNode.namespaceURI === HTML_NAMESPACE && tagName === 'style' && _isNode(currentNode.firstElementChild)) {
9042
+ _forceRemove(currentNode);
9043
+ return true;
9044
+ }
9043
9045
  /* Remove any occurrence of processing instructions */
9044
9046
  if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
9045
9047
  _forceRemove(currentNode);
@@ -9051,7 +9053,7 @@ function requirePurify_cjs () {
9051
9053
  return true;
9052
9054
  }
9053
9055
  /* Remove element if anything forbids its presence */
9054
- if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {
9056
+ if (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {
9055
9057
  /* Check if we have a custom element to handle */
9056
9058
  if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
9057
9059
  if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
@@ -9290,7 +9292,7 @@ function requirePurify_cjs () {
9290
9292
  *
9291
9293
  * @param fragment to iterate over recursively
9292
9294
  */
9293
- const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
9295
+ const _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {
9294
9296
  let shadowNode = null;
9295
9297
  const shadowIterator = _createNodeIterator(fragment);
9296
9298
  /* Execute a hook if present */
@@ -9304,7 +9306,7 @@ function requirePurify_cjs () {
9304
9306
  _sanitizeAttributes(shadowNode);
9305
9307
  /* Deep shadow DOM detected */
9306
9308
  if (shadowNode.content instanceof DocumentFragment) {
9307
- _sanitizeShadowDOM(shadowNode.content);
9309
+ _sanitizeShadowDOM2(shadowNode.content);
9308
9310
  }
9309
9311
  }
9310
9312
  /* Execute a hook if present */
@@ -9399,7 +9401,7 @@ function requirePurify_cjs () {
9399
9401
  _sanitizeAttributes(currentNode);
9400
9402
  /* Shadow DOM detected, sanitize it */
9401
9403
  if (currentNode.content instanceof DocumentFragment) {
9402
- _sanitizeShadowDOM(currentNode.content);
9404
+ _sanitizeShadowDOM2(currentNode.content);
9403
9405
  }
9404
9406
  }
9405
9407
  /* If we sanitized `dirty` in-place, return it. */
@@ -9408,6 +9410,14 @@ function requirePurify_cjs () {
9408
9410
  }
9409
9411
  /* Return sanitized string or DOM */
9410
9412
  if (RETURN_DOM) {
9413
+ if (SAFE_FOR_TEMPLATES) {
9414
+ body.normalize();
9415
+ let html = body.innerHTML;
9416
+ arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
9417
+ html = stringReplace(html, expr, ' ');
9418
+ });
9419
+ body.innerHTML = html;
9420
+ }
9411
9421
  if (RETURN_DOM_FRAGMENT) {
9412
9422
  returnNode = createDocumentFragment.call(body.ownerDocument);
9413
9423
  while (body.firstChild) {
@@ -10240,6 +10250,44 @@ var FlypayWalletService = /*#__PURE__*/function (_WalletService) {
10240
10250
  }]);
10241
10251
  }(WalletService);
10242
10252
 
10253
+ /**
10254
+ * Maximum Apple Pay JS API version the SDK targets.
10255
+ * Bump this when adopting features from a newer version.
10256
+ */
10257
+ var APPLE_PAY_MAX_VERSION = 14;
10258
+ /**
10259
+ * Minimum Apple Pay JS API version the SDK can operate with.
10260
+ *
10261
+ * Version 3 (iOS 11 / macOS 10.13) is required because the SDK uses:
10262
+ * - `ApplePayError` constructor
10263
+ * - Object-form `completeShippingContactSelection(update)`
10264
+ * - Object-form `completeShippingMethodSelection(update)`
10265
+ * - `supportedCountries` in payment requests
10266
+ *
10267
+ * All of these were introduced in version 3.
10268
+ */
10269
+ var APPLE_PAY_MIN_VERSION = 3;
10270
+ /**
10271
+ * Detects the highest Apple Pay JS API version the current device supports,
10272
+ * starting from {@link APPLE_PAY_MAX_VERSION} down to {@link APPLE_PAY_MIN_VERSION}.
10273
+ *
10274
+ * Returns `0` if Apple Pay is not available or the device does not support
10275
+ * the minimum required version.
10276
+ *
10277
+ * @see https://developer.apple.com/documentation/apple_pay_on_the_web/applepaysession/supportsversion
10278
+ */
10279
+ function getSupportedApplePayVersion() {
10280
+ if (!window.ApplePaySession) {
10281
+ return 0;
10282
+ }
10283
+ for (var v = APPLE_PAY_MAX_VERSION; v >= APPLE_PAY_MIN_VERSION; v--) {
10284
+ if (ApplePaySession.supportsVersion(v)) {
10285
+ return v;
10286
+ }
10287
+ }
10288
+ return 0;
10289
+ }
10290
+
10243
10291
  var DEFAULT_APPLE_PAY_CAPABILITIES$2 = ['paymentCredentialsAvailable'];
10244
10292
  var AppleWalletService = /*#__PURE__*/function (_WalletService) {
10245
10293
  function AppleWalletService(publicKey, meta, gatewayName, eventEmitter) {
@@ -10568,13 +10616,32 @@ var AppleWalletService = /*#__PURE__*/function (_WalletService) {
10568
10616
  }, {
10569
10617
  key: "onApplePayButtonClicked",
10570
10618
  value: function onApplePayButtonClicked() {
10571
- this.paymentSession = new ApplePaySession(14, this.createRequest());
10619
+ var _this5 = this;
10620
+ var applePayApiVersion = getSupportedApplePayVersion();
10621
+ if (applePayApiVersion === 0) {
10622
+ this.eventEmitter.emit(WALLET_EVENT.UNAVAILABLE, {
10623
+ wallet: WALLET_TYPE.APPLE
10624
+ });
10625
+ return;
10626
+ }
10627
+ this.paymentSession = new ApplePaySession(applePayApiVersion, this.createRequest());
10572
10628
  this.paymentSession.onvalidatemerchant = this.onValidateMerchant;
10573
10629
  this.paymentSession.onpaymentauthorized = this.onPaymentAuthorized;
10574
10630
  this.paymentSession.oncancel = this.onCancelPayment;
10575
10631
  this.paymentSession.onshippingcontactselected = this.onShippingContactSelected;
10576
10632
  this.paymentSession.onshippingmethodselected = this.onShippingMethodSelected;
10577
10633
  this.paymentSession.begin();
10634
+ // As part of PAYCA-2065 we detect that the paymentSession.onvalidatemerchant is not
10635
+ // executed if the browser is not safari. In that case, we handle it outside the
10636
+ // actual merchant validation function.
10637
+ var isIOS = /iPhone|iPad|iPod/.test(navigator.userAgent);
10638
+ var isDesktopRequestIOS = navigator.maxTouchPoints > 1 && /Macintosh/.test(navigator.userAgent);
10639
+ if (!window.safari && !isIOS && !isDesktopRequestIOS) {
10640
+ this.handleMerchantOnButtonClickEvent()["catch"](function (err) {
10641
+ console.error('Error while processing merchant callback', err);
10642
+ _this5.paymentSession.abort();
10643
+ });
10644
+ }
10578
10645
  }
10579
10646
  }, {
10580
10647
  key: "createRequest",
@@ -10618,22 +10685,22 @@ var AppleWalletService = /*#__PURE__*/function (_WalletService) {
10618
10685
  }, {
10619
10686
  key: "getMerchantSession",
10620
10687
  value: function getMerchantSession() {
10621
- var _this5 = this;
10688
+ var _this6 = this;
10622
10689
  return new Promise(function (resolve, reject) {
10623
- return _this5.eventEmitter.emit(WALLET_EVENT.CALLBACK, {
10690
+ return _this6.eventEmitter.emit(WALLET_EVENT.CALLBACK, {
10624
10691
  data: _extends({
10625
10692
  request_type: 'CREATE_SESSION',
10626
10693
  wallet_type: WALLET_TYPE.APPLE,
10627
10694
  session_id: window.location.hostname
10628
- }, _this5.isShippingRequired() && {
10629
- request_shipping: _this5.meta.request_shipping
10695
+ }, _this6.isShippingRequired() && {
10696
+ request_shipping: _this6.meta.request_shipping
10630
10697
  }),
10631
10698
  onSuccess: function onSuccess(res) {
10632
10699
  return resolve(res);
10633
10700
  },
10634
10701
  onError: function onError(message) {
10635
10702
  console.error('Error generating order id', message);
10636
- _this5.eventEmitter.emit(WALLET_EVENT.PAYMENT_ERROR, {
10703
+ _this6.eventEmitter.emit(WALLET_EVENT.PAYMENT_ERROR, {
10637
10704
  message: message
10638
10705
  });
10639
10706
  reject(message);
@@ -11706,7 +11773,7 @@ var StripeWalletService = /*#__PURE__*/function (_WalletService) {
11706
11773
  * @param {string} ON_CLICK=onClick
11707
11774
  * @param {string} LOADED=onWalletLoaded
11708
11775
  */
11709
- var EVENT$4 = {
11776
+ var EVENT$3 = {
11710
11777
  UNAVAILABLE: EventEnum.UNAVAILABLE,
11711
11778
  UPDATE: EventEnum.UPDATE,
11712
11779
  PAYMENT_SUCCESSFUL: EventEnum.PAYMENT_SUCCESSFUL,
@@ -11832,7 +11899,7 @@ var WalletButtons = /*#__PURE__*/function () {
11832
11899
  this.setupServiceCallbacks();
11833
11900
  this.service.load(this.container);
11834
11901
  } catch (err) {
11835
- this.eventEmitter.emit(EVENT$4.UNAVAILABLE, null);
11902
+ this.eventEmitter.emit(EVENT$3.UNAVAILABLE, null);
11836
11903
  throw err;
11837
11904
  }
11838
11905
  }
@@ -11969,7 +12036,7 @@ var WalletButtons = /*#__PURE__*/function () {
11969
12036
  key: "on",
11970
12037
  value: function on(eventName, cb) {
11971
12038
  var _this = this;
11972
- if (eventName === EVENT$4.UPDATE) {
12039
+ if (eventName === EVENT$3.UPDATE) {
11973
12040
  this.hasUpdateHandler = true;
11974
12041
  }
11975
12042
  if (typeof cb === 'function') {
@@ -12004,10 +12071,10 @@ var WalletButtons = /*#__PURE__*/function () {
12004
12071
  value: function onUnavailable(handler) {
12005
12072
  var _this2 = this;
12006
12073
  if (typeof handler === 'function') {
12007
- return this.eventEmitter.subscribe(EVENT$4.UNAVAILABLE, handler);
12074
+ return this.eventEmitter.subscribe(EVENT$3.UNAVAILABLE, handler);
12008
12075
  }
12009
12076
  return new Promise(function (resolve) {
12010
- return _this2.eventEmitter.subscribe(EVENT$4.UNAVAILABLE, function () {
12077
+ return _this2.eventEmitter.subscribe(EVENT$3.UNAVAILABLE, function () {
12011
12078
  return resolve();
12012
12079
  });
12013
12080
  });
@@ -12033,10 +12100,10 @@ var WalletButtons = /*#__PURE__*/function () {
12033
12100
  var _this3 = this;
12034
12101
  this.hasUpdateHandler = true;
12035
12102
  if (typeof handler === 'function') {
12036
- return this.eventEmitter.subscribe(EVENT$4.UPDATE, handler);
12103
+ return this.eventEmitter.subscribe(EVENT$3.UPDATE, handler);
12037
12104
  }
12038
12105
  return new Promise(function (resolve) {
12039
- return _this3.eventEmitter.subscribe(EVENT$4.UPDATE, function (data) {
12106
+ return _this3.eventEmitter.subscribe(EVENT$3.UPDATE, function (data) {
12040
12107
  return resolve(data);
12041
12108
  });
12042
12109
  });
@@ -12060,10 +12127,10 @@ var WalletButtons = /*#__PURE__*/function () {
12060
12127
  value: function onPaymentSuccessful(handler) {
12061
12128
  var _this4 = this;
12062
12129
  if (typeof handler === 'function') {
12063
- return this.eventEmitter.subscribe(EVENT$4.PAYMENT_SUCCESSFUL, handler);
12130
+ return this.eventEmitter.subscribe(EVENT$3.PAYMENT_SUCCESSFUL, handler);
12064
12131
  }
12065
12132
  return new Promise(function (resolve) {
12066
- return _this4.eventEmitter.subscribe(EVENT$4.PAYMENT_SUCCESSFUL, function (data) {
12133
+ return _this4.eventEmitter.subscribe(EVENT$3.PAYMENT_SUCCESSFUL, function (data) {
12067
12134
  return resolve(data);
12068
12135
  });
12069
12136
  });
@@ -12087,10 +12154,10 @@ var WalletButtons = /*#__PURE__*/function () {
12087
12154
  value: function onPaymentInReview(handler) {
12088
12155
  var _this5 = this;
12089
12156
  if (typeof handler === 'function') {
12090
- return this.eventEmitter.subscribe(EVENT$4.PAYMENT_IN_REVIEW, handler);
12157
+ return this.eventEmitter.subscribe(EVENT$3.PAYMENT_IN_REVIEW, handler);
12091
12158
  }
12092
12159
  return new Promise(function (resolve) {
12093
- return _this5.eventEmitter.subscribe(EVENT$4.PAYMENT_IN_REVIEW, function (data) {
12160
+ return _this5.eventEmitter.subscribe(EVENT$3.PAYMENT_IN_REVIEW, function (data) {
12094
12161
  return resolve(data);
12095
12162
  });
12096
12163
  });
@@ -12114,10 +12181,10 @@ var WalletButtons = /*#__PURE__*/function () {
12114
12181
  value: function onPaymentError(handler) {
12115
12182
  var _this6 = this;
12116
12183
  if (typeof handler === 'function') {
12117
- return this.eventEmitter.subscribe(EVENT$4.PAYMENT_ERROR, handler);
12184
+ return this.eventEmitter.subscribe(EVENT$3.PAYMENT_ERROR, handler);
12118
12185
  }
12119
12186
  return new Promise(function (resolve) {
12120
- return _this6.eventEmitter.subscribe(EVENT$4.PAYMENT_ERROR, function (err) {
12187
+ return _this6.eventEmitter.subscribe(EVENT$3.PAYMENT_ERROR, function (err) {
12121
12188
  return resolve(err);
12122
12189
  });
12123
12190
  });
@@ -12143,10 +12210,10 @@ var WalletButtons = /*#__PURE__*/function () {
12143
12210
  value: function onAuthTokensChanged(handler) {
12144
12211
  var _this7 = this;
12145
12212
  if (typeof handler === 'function') {
12146
- return this.eventEmitter.subscribe(EVENT$4.AUTH_TOKENS_CHANGED, handler);
12213
+ return this.eventEmitter.subscribe(EVENT$3.AUTH_TOKENS_CHANGED, handler);
12147
12214
  }
12148
12215
  return new Promise(function (resolve) {
12149
- return _this7.eventEmitter.subscribe(EVENT$4.AUTH_TOKENS_CHANGED, function (err) {
12216
+ return _this7.eventEmitter.subscribe(EVENT$3.AUTH_TOKENS_CHANGED, function (err) {
12150
12217
  return resolve(err);
12151
12218
  });
12152
12219
  });
@@ -12169,7 +12236,7 @@ var WalletButtons = /*#__PURE__*/function () {
12169
12236
  key: "onClick",
12170
12237
  value: function onClick(handler) {
12171
12238
  if (typeof handler === 'function') {
12172
- return this.eventEmitter.subscribe(EVENT$4.ON_CLICK, handler);
12239
+ return this.eventEmitter.subscribe(EVENT$3.ON_CLICK, handler);
12173
12240
  }
12174
12241
  }
12175
12242
  /**
@@ -12188,10 +12255,10 @@ var WalletButtons = /*#__PURE__*/function () {
12188
12255
  value: function onCheckoutOpen(handler) {
12189
12256
  var _this8 = this;
12190
12257
  if (typeof handler === 'function') {
12191
- return this.eventEmitter.subscribe(EVENT$4.ON_CHECKOUT_OPEN, handler);
12258
+ return this.eventEmitter.subscribe(EVENT$3.ON_CHECKOUT_OPEN, handler);
12192
12259
  }
12193
12260
  return new Promise(function (resolve) {
12194
- return _this8.eventEmitter.subscribe(EVENT$4.ON_CHECKOUT_OPEN, function (err) {
12261
+ return _this8.eventEmitter.subscribe(EVENT$3.ON_CHECKOUT_OPEN, function (err) {
12195
12262
  return resolve(err);
12196
12263
  });
12197
12264
  });
@@ -12212,10 +12279,10 @@ var WalletButtons = /*#__PURE__*/function () {
12212
12279
  value: function onCheckoutClose(handler) {
12213
12280
  var _this9 = this;
12214
12281
  if (typeof handler === 'function') {
12215
- return this.eventEmitter.subscribe(EVENT$4.ON_CHECKOUT_CLOSE, handler);
12282
+ return this.eventEmitter.subscribe(EVENT$3.ON_CHECKOUT_CLOSE, handler);
12216
12283
  }
12217
12284
  return new Promise(function (resolve) {
12218
- return _this9.eventEmitter.subscribe(EVENT$4.ON_CHECKOUT_CLOSE, function (err) {
12285
+ return _this9.eventEmitter.subscribe(EVENT$3.ON_CHECKOUT_CLOSE, function (err) {
12219
12286
  return resolve(err);
12220
12287
  });
12221
12288
  });
@@ -12241,8 +12308,8 @@ var WalletButtons = /*#__PURE__*/function () {
12241
12308
  value: function setupOnWalletLoadedCallback() {
12242
12309
  var _this0 = this;
12243
12310
  this.service.on(WALLET_EVENT.LOADED, function (eventData) {
12244
- _this0.eventEmitter.emit(EVENT$4.ON_WALLET_LOADED, {
12245
- event: EVENT$4.ON_WALLET_LOADED,
12311
+ _this0.eventEmitter.emit(EVENT$3.ON_WALLET_LOADED, {
12312
+ event: EVENT$3.ON_WALLET_LOADED,
12246
12313
  data: eventData
12247
12314
  });
12248
12315
  });
@@ -12252,8 +12319,8 @@ var WalletButtons = /*#__PURE__*/function () {
12252
12319
  value: function setupUnavailableCallback() {
12253
12320
  var _this1 = this;
12254
12321
  this.service.on(WALLET_EVENT.UNAVAILABLE, function (eventData) {
12255
- return _this1.eventEmitter.emit(EVENT$4.UNAVAILABLE, {
12256
- event: EVENT$4.UNAVAILABLE,
12322
+ return _this1.eventEmitter.emit(EVENT$3.UNAVAILABLE, {
12323
+ event: EVENT$3.UNAVAILABLE,
12257
12324
  data: eventData
12258
12325
  });
12259
12326
  });
@@ -12263,8 +12330,8 @@ var WalletButtons = /*#__PURE__*/function () {
12263
12330
  value: function setupUpdateCallback() {
12264
12331
  var _this10 = this;
12265
12332
  this.service.on(WALLET_EVENT.UPDATE, function (eventData) {
12266
- return _this10.hasUpdateHandler ? _this10.eventEmitter.emit(EVENT$4.UPDATE, {
12267
- event: EVENT$4.UPDATE,
12333
+ return _this10.hasUpdateHandler ? _this10.eventEmitter.emit(EVENT$3.UPDATE, {
12334
+ event: EVENT$3.UPDATE,
12268
12335
  data: eventData
12269
12336
  }) : _this10.update({
12270
12337
  success: true
@@ -12276,8 +12343,8 @@ var WalletButtons = /*#__PURE__*/function () {
12276
12343
  value: function setupOnClickCallback() {
12277
12344
  var _this11 = this;
12278
12345
  this.service.on(WALLET_EVENT.BUTTON_CLICK, function (data) {
12279
- return _this11.eventEmitter.emit(EVENT$4.ON_CLICK, {
12280
- event: EVENT$4.ON_CLICK,
12346
+ return _this11.eventEmitter.emit(EVENT$3.ON_CLICK, {
12347
+ event: EVENT$3.ON_CLICK,
12281
12348
  data: data
12282
12349
  });
12283
12350
  });
@@ -12287,8 +12354,8 @@ var WalletButtons = /*#__PURE__*/function () {
12287
12354
  value: function setupOnCheckoutOpenCallback() {
12288
12355
  var _this12 = this;
12289
12356
  this.service.on(WALLET_EVENT.CHECKOUT_OPEN, function (data) {
12290
- return _this12.eventEmitter.emit(EVENT$4.ON_CHECKOUT_OPEN, {
12291
- event: EVENT$4.ON_CHECKOUT_OPEN,
12357
+ return _this12.eventEmitter.emit(EVENT$3.ON_CHECKOUT_OPEN, {
12358
+ event: EVENT$3.ON_CHECKOUT_OPEN,
12292
12359
  data: data
12293
12360
  });
12294
12361
  });
@@ -12298,8 +12365,8 @@ var WalletButtons = /*#__PURE__*/function () {
12298
12365
  value: function setupOnCheckoutCloseCallback() {
12299
12366
  var _this13 = this;
12300
12367
  this.service.on(WALLET_EVENT.CHECKOUT_CLOSE, function (data) {
12301
- return _this13.eventEmitter.emit(EVENT$4.ON_CHECKOUT_CLOSE, {
12302
- event: EVENT$4.ON_CHECKOUT_CLOSE,
12368
+ return _this13.eventEmitter.emit(EVENT$3.ON_CHECKOUT_CLOSE, {
12369
+ event: EVENT$3.ON_CHECKOUT_CLOSE,
12303
12370
  data: data
12304
12371
  });
12305
12372
  });
@@ -12331,7 +12398,7 @@ var WalletButtons = /*#__PURE__*/function () {
12331
12398
  if (typeof onSuccess === 'function') {
12332
12399
  onSuccess();
12333
12400
  }
12334
- var event = captureResult.status === 'inreview' ? EVENT$4.PAYMENT_IN_REVIEW : EVENT$4.PAYMENT_SUCCESSFUL;
12401
+ var event = captureResult.status === 'inreview' ? EVENT$3.PAYMENT_IN_REVIEW : EVENT$3.PAYMENT_SUCCESSFUL;
12335
12402
  _this15.eventEmitter.emit(event, {
12336
12403
  event: event,
12337
12404
  data: _extends(_extends({}, captureResult), data.customer && {
@@ -12344,8 +12411,8 @@ var WalletButtons = /*#__PURE__*/function () {
12344
12411
  if (typeof onError === 'function') {
12345
12412
  onError(err);
12346
12413
  }
12347
- _this15.eventEmitter.emit(EVENT$4.PAYMENT_ERROR, {
12348
- event: EVENT$4.PAYMENT_ERROR,
12414
+ _this15.eventEmitter.emit(EVENT$3.PAYMENT_ERROR, {
12415
+ event: EVENT$3.PAYMENT_ERROR,
12349
12416
  data: err
12350
12417
  });
12351
12418
  });
@@ -12356,8 +12423,8 @@ var WalletButtons = /*#__PURE__*/function () {
12356
12423
  value: function setupPaymentSuccessCallback() {
12357
12424
  var _this16 = this;
12358
12425
  this.service.on(WALLET_EVENT.PAYMENT_SUCCESS, function (eventData) {
12359
- return _this16.eventEmitter.emit(EVENT$4.PAYMENT_SUCCESSFUL, {
12360
- event: EVENT$4.PAYMENT_SUCCESSFUL,
12426
+ return _this16.eventEmitter.emit(EVENT$3.PAYMENT_SUCCESSFUL, {
12427
+ event: EVENT$3.PAYMENT_SUCCESSFUL,
12361
12428
  data: eventData
12362
12429
  });
12363
12430
  });
@@ -12367,8 +12434,8 @@ var WalletButtons = /*#__PURE__*/function () {
12367
12434
  value: function setupPaymentInReviewCallback() {
12368
12435
  var _this17 = this;
12369
12436
  this.service.on(WALLET_EVENT.PAYMENT_IN_REVIEW, function (eventData) {
12370
- return _this17.eventEmitter.emit(EVENT$4.PAYMENT_IN_REVIEW, {
12371
- event: EVENT$4.PAYMENT_IN_REVIEW,
12437
+ return _this17.eventEmitter.emit(EVENT$3.PAYMENT_IN_REVIEW, {
12438
+ event: EVENT$3.PAYMENT_IN_REVIEW,
12372
12439
  data: eventData
12373
12440
  });
12374
12441
  });
@@ -12378,8 +12445,8 @@ var WalletButtons = /*#__PURE__*/function () {
12378
12445
  value: function setupPaymentErrorCallback() {
12379
12446
  var _this18 = this;
12380
12447
  this.service.on(WALLET_EVENT.PAYMENT_ERROR, function (eventData) {
12381
- return _this18.eventEmitter.emit(EVENT$4.PAYMENT_ERROR, {
12382
- event: EVENT$4.PAYMENT_ERROR,
12448
+ return _this18.eventEmitter.emit(EVENT$3.PAYMENT_ERROR, {
12449
+ event: EVENT$3.PAYMENT_ERROR,
12383
12450
  data: eventData
12384
12451
  });
12385
12452
  });
@@ -12389,8 +12456,8 @@ var WalletButtons = /*#__PURE__*/function () {
12389
12456
  value: function setupAuthTokensChangedCallback() {
12390
12457
  var _this19 = this;
12391
12458
  this.service.on(WALLET_EVENT.AUTH_TOKENS_CHANGED, function (eventData) {
12392
- return _this19.eventEmitter.emit(EVENT$4.AUTH_TOKENS_CHANGED, {
12393
- event: EVENT$4.AUTH_TOKENS_CHANGED,
12459
+ return _this19.eventEmitter.emit(EVENT$3.AUTH_TOKENS_CHANGED, {
12460
+ event: EVENT$3.AUTH_TOKENS_CHANGED,
12394
12461
  data: eventData
12395
12462
  });
12396
12463
  });
@@ -13905,7 +13972,7 @@ var MultiWidget = /*#__PURE__*/function () {
13905
13972
  }, {
13906
13973
  key: "handleErrorEvent",
13907
13974
  value: function handleErrorEvent(event, error, purpose) {
13908
- if (Object.values(EVENT$5).includes(event)) {
13975
+ if (Object.values(EVENT$4).includes(event)) {
13909
13976
  this.event.emit({
13910
13977
  error: error,
13911
13978
  event: event,
@@ -14091,7 +14158,7 @@ var HtmlMultiWidget = /*#__PURE__*/function (_MultiWidget) {
14091
14158
  }, function (error) {
14092
14159
  if (error instanceof EventError) {
14093
14160
  error.setContextId(_this2.link.getParams().widget_id);
14094
- _this2.handleErrorEvent(EVENT$5.ERROR, error.toJSON().error, error.purpose);
14161
+ _this2.handleErrorEvent(EVENT$4.ERROR, error.toJSON().error, error.purpose);
14095
14162
  }
14096
14163
  console.error('Error when creating a token, widget will not be loaded');
14097
14164
  });
@@ -14103,7 +14170,7 @@ var HtmlMultiWidget = /*#__PURE__*/function (_MultiWidget) {
14103
14170
  key: "afterLoad",
14104
14171
  value: function afterLoad() {
14105
14172
  var _this3 = this;
14106
- this.on(EVENT$5.VALIDATION, function (data) {
14173
+ this.on(EVENT$4.VALIDATION, function (data) {
14107
14174
  _this3.validationData = data;
14108
14175
  });
14109
14176
  }
@@ -14362,7 +14429,7 @@ var HtmlMultiWidget = /*#__PURE__*/function (_MultiWidget) {
14362
14429
  }, {
14363
14430
  key: "onFinishInsert",
14364
14431
  value: function onFinishInsert(selector, dataType) {
14365
- this.on(EVENT$5.FINISH, function (event) {
14432
+ this.on(EVENT$4.FINISH, function (event) {
14366
14433
  Event$1.insertToInput(selector, dataType, event);
14367
14434
  });
14368
14435
  }
@@ -14400,7 +14467,7 @@ var HtmlMultiWidget = /*#__PURE__*/function (_MultiWidget) {
14400
14467
  var formInterceptor = new FormInterceptor(selector);
14401
14468
  formInterceptor.beforeSubmit(function () {
14402
14469
  _this5.triggerElement.push(TRIGGER$1.SUBMIT_FORM, {});
14403
- _this5.event.on(EVENT$5.FINISH, _this5.link.getParams().widget_id, function () {
14470
+ _this5.event.on(EVENT$4.FINISH, _this5.link.getParams().widget_id, function () {
14404
14471
  formInterceptor.continueSubmit();
14405
14472
  });
14406
14473
  });
@@ -14413,13 +14480,13 @@ var HtmlMultiWidget = /*#__PURE__*/function (_MultiWidget) {
14413
14480
  value: function useCheckoutAutoSubmit() {
14414
14481
  var _this6 = this;
14415
14482
  this.setHiddenElements([ELEMENT.SUBMIT_BUTTON]);
14416
- this.on(EVENT$5.CHECKOUT_SUCCESS, function () {
14483
+ this.on(EVENT$4.CHECKOUT_SUCCESS, function () {
14417
14484
  _this6.trigger(TRIGGER$1.SUBMIT_FORM);
14418
14485
  });
14419
- this.on(EVENT$5.VALIDATION_ERROR, function () {
14486
+ this.on(EVENT$4.VALIDATION_ERROR, function () {
14420
14487
  _this6.trigger(TRIGGER$1.REFRESH_CHECKOUT);
14421
14488
  });
14422
- this.on(EVENT$5.SYSTEM_ERROR, function () {
14489
+ this.on(EVENT$4.SYSTEM_ERROR, function () {
14423
14490
  _this6.trigger(TRIGGER$1.REFRESH_CHECKOUT);
14424
14491
  });
14425
14492
  }
@@ -14436,7 +14503,7 @@ var HtmlMultiWidget = /*#__PURE__*/function (_MultiWidget) {
14436
14503
  key: "useAutoResize",
14437
14504
  value: function useAutoResize() {
14438
14505
  var _this7 = this;
14439
- this.on(EVENT$5.RESIZE, function (data) {
14506
+ this.on(EVENT$4.RESIZE, function (data) {
14440
14507
  if (_this7.iFrame.getElement()) {
14441
14508
  _this7.iFrame.getElement().scrolling = 'no';
14442
14509
  if (data.height) {
@@ -16173,7 +16240,7 @@ var Message = /*#__PURE__*/function () {
16173
16240
  key: "useAutoResize",
16174
16241
  value: function useAutoResize() {
16175
16242
  var _this = this;
16176
- this.event.on(EVENT$5.RESIZE, this.link.getParams().widget_id, function (data) {
16243
+ this.event.on(EVENT$4.RESIZE, this.link.getParams().widget_id, function (data) {
16177
16244
  if (_this.iFrame.getElement()) {
16178
16245
  _this.iFrame.getElement().scrolling = 'no';
16179
16246
  if (data.height) {
@@ -17014,7 +17081,7 @@ var InstructionAfterpayWalletFormShow = /*#__PURE__*/function (_InstructionHandl
17014
17081
  var _this = this;
17015
17082
  this.widget = new WalletButtons(this.selector, context.payload.charge_token, context.payload.meta);
17016
17083
  this.widget.setEnv(this.getEnv(context.instruction_token));
17017
- this.widget.on(EVENT$4.ON_WALLET_LOADED, function () {
17084
+ this.widget.on(EVENT$3.ON_WALLET_LOADED, function () {
17018
17085
  addGoBackToPaymentsButton(_this.selector, _this.checkoutWidget, _this.api);
17019
17086
  });
17020
17087
  this.widget.load();
@@ -17035,7 +17102,7 @@ var InstructionApplePayFormShow = /*#__PURE__*/function (_InstructionHandler) {
17035
17102
  var _this = this;
17036
17103
  this.widget = new WalletButtons(this.selector, context === null || context === void 0 ? void 0 : context.payload.charge_token, context === null || context === void 0 ? void 0 : context.payload.meta);
17037
17104
  this.widget.setEnv(this.getEnv(context.instruction_token));
17038
- this.widget.on(EVENT$4.ON_WALLET_LOADED, function () {
17105
+ this.widget.on(EVENT$3.ON_WALLET_LOADED, function () {
17039
17106
  addGoBackToPaymentsButton(_this.selector, _this.checkoutWidget, _this.api);
17040
17107
  hideLoadingSpinner();
17041
17108
  });
@@ -17368,7 +17435,7 @@ var InstructionCardFormShow = /*#__PURE__*/function (_InstructionHandler) {
17368
17435
  this.widget.load();
17369
17436
  this.widget.useAutoResize();
17370
17437
  this.widget.setHiddenElements(['submit_button']);
17371
- this.widget.on(EVENT$5.AFTER_LOAD, function () {
17438
+ this.widget.on(EVENT$4.AFTER_LOAD, function () {
17372
17439
  _this.timeoutId = setTimeout(function () {
17373
17440
  _this.addSubmitButton();
17374
17441
  addGoBackToPaymentsButton(_this.selector, _this.checkoutWidget, _this.api);
@@ -17378,7 +17445,7 @@ var InstructionCardFormShow = /*#__PURE__*/function (_InstructionHandler) {
17378
17445
  this.widget.on('submit', function () {
17379
17446
  return showLoadingSpinner();
17380
17447
  });
17381
- this.widget.on(EVENT$5.FINISH, function (event) {
17448
+ this.widget.on(EVENT$4.FINISH, function (event) {
17382
17449
  var _a;
17383
17450
  var get = new Api(context.instruction_token);
17384
17451
  (_a = _this.checkoutWidget) === null || _a === void 0 ? void 0 : _a.fetchInstruction();
@@ -17414,7 +17481,7 @@ var InstructionCardFormShow = /*#__PURE__*/function (_InstructionHandler) {
17414
17481
  return console.error('callback.card_form.ott_created: error', error);
17415
17482
  });
17416
17483
  });
17417
- this.widget.on(EVENT$5.VALIDATION_ERROR, function (event) {
17484
+ this.widget.on(EVENT$4.VALIDATION_ERROR, function (event) {
17418
17485
  var _a;
17419
17486
  (_a = _this.checkoutWidget) === null || _a === void 0 ? void 0 : _a.fetchInstruction();
17420
17487
  _this.api.checkout().callback({
@@ -17699,7 +17766,7 @@ var InstructionGooglePayFormShow = /*#__PURE__*/function (_InstructionHandler) {
17699
17766
  var _this = this;
17700
17767
  this.widget = new WalletButtons(this.selector, context === null || context === void 0 ? void 0 : context.payload.charge_token, context === null || context === void 0 ? void 0 : context.payload.meta);
17701
17768
  this.widget.setEnv(this.getEnv(context.instruction_token));
17702
- this.widget.on(EVENT$4.ON_WALLET_LOADED, function () {
17769
+ this.widget.on(EVENT$3.ON_WALLET_LOADED, function () {
17703
17770
  addGoBackToPaymentsButton(_this.selector, _this.checkoutWidget, _this.api);
17704
17771
  hideLoadingSpinner();
17705
17772
  });
@@ -18014,7 +18081,7 @@ var InstructionPaypalFormShow = /*#__PURE__*/function (_InstructionHandler) {
18014
18081
  standalone: true
18015
18082
  }));
18016
18083
  this.widget.setEnv(this.getEnv(context.instruction_token));
18017
- this.widget.on(EVENT$4.ON_WALLET_LOADED, function () {
18084
+ this.widget.on(EVENT$3.ON_WALLET_LOADED, function () {
18018
18085
  addGoBackToPaymentsButton(_this.selector, _this.checkoutWidget, _this.api);
18019
18086
  hideLoadingSpinner();
18020
18087
  });
@@ -18580,7 +18647,7 @@ function getCheckoutVersionHandler(version) {
18580
18647
  }
18581
18648
  }
18582
18649
 
18583
- var EVENT$3 = {
18650
+ var EVENT$2 = {
18584
18651
  PAYMENT_SUCCESSFUL: 'paymentSuccessful',
18585
18652
  PAYMENT_FAILURE: 'paymentFailure',
18586
18653
  PAYMENT_EXPIRED: 'paymentExpired'
@@ -18786,7 +18853,7 @@ var Checkout = /*#__PURE__*/function () {
18786
18853
  }, {
18787
18854
  key: "onPaymentSuccessful",
18788
18855
  value: function onPaymentSuccessful(handler) {
18789
- return this.eventEmitter.subscribe(EVENT$3.PAYMENT_SUCCESSFUL, handler);
18856
+ return this.eventEmitter.subscribe(EVENT$2.PAYMENT_SUCCESSFUL, handler);
18790
18857
  }
18791
18858
  /**
18792
18859
  * If the payment was not successful, the function passed as parameter will be called.
@@ -18800,7 +18867,7 @@ var Checkout = /*#__PURE__*/function () {
18800
18867
  }, {
18801
18868
  key: "onPaymentFailure",
18802
18869
  value: function onPaymentFailure(handler) {
18803
- return this.eventEmitter.subscribe(EVENT$3.PAYMENT_FAILURE, handler);
18870
+ return this.eventEmitter.subscribe(EVENT$2.PAYMENT_FAILURE, handler);
18804
18871
  }
18805
18872
  /**
18806
18873
  * If the payment was expired, the function passed as parameter will be called.
@@ -18814,7 +18881,7 @@ var Checkout = /*#__PURE__*/function () {
18814
18881
  }, {
18815
18882
  key: "onPaymentExpired",
18816
18883
  value: function onPaymentExpired(handler) {
18817
- return this.eventEmitter.subscribe(EVENT$3.PAYMENT_EXPIRED, handler);
18884
+ return this.eventEmitter.subscribe(EVENT$2.PAYMENT_EXPIRED, handler);
18818
18885
  }
18819
18886
  }, {
18820
18887
  key: "createWidgetStructure",
@@ -18890,7 +18957,7 @@ exports.ERROR_OPERATION = void 0;
18890
18957
  /**
18891
18958
  * Events emitted during the OpenWallet payment lifecycle.
18892
18959
  */
18893
- var EVENT$2;
18960
+ var EVENT$1;
18894
18961
  (function (EVENT) {
18895
18962
  /** Emitted when the wallet button is clicked by the user. */
18896
18963
  EVENT["ON_CLICK"] = "onClick";
@@ -18908,7 +18975,7 @@ var EVENT$2;
18908
18975
  EVENT["ON_SHIPPING_ADDRESS_CHANGE"] = "onShippingAddressChange";
18909
18976
  /** Emitted when the customer selects a shipping option. */
18910
18977
  EVENT["ON_SHIPPING_OPTIONS_CHANGE"] = "onShippingOptionsChange";
18911
- })(EVENT$2 || (EVENT$2 = {}));
18978
+ })(EVENT$1 || (EVENT$1 = {}));
18912
18979
 
18913
18980
  /**
18914
18981
  * @classdesc Abstract base class for Open Wallet buttons. **Do not instantiate directly.**
@@ -18930,6 +18997,13 @@ var OpenWalletButtons = /*#__PURE__*/function () {
18930
18997
  _classCallCheck(this, OpenWalletButtons);
18931
18998
  this.env = DEFAULT_ENV;
18932
18999
  this.onShippingOptionsChangeHandlerRegistered = false;
19000
+ // Runtime guard: TypeScript's `abstract` keyword exists only at compile time.
19001
+ // Without this check, instantiating the base class directly silently fails
19002
+ // later when `this.validateWalletMeta()` resolves to `undefined`, producing
19003
+ // a confusing "is not a function" error far from the actual mistake.
19004
+ if ((this instanceof OpenWalletButtons ? this.constructor : void 0) === OpenWalletButtons) {
19005
+ throw new Error('OpenWalletButtons is an abstract base class and cannot be instantiated directly. ' + 'Use ApplePayOpenWalletButton or GooglePayOpenWalletButton instead.');
19006
+ }
18933
19007
  this.eventEmitter = new EventEmitter();
18934
19008
  this.container = new Container(selector);
18935
19009
  this.api = new ApiInternal(publicKeyOrAccessToken, this.getApiAuthType(publicKeyOrAccessToken));
@@ -19032,7 +19106,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19032
19106
  console.error('Wallet operation error:', error);
19033
19107
  }
19034
19108
  var errorData = {
19035
- event: EVENT$2.ERROR,
19109
+ event: EVENT$1.ERROR,
19036
19110
  data: {
19037
19111
  error: error,
19038
19112
  context: {
@@ -19040,7 +19114,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19040
19114
  }
19041
19115
  }
19042
19116
  };
19043
- this.eventEmitter.emit(EVENT$2.ERROR, errorData);
19117
+ this.eventEmitter.emit(EVENT$1.ERROR, errorData);
19044
19118
  }
19045
19119
  /**
19046
19120
  * Loads and initializes the wallet button based on the service configuration.
@@ -19162,7 +19236,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19162
19236
  key: "onClick",
19163
19237
  value: function onClick(handler) {
19164
19238
  if (typeof handler === 'function') {
19165
- this.eventEmitter.subscribe(EVENT$2.ON_CLICK, handler);
19239
+ this.eventEmitter.subscribe(EVENT$1.ON_CLICK, handler);
19166
19240
  return;
19167
19241
  }
19168
19242
  this.handleOnError(new Error('onClick event handler is required.'), exports.ERROR_OPERATION.HANDLER_REGISTRATION);
@@ -19201,7 +19275,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19201
19275
  value: function onSuccess(handler) {
19202
19276
  var _this2 = this;
19203
19277
  if (typeof handler === 'function') {
19204
- this.eventEmitter.subscribe(EVENT$2.SUCCESS, function (data) {
19278
+ this.eventEmitter.subscribe(EVENT$1.SUCCESS, function (data) {
19205
19279
  return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee2() {
19206
19280
  var _t3;
19207
19281
  return _regenerator().w(function (_context2) {
@@ -19253,7 +19327,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19253
19327
  value: function onUnavailable(handler) {
19254
19328
  var _this3 = this;
19255
19329
  if (typeof handler === 'function') {
19256
- this.eventEmitter.subscribe(EVENT$2.UNAVAILABLE, function (data) {
19330
+ this.eventEmitter.subscribe(EVENT$1.UNAVAILABLE, function (data) {
19257
19331
  return __awaiter(_this3, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee3() {
19258
19332
  var _t4;
19259
19333
  return _regenerator().w(function (_context3) {
@@ -19306,7 +19380,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19306
19380
  value: function onError(handler) {
19307
19381
  var _this4 = this;
19308
19382
  if (typeof handler === 'function') {
19309
- this.eventEmitter.subscribe(EVENT$2.ERROR, function (data) {
19383
+ this.eventEmitter.subscribe(EVENT$1.ERROR, function (data) {
19310
19384
  return __awaiter(_this4, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee4() {
19311
19385
  var _t5;
19312
19386
  return _regenerator().w(function (_context4) {
@@ -19358,7 +19432,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19358
19432
  value: function onCancel(handler) {
19359
19433
  var _this5 = this;
19360
19434
  if (typeof handler === 'function') {
19361
- this.eventEmitter.subscribe(EVENT$2.CHECKOUT_CLOSE, function (data) {
19435
+ this.eventEmitter.subscribe(EVENT$1.CHECKOUT_CLOSE, function (data) {
19362
19436
  return __awaiter(_this5, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee5() {
19363
19437
  var _t6;
19364
19438
  return _regenerator().w(function (_context5) {
@@ -19403,7 +19477,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19403
19477
  value: function onLoaded(handler) {
19404
19478
  var _this6 = this;
19405
19479
  if (typeof handler === 'function') {
19406
- this.eventEmitter.subscribe(EVENT$2.LOADED, function (data) {
19480
+ this.eventEmitter.subscribe(EVENT$1.LOADED, function (data) {
19407
19481
  return __awaiter(_this6, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee6() {
19408
19482
  var _t7;
19409
19483
  return _regenerator().w(function (_context6) {
@@ -19475,7 +19549,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19475
19549
  key: "onShippingAddressChange",
19476
19550
  value: function onShippingAddressChange(handler) {
19477
19551
  if (typeof handler === 'function') {
19478
- return this.eventEmitter.subscribe(EVENT$2.ON_SHIPPING_ADDRESS_CHANGE, handler);
19552
+ return this.eventEmitter.subscribe(EVENT$1.ON_SHIPPING_ADDRESS_CHANGE, handler);
19479
19553
  }
19480
19554
  this.handleOnError(new Error('onShippingAddressChange event handler is required.'), exports.ERROR_OPERATION.HANDLER_REGISTRATION);
19481
19555
  }
@@ -19520,7 +19594,7 @@ var OpenWalletButtons = /*#__PURE__*/function () {
19520
19594
  value: function onShippingOptionsChange(handler) {
19521
19595
  if (typeof handler === 'function') {
19522
19596
  this.onShippingOptionsChangeHandlerRegistered = true;
19523
- return this.eventEmitter.subscribe(EVENT$2.ON_SHIPPING_OPTIONS_CHANGE, handler);
19597
+ return this.eventEmitter.subscribe(EVENT$1.ON_SHIPPING_OPTIONS_CHANGE, handler);
19524
19598
  }
19525
19599
  this.handleOnError(new Error('onShippingOptionsChange event handler is required.'), exports.ERROR_OPERATION.HANDLER_REGISTRATION);
19526
19600
  }
@@ -19634,8 +19708,8 @@ var OpenWalletService = /*#__PURE__*/function () {
19634
19708
  return this.api.paymentSource().createOTT(requestData).then(function (response) {
19635
19709
  var cleanShipping = stripEmpty(shipping);
19636
19710
  var cleanBilling = stripEmpty(billing);
19637
- _this.eventEmitter.emit(EVENT$2.SUCCESS, {
19638
- event: EVENT$2.SUCCESS,
19711
+ _this.eventEmitter.emit(EVENT$1.SUCCESS, {
19712
+ event: EVENT$1.SUCCESS,
19639
19713
  data: _extends(_extends({
19640
19714
  token: response,
19641
19715
  amount: amount
@@ -19648,8 +19722,8 @@ var OpenWalletService = /*#__PURE__*/function () {
19648
19722
  return response;
19649
19723
  })["catch"](function (err) {
19650
19724
  var _a, _b, _c, _d;
19651
- _this.eventEmitter.emit(EVENT$2.ERROR, {
19652
- event: EVENT$2.ERROR,
19725
+ _this.eventEmitter.emit(EVENT$1.ERROR, {
19726
+ event: EVENT$1.ERROR,
19653
19727
  data: {
19654
19728
  message: ((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) || (err === null || err === void 0 ? void 0 : err.message) || ((_b = err === null || err === void 0 ? void 0 : err.error_summary) === null || _b === void 0 ? void 0 : _b.message),
19655
19729
  code: ((_c = err === null || err === void 0 ? void 0 : err.error) === null || _c === void 0 ? void 0 : _c.code) || (err === null || err === void 0 ? void 0 : err.code) || ((_d = err === null || err === void 0 ? void 0 : err.error_summary) === null || _d === void 0 ? void 0 : _d.code)
@@ -19696,7 +19770,7 @@ var OpenWalletService = /*#__PURE__*/function () {
19696
19770
  value: function handleOnUnavailable() {
19697
19771
  var reason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Wallet not available';
19698
19772
  var unavailableData = {
19699
- event: EVENT$2.UNAVAILABLE,
19773
+ event: EVENT$1.UNAVAILABLE,
19700
19774
  data: {
19701
19775
  reason: reason,
19702
19776
  details: {
@@ -19704,7 +19778,7 @@ var OpenWalletService = /*#__PURE__*/function () {
19704
19778
  }
19705
19779
  }
19706
19780
  };
19707
- this.eventEmitter.emit(EVENT$2.UNAVAILABLE, unavailableData);
19781
+ this.eventEmitter.emit(EVENT$1.UNAVAILABLE, unavailableData);
19708
19782
  }
19709
19783
  /**
19710
19784
  * Emits the {@link EVENT.ERROR} event and logs the error to the console.
@@ -19720,7 +19794,7 @@ var OpenWalletService = /*#__PURE__*/function () {
19720
19794
  console.error('Wallet operation error:', error);
19721
19795
  }
19722
19796
  var errorData = {
19723
- event: EVENT$2.ERROR,
19797
+ event: EVENT$1.ERROR,
19724
19798
  data: {
19725
19799
  error: error,
19726
19800
  context: {
@@ -19728,7 +19802,7 @@ var OpenWalletService = /*#__PURE__*/function () {
19728
19802
  }
19729
19803
  }
19730
19804
  };
19731
- this.eventEmitter.emit(EVENT$2.ERROR, errorData);
19805
+ this.eventEmitter.emit(EVENT$1.ERROR, errorData);
19732
19806
  }
19733
19807
  /**
19734
19808
  * Removes the wallet button element from the DOM.
@@ -19778,8 +19852,8 @@ var ApplePayOpenWalletService = /*#__PURE__*/function (_OpenWalletService) {
19778
19852
  _this.serviceConfig = serviceConfig;
19779
19853
  _this.latestShippingData = {};
19780
19854
  _this.onCancelPayment = function () {
19781
- return _this.eventEmitter.emit(EVENT$2.CHECKOUT_CLOSE, {
19782
- event: EVENT$2.CHECKOUT_CLOSE
19855
+ return _this.eventEmitter.emit(EVENT$1.CHECKOUT_CLOSE, {
19856
+ event: EVENT$1.CHECKOUT_CLOSE
19783
19857
  });
19784
19858
  };
19785
19859
  _this.onValidateMerchant = function () {
@@ -19859,7 +19933,7 @@ var ApplePayOpenWalletService = /*#__PURE__*/function (_OpenWalletService) {
19859
19933
  while (1) switch (_context.n) {
19860
19934
  case 0:
19861
19935
  return _context.a(2, this.handleMerchantOnShippingChangedEvent({
19862
- event: EVENT$2.ON_SHIPPING_ADDRESS_CHANGE,
19936
+ event: EVENT$1.ON_SHIPPING_ADDRESS_CHANGE,
19863
19937
  data: this.parseShippingContactUpdateEvent(data)
19864
19938
  }).then(function (response) {
19865
19939
  var _a, _b;
@@ -19908,7 +19982,7 @@ var ApplePayOpenWalletService = /*#__PURE__*/function (_OpenWalletService) {
19908
19982
  while (1) switch (_context2.n) {
19909
19983
  case 0:
19910
19984
  return _context2.a(2, this.handleMerchantOnShippingChangedEvent({
19911
- event: EVENT$2.ON_SHIPPING_OPTIONS_CHANGE,
19985
+ event: EVENT$1.ON_SHIPPING_OPTIONS_CHANGE,
19912
19986
  data: this.parseShippingMethodUpdateEvent(data)
19913
19987
  }).then(function (response) {
19914
19988
  var _a;
@@ -20123,32 +20197,49 @@ var ApplePayOpenWalletService = /*#__PURE__*/function (_OpenWalletService) {
20123
20197
  return;
20124
20198
  }
20125
20199
  applePayButton.addEventListener('click', this.onApplePayButtonClicked.bind(this));
20126
- this.eventEmitter.emit(EVENT$2.LOADED, {
20127
- event: EVENT$2.LOADED
20200
+ this.eventEmitter.emit(EVENT$1.LOADED, {
20201
+ event: EVENT$1.LOADED
20128
20202
  });
20129
20203
  }
20130
20204
  }, {
20131
20205
  key: "onApplePayButtonClicked",
20132
20206
  value: function onApplePayButtonClicked() {
20133
- this.paymentSession = new ApplePaySession(14, this.mapMetaToApplePayPaymentRequest());
20207
+ var _this7 = this;
20208
+ var applePayApiVersion = getSupportedApplePayVersion();
20209
+ if (applePayApiVersion === 0) {
20210
+ this.handleOnUnavailable('Apple Pay version not supported');
20211
+ return;
20212
+ }
20213
+ this.paymentSession = new ApplePaySession(applePayApiVersion, this.mapMetaToApplePayPaymentRequest());
20134
20214
  this.paymentSession.onvalidatemerchant = this.onValidateMerchant;
20135
20215
  this.paymentSession.onpaymentauthorized = this.onPaymentAuthorized;
20136
20216
  this.paymentSession.oncancel = this.onCancelPayment;
20137
20217
  this.paymentSession.onshippingcontactselected = this.onShippingContactUpdated;
20138
20218
  this.paymentSession.onshippingmethodselected = this.onShippingMethodUpdated;
20139
20219
  this.paymentSession.begin();
20220
+ // As part of PAYCA-2065 we detect that the paymentSession.onvalidatemerchant is not
20221
+ // executed if the browser is not safari. In that case, we handle it outside the
20222
+ // actual merchant validation function.
20223
+ var isIOS = /iPhone|iPad|iPod/.test(navigator.userAgent);
20224
+ var isDesktopRequestIOS = navigator.maxTouchPoints > 1 && /Macintosh/.test(navigator.userAgent);
20225
+ if (!window.safari && !isIOS && !isDesktopRequestIOS) {
20226
+ this.handleMerchantOnButtonClickEvent()["catch"](function (err) {
20227
+ console.error('Error while processing merchant callback', err);
20228
+ _this7.paymentSession.abort();
20229
+ });
20230
+ }
20140
20231
  }
20141
20232
  }, {
20142
20233
  key: "getMerchantSession",
20143
20234
  value: function getMerchantSession() {
20144
- var _this7 = this;
20235
+ var _this8 = this;
20145
20236
  return new Promise(function (resolve, reject) {
20146
- return _this7.api.paymentSource().createSession(_extends({
20147
- service_id: _this7.serviceId,
20237
+ return _this8.api.paymentSource().createSession(_extends({
20238
+ service_id: _this8.serviceId,
20148
20239
  session_id: window.location.hostname,
20149
- store_name: _this7.meta.store_name
20150
- }, _this7.isShippingRequired() && {
20151
- request_shipping: _this7.meta.request_shipping
20240
+ store_name: _this8.meta.store_name
20241
+ }, _this8.isShippingRequired() && {
20242
+ request_shipping: _this8.meta.request_shipping
20152
20243
  })).then(function (res) {
20153
20244
  resolve(res);
20154
20245
  })["catch"](function (err) {
@@ -20165,8 +20256,8 @@ var ApplePayOpenWalletService = /*#__PURE__*/function (_OpenWalletService) {
20165
20256
  while (1) switch (_context4.n) {
20166
20257
  case 0:
20167
20258
  _context4.n = 1;
20168
- return this.eventEmitter.emitWithResult(EVENT$2.ON_CLICK, {
20169
- event: EVENT$2.ON_CLICK
20259
+ return this.eventEmitter.emitWithResult(EVENT$1.ON_CLICK, {
20260
+ event: EVENT$1.ON_CLICK
20170
20261
  });
20171
20262
  case 1:
20172
20263
  results = _context4.v;
@@ -20490,8 +20581,8 @@ var GOOGLE_PAY_CARD_NETWORKS = ['AMEX', 'DISCOVER', 'INTERAC', 'JCB', 'MASTERCAR
20490
20581
  * Used to translate shipping-related Google Pay events to the unified event system.
20491
20582
  */
20492
20583
  ({
20493
- SHIPPING_ADDRESS: EVENT$2.ON_SHIPPING_ADDRESS_CHANGE,
20494
- SHIPPING_OPTION: EVENT$2.ON_SHIPPING_OPTIONS_CHANGE
20584
+ SHIPPING_ADDRESS: EVENT$1.ON_SHIPPING_ADDRESS_CHANGE,
20585
+ SHIPPING_OPTION: EVENT$1.ON_SHIPPING_OPTIONS_CHANGE
20495
20586
  });
20496
20587
 
20497
20588
  /**
@@ -20856,8 +20947,8 @@ var GooglePayOpenWalletService = /*#__PURE__*/function (_OpenWalletService) {
20856
20947
  buttonColor: ((_c = this.getMetaStyles()) === null || _c === void 0 ? void 0 : _c.button_color) || 'default'
20857
20948
  });
20858
20949
  button.appendChild(googlePayButton);
20859
- this.eventEmitter.emit(EVENT$2.LOADED, {
20860
- event: EVENT$2.LOADED
20950
+ this.eventEmitter.emit(EVENT$1.LOADED, {
20951
+ event: EVENT$1.LOADED
20861
20952
  });
20862
20953
  }
20863
20954
  }, {
@@ -20886,8 +20977,8 @@ var GooglePayOpenWalletService = /*#__PURE__*/function (_OpenWalletService) {
20886
20977
  while (1) switch (_context3.n) {
20887
20978
  case 0:
20888
20979
  _context3.n = 1;
20889
- return this.eventEmitter.emitWithResult(EVENT$2.ON_CLICK, {
20890
- event: EVENT$2.ON_CLICK
20980
+ return this.eventEmitter.emitWithResult(EVENT$1.ON_CLICK, {
20981
+ event: EVENT$1.ON_CLICK
20891
20982
  });
20892
20983
  case 1:
20893
20984
  results = _context3.v;
@@ -20913,8 +21004,8 @@ var GooglePayOpenWalletService = /*#__PURE__*/function (_OpenWalletService) {
20913
21004
  while (1) switch (_context4.n) {
20914
21005
  case 0:
20915
21006
  return _context4.a(2, this.paymentsClient.loadPaymentData(this.createPaymentDataRequest())["catch"](function (err) {
20916
- _this6.eventEmitter.emit(EVENT$2.CHECKOUT_CLOSE, {
20917
- event: EVENT$2.CHECKOUT_CLOSE
21007
+ _this6.eventEmitter.emit(EVENT$1.CHECKOUT_CLOSE, {
21008
+ event: EVENT$1.CHECKOUT_CLOSE
20918
21009
  });
20919
21010
  _this6.processingButtonClick = false;
20920
21011
  throw err;
@@ -20978,13 +21069,13 @@ var GooglePayOpenWalletService = /*#__PURE__*/function (_OpenWalletService) {
20978
21069
  if (intermediatePaymentData.callbackTrigger === 'INITIALIZE' || intermediatePaymentData.callbackTrigger === 'SHIPPING_ADDRESS') {
20979
21070
  callbackIntent = 'SHIPPING_ADDRESS';
20980
21071
  eventData = {
20981
- event: EVENT$2.ON_SHIPPING_ADDRESS_CHANGE,
21072
+ event: EVENT$1.ON_SHIPPING_ADDRESS_CHANGE,
20982
21073
  data: parsedUpdateData.shipping
20983
21074
  };
20984
21075
  } else if (intermediatePaymentData.callbackTrigger === 'SHIPPING_OPTION') {
20985
21076
  callbackIntent = 'SHIPPING_OPTION';
20986
21077
  eventData = {
20987
- event: EVENT$2.ON_SHIPPING_OPTIONS_CHANGE,
21078
+ event: EVENT$1.ON_SHIPPING_OPTIONS_CHANGE,
20988
21079
  data: {
20989
21080
  shipping_option_id: (_a = parsedUpdateData.selected_shipping_option) === null || _a === void 0 ? void 0 : _a.id,
20990
21081
  label: (_b = parsedUpdateData.selected_shipping_option) === null || _b === void 0 ? void 0 : _b.label,
@@ -21684,7 +21775,7 @@ var HtmlPaymentSourceWidget = /*#__PURE__*/function (_PaymentSourceWidget) {
21684
21775
  }, {
21685
21776
  key: "onSelectInsert",
21686
21777
  value: function onSelectInsert(selector, dataType) {
21687
- this.on(EVENT$5.SELECT, function (event) {
21778
+ this.on(EVENT$4.SELECT, function (event) {
21688
21779
  Event$1.insertToInput(selector, dataType, event);
21689
21780
  });
21690
21781
  }
@@ -22254,7 +22345,7 @@ var PayPalSavePaymentSourceWidget = /*#__PURE__*/function () {
22254
22345
  * @param {string} CHECKOUT_COMPLETED=checkoutCompleted Event sent on successful checkout by customer. Check [data](#EventDataCheckoutCompletedData) for more information.
22255
22346
  * @param {string} CHECKOUT_ERROR=checkoutError Event sent on error checkout by customer. Check [data](#EventData) for more information.
22256
22347
  */
22257
- var EVENT$1;
22348
+ var EVENT;
22258
22349
  (function (EVENT) {
22259
22350
  EVENT["IFRAME_LOADED"] = "iframeLoaded";
22260
22351
  EVENT["CHECKOUT_READY"] = "checkoutReady";
@@ -22262,7 +22353,7 @@ var EVENT$1;
22262
22353
  EVENT["CHECKOUT_ERROR"] = "checkoutError";
22263
22354
  EVENT["CHECKOUT_POPUP_OPEN"] = "checkoutPopupOpen";
22264
22355
  EVENT["CHECKOUT_POPUP_CLOSE"] = "checkoutPopupClose";
22265
- })(EVENT$1 || (EVENT$1 = {}));
22356
+ })(EVENT || (EVENT = {}));
22266
22357
  /**
22267
22358
  * List of available event data types
22268
22359
  * @enum EVENT_DATA_TYPE
@@ -22432,25 +22523,25 @@ var ClickToPaySRC = /*#__PURE__*/function () {
22432
22523
  var _this = this;
22433
22524
  var widgetId = this.link.getParams().widget_id;
22434
22525
  if (!widgetId) return;
22435
- this.iFrameEvent.on(EVENT$1.CHECKOUT_READY, widgetId, function (_ref) {
22526
+ this.iFrameEvent.on(EVENT.CHECKOUT_READY, widgetId, function (_ref) {
22436
22527
  var data = _ref.data;
22437
- _this.eventEmitter.emit(EVENT$1.CHECKOUT_READY, data);
22528
+ _this.eventEmitter.emit(EVENT.CHECKOUT_READY, data);
22438
22529
  });
22439
- this.iFrameEvent.on(EVENT$1.CHECKOUT_COMPLETED, widgetId, function (_ref2) {
22530
+ this.iFrameEvent.on(EVENT.CHECKOUT_COMPLETED, widgetId, function (_ref2) {
22440
22531
  var data = _ref2.data;
22441
- _this.eventEmitter.emit(EVENT$1.CHECKOUT_COMPLETED, data);
22532
+ _this.eventEmitter.emit(EVENT.CHECKOUT_COMPLETED, data);
22442
22533
  });
22443
- this.iFrameEvent.on(EVENT$1.CHECKOUT_POPUP_OPEN, widgetId, function (_ref3) {
22534
+ this.iFrameEvent.on(EVENT.CHECKOUT_POPUP_OPEN, widgetId, function (_ref3) {
22444
22535
  var data = _ref3.data;
22445
- _this.eventEmitter.emit(EVENT$1.CHECKOUT_POPUP_OPEN, data);
22536
+ _this.eventEmitter.emit(EVENT.CHECKOUT_POPUP_OPEN, data);
22446
22537
  });
22447
- this.iFrameEvent.on(EVENT$1.CHECKOUT_POPUP_CLOSE, widgetId, function (_ref4) {
22538
+ this.iFrameEvent.on(EVENT.CHECKOUT_POPUP_CLOSE, widgetId, function (_ref4) {
22448
22539
  var data = _ref4.data;
22449
- _this.eventEmitter.emit(EVENT$1.CHECKOUT_POPUP_CLOSE, data);
22540
+ _this.eventEmitter.emit(EVENT.CHECKOUT_POPUP_CLOSE, data);
22450
22541
  });
22451
- this.iFrameEvent.on(EVENT$1.CHECKOUT_ERROR, widgetId, function (_ref5) {
22542
+ this.iFrameEvent.on(EVENT.CHECKOUT_ERROR, widgetId, function (_ref5) {
22452
22543
  var data = _ref5.data;
22453
- _this.eventEmitter.emit(EVENT$1.CHECKOUT_ERROR, data);
22544
+ _this.eventEmitter.emit(EVENT.CHECKOUT_ERROR, data);
22454
22545
  });
22455
22546
  if (this.autoResize) this.useAutoResize(true);
22456
22547
  }
@@ -22473,7 +22564,7 @@ var ClickToPaySRC = /*#__PURE__*/function () {
22473
22564
  if (iframeElement) {
22474
22565
  iframeElement.onload = function () {
22475
22566
  _this2.isIframeLoaded = true;
22476
- _this2.eventEmitter.emit(EVENT$1.IFRAME_LOADED, {});
22567
+ _this2.eventEmitter.emit(EVENT.IFRAME_LOADED, {});
22477
22568
  if (_this2.injectedCustomerData) {
22478
22569
  _this2.injectCustomerData(_this2.injectedCustomerData);
22479
22570
  _this2.injectedCustomerData = null;
@@ -22960,7 +23051,7 @@ var VaultDisplayWidget = /*#__PURE__*/function () {
22960
23051
  }]);
22961
23052
  }();
22962
23053
 
22963
- var EVENT;
23054
+ exports.WALLET_BUTTONS_EXPRESS_EVENT = void 0;
22964
23055
  (function (EVENT) {
22965
23056
  EVENT["UNAVAILABLE"] = "unavailable";
22966
23057
  EVENT["ERROR"] = "error";
@@ -22971,12 +23062,13 @@ var EVENT;
22971
23062
  EVENT["ON_CHECKOUT_CLOSE"] = "onCheckoutClose";
22972
23063
  EVENT["ON_SHIPPING_ADDRESS_CHANGE"] = "onShippingAddressChange";
22973
23064
  EVENT["ON_SHIPPING_OPTIONS_CHANGE"] = "onShippingOptionsChange";
22974
- })(EVENT || (EVENT = {}));
23065
+ })(exports.WALLET_BUTTONS_EXPRESS_EVENT || (exports.WALLET_BUTTONS_EXPRESS_EVENT = {}));
22975
23066
 
22976
23067
  var BaseWalletButton = /*#__PURE__*/function () {
22977
23068
  function BaseWalletButton(selector, publicKeyOrAccessToken, gatewayId, meta, requiredMetaFields) {
22978
23069
  _classCallCheck(this, BaseWalletButton);
22979
23070
  this.env = DEFAULT_ENV;
23071
+ this.isDisabled = false;
22980
23072
  this.onShippingOptionsChangeHandlerRegistered = false;
22981
23073
  this.eventEmitter = new EventEmitter();
22982
23074
  this.container = new Container(selector);
@@ -23009,6 +23101,30 @@ var BaseWalletButton = /*#__PURE__*/function () {
23009
23101
  this.env = env;
23010
23102
  this.api.setEnv(env, alias);
23011
23103
  }
23104
+ /**
23105
+ * Enables the wallet button, restoring interactivity and visual appearance.
23106
+ *
23107
+ * @example
23108
+ * button.enable();
23109
+ */
23110
+ }, {
23111
+ key: "enable",
23112
+ value: function enable() {
23113
+ this.isDisabled = false;
23114
+ this.applyDisabledStyles();
23115
+ }
23116
+ /**
23117
+ * Disables the wallet button, preventing clicks and applying a visual disabled state.
23118
+ *
23119
+ * @example
23120
+ * button.disable();
23121
+ */
23122
+ }, {
23123
+ key: "disable",
23124
+ value: function disable() {
23125
+ this.isDisabled = true;
23126
+ this.applyDisabledStyles();
23127
+ }
23012
23128
  /**
23013
23129
  * Callback for onClick method.
23014
23130
  *
@@ -23036,7 +23152,7 @@ var BaseWalletButton = /*#__PURE__*/function () {
23036
23152
  key: "onClick",
23037
23153
  value: function onClick(handler) {
23038
23154
  if (typeof handler === 'function') {
23039
- return this.eventEmitter.subscribe(EVENT.ON_CLICK, handler);
23155
+ return this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_CLICK, handler);
23040
23156
  }
23041
23157
  this.handleOnError(new Error('onClick event handler is required to return the wallet token string.'));
23042
23158
  }
@@ -23065,10 +23181,10 @@ var BaseWalletButton = /*#__PURE__*/function () {
23065
23181
  value: function onPaymentSuccessful(handler) {
23066
23182
  var _this = this;
23067
23183
  if (typeof handler === 'function') {
23068
- return this.eventEmitter.subscribe(EVENT.PAYMENT_SUCCESSFUL, handler);
23184
+ return this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_SUCCESSFUL, handler);
23069
23185
  }
23070
23186
  return new Promise(function (resolve) {
23071
- return _this.eventEmitter.subscribe(EVENT.PAYMENT_SUCCESSFUL, function (data) {
23187
+ return _this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_SUCCESSFUL, function (data) {
23072
23188
  return resolve(data);
23073
23189
  });
23074
23190
  });
@@ -23098,10 +23214,10 @@ var BaseWalletButton = /*#__PURE__*/function () {
23098
23214
  value: function onPaymentInReview(handler) {
23099
23215
  var _this2 = this;
23100
23216
  if (typeof handler === 'function') {
23101
- return this.eventEmitter.subscribe(EVENT.PAYMENT_IN_REVIEW, handler);
23217
+ return this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_IN_REVIEW, handler);
23102
23218
  }
23103
23219
  return new Promise(function (resolve) {
23104
- return _this2.eventEmitter.subscribe(EVENT.PAYMENT_IN_REVIEW, function (data) {
23220
+ return _this2.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_IN_REVIEW, function (data) {
23105
23221
  return resolve(data);
23106
23222
  });
23107
23223
  });
@@ -23131,10 +23247,10 @@ var BaseWalletButton = /*#__PURE__*/function () {
23131
23247
  value: function onPaymentError(handler) {
23132
23248
  var _this3 = this;
23133
23249
  if (typeof handler === 'function') {
23134
- return this.eventEmitter.subscribe(EVENT.PAYMENT_ERROR, handler);
23250
+ return this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_ERROR, handler);
23135
23251
  }
23136
23252
  return new Promise(function (resolve) {
23137
- return _this3.eventEmitter.subscribe(EVENT.PAYMENT_ERROR, function (err) {
23253
+ return _this3.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_ERROR, function (err) {
23138
23254
  return resolve(err);
23139
23255
  });
23140
23256
  });
@@ -23160,10 +23276,10 @@ var BaseWalletButton = /*#__PURE__*/function () {
23160
23276
  value: function onCheckoutClose(handler) {
23161
23277
  var _this4 = this;
23162
23278
  if (typeof handler === 'function') {
23163
- return this.eventEmitter.subscribe(EVENT.ON_CHECKOUT_CLOSE, handler);
23279
+ return this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_CHECKOUT_CLOSE, handler);
23164
23280
  }
23165
23281
  return new Promise(function (resolve) {
23166
- return _this4.eventEmitter.subscribe(EVENT.ON_CHECKOUT_CLOSE, function (err) {
23282
+ return _this4.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_CHECKOUT_CLOSE, function (err) {
23167
23283
  return resolve(err);
23168
23284
  });
23169
23285
  });
@@ -23194,7 +23310,7 @@ var BaseWalletButton = /*#__PURE__*/function () {
23194
23310
  key: "onShippingAddressChange",
23195
23311
  value: function onShippingAddressChange(handler) {
23196
23312
  if (typeof handler === 'function') {
23197
- return this.eventEmitter.subscribe(EVENT.ON_SHIPPING_ADDRESS_CHANGE, handler);
23313
+ return this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_SHIPPING_ADDRESS_CHANGE, handler);
23198
23314
  }
23199
23315
  this.handleOnError(new Error('onShippingAddressChange event handler is required to return the wallet token string or reject.'));
23200
23316
  }
@@ -23225,7 +23341,7 @@ var BaseWalletButton = /*#__PURE__*/function () {
23225
23341
  value: function onShippingOptionsChange(handler) {
23226
23342
  if (typeof handler === 'function') {
23227
23343
  this.onShippingOptionsChangeHandlerRegistered = true;
23228
- return this.eventEmitter.subscribe(EVENT.ON_SHIPPING_OPTIONS_CHANGE, handler);
23344
+ return this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_SHIPPING_OPTIONS_CHANGE, handler);
23229
23345
  }
23230
23346
  this.handleOnError(new Error('onShippingOptionsChange event handler is required to return the wallet token string or reject.'));
23231
23347
  }
@@ -23250,10 +23366,10 @@ var BaseWalletButton = /*#__PURE__*/function () {
23250
23366
  value: function onUnavailable(handler) {
23251
23367
  var _this5 = this;
23252
23368
  if (typeof handler === 'function') {
23253
- return this.eventEmitter.subscribe(EVENT.UNAVAILABLE, handler);
23369
+ return this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.UNAVAILABLE, handler);
23254
23370
  }
23255
23371
  return new Promise(function (resolve) {
23256
- return _this5.eventEmitter.subscribe(EVENT.UNAVAILABLE, function (err) {
23372
+ return _this5.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.UNAVAILABLE, function (err) {
23257
23373
  return resolve(err);
23258
23374
  });
23259
23375
  });
@@ -23280,10 +23396,10 @@ var BaseWalletButton = /*#__PURE__*/function () {
23280
23396
  value: function onError(handler) {
23281
23397
  var _this6 = this;
23282
23398
  if (typeof handler === 'function') {
23283
- return this.eventEmitter.subscribe(EVENT.ERROR, handler);
23399
+ return this.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.ERROR, handler);
23284
23400
  }
23285
23401
  return new Promise(function (resolve) {
23286
- return _this6.eventEmitter.subscribe(EVENT.ERROR, function (err) {
23402
+ return _this6.eventEmitter.subscribe(exports.WALLET_BUTTONS_EXPRESS_EVENT.ERROR, function (err) {
23287
23403
  return resolve(err);
23288
23404
  });
23289
23405
  });
@@ -23320,8 +23436,8 @@ var BaseWalletButton = /*#__PURE__*/function () {
23320
23436
  var _this8 = this;
23321
23437
  return this.api.charge().walletCallback(data)["catch"](function (err) {
23322
23438
  var _a;
23323
- _this8.eventEmitter.emit(EVENT.PAYMENT_ERROR, {
23324
- event: EVENT.PAYMENT_ERROR,
23439
+ _this8.eventEmitter.emit(exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_ERROR, {
23440
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_ERROR,
23325
23441
  chargeId: (_a = _this8.chargeWalletTokenMeta) === null || _a === void 0 ? void 0 : _a.charge.id,
23326
23442
  data: _this8.eventDataFromApiError(err)
23327
23443
  });
@@ -23335,7 +23451,7 @@ var BaseWalletButton = /*#__PURE__*/function () {
23335
23451
  var _this9 = this;
23336
23452
  return this.api.charge().walletCapture(data).then(function (captureResult) {
23337
23453
  var _a;
23338
- var event = captureResult.status === 'inreview' ? EVENT.PAYMENT_IN_REVIEW : EVENT.PAYMENT_SUCCESSFUL;
23454
+ var event = captureResult.status === 'inreview' ? exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_IN_REVIEW : exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_SUCCESSFUL;
23339
23455
  _this9.eventEmitter.emit(event, {
23340
23456
  event: event,
23341
23457
  chargeId: (_a = _this9.chargeWalletTokenMeta) === null || _a === void 0 ? void 0 : _a.charge.id,
@@ -23344,8 +23460,8 @@ var BaseWalletButton = /*#__PURE__*/function () {
23344
23460
  return captureResult;
23345
23461
  })["catch"](function (err) {
23346
23462
  var _a;
23347
- _this9.eventEmitter.emit(EVENT.PAYMENT_ERROR, {
23348
- event: EVENT.PAYMENT_ERROR,
23463
+ _this9.eventEmitter.emit(exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_ERROR, {
23464
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_ERROR,
23349
23465
  chargeId: (_a = _this9.chargeWalletTokenMeta) === null || _a === void 0 ? void 0 : _a.charge.id,
23350
23466
  data: _this9.eventDataFromApiError(err)
23351
23467
  });
@@ -23356,8 +23472,8 @@ var BaseWalletButton = /*#__PURE__*/function () {
23356
23472
  key: "handleMerchantOnExpressButtonClickEvent",
23357
23473
  value: function handleMerchantOnExpressButtonClickEvent() {
23358
23474
  var _this0 = this;
23359
- return this.eventEmitter.emitWithResult(EVENT.ON_CLICK, {
23360
- event: EVENT.ON_CLICK
23475
+ return this.eventEmitter.emitWithResult(exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_CLICK, {
23476
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_CLICK
23361
23477
  }).then(function (result) {
23362
23478
  var _a;
23363
23479
  if (!result || result.length === 0) {
@@ -23434,8 +23550,8 @@ var BaseWalletButton = /*#__PURE__*/function () {
23434
23550
  value: function handleCheckoutClose() {
23435
23551
  var _a;
23436
23552
  var chargeId = (_a = this.chargeWalletTokenMeta) === null || _a === void 0 ? void 0 : _a.charge.id;
23437
- this.eventEmitter.emit(EVENT.ON_CHECKOUT_CLOSE, _extends({
23438
- event: EVENT.ON_CHECKOUT_CLOSE
23553
+ this.eventEmitter.emit(exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_CHECKOUT_CLOSE, _extends({
23554
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_CHECKOUT_CLOSE
23439
23555
  }, chargeId && {
23440
23556
  chargeId: chargeId
23441
23557
  }));
@@ -23443,8 +23559,8 @@ var BaseWalletButton = /*#__PURE__*/function () {
23443
23559
  }, {
23444
23560
  key: "handleOnUnavailable",
23445
23561
  value: function handleOnUnavailable() {
23446
- this.eventEmitter.emit(EVENT.UNAVAILABLE, {
23447
- event: EVENT.UNAVAILABLE
23562
+ this.eventEmitter.emit(exports.WALLET_BUTTONS_EXPRESS_EVENT.UNAVAILABLE, {
23563
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.UNAVAILABLE
23448
23564
  });
23449
23565
  }
23450
23566
  }, {
@@ -23455,8 +23571,8 @@ var BaseWalletButton = /*#__PURE__*/function () {
23455
23571
  console.error(error);
23456
23572
  }
23457
23573
  var chargeId = (_a = this.chargeWalletTokenMeta) === null || _a === void 0 ? void 0 : _a.charge.id;
23458
- this.eventEmitter.emit(EVENT.ERROR, _extends(_extends({
23459
- event: EVENT.ERROR
23574
+ this.eventEmitter.emit(exports.WALLET_BUTTONS_EXPRESS_EVENT.ERROR, _extends(_extends({
23575
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.ERROR
23460
23576
  }, chargeId && {
23461
23577
  chargeId: chargeId
23462
23578
  }), {
@@ -23473,6 +23589,23 @@ var BaseWalletButton = /*#__PURE__*/function () {
23473
23589
  code: ((_c = err === null || err === void 0 ? void 0 : err.error) === null || _c === void 0 ? void 0 : _c.code) || (err === null || err === void 0 ? void 0 : err.code) || ((_d = err === null || err === void 0 ? void 0 : err.error_summary) === null || _d === void 0 ? void 0 : _d.code)
23474
23590
  };
23475
23591
  }
23592
+ }, {
23593
+ key: "applyDisabledStyles",
23594
+ value: function applyDisabledStyles() {
23595
+ var element = this.container.getElement();
23596
+ if (!element) {
23597
+ return;
23598
+ }
23599
+ if (this.isDisabled) {
23600
+ element.style.pointerEvents = 'none';
23601
+ element.style.opacity = '0.5';
23602
+ element.setAttribute('aria-disabled', 'true');
23603
+ } else {
23604
+ element.style.pointerEvents = '';
23605
+ element.style.opacity = '';
23606
+ element.removeAttribute('aria-disabled');
23607
+ }
23608
+ }
23476
23609
  }, {
23477
23610
  key: "validateRequiredMetaFields",
23478
23611
  value: function validateRequiredMetaFields(requiredMetaFields) {
@@ -23515,11 +23648,11 @@ var generateApplePayButtonStyles = function generateApplePayButtonStyles() {
23515
23648
  return "\n apple-pay-button {\n display: inline-block;\n --apple-pay-button-width: 100%;\n --apple-pay-button-height: 40px;\n --apple-pay-button-border-radius: 5px;\n --apple-pay-button-padding: 5px 0px;\n }\n ";
23516
23649
  };
23517
23650
 
23518
- var ContactShippingEditingMode;
23651
+ exports.ContactShippingEditingMode = void 0;
23519
23652
  (function (ContactShippingEditingMode) {
23520
23653
  ContactShippingEditingMode["AVAILABLE"] = "available";
23521
23654
  ContactShippingEditingMode["STORE_PICKUP"] = "store_pickup";
23522
- })(ContactShippingEditingMode || (ContactShippingEditingMode = {}));
23655
+ })(exports.ContactShippingEditingMode || (exports.ContactShippingEditingMode = {}));
23523
23656
 
23524
23657
  var DEFAULT_APPLE_PAY_CAPABILITIES = ['paymentCredentialsAvailable'];
23525
23658
  /**
@@ -23544,7 +23677,14 @@ var ApplePayWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
23544
23677
  _classCallCheck(this, ApplePayWalletButtonExpress);
23545
23678
  _this = _callSuper(this, ApplePayWalletButtonExpress, [selector, publicKeyOrAccessToken, gatewayId, meta, ['amount_label', 'country']]);
23546
23679
  _this.onApplePayButtonClicked = function () {
23547
- var applePayApiVersion = 14;
23680
+ if (_this.isDisabled) {
23681
+ return;
23682
+ }
23683
+ var applePayApiVersion = getSupportedApplePayVersion();
23684
+ if (applePayApiVersion === 0) {
23685
+ _this.handleOnUnavailable();
23686
+ return;
23687
+ }
23548
23688
  _this.paymentSession = new ApplePaySession(applePayApiVersion, _this.createRequest());
23549
23689
  _this.paymentSession.onvalidatemerchant = _this.onValidateMerchant;
23550
23690
  _this.paymentSession.onpaymentauthorized = _this.onPaymentAuthorized;
@@ -23552,6 +23692,17 @@ var ApplePayWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
23552
23692
  _this.paymentSession.onshippingmethodselected = _this.onApplePayShippingMethodUpdate;
23553
23693
  _this.paymentSession.onshippingcontactselected = _this.onApplePayShippingContactUpdate;
23554
23694
  _this.paymentSession.begin();
23695
+ // As part of PAYCA-2065 we detect that the paymentSession.onvalidatemerchant is not
23696
+ // executed if the browser is not safari. In that case, we handle it outside the
23697
+ // actual merchant validation function.
23698
+ var isIOS = /iPhone|iPad|iPod/.test(navigator.userAgent);
23699
+ var isDesktopRequestIOS = navigator.maxTouchPoints > 1 && /Macintosh/.test(navigator.userAgent);
23700
+ if (!window.safari && !isIOS && !isDesktopRequestIOS) {
23701
+ _this.handleMerchantOnExpressButtonClickEvent()["catch"](function (err) {
23702
+ console.error('Error while processing merchant callback', err);
23703
+ _this.paymentSession.abort();
23704
+ });
23705
+ }
23555
23706
  };
23556
23707
  _this.onValidateMerchant = function (event) {
23557
23708
  _this.handleMerchantOnExpressButtonClickEvent().then(function () {
@@ -23627,8 +23778,8 @@ var ApplePayWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
23627
23778
  } catch (error) {
23628
23779
  // this ensures thatwe always call completePayment and emit error callback even if there's an uncaught exception
23629
23780
  _this.paymentSession.completePayment(ApplePaySession.STATUS_FAILURE);
23630
- _this.eventEmitter.emit(EVENT.PAYMENT_ERROR, {
23631
- event: EVENT.PAYMENT_ERROR,
23781
+ _this.eventEmitter.emit(exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_ERROR, {
23782
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.PAYMENT_ERROR,
23632
23783
  chargeId: (_k = _this.chargeWalletTokenMeta) === null || _k === void 0 ? void 0 : _k.charge.id,
23633
23784
  data: {
23634
23785
  message: error instanceof Error ? error.message : 'Payment processing failed',
@@ -23648,7 +23799,7 @@ var ApplePayWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
23648
23799
  while (1) switch (_context.n) {
23649
23800
  case 0:
23650
23801
  return _context.a(2, this.handleMerchantOnShippingChangedEvent({
23651
- event: EVENT.ON_SHIPPING_ADDRESS_CHANGE,
23802
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_SHIPPING_ADDRESS_CHANGE,
23652
23803
  chargeId: (_a = this.chargeWalletTokenMeta) === null || _a === void 0 ? void 0 : _a.charge.id,
23653
23804
  data: this.parseShippingContactUpdateEvent(data)
23654
23805
  }).then(function (response) {
@@ -23683,7 +23834,7 @@ var ApplePayWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
23683
23834
  while (1) switch (_context2.n) {
23684
23835
  case 0:
23685
23836
  return _context2.a(2, this.handleMerchantOnShippingChangedEvent({
23686
- event: EVENT.ON_SHIPPING_OPTIONS_CHANGE,
23837
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_SHIPPING_OPTIONS_CHANGE,
23687
23838
  chargeId: (_b = this.chargeWalletTokenMeta) === null || _b === void 0 ? void 0 : _b.charge.id,
23688
23839
  data: this.parseShippingMethodUpdateEvent(data)
23689
23840
  }).then(function (_response) {
@@ -23811,6 +23962,7 @@ var ApplePayWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
23811
23962
  return;
23812
23963
  }
23813
23964
  applePayButton.addEventListener('click', this.onApplePayButtonClicked.bind(this));
23965
+ this.applyDisabledStyles();
23814
23966
  }
23815
23967
  }, {
23816
23968
  key: "createRequest",
@@ -23819,7 +23971,7 @@ var ApplePayWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
23819
23971
  // https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest
23820
23972
  var shippingContactEditingMode;
23821
23973
  if (this.meta.shipping_editing_mode) {
23822
- shippingContactEditingMode = this.meta.shipping_editing_mode === ContactShippingEditingMode.AVAILABLE ? 'available' : 'storePickup';
23974
+ shippingContactEditingMode = this.meta.shipping_editing_mode === exports.ContactShippingEditingMode.AVAILABLE ? 'available' : 'storePickup';
23823
23975
  }
23824
23976
  return _extends(_extends({
23825
23977
  countryCode: this.meta.country,
@@ -24003,13 +24155,20 @@ var PaypalWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
24003
24155
  key: "load",
24004
24156
  value: function load() {
24005
24157
  var _this2 = this;
24006
- if (!window.Promise) return this.handleOnUnavailable();
24158
+ if (!window.Promise) {
24159
+ return this.handleOnUnavailable();
24160
+ }
24007
24161
  this.getGatewayWalletConfig().then(function (config) {
24008
- if (!config || config.type !== 'Paypal' || !config.credentials || !config.credentials.client_auth) throw new Error('Invalid configuration');
24162
+ if (!config || config.type !== 'Paypal' || !config.credentials || !config.credentials.client_auth) {
24163
+ throw new Error('Invalid configuration');
24164
+ }
24009
24165
  _this2.config = config;
24010
24166
  _this2.renderPaypalButton();
24167
+ _this2.applyDisabledStyles();
24011
24168
  })["catch"](function (err) {
24012
- if (err) _this2.handleOnError(err);
24169
+ if (err) {
24170
+ _this2.handleOnError(err);
24171
+ }
24013
24172
  _this2.handleOnUnavailable();
24014
24173
  });
24015
24174
  }
@@ -24026,6 +24185,7 @@ var PaypalWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
24026
24185
  value: function setMeta(meta) {
24027
24186
  this.meta = meta;
24028
24187
  this.renderPaypalButton();
24188
+ this.applyDisabledStyles();
24029
24189
  }
24030
24190
  }, {
24031
24191
  key: "renderPaypalButton",
@@ -24042,7 +24202,7 @@ var PaypalWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
24042
24202
  var _this3 = this;
24043
24203
  var _a, _b;
24044
24204
  var buttonId = ((_a = this.container.getElement()) === null || _a === void 0 ? void 0 : _a.id) || '';
24045
- var paypalScript = document.createElement("script");
24205
+ var paypalScript = document.createElement('script');
24046
24206
  paypalScript.src = "https://www.paypal.com/sdk/js?client-id=".concat((_b = this.config.credentials) === null || _b === void 0 ? void 0 : _b.client_auth, "&currency=").concat(this.meta.currency).concat(this.meta.pay_later === true ? '&enable-funding=paylater&disable-funding=card' : '&disable-funding=credit,card').concat(!this.meta.capture ? '&intent=authorize' : '');
24047
24207
  paypalScript.async = true;
24048
24208
  paypalScript.onload = function () {
@@ -24061,7 +24221,7 @@ var PaypalWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
24061
24221
  var _this4 = this;
24062
24222
  var _a, _b, _c;
24063
24223
  var buttonId = ((_a = this.container.getElement()) === null || _a === void 0 ? void 0 : _a.id) || '';
24064
- var paypalScript = document.createElement("script");
24224
+ var paypalScript = document.createElement('script');
24065
24225
  // buyer-country is only used in Sandbox. It shouldn't be used in production. Based on buyer's geolocation this parameter determine which funding sources are eligible for a given buyer. Refer the link https://developer.paypal.com/sdk/js/configuration/#link-buyercountry
24066
24226
  paypalScript.src = "https://www.paypal.com/sdk/js?client-id=".concat((_b = this.config.credentials) === null || _b === void 0 ? void 0 : _b.client_auth, "&currency=").concat(this.meta.currency, "&components=buttons,funding-eligibility,messages&enable-funding=paylater").concat(!this.meta.capture ? '&intent=authorize' : '').concat(((_c = this.config) === null || _c === void 0 ? void 0 : _c.mode) === 'live' ? '' : '&buyer-country=AU');
24067
24227
  paypalScript.async = true;
@@ -24102,6 +24262,9 @@ var PaypalWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
24102
24262
  style: this.meta.style
24103
24263
  }), {
24104
24264
  onClick: function onClick(_data, actions) {
24265
+ if (_this5.isDisabled) {
24266
+ return actions.reject();
24267
+ }
24105
24268
  return _this5.handleMerchantOnExpressButtonClickEvent().then(function () {
24106
24269
  return actions.resolve();
24107
24270
  })["catch"](function () {
@@ -24112,7 +24275,9 @@ var PaypalWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
24112
24275
  createOrder: function createOrder() {
24113
24276
  return new Promise(function (resolve, reject) {
24114
24277
  var _a, _b;
24115
- if (!_this5.api.auth) return reject(new Error('Wallet Token not injected. Please handle onClick correctly.'));
24278
+ if (!_this5.api.auth) {
24279
+ return reject(new Error('Wallet Token not injected. Please handle onClick correctly.'));
24280
+ }
24116
24281
  var shipping = (_b = (_a = _this5.chargeWalletTokenMeta) === null || _a === void 0 ? void 0 : _a.charge) === null || _b === void 0 ? void 0 : _b.shipping;
24117
24282
  if (shipping) {
24118
24283
  var hasCompleteShippingAddress = ['address_line1', 'address_city', 'address_country', 'address_state', 'address_postcode'].every(function (key) {
@@ -24131,7 +24296,9 @@ var PaypalWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
24131
24296
  });
24132
24297
  },
24133
24298
  onApprove: function onApprove(data) {
24134
- if (_this5.pendingApprovalPromise) return _this5.pendingApprovalPromise;
24299
+ if (_this5.pendingApprovalPromise) {
24300
+ return _this5.pendingApprovalPromise;
24301
+ }
24135
24302
  _this5.pendingApprovalPromise = _this5.executeWalletCapture({
24136
24303
  payment_method_id: data.orderID,
24137
24304
  customer: {
@@ -24175,7 +24342,7 @@ var PaypalWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
24175
24342
  return _context.a(2);
24176
24343
  case 1:
24177
24344
  return _context.a(2, this.handleMerchantOnShippingChangedEvent({
24178
- event: EVENT.ON_SHIPPING_ADDRESS_CHANGE,
24345
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_SHIPPING_ADDRESS_CHANGE,
24179
24346
  chargeId: (_a = this.chargeWalletTokenMeta) === null || _a === void 0 ? void 0 : _a.charge.id,
24180
24347
  data: {
24181
24348
  address_city: data.shippingAddress.city,
@@ -24210,7 +24377,7 @@ var PaypalWalletButtonExpress = /*#__PURE__*/function (_BaseWalletButton) {
24210
24377
  while (1) switch (_context2.n) {
24211
24378
  case 0:
24212
24379
  return _context2.a(2, this.handleMerchantOnShippingChangedEvent({
24213
- event: EVENT.ON_SHIPPING_OPTIONS_CHANGE,
24380
+ event: exports.WALLET_BUTTONS_EXPRESS_EVENT.ON_SHIPPING_OPTIONS_CHANGE,
24214
24381
  chargeId: (_a = this.chargeWalletTokenMeta) === null || _a === void 0 ? void 0 : _a.charge.id,
24215
24382
  data: {
24216
24383
  shipping_option_id: data.selectedShippingOption.id,
@@ -44320,7 +44487,7 @@ exports.Checkout = Checkout;
44320
44487
  exports.ClickToPay = ClickToPay;
44321
44488
  exports.Configuration = Configuration;
44322
44489
  exports.ELEMENT = ELEMENT;
44323
- exports.EVENT = EVENT$5;
44490
+ exports.EVENT = EVENT$4;
44324
44491
  exports.ExternalCheckoutBuilder = Builder$1;
44325
44492
  exports.ExternalCheckoutChecker = Checker;
44326
44493
  exports.FORM_FIELD = FORM_FIELD$1;
@@ -44332,7 +44499,6 @@ exports.HtmlPaymentSourceWidget = HtmlPaymentSourceWidget;
44332
44499
  exports.HtmlWidget = HtmlWidget;
44333
44500
  exports.InstructionDebugger = InstructionDebugger;
44334
44501
  exports.MultiWidget = MultiWidget;
44335
- exports.OpenWalletButtons = OpenWalletButtons;
44336
44502
  exports.PAYMENT_TYPE = PAYMENT_TYPE;
44337
44503
  exports.PayPalDataCollector = PayPalDataCollector;
44338
44504
  exports.PayPalSavePaymentSourceWidget = PayPalSavePaymentSourceWidget;