@dintero/checkout-web-sdk 0.6.1 → 0.6.2

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 (31) hide show
  1. package/.github/workflows/build.yml +14 -15
  2. package/.github/workflows/release.yml +4 -5
  3. package/.prettierrc.yml +8 -0
  4. package/.releaserc.json +7 -9
  5. package/CHANGELOG.md +11 -9
  6. package/README.md +39 -25
  7. package/dist/declarations/src/checkout.d.ts +2 -2
  8. package/dist/dintero-checkout-web-sdk.cjs.dev.js +105 -97
  9. package/dist/dintero-checkout-web-sdk.cjs.prod.js +105 -97
  10. package/dist/dintero-checkout-web-sdk.esm.js +105 -97
  11. package/dist/dintero-checkout-web-sdk.umd.min.js +1 -1
  12. package/dist/dintero-checkout-web-sdk.umd.min.js.map +1 -1
  13. package/package.json +45 -49
  14. package/patches/vitest+0.34.6.patch +33 -0
  15. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/base.css +0 -224
  16. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/block-navigation.js +0 -79
  17. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/checkout.ts.html +0 -473
  18. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/createIframeAsync.ts.html +0 -263
  19. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/favicon.png +0 -0
  20. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/index.html +0 -216
  21. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/index.ts.html +0 -2366
  22. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/popOut.ts.html +0 -377
  23. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/popOutBackdrop.ts.html +0 -1046
  24. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/popOutButton.ts.html +0 -374
  25. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/prettify.css +0 -1
  26. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/prettify.js +0 -2
  27. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/sort-arrow-sprite.png +0 -0
  28. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/sorter.js +0 -170
  29. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/subscribe.ts.html +0 -632
  30. package/coverage/Chrome Headless 117.0.5938.149 (Linux x86_64)/html/url.ts.html +0 -284
  31. package/karma.conf.js +0 -33
@@ -2,7 +2,7 @@ import 'native-promise-only';
2
2
 
3
3
  var pkg = {
4
4
  name: "@dintero/checkout-web-sdk",
5
- version: "0.6.1",
5
+ version: "0.6.2",
6
6
  description: "Dintero Checkout SDK for web frontends",
7
7
  main: "dist/dintero-checkout-web-sdk.cjs.js",
8
8
  module: "dist/dintero-checkout-web-sdk.esm.js",
@@ -13,8 +13,10 @@ var pkg = {
13
13
  umdName: "dintero"
14
14
  },
15
15
  scripts: {
16
+ postinstall: "patch -u node_modules/vitest/dist/vendor-node.a7c48fe1.js -i patches/vitest+0.34.6.patch --forward || true",
16
17
  build: "preconstruct build",
17
- test: "$(yarn bin)/karma start",
18
+ lint: "prettier --cache --log-level warn -c --config .prettierrc.yml .",
19
+ test: "$(yarn bin)/vitest --browser.name=chrome --browser.headless",
18
20
  "semantic-release": "semantic-release",
19
21
  prepublishOnly: "yarn run build"
20
22
  },
@@ -30,25 +32,19 @@ var pkg = {
30
32
  url: "https://github.com/Dintero/Dintero.Checkout.Web.SDK/issues"
31
33
  },
32
34
  devDependencies: {
33
- "@babel/preset-env": "^7.14.1",
34
- "@babel/preset-typescript": "^7.13.0",
35
- "@preconstruct/cli": "^2.1.5",
36
- "@semantic-release/git": "^10.0.1",
37
- chai: "^4.2.0",
38
- karma: "^6.4.2",
39
- "karma-chai": "^0.1.0",
40
- "karma-chrome-launcher": "^3.1.0",
41
- "karma-mocha": "^2.0.1",
42
- "karma-typescript": "^5.0.3",
43
- mocha: "^8.1.1",
44
- prettier: "^3.0.3",
45
- puppeteer: "^21.1.0",
46
- "semantic-release": "^22.0.1",
47
- sinon: "^15.0.0",
48
- typescript: "^5.2.2"
35
+ "@babel/core": "7.13.0",
36
+ "@babel/preset-typescript": "7.13.0",
37
+ "@preconstruct/cli": "2.8.1",
38
+ "@semantic-release/git": "10.0.1",
39
+ "@vitest/browser": "0.34.6",
40
+ prettier: "3.0.3",
41
+ "semantic-release": "22.0.5",
42
+ typescript: "5.2.2",
43
+ vitest: "0.34.6",
44
+ webdriverio: "8.16.22"
49
45
  },
50
46
  dependencies: {
51
- "native-promise-only": "^0.8.1"
47
+ "native-promise-only": "0.8.1"
52
48
  }
53
49
  };
54
50
 
@@ -100,18 +96,18 @@ const getSessionUrl = options => {
100
96
  throw new Error("Invalid endpoint");
101
97
  }
102
98
  const params = new URLSearchParams();
103
- params.append('sdk', pkg.version);
99
+ params.append("sdk", pkg.version);
104
100
  if (ui) {
105
- params.append('ui', ui);
101
+ params.append("ui", ui);
106
102
  }
107
103
  if (language) {
108
- params.append('language', language);
104
+ params.append("language", language);
109
105
  }
110
106
  if (shouldCallValidateSession) {
111
- params.append('client_side_validation', 'true');
107
+ params.append("client_side_validation", "true");
112
108
  }
113
109
  if (popOut) {
114
- params.append('role', 'pop_out_launcher');
110
+ params.append("role", "pop_out_launcher");
115
111
  }
116
112
  if (endpoint === "https://checkout.dintero.com") {
117
113
  // Default endpoint will redirect via the view endpoint
@@ -120,28 +116,29 @@ const getSessionUrl = options => {
120
116
  // When a custom endpoint is set skip the view redirect endpoint since
121
117
  // custom endpoints like localhost and PR builds does not support the
122
118
  // serverside view flow.
123
- params.append('sid', sid);
124
- return `${endpoint}/?${params.toString()}`;
119
+ params.append("sid", sid);
120
+ return `${padTralingSlash(endpoint)}?${params.toString()}`;
125
121
  };
126
- const padTralingSlash = endpoint => endpoint.endsWith('/') ? endpoint : `${endpoint}/`;
122
+ const padTralingSlash = endpoint => endpoint.endsWith("/") ? endpoint : `${endpoint}/`;
127
123
  const getPopOutUrl = ({
128
124
  sid,
129
125
  endpoint,
130
126
  language,
131
127
  shouldCallValidateSession
132
128
  }) => {
133
- if (shouldCallValidateSession) {
134
- return `${padTralingSlash(endpoint)}?loader=true`;
135
- }
136
129
  const params = new URLSearchParams();
137
- params.append('ui', 'fullscreen');
138
- params.append('role', 'pop_out_payment');
139
- params.append('sid', sid);
140
- params.append('sdk', pkg.version);
130
+ params.append("ui", "fullscreen");
131
+ params.append("role", "pop_out_payment");
132
+ params.append("sid", sid);
133
+ params.append("sdk", pkg.version);
141
134
  if (language) {
142
- params.append('language', language);
135
+ params.append("language", language);
136
+ }
137
+ if (shouldCallValidateSession) {
138
+ params.append("loader", "true");
139
+ return `${padTralingSlash(endpoint)}?${params.toString()}`;
143
140
  }
144
- return `${endpoint}/?${params.toString()}`;
141
+ return `${padTralingSlash(endpoint)}?${params.toString()}`;
145
142
  };
146
143
 
147
144
  /**
@@ -368,11 +365,11 @@ const subscribe = options => {
368
365
 
369
366
  const getBackdropZIndex = () => {
370
367
  // Iterate all DOM items to get current highest element.
371
- const elements = document.getElementsByTagName('*');
368
+ const elements = document.getElementsByTagName("*");
372
369
  const highest = Array.from(elements).reduce((acc, element) => {
373
370
  try {
374
371
  const zIndexStr = document.defaultView.getComputedStyle(element, null).getPropertyValue("z-index");
375
- const zIndex = parseInt(zIndexStr || '0');
372
+ const zIndex = parseInt(zIndexStr || "0");
376
373
  if (!isNaN(zIndex) && zIndex > acc) {
377
374
  return zIndex;
378
375
  }
@@ -383,15 +380,15 @@ const getBackdropZIndex = () => {
383
380
  return acc;
384
381
  }, 0);
385
382
  if (highest < 9999) {
386
- return '9999';
383
+ return "9999";
387
384
  }
388
385
  return (highest + 1).toString();
389
386
  };
390
- const STYLE_ID = 'dintero-checkout-sdk-style';
391
- const BACKDROP_ID = 'dintero-checkout-sdk-backdrop';
392
- const BACKDROP_DESCRIPTION = 'dintero-checkout-sdk-backdrop-description';
393
- const FOCUS_CHECKOUT_BUTTON_ID = 'dintero-checkout-sdk-backdrop-focus';
394
- const CLOSE_BACKDROP_BUTTON_ID = 'dintero-checkout-sdk-backdrop-close';
387
+ const STYLE_ID = "dintero-checkout-sdk-style";
388
+ const BACKDROP_ID = "dintero-checkout-sdk-backdrop";
389
+ const BACKDROP_DESCRIPTION = "dintero-checkout-sdk-backdrop-description";
390
+ const FOCUS_CHECKOUT_BUTTON_ID = "dintero-checkout-sdk-backdrop-focus";
391
+ const CLOSE_BACKDROP_BUTTON_ID = "dintero-checkout-sdk-backdrop-close";
395
392
  const wrapPreventDefault = fn => {
396
393
  // Creates a wrapped function that will invoke preventDefault() to stop
397
394
  // the event from bubbling up the DOM tree.
@@ -408,8 +405,8 @@ const appendBackdropStyles = () => {
408
405
  return;
409
406
  }
410
407
  // Add style to DOM
411
- const style = document.createElement('style');
412
- style.setAttribute('id', STYLE_ID);
408
+ const style = document.createElement("style");
409
+ style.setAttribute("id", STYLE_ID);
413
410
  style.innerHTML = `
414
411
  @keyframes ${BACKDROP_ID}-fade-in {
415
412
  from {opacity: 0;}
@@ -524,7 +521,7 @@ const appendBackdropStyles = () => {
524
521
  };
525
522
  const createBackdropDOM = () => {
526
523
  // Dark translucent backdrop element
527
- const backdrop = document.createElement('div');
524
+ const backdrop = document.createElement("div");
528
525
  backdrop.setAttribute("id", BACKDROP_ID);
529
526
  backdrop.setAttribute("role", "dialog");
530
527
  backdrop.style.zIndex = getBackdropZIndex();
@@ -532,7 +529,7 @@ const createBackdropDOM = () => {
532
529
  };
533
530
  const createCloseButtonDOM = label => {
534
531
  // Close button for the top right corner
535
- const button = document.createElement('button');
532
+ const button = document.createElement("button");
536
533
  button.setAttribute("id", CLOSE_BACKDROP_BUTTON_ID);
537
534
  button.setAttribute("type", "button");
538
535
  button.setAttribute("aria-label", label);
@@ -556,7 +553,7 @@ const createCloseButtonDOM = label => {
556
553
  };
557
554
  const createDinteroLogoDOM = () => {
558
555
  // Close button for the top right corner
559
- const div = document.createElement('div');
556
+ const div = document.createElement("div");
560
557
  div.innerHTML = `
561
558
  <svg width="120px" height="22px" viewBox="0 0 630 111" version="1.1" >
562
559
  <g id="Page-1" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
@@ -569,8 +566,8 @@ const createDinteroLogoDOM = () => {
569
566
  };
570
567
  const createLabelDOM = text => {
571
568
  // Text about the pop out
572
- const p = document.createElement('p');
573
- p.setAttribute('id', BACKDROP_DESCRIPTION);
569
+ const p = document.createElement("p");
570
+ p.setAttribute("id", BACKDROP_DESCRIPTION);
574
571
  p.innerText = text;
575
572
  return p;
576
573
  };
@@ -578,7 +575,7 @@ const createFocusButtonDOM = text => {
578
575
  // Mock button to give the user a call to action element to click, even
579
576
  // though the entire backdrop (except the close button) returns focus to the
580
577
  // checkout.
581
- const button = document.createElement('button');
578
+ const button = document.createElement("button");
582
579
  button.setAttribute("id", FOCUS_CHECKOUT_BUTTON_ID);
583
580
  button.setAttribute("type", "button");
584
581
  button.innerText = text;
@@ -588,7 +585,7 @@ const focusTrap = e => {
588
585
  // Prevent the user focusing outside of the backdrop while it is visible
589
586
  const focusButton = document.getElementById(FOCUS_CHECKOUT_BUTTON_ID);
590
587
  const closeButton = document.getElementById(CLOSE_BACKDROP_BUTTON_ID);
591
- if (e.key === 'Tab' || e.code === "Tab") {
588
+ if (e.key === "Tab" || e.code === "Tab") {
592
589
  if (document.activeElement === focusButton) {
593
590
  closeButton.focus();
594
591
  e.preventDefault();
@@ -615,7 +612,7 @@ const createBackdropView = options => {
615
612
  closeButton.onclick = wrapPreventDefault(options.close);
616
613
 
617
614
  // Add focus trap when backdrop is visible
618
- document.addEventListener('keydown', focusTrap);
615
+ document.addEventListener("keydown", focusTrap);
619
616
 
620
617
  // Append to document
621
618
  backdrop.appendChild(closeButton);
@@ -637,7 +634,7 @@ const setBackdropLabels = event => {
637
634
  }
638
635
  const closeButton = document.getElementById(CLOSE_BACKDROP_BUTTON_ID);
639
636
  if (closeButton) {
640
- closeButton.setAttribute('aria-label', event.descriptionLabel);
637
+ closeButton.setAttribute("aria-label", event.descriptionLabel);
641
638
  }
642
639
  };
643
640
  const createBackdrop = options => {
@@ -660,7 +657,7 @@ const removeBackdrop = () => {
660
657
  if (backdrop) {
661
658
  document.body.removeChild(backdrop);
662
659
  }
663
- document.removeEventListener('keydown', focusTrap);
660
+ document.removeEventListener("keydown", focusTrap);
664
661
  } catch (e) {
665
662
  // Ignore errors when closing backdrop. If it fails we should not stop
666
663
  // the rest of the application from working.
@@ -678,14 +675,14 @@ const configureButton = (button, {
678
675
  styles,
679
676
  onClick
680
677
  }) => {
681
- button.setAttribute('id', OPEN_POP_OUT_BUTTON_ID);
682
- button.setAttribute('type', 'button');
678
+ button.setAttribute("id", OPEN_POP_OUT_BUTTON_ID);
679
+ button.setAttribute("type", "button");
683
680
 
684
681
  // Is clickable
685
- if (disabled === 'true') {
686
- button.setAttribute('disabled', disabled);
682
+ if (disabled === "true") {
683
+ button.setAttribute("disabled", disabled);
687
684
  } else {
688
- button.removeAttribute('disabled');
685
+ button.removeAttribute("disabled");
689
686
  }
690
687
 
691
688
  // Click handler
@@ -695,14 +692,14 @@ const configureButton = (button, {
695
692
  event.stopPropagation();
696
693
 
697
694
  // Update look
698
- button.style.boxShadow = 'inset 0 0 10px rgba(34, 84, 65, 0.9)';
695
+ button.style.boxShadow = "inset 0 0 10px rgba(34, 84, 65, 0.9)";
699
696
 
700
697
  // Invoke handler
701
698
  onClick();
702
699
 
703
700
  // Reset look
704
701
  window.setTimeout(() => {
705
- button.style.boxShadow = 'none';
702
+ button.style.boxShadow = "none";
706
703
  }, 200);
707
704
  };
708
705
 
@@ -710,10 +707,10 @@ const configureButton = (button, {
710
707
  button.innerText = label;
711
708
 
712
709
  // Position
713
- button.style.position = 'absolute';
714
- button.style.top = top + 'px';
715
- button.style.left = left + 'px';
716
- button.style.right = right + 'px';
710
+ button.style.position = "absolute";
711
+ button.style.top = top + "px";
712
+ button.style.left = left + "px";
713
+ button.style.right = right + "px";
717
714
 
718
715
  // Appearance from checkout
719
716
  for (const [key, value] of Object.entries(styles)) {
@@ -726,7 +723,7 @@ const addPopOutButton = options => {
726
723
  container
727
724
  } = options;
728
725
  const exists = document.getElementById(OPEN_POP_OUT_BUTTON_ID);
729
- const button = exists || document.createElement('button');
726
+ const button = exists || document.createElement("button");
730
727
  configureButton(button, options);
731
728
  if (!exists) {
732
729
  container.appendChild(button);
@@ -737,9 +734,9 @@ const setPopOutButtonDisabled = disabled => {
737
734
  const button = document.getElementById(OPEN_POP_OUT_BUTTON_ID);
738
735
  if (button) {
739
736
  if (disabled) {
740
- button.setAttribute('disabled', disabled.toString());
737
+ button.setAttribute("disabled", disabled.toString());
741
738
  } else {
742
- button.removeAttribute('disabled');
739
+ button.removeAttribute("disabled");
743
740
  }
744
741
  }
745
742
  } catch (e) {
@@ -762,31 +759,42 @@ const removePopOutButton = () => {
762
759
  const WIDTH = Math.min(480, window.screen.width);
763
760
  const HEIGHT = Math.min(840, window.screen.height);
764
761
  let popOutWindow;
765
- const createPopOutWindow = (url, width, height) => {
762
+ const createPopOutWindow = (sid, url, width, height) => {
766
763
  return new Promise(resolve => {
767
764
  try {
768
- // Opens a centered pop up window
765
+ // Creates a centered pop up window
769
766
  const left = window.screenX + (window.outerWidth - width) / 2;
770
767
  const top = window.screenY + (window.outerHeight - height) / 2;
771
768
  const features = `width=${width},height=${height},left=${left},top=${top},location=no,menubar=no,toolbar=no,status=no`;
772
- const popOut = window.open(url, 'dintero-checkout', features);
769
+ let popOut;
770
+ let timeout = -1;
771
+ // Set up listener for application loaded message from pop out window
772
+ const handleAppLoaded = event => {
773
+ const correctSource = event.source === popOut;
774
+ const correctOrigin = event.origin === new URL(url).origin;
775
+ const correctMessage = event.data && event.data.type === "AppLoaded";
776
+ const correctContext = event.data.context === "popOut";
777
+ const correctSid = event.data.sid === sid;
778
+ if (correctSource && correctOrigin && correctMessage && correctContext && correctSid) {
779
+ clearTimeout(timeout);
780
+ resolve(popOut);
781
+ window.removeEventListener("message", handleAppLoaded);
782
+ }
783
+ };
784
+ window.addEventListener("message", handleAppLoaded);
785
+ // Open pop out
786
+ popOut = window.open(url, "dintero-checkout", features);
787
+ // Check that pop out was opened
773
788
  if (!popOut) {
774
- console.log('createPopOutWindow no popOut');
789
+ console.log("createPopOutWindow no popOut");
775
790
  resolve(undefined);
776
791
  return;
777
792
  }
778
- const timeout = window.setTimeout(() => {
779
- console.log('createPopOutWindow timeout');
793
+ // Trigger timeout if pop out is not loaded
794
+ timeout = window.setTimeout(() => {
795
+ console.log("createPopOutWindow timeout");
780
796
  resolve(undefined);
781
797
  }, 3000);
782
- popOut.addEventListener('load', event => {
783
- console.log('createPopOutWindow loaded', {
784
- popOut,
785
- event
786
- });
787
- clearTimeout(timeout);
788
- resolve(popOut);
789
- });
790
798
  } catch (err) {
791
799
  resolve(undefined);
792
800
  }
@@ -802,7 +810,7 @@ const openPopOut = async options => {
802
810
 
803
811
  // Open popup window
804
812
  const url = getPopOutUrl(options);
805
- popOutWindow = await createPopOutWindow(url, WIDTH, HEIGHT);
813
+ popOutWindow = await createPopOutWindow(options.sid, url, WIDTH, HEIGHT);
806
814
  const focusPopOut = () => {
807
815
  if (popOutWindow) {
808
816
  popOutWindow.focus();
@@ -811,7 +819,7 @@ const openPopOut = async options => {
811
819
  const cleanUpClosed = () => {
812
820
  window.clearInterval(intervalId);
813
821
  intervalId = -1;
814
- window.removeEventListener('beforeunload', closePopOut);
822
+ window.removeEventListener("beforeunload", closePopOut);
815
823
  popOutWindow = undefined;
816
824
  options.onClose();
817
825
  if (unsubscribe) {
@@ -831,7 +839,7 @@ const openPopOut = async options => {
831
839
  };
832
840
 
833
841
  // Close pop out if current window is closed
834
- window.addEventListener('beforeunload', closePopOut);
842
+ window.addEventListener("beforeunload", closePopOut);
835
843
 
836
844
  // Check if checkout is still open
837
845
  intervalId = window.setInterval(checkIfPopupClosed, 200);
@@ -871,8 +879,8 @@ const setIframeHeight = (event, checkout) => {
871
879
  const scrollToIframeTop = (event, checkout) => {
872
880
  try {
873
881
  checkout.iframe.scrollIntoView({
874
- block: 'start',
875
- behavior: 'smooth'
882
+ block: "start",
883
+ behavior: "smooth"
876
884
  });
877
885
  } catch (e) {
878
886
  // Ignore error silently bug log it to the console.
@@ -931,7 +939,7 @@ const createPopOutMessageHandler = (source, checkout) => {
931
939
  console.error(e);
932
940
  }
933
941
  } else {
934
- console.error('Payment Complete event missing href property');
942
+ console.error("Payment Complete event missing href property");
935
943
  }
936
944
  }
937
945
  };
@@ -939,7 +947,7 @@ const createPopOutMessageHandler = (source, checkout) => {
939
947
  // Listens to messages from pop out window and routes the events to dedicated handlers
940
948
  const messageRouter = event => {
941
949
  // Check that we should handle the message
942
- if (event.source === source && event.data.context === 'popOut' && event.data.sid === checkout.options.sid) {
950
+ if (event.source === source && event.data.context === "popOut" && event.data.sid === checkout.options.sid) {
943
951
  // Check if handler matches incoming event and trigger the handler if so.
944
952
  [
945
953
  // SDK events for managing the pop out flow.
@@ -956,11 +964,11 @@ const createPopOutMessageHandler = (source, checkout) => {
956
964
  }
957
965
  };
958
966
  // Add messageRouter event listener to the Pop Out
959
- window.addEventListener('message', messageRouter);
967
+ window.addEventListener("message", messageRouter);
960
968
 
961
969
  // Return unsubscribe function
962
970
  return () => {
963
- window.removeEventListener('message', messageRouter);
971
+ window.removeEventListener("message", messageRouter);
964
972
  };
965
973
  };
966
974
 
@@ -1056,7 +1064,7 @@ const handlePopOutButtonClick = async (event, checkout) => {
1056
1064
  console.error(e);
1057
1065
  postValidationResult(checkout.iframe, checkout.options.sid, {
1058
1066
  success: false,
1059
- clientValidationError: 'Validation runtime error'
1067
+ clientValidationError: "Validation runtime error"
1060
1068
  });
1061
1069
  }
1062
1070
  }
@@ -1116,9 +1124,9 @@ const cleanUpPopOut = checkout => {
1116
1124
  */
1117
1125
  const embed = async options => {
1118
1126
  // Create inner container to offset any styling on the container.
1119
- const innerContainer = document.createElement('div');
1120
- innerContainer.style.position = 'relative';
1121
- innerContainer.style['box-sizing'] = 'border-box';
1127
+ const innerContainer = document.createElement("div");
1128
+ innerContainer.style.position = "relative";
1129
+ innerContainer.style["box-sizing"] = "border-box";
1122
1130
  const internalOptions = {
1123
1131
  endpoint: "https://checkout.dintero.com",
1124
1132
  innerContainer: innerContainer,
@@ -3,5 +3,5 @@
3
3
  v0.8.1 (c) Kyle Simpson
4
4
  MIT License: http://getify.mit-license.org
5
5
  */
6
- var t,o,i;i=function(){var e,n,t,o=Object.prototype.toString,i="undefined"!=typeof setImmediate?function(e){return setImmediate(e)}:setTimeout;try{Object.defineProperty({},"x",{}),e=function(e,n,t,o){return Object.defineProperty(e,n,{value:t,writable:!0,configurable:!1!==o})}}catch(n){e=function(e,n,t){return e[n]=t,e}}function r(e,o){t.add(e,o),n||(n=i(t.drain))}function s(e){var n,t=typeof e;return null==e||"object"!=t&&"function"!=t||(n=e.then),"function"==typeof n&&n}function a(){for(var e=0;e<this.chain.length;e++)d(this,1===this.state?this.chain[e].success:this.chain[e].failure,this.chain[e]);this.chain.length=0}function d(e,n,t){var o,i;try{!1===n?t.reject(e.msg):(o=!0===n?e.msg:n.call(void 0,e.msg))===t.promise?t.reject(TypeError("Promise-chain cycle")):(i=s(o))?i.call(o,t.resolve,t.reject):t.resolve(o)}catch(e){t.reject(e)}}function c(e){var n,t=this;if(!t.triggered){t.triggered=!0,t.def&&(t=t.def);try{(n=s(e))?r((function(){var o=new u(t);try{n.call(e,(function(){c.apply(o,arguments)}),(function(){l.apply(o,arguments)}))}catch(e){l.call(o,e)}})):(t.msg=e,t.state=1,t.chain.length>0&&r(a,t))}catch(e){l.call(new u(t),e)}}}function l(e){var n=this;n.triggered||(n.triggered=!0,n.def&&(n=n.def),n.msg=e,n.state=2,n.chain.length>0&&r(a,n))}function p(e,n,t,o){for(var i=0;i<n.length;i++)!function(i){e.resolve(n[i]).then((function(e){t(i,e)}),o)}(i)}function u(e){this.def=e,this.triggered=!1}function f(e){this.promise=e,this.state=0,this.triggered=!1,this.chain=[],this.msg=void 0}function h(e){if("function"!=typeof e)throw TypeError("Not a function");if(0!==this.__NPO__)throw TypeError("Not a promise");this.__NPO__=1;var n=new f(this);this.then=function(e,t){var o={success:"function"!=typeof e||e,failure:"function"==typeof t&&t};return o.promise=new this.constructor((function(e,n){if("function"!=typeof e||"function"!=typeof n)throw TypeError("Not a function");o.resolve=e,o.reject=n})),n.chain.push(o),0!==n.state&&r(a,n),o.promise},this.catch=function(e){return this.then(void 0,e)};try{e.call(void 0,(function(e){c.call(n,e)}),(function(e){l.call(n,e)}))}catch(e){l.call(n,e)}}t=function(){var e,t,o;function i(e,n){this.fn=e,this.self=n,this.next=void 0}return{add:function(n,r){o=new i(n,r),t?t.next=o:e=o,t=o,o=void 0},drain:function(){var o=e;for(e=t=n=void 0;o;)o.fn.call(o.self),o=o.next}}}();var m=e({},"constructor",h,!1);return h.prototype=m,e(m,"__NPO__",0,!1),e(h,"resolve",(function(e){return e&&"object"==typeof e&&1===e.__NPO__?e:new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");n(e)}))})),e(h,"reject",(function(e){return new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");t(e)}))})),e(h,"all",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):0===e.length?n.resolve([]):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");var i=e.length,r=Array(i),s=0;p(n,e,(function(e,n){r[e]=n,++s===i&&t(r)}),o)}))})),e(h,"race",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");p(n,e,(function(e,n){t(n)}),o)}))})),h},(o=n)[t="Promise"]=o[t]||i(),e.exports&&(e.exports=o[t])}));var t="0.6.1";let o=function(e){return e.SessionNotFound="SessionNotFound",e.SessionLoaded="SessionLoaded",e.SessionUpdated="SessionUpdated",e.SessionCancel="SessionCancel",e.SessionPaymentOnHold="SessionPaymentOnHold",e.SessionPaymentAuthorized="SessionPaymentAuthorized",e.SessionPaymentError="SessionPaymentError",e.SessionLocked="SessionLocked",e.SessionLockFailed="SessionLockFailed",e.ActivePaymentProductType="ActivePaymentProductType",e.ValidateSession="ValidateSession",e}({}),i=function(e){return e.HeightChanged="HeightChanged",e.LanguageChanged="LanguageChanged",e.ScrollToTop="ScrollToTop",e.ShowPopOutButton="ShowPopOutButton",e.HidePopOutButton="HidePopOutButton",e}({});const r=e=>{window.location.assign(e)},s=e=>{const{sid:n,endpoint:o,language:i,ui:r,shouldCallValidateSession:s,popOut:a}=e;if(!o)throw new Error("Invalid endpoint");const d=new URLSearchParams;return d.append("sdk",t),r&&d.append("ui",r),i&&d.append("language",i),s&&d.append("client_side_validation","true"),a&&d.append("role","pop_out_launcher"),"https://checkout.dintero.com"===o?`${o}/v1/view/${n}?${d.toString()}`:(d.append("sid",n),`${o}/?${d.toString()}`)},a=({sid:e,endpoint:n,language:o,shouldCallValidateSession:i})=>{if(i)return`${(e=>e.endsWith("/")?e:`${e}/`)(n)}?loader=true`;const r=new URLSearchParams;return r.append("ui","fullscreen"),r.append("role","pop_out_payment"),r.append("sid",e),r.append("sdk",t),o&&r.append("language",o),`${n}/?${r.toString()}`},d=(e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"ValidationResult",sid:n,...t},"*")},c=e=>{const{sid:n,endpoint:t,handler:o,eventTypes:i,checkout:r}=e,s=new URL(t),a=e=>{const t=e.origin===s.origin,a=e.source===r.iframe.contentWindow,d=e.data&&e.data.sid===n,c=-1!==i.indexOf(e.data&&e.data.type);t&&a&&d&&c&&(((e,n)=>{n.data.mid&&e&&e.postMessage({ack:n.data.mid},n.origin||"*")})(r.iframe.contentWindow,e),o(e.data,r))};window.addEventListener("message",a,!1);return{unsubscribe:()=>{window.removeEventListener("message",a,!1)}}},l="dintero-checkout-sdk-style",p="dintero-checkout-sdk-backdrop",u="dintero-checkout-sdk-backdrop-description",f="dintero-checkout-sdk-backdrop-focus",h="dintero-checkout-sdk-backdrop-close",m=e=>n=>(n.preventDefault(),n.stopPropagation(),e(),!1),g=()=>{const e=document.createElement("div");return e.setAttribute("id",p),e.setAttribute("role","dialog"),e.style.zIndex=(()=>{const e=document.getElementsByTagName("*"),n=Array.from(e).reduce(((e,n)=>{try{const t=document.defaultView.getComputedStyle(n,null).getPropertyValue("z-index"),o=parseInt(t||"0");if(!isNaN(o)&&o>e)return o}catch(e){console.error(e)}return e}),0);return n<9999?"9999":(n+1).toString()})(),e},y=e=>{const n=document.getElementById(f),t=document.getElementById(h);"Tab"!==e.key&&"Tab"!==e.code||(document.activeElement===n?(t.focus(),e.preventDefault()):(n.focus(),e.preventDefault()))},w=e=>{(()=>{if(document.getElementById(l))return;const e=document.createElement("style");e.setAttribute("id",l),e.innerHTML=`\n @keyframes ${p}-fade-in {\n from {opacity: 0;}\n to {opacity: 1;}\n }\n\n #${p} {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n height: 100vh;\n width: 100vw;\n background-color: rgba(0,0,0,0.9);\n background: radial-gradient(rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.8) 100%);\n cursor: pointer;\n animation: 20ms ease-out ${p}-fade-in;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 20px;\n color: #ffffff;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\n font-size: 18px;\n font-weight: 400;\n line-height: normal;\n text-rendering: geometricPrecision;\n margin: 0;\n padding: 0;\n border: 0;\n vertical-align: baseline;\n line-height: normal;\n }\n\n #${p} p {\n padding: 0;\n margin: 0;\n border: 0;\n user-select: none;\n }\n\n #${f} {\n background-color: #efefef !important;\n color: #000000 !important;\n font-size: 16px !important;\n font-weight: 600 !important;\n border-radius: 200px !important;\n margin: 0 !important;\n line-height: normal !important;\n border: none !important;\n padding: 10px 20px !important;\n user-select: none !important;\n cursor: pointer !important;\n }\n #${f}:hover,\n #${f}:focus {\n outline: none !important;\n background-color: #ffffff !important;\n border: none !important;\n color: #000000 !important;\n padding: 10px 20px !important;\n margin: 0 !important;\n }\n #${f}:focus{\n outline-offset: 2px;\n outline: 1px #ffffff solid !important;\n }\n\n #${h} {\n background: transparent !important;\n padding: 0 !important;\n margin: 0 !important;\n border: none !important;\n border-radius: 4px !important;\n height: 24px !important;\n width: 24px !important;\n color: #efefef !important;\n position: absolute !important;\n top: 16px !important;\n right: 24px !important;\n transition: all 200ms ease-out !important;\n cursor: pointer !important;\n }\n\n #${h}:hover,\n #${h}:focus {\n outline: none !important;\n color: #ffffff !important;\n border: none !important;\n background: transparent !important;\n padding: 0 !important;\n margin: 0 !important;\n position: absolute;\n top: 16px;\n right: 24px;\n }\n #${h}:focus{\n outline: 1px #ffffff solid !important;\n }\n\n #${p}:before,\n #${p}:after,\n #${p} > *:before,\n #${p} > *:after {\n content: '';\n content: none;\n }\n `,document.head.appendChild(e)})();const n=g(),t=(e=>{const n=document.createElement("button");return n.setAttribute("id",h),n.setAttribute("type","button"),n.setAttribute("aria-label",e),n.innerHTML='\n <svg\n xmlns="http://www.w3.org/2000/svg"\n width="24"\n height="24"\n viewBox="0 0 24 24"\n fill="none"\n stroke="currentColor"\n stroke-width="2"\n stroke-linecap="round"\n stroke-linejoin="round"\n alt="close icon"\n >\n <line x1="18" y1="6" x2="6" y2="18"></line>\n <line x1="6" y1="6" x2="18" y2="18"></line>\n </svg>',n})(e.event.closeLabel),o=(()=>{const e=document.createElement("div");return e.innerHTML='\n <svg width="120px" height="22px" viewBox="0 0 630 111" version="1.1" >\n <g id="Page-1" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">\n <g id="Dintero" fill="#ffffff" fillRule="nonzero">\n <path d="M376.23,60.48 L376.23,73.54 L454.13,73.54 C456.31,41.55 435.85,23.71 410.61,23.71 C385.37,23.71 367.09,41.77 367.09,66.79 C367.09,92.03 386.02,110.31 411.91,110.31 C433.02,110.31 448.9,97.25 453.25,82.24 L436.5,82.24 C432.37,89.42 423.88,95.51 411.91,95.51 C395.16,95.51 382.75,83.11 382.75,66.79 C382.75,50.69 394.72,38.5 410.6,38.5 C426.48,38.5 438.45,50.68 438.45,66.79 L444.54,60.48 L376.23,60.48 Z M154.29,17.83 L171.7,17.83 L171.7,0.42 L154.29,0.42 L154.29,17.83 Z M120.34,108.13 L191.27,108.13 L191.27,93.77 L120.34,93.77 L120.34,108.13 Z M156.46,40.24 L156.46,108.13 L171.69,108.13 L171.69,45.47 C171.69,32.85 165.82,25.89 151.89,25.89 L120.34,25.89 L120.34,40.25 L156.46,40.25 L156.46,40.24 Z M499.17,25.88 L464.36,25.88 L464.36,40.24 L483.94,40.24 L484.16,108.13 L499.39,108.13 L499.17,62.44 C499.17,48.51 508.53,40.25 521.58,40.25 L535.29,40.25 L535.29,25.89 L524.41,25.89 C509.18,25.89 501.78,31.33 497.65,41.56 L495.47,47 L499.17,47.65 L499.17,25.88 Z M288.76,25.88 L310.52,25.88 L310.52,6.3 L325.75,6.3 L325.75,25.88 L359.69,25.88 L359.69,40.24 L325.75,40.24 L325.75,93.77 L359.69,93.77 L359.69,108.13 L332.49,108.13 C318.56,108.13 310.51,98.99 310.51,86.37 L310.51,40.24 L288.75,40.24 L288.75,25.88 L288.76,25.88 Z M464.35,108.13 L535.28,108.13 L535.28,93.77 L464.35,93.77 L464.35,108.13 Z M108.6,54.17 C108.6,23.06 85.54,0.43 53.77,0.43 L0.9,0.43 L0.9,108.14 L53.77,108.14 C85.53,108.13 108.6,85.5 108.6,54.17 M248.07,23.71 C234.58,23.71 223.92,31.98 220,41.55 L220,25.88 L204.77,25.88 L204.77,108.13 L220,108.13 L220,66.35 C220,53.08 224.79,38.93 243.72,38.93 C259.39,38.93 267.44,48.07 267.44,67.43 L267.44,108.12 L282.67,108.12 L282.67,64.6 C282.67,35.02 265.91,23.71 248.07,23.71 M586.2,110.31 C611.22,110.31 629.72,92.03 629.72,67.01 C629.72,41.99 611.23,23.71 586.2,23.71 C560.96,23.71 542.68,41.99 542.68,67.01 C542.68,92.03 560.96,110.31 586.2,110.31 M586.2,95.51 C570.32,95.51 558.35,83.33 558.35,67.01 C558.35,50.69 570.32,38.51 586.2,38.51 C602.08,38.51 614.05,50.69 614.05,67.01 C614.05,83.33 602.08,95.51 586.2,95.51 M16.99,92.9 L16.99,15.66 L51.8,15.66 C75.3,15.66 92.05,31.98 92.05,54.61 C92.05,76.8 75.3,92.91 51.8,92.91 L16.99,92.91 L16.99,92.9 Z" id="Shape"></path>\n </g>\n </g>\n </svg>',e})(),i=(e=>{const n=document.createElement("p");return n.setAttribute("id",u),n.innerText=e,n})(e.event.descriptionLabel),r=(e=>{const n=document.createElement("button");return n.setAttribute("id",f),n.setAttribute("type","button"),n.innerText=e,n})(e.event.focusLabel);return n.onclick=m(e.focus),r.onclick=m(e.focus),t.onclick=m(e.close),document.addEventListener("keydown",y),n.appendChild(t),n.appendChild(o),n.appendChild(i),n.appendChild(r),document.body.appendChild(n),n.focus(),n},v=()=>{try{const e=document.getElementById(p);e&&document.body.removeChild(e),document.removeEventListener("keydown",y)}catch(e){console.error(e)}},b="dintero-checkout-sdk-launch-pop-out",L=e=>{const{container:n}=e,t=document.getElementById(b),o=t||document.createElement("button");((e,{label:n,disabled:t,top:o,left:i,right:r,styles:s,onClick:a})=>{e.setAttribute("id",b),e.setAttribute("type","button"),"true"===t?e.setAttribute("disabled",t):e.removeAttribute("disabled"),e.onclick=n=>{n.preventDefault(),n.stopPropagation(),e.style.boxShadow="inset 0 0 10px rgba(34, 84, 65, 0.9)",a(),window.setTimeout((()=>{e.style.boxShadow="none"}),200)},e.innerText=n,e.style.position="absolute",e.style.top=o+"px",e.style.left=i+"px",e.style.right=r+"px";for(const[n,t]of Object.entries(s))e.style[n]=t})(o,e),t||n.appendChild(o)},S=()=>{try{const e=document.getElementById(b);e&&e.remove()}catch(e){console.error(e)}},C=Math.min(480,window.screen.width),k=Math.min(840,window.screen.height);let T;const x=async e=>{let n,t=-1;if(T&&!T.closed)return;const o=a(e);T=await((e,n,t)=>new Promise((o=>{try{const i=window.screenX+(window.outerWidth-n)/2,r=window.screenY+(window.outerHeight-t)/2,s=`width=${n},height=${t},left=${i},top=${r},location=no,menubar=no,toolbar=no,status=no`,a=window.open(e,"dintero-checkout",s);if(!a)return console.log("createPopOutWindow no popOut"),void o(void 0);const d=window.setTimeout((()=>{console.log("createPopOutWindow timeout"),o(void 0)}),3e3);a.addEventListener("load",(e=>{console.log("createPopOutWindow loaded",{popOut:a,event:e}),clearTimeout(d),o(a)}))}catch(e){o(void 0)}})))(o,C,k);const i=()=>{window.clearInterval(t),t=-1,window.removeEventListener("beforeunload",r),T=void 0,e.onClose(),n&&n()},r=()=>{T&&T.close(),i()};return window.addEventListener("beforeunload",r),t=window.setInterval((()=>{T&&T.closed&&i()}),200),n=e.onOpen(T),{close:r,focus:()=>{T&&T.focus()},popOutWindow:T}},P=(e,n)=>{j(n),e.href&&r(e.href)},E=(e,n)=>{(e.height||0===e.height)&&n.iframe.setAttribute("style",`width:100%; height:${e.height}px;`)},O=(e,n)=>{try{n.iframe.scrollIntoView({block:"start",behavior:"smooth"})}catch(e){console.error(e)}},A=(e,n)=>{e.language&&(n.language=e.language)},W=(e,n)=>{const t={internalPopOutHandler:!0,eventTypes:[i.LanguageChanged],handler:(e,n)=>{var t,o,i;t=n.iframe,o=n.options.sid,i=e.language,t.contentWindow&&t.contentWindow.postMessage({type:"SetLanguage",sid:o,language:i},"*")}},r={internalPopOutHandler:!0,eventTypes:[o.SessionCancel,o.SessionPaymentOnHold,o.SessionPaymentAuthorized,o.SessionPaymentError],handler:(n,t)=>{if(n.href){S();try{e.close()}catch(e){console.error(e)}}else console.error("Payment Complete event missing href property")}},s=o=>{o.source===e&&"popOut"===o.data.context&&o.data.sid===n.options.sid&&[t,r,...n.handlers].forEach((e=>{e.eventTypes.includes(o.data.type)&&e.handler&&(e=>{try{e()}catch(e){console.error(e)}})((()=>{e.handler(o.data,n)}))}))};return window.addEventListener("message",s),()=>{window.removeEventListener("message",s)}},$=async(e,n)=>{const{close:t,focus:o,popOutWindow:i}=await x({sid:n.options.sid,endpoint:n.options.endpoint,shouldCallValidateSession:Boolean(n.options.onValidateSession),language:e.language,onOpen:e=>W(e,n),onClose:()=>{var e,t;v(),e=n.iframe,t=n.options.sid,e.contentWindow&&e.contentWindow.postMessage({type:"ClosedPopOut",sid:t},"*"),(e=>{try{const n=document.getElementById(b);n&&(e?n.setAttribute("disabled",e.toString()):n.removeAttribute("disabled"))}catch(e){console.error(e)}})(!1),n.popOutWindow=void 0}});return i?(r=n.iframe,s=n.options.sid,r.contentWindow&&r.contentWindow.postMessage({type:"OpenedPopOut",sid:s},"*"),n.popOutWindow=i,(e=>{try{if(document.getElementById(p))return;return w(e)}catch(e){console.error(e)}})({focus:o,close:t,event:e}),!0):(((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"OpenPopOutFailed",sid:n},"*")})(n.iframe,n.options.sid),!1);var r,s},M=async(e,n)=>{if(await $(e,n)&&n.options.onValidateSession){t=n.iframe,i=n.options.sid,t.contentWindow&&t.contentWindow.postMessage({type:"ValidatingPopOut",sid:i},"*");const r=((e,n)=>t=>{d(n.iframe,n.options.sid,t),t.success&&n.popOutWindow?n.popOutWindow.location.href=a({sid:n.options.sid,endpoint:n.options.endpoint,shouldCallValidateSession:!1,language:e.language}):(n.popOutWindow&&n.popOutWindow.close(),console.error(t.clientValidationError))})(e,n);try{n.options.onValidateSession({type:o.ValidateSession,session:n.session,callback:r},n,r)}catch(e){console.error(e),d(n.iframe,n.options.sid,{success:!1,clientValidationError:"Validation runtime error"})}}var t,i},_=(e,n)=>{(e=>e&&e.type===i.ShowPopOutButton)(e)&&(L({container:n.options.innerContainer,label:e.openLabel,top:e.top,left:e.left,right:e.right,styles:e.styles,disabled:e.disabled,onClick:()=>M(e,n)}),(e=>{const n=document.getElementById(f);n&&(n.innerText=e.focusLabel);const t=document.getElementById(u);t&&(t.innerText=e.descriptionLabel);const o=document.getElementById(h);o&&o.setAttribute("aria-label",e.descriptionLabel)})(e))},V=(e,n)=>{e.type===i.HidePopOutButton&&S()},j=e=>{if(S(),v(),e.popOutWindow)try{e.popOutWindow.close()}catch(e){console.error(e)}};e.embed=async e=>{const n=document.createElement("div");n.style.position="relative",n.style["box-sizing"]="border-box";const r={endpoint:"https://checkout.dintero.com",innerContainer:n,...e},{container:a,sid:l,language:p,endpoint:u,onSession:f,onSessionCancel:h,onPayment:m,onPaymentAuthorized:g,onPaymentError:y,onSessionNotFound:w,onSessionLocked:b,onSessionLockFailed:L,onActivePaymentType:S,onValidateSession:C,popOut:k}=r;let T;const x=[];let W=!1;a.appendChild(n);const{iframe:$,initiate:M}=((e,n,t)=>{if(!e||!e.appendChild)throw new Error("Invalid container");const o=document.createElement("iframe");return o.setAttribute("frameborder","0"),o.setAttribute("allowTransparency","true"),o.setAttribute("style","width:100%; height:0;"),o.setAttribute("sandbox","allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox"),o.setAttribute("allow","payment"),o.setAttribute("importance","high"),o.setAttribute("src",t),{iframe:o,initiate:async()=>new Promise(((n,t)=>{o.onload=()=>n(),o.onerror=()=>t(),e.appendChild(o)}))}})(n,0,s({sid:l,endpoint:u,language:p,ui:"inline",shouldCallValidateSession:void 0!==C,popOut:k})),B=(e,n,t)=>{if(!T)throw new Error("Unable to create action promise: checkout is undefined");return new Promise(((o,i)=>{const r=[];r.push(c({sid:l,endpoint:u,handler:e=>{r.forEach((e=>e.unsubscribe())),o(e)},eventTypes:[n],checkout:T,source:T.iframe.contentWindow})),r.push(c({sid:l,endpoint:u,handler:()=>{r.forEach((e=>e.unsubscribe())),i(`Received unexpected event: ${t}`)},eventTypes:[t],checkout:T,source:T.iframe.contentWindow})),e()}))},I=()=>B((()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"RefreshSession",sid:n},"*")})($,l)}),o.SessionUpdated,o.SessionNotFound),N=e=>{d($,l,e)},H=(e,n,i)=>(e,r)=>{if(!W){W=!0,j(r);const s=["sid","merchant_reference","transaction_id","error"].map((n=>[n,e[n]]));e.type!==o.SessionCancel||e.error||s.push(["error","cancelled"]),s.push(["language",r.language]),s.push(["sdk",t]);const a=s.filter((([e,n])=>n)).map((([e,n])=>`${e}=${n}`)).join("&");r.iframe.setAttribute("src",`${n}/embedResult/?${a}`),i(e,r)}},F=[{handler:A,eventTypes:[i.LanguageChanged]},{handler:E,eventTypes:[i.HeightChanged]},{handler:O,eventTypes:[i.ScrollToTop]},{handler:(e,n)=>{n.session=e.session,f&&f(e,n)},eventTypes:[o.SessionLoaded,o.SessionUpdated]},{eventTypes:[o.SessionPaymentOnHold],handler:m?H(0,u,m):P},{eventTypes:[o.SessionPaymentAuthorized],handler:g||m?H(0,u,g||m):P},{handler:h?H(0,u,h):P,eventTypes:[o.SessionCancel]},{handler:y?H(0,u,y):P,eventTypes:[o.SessionPaymentError]},{handler:w,eventTypes:[o.SessionNotFound]},{handler:(e,n)=>{b&&b(e,n,I)},eventTypes:[o.SessionLocked]},{handler:L,eventTypes:[o.SessionLockFailed]},{handler:S,eventTypes:[o.ActivePaymentProductType]},{handler:(e,n)=>{if(C)try{C({...e,callback:N},n,N)}catch(e){console.error(e),N({success:!1,clientValidationError:"Validation runtime error"})}},eventTypes:[o.ValidateSession]},{handler:_,eventTypes:[i.ShowPopOutButton]},{handler:V,eventTypes:[i.HidePopOutButton]}];return T={destroy:()=>{j(T),$&&(r.popOut&&v(),x.forEach((e=>e.unsubscribe())),$.parentElement&&n.removeChild($)),n.parentElement&&a.removeChild(n)},iframe:$,language:p,lockSession:()=>B((()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"LockSession",sid:n},"*")})($,l)}),o.SessionLocked,o.SessionLockFailed),refreshSession:I,setActivePaymentProductType:e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"SetActivePaymentProductType",sid:n,payment_product_type:t},"*")})($,l,e)},submitValidationResult:N,options:r,handlers:F,session:void 0,popOutWindow:void 0},F.forEach((({handler:e,eventTypes:n})=>{e&&x.push(c({sid:l,endpoint:u,handler:e,eventTypes:n,checkout:T,source:T.iframe.contentWindow}))})),await M(),T},e.redirect=e=>{const{sid:n,language:t,endpoint:o="https://checkout.dintero.com"}=e;r(s({sid:n,endpoint:o,language:t,shouldCallValidateSession:!1}))},Object.defineProperty(e,"__esModule",{value:!0})}));
6
+ var t,o,i;i=function(){var e,n,t,o=Object.prototype.toString,i="undefined"!=typeof setImmediate?function(e){return setImmediate(e)}:setTimeout;try{Object.defineProperty({},"x",{}),e=function(e,n,t,o){return Object.defineProperty(e,n,{value:t,writable:!0,configurable:!1!==o})}}catch(n){e=function(e,n,t){return e[n]=t,e}}function r(e,o){t.add(e,o),n||(n=i(t.drain))}function s(e){var n,t=typeof e;return null==e||"object"!=t&&"function"!=t||(n=e.then),"function"==typeof n&&n}function a(){for(var e=0;e<this.chain.length;e++)d(this,1===this.state?this.chain[e].success:this.chain[e].failure,this.chain[e]);this.chain.length=0}function d(e,n,t){var o,i;try{!1===n?t.reject(e.msg):(o=!0===n?e.msg:n.call(void 0,e.msg))===t.promise?t.reject(TypeError("Promise-chain cycle")):(i=s(o))?i.call(o,t.resolve,t.reject):t.resolve(o)}catch(e){t.reject(e)}}function c(e){var n,t=this;if(!t.triggered){t.triggered=!0,t.def&&(t=t.def);try{(n=s(e))?r((function(){var o=new u(t);try{n.call(e,(function(){c.apply(o,arguments)}),(function(){l.apply(o,arguments)}))}catch(e){l.call(o,e)}})):(t.msg=e,t.state=1,t.chain.length>0&&r(a,t))}catch(e){l.call(new u(t),e)}}}function l(e){var n=this;n.triggered||(n.triggered=!0,n.def&&(n=n.def),n.msg=e,n.state=2,n.chain.length>0&&r(a,n))}function p(e,n,t,o){for(var i=0;i<n.length;i++)!function(i){e.resolve(n[i]).then((function(e){t(i,e)}),o)}(i)}function u(e){this.def=e,this.triggered=!1}function f(e){this.promise=e,this.state=0,this.triggered=!1,this.chain=[],this.msg=void 0}function h(e){if("function"!=typeof e)throw TypeError("Not a function");if(0!==this.__NPO__)throw TypeError("Not a promise");this.__NPO__=1;var n=new f(this);this.then=function(e,t){var o={success:"function"!=typeof e||e,failure:"function"==typeof t&&t};return o.promise=new this.constructor((function(e,n){if("function"!=typeof e||"function"!=typeof n)throw TypeError("Not a function");o.resolve=e,o.reject=n})),n.chain.push(o),0!==n.state&&r(a,n),o.promise},this.catch=function(e){return this.then(void 0,e)};try{e.call(void 0,(function(e){c.call(n,e)}),(function(e){l.call(n,e)}))}catch(e){l.call(n,e)}}t=function(){var e,t,o;function i(e,n){this.fn=e,this.self=n,this.next=void 0}return{add:function(n,r){o=new i(n,r),t?t.next=o:e=o,t=o,o=void 0},drain:function(){var o=e;for(e=t=n=void 0;o;)o.fn.call(o.self),o=o.next}}}();var m=e({},"constructor",h,!1);return h.prototype=m,e(m,"__NPO__",0,!1),e(h,"resolve",(function(e){return e&&"object"==typeof e&&1===e.__NPO__?e:new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");n(e)}))})),e(h,"reject",(function(e){return new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");t(e)}))})),e(h,"all",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):0===e.length?n.resolve([]):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");var i=e.length,r=Array(i),s=0;p(n,e,(function(e,n){r[e]=n,++s===i&&t(r)}),o)}))})),e(h,"race",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");p(n,e,(function(e,n){t(n)}),o)}))})),h},(o=n)[t="Promise"]=o[t]||i(),e.exports&&(e.exports=o[t])}));var t="0.6.2";let o=function(e){return e.SessionNotFound="SessionNotFound",e.SessionLoaded="SessionLoaded",e.SessionUpdated="SessionUpdated",e.SessionCancel="SessionCancel",e.SessionPaymentOnHold="SessionPaymentOnHold",e.SessionPaymentAuthorized="SessionPaymentAuthorized",e.SessionPaymentError="SessionPaymentError",e.SessionLocked="SessionLocked",e.SessionLockFailed="SessionLockFailed",e.ActivePaymentProductType="ActivePaymentProductType",e.ValidateSession="ValidateSession",e}({}),i=function(e){return e.HeightChanged="HeightChanged",e.LanguageChanged="LanguageChanged",e.ScrollToTop="ScrollToTop",e.ShowPopOutButton="ShowPopOutButton",e.HidePopOutButton="HidePopOutButton",e}({});const r=e=>{window.location.assign(e)},s=e=>{const{sid:n,endpoint:o,language:i,ui:r,shouldCallValidateSession:s,popOut:d}=e;if(!o)throw new Error("Invalid endpoint");const c=new URLSearchParams;return c.append("sdk",t),r&&c.append("ui",r),i&&c.append("language",i),s&&c.append("client_side_validation","true"),d&&c.append("role","pop_out_launcher"),"https://checkout.dintero.com"===o?`${o}/v1/view/${n}?${c.toString()}`:(c.append("sid",n),`${a(o)}?${c.toString()}`)},a=e=>e.endsWith("/")?e:`${e}/`,d=({sid:e,endpoint:n,language:o,shouldCallValidateSession:i})=>{const r=new URLSearchParams;return r.append("ui","fullscreen"),r.append("role","pop_out_payment"),r.append("sid",e),r.append("sdk",t),o&&r.append("language",o),i?(r.append("loader","true"),`${a(n)}?${r.toString()}`):`${a(n)}?${r.toString()}`},c=(e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"ValidationResult",sid:n,...t},"*")},l=e=>{const{sid:n,endpoint:t,handler:o,eventTypes:i,checkout:r}=e,s=new URL(t),a=e=>{const t=e.origin===s.origin,a=e.source===r.iframe.contentWindow,d=e.data&&e.data.sid===n,c=-1!==i.indexOf(e.data&&e.data.type);t&&a&&d&&c&&(((e,n)=>{n.data.mid&&e&&e.postMessage({ack:n.data.mid},n.origin||"*")})(r.iframe.contentWindow,e),o(e.data,r))};window.addEventListener("message",a,!1);return{unsubscribe:()=>{window.removeEventListener("message",a,!1)}}},p="dintero-checkout-sdk-style",u="dintero-checkout-sdk-backdrop",f="dintero-checkout-sdk-backdrop-description",h="dintero-checkout-sdk-backdrop-focus",m="dintero-checkout-sdk-backdrop-close",g=e=>n=>(n.preventDefault(),n.stopPropagation(),e(),!1),y=()=>{const e=document.createElement("div");return e.setAttribute("id",u),e.setAttribute("role","dialog"),e.style.zIndex=(()=>{const e=document.getElementsByTagName("*"),n=Array.from(e).reduce(((e,n)=>{try{const t=document.defaultView.getComputedStyle(n,null).getPropertyValue("z-index"),o=parseInt(t||"0");if(!isNaN(o)&&o>e)return o}catch(e){console.error(e)}return e}),0);return n<9999?"9999":(n+1).toString()})(),e},w=e=>{const n=document.getElementById(h),t=document.getElementById(m);"Tab"!==e.key&&"Tab"!==e.code||(document.activeElement===n?(t.focus(),e.preventDefault()):(n.focus(),e.preventDefault()))},v=e=>{(()=>{if(document.getElementById(p))return;const e=document.createElement("style");e.setAttribute("id",p),e.innerHTML=`\n @keyframes ${u}-fade-in {\n from {opacity: 0;}\n to {opacity: 1;}\n }\n\n #${u} {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n height: 100vh;\n width: 100vw;\n background-color: rgba(0,0,0,0.9);\n background: radial-gradient(rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.8) 100%);\n cursor: pointer;\n animation: 20ms ease-out ${u}-fade-in;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 20px;\n color: #ffffff;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\n font-size: 18px;\n font-weight: 400;\n line-height: normal;\n text-rendering: geometricPrecision;\n margin: 0;\n padding: 0;\n border: 0;\n vertical-align: baseline;\n line-height: normal;\n }\n\n #${u} p {\n padding: 0;\n margin: 0;\n border: 0;\n user-select: none;\n }\n\n #${h} {\n background-color: #efefef !important;\n color: #000000 !important;\n font-size: 16px !important;\n font-weight: 600 !important;\n border-radius: 200px !important;\n margin: 0 !important;\n line-height: normal !important;\n border: none !important;\n padding: 10px 20px !important;\n user-select: none !important;\n cursor: pointer !important;\n }\n #${h}:hover,\n #${h}:focus {\n outline: none !important;\n background-color: #ffffff !important;\n border: none !important;\n color: #000000 !important;\n padding: 10px 20px !important;\n margin: 0 !important;\n }\n #${h}:focus{\n outline-offset: 2px;\n outline: 1px #ffffff solid !important;\n }\n\n #${m} {\n background: transparent !important;\n padding: 0 !important;\n margin: 0 !important;\n border: none !important;\n border-radius: 4px !important;\n height: 24px !important;\n width: 24px !important;\n color: #efefef !important;\n position: absolute !important;\n top: 16px !important;\n right: 24px !important;\n transition: all 200ms ease-out !important;\n cursor: pointer !important;\n }\n\n #${m}:hover,\n #${m}:focus {\n outline: none !important;\n color: #ffffff !important;\n border: none !important;\n background: transparent !important;\n padding: 0 !important;\n margin: 0 !important;\n position: absolute;\n top: 16px;\n right: 24px;\n }\n #${m}:focus{\n outline: 1px #ffffff solid !important;\n }\n\n #${u}:before,\n #${u}:after,\n #${u} > *:before,\n #${u} > *:after {\n content: '';\n content: none;\n }\n `,document.head.appendChild(e)})();const n=y(),t=(e=>{const n=document.createElement("button");return n.setAttribute("id",m),n.setAttribute("type","button"),n.setAttribute("aria-label",e),n.innerHTML='\n <svg\n xmlns="http://www.w3.org/2000/svg"\n width="24"\n height="24"\n viewBox="0 0 24 24"\n fill="none"\n stroke="currentColor"\n stroke-width="2"\n stroke-linecap="round"\n stroke-linejoin="round"\n alt="close icon"\n >\n <line x1="18" y1="6" x2="6" y2="18"></line>\n <line x1="6" y1="6" x2="18" y2="18"></line>\n </svg>',n})(e.event.closeLabel),o=(()=>{const e=document.createElement("div");return e.innerHTML='\n <svg width="120px" height="22px" viewBox="0 0 630 111" version="1.1" >\n <g id="Page-1" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">\n <g id="Dintero" fill="#ffffff" fillRule="nonzero">\n <path d="M376.23,60.48 L376.23,73.54 L454.13,73.54 C456.31,41.55 435.85,23.71 410.61,23.71 C385.37,23.71 367.09,41.77 367.09,66.79 C367.09,92.03 386.02,110.31 411.91,110.31 C433.02,110.31 448.9,97.25 453.25,82.24 L436.5,82.24 C432.37,89.42 423.88,95.51 411.91,95.51 C395.16,95.51 382.75,83.11 382.75,66.79 C382.75,50.69 394.72,38.5 410.6,38.5 C426.48,38.5 438.45,50.68 438.45,66.79 L444.54,60.48 L376.23,60.48 Z M154.29,17.83 L171.7,17.83 L171.7,0.42 L154.29,0.42 L154.29,17.83 Z M120.34,108.13 L191.27,108.13 L191.27,93.77 L120.34,93.77 L120.34,108.13 Z M156.46,40.24 L156.46,108.13 L171.69,108.13 L171.69,45.47 C171.69,32.85 165.82,25.89 151.89,25.89 L120.34,25.89 L120.34,40.25 L156.46,40.25 L156.46,40.24 Z M499.17,25.88 L464.36,25.88 L464.36,40.24 L483.94,40.24 L484.16,108.13 L499.39,108.13 L499.17,62.44 C499.17,48.51 508.53,40.25 521.58,40.25 L535.29,40.25 L535.29,25.89 L524.41,25.89 C509.18,25.89 501.78,31.33 497.65,41.56 L495.47,47 L499.17,47.65 L499.17,25.88 Z M288.76,25.88 L310.52,25.88 L310.52,6.3 L325.75,6.3 L325.75,25.88 L359.69,25.88 L359.69,40.24 L325.75,40.24 L325.75,93.77 L359.69,93.77 L359.69,108.13 L332.49,108.13 C318.56,108.13 310.51,98.99 310.51,86.37 L310.51,40.24 L288.75,40.24 L288.75,25.88 L288.76,25.88 Z M464.35,108.13 L535.28,108.13 L535.28,93.77 L464.35,93.77 L464.35,108.13 Z M108.6,54.17 C108.6,23.06 85.54,0.43 53.77,0.43 L0.9,0.43 L0.9,108.14 L53.77,108.14 C85.53,108.13 108.6,85.5 108.6,54.17 M248.07,23.71 C234.58,23.71 223.92,31.98 220,41.55 L220,25.88 L204.77,25.88 L204.77,108.13 L220,108.13 L220,66.35 C220,53.08 224.79,38.93 243.72,38.93 C259.39,38.93 267.44,48.07 267.44,67.43 L267.44,108.12 L282.67,108.12 L282.67,64.6 C282.67,35.02 265.91,23.71 248.07,23.71 M586.2,110.31 C611.22,110.31 629.72,92.03 629.72,67.01 C629.72,41.99 611.23,23.71 586.2,23.71 C560.96,23.71 542.68,41.99 542.68,67.01 C542.68,92.03 560.96,110.31 586.2,110.31 M586.2,95.51 C570.32,95.51 558.35,83.33 558.35,67.01 C558.35,50.69 570.32,38.51 586.2,38.51 C602.08,38.51 614.05,50.69 614.05,67.01 C614.05,83.33 602.08,95.51 586.2,95.51 M16.99,92.9 L16.99,15.66 L51.8,15.66 C75.3,15.66 92.05,31.98 92.05,54.61 C92.05,76.8 75.3,92.91 51.8,92.91 L16.99,92.91 L16.99,92.9 Z" id="Shape"></path>\n </g>\n </g>\n </svg>',e})(),i=(e=>{const n=document.createElement("p");return n.setAttribute("id",f),n.innerText=e,n})(e.event.descriptionLabel),r=(e=>{const n=document.createElement("button");return n.setAttribute("id",h),n.setAttribute("type","button"),n.innerText=e,n})(e.event.focusLabel);return n.onclick=g(e.focus),r.onclick=g(e.focus),t.onclick=g(e.close),document.addEventListener("keydown",w),n.appendChild(t),n.appendChild(o),n.appendChild(i),n.appendChild(r),document.body.appendChild(n),n.focus(),n},b=()=>{try{const e=document.getElementById(u);e&&document.body.removeChild(e),document.removeEventListener("keydown",w)}catch(e){console.error(e)}},L="dintero-checkout-sdk-launch-pop-out",S=e=>{const{container:n}=e,t=document.getElementById(L),o=t||document.createElement("button");((e,{label:n,disabled:t,top:o,left:i,right:r,styles:s,onClick:a})=>{e.setAttribute("id",L),e.setAttribute("type","button"),"true"===t?e.setAttribute("disabled",t):e.removeAttribute("disabled"),e.onclick=n=>{n.preventDefault(),n.stopPropagation(),e.style.boxShadow="inset 0 0 10px rgba(34, 84, 65, 0.9)",a(),window.setTimeout((()=>{e.style.boxShadow="none"}),200)},e.innerText=n,e.style.position="absolute",e.style.top=o+"px",e.style.left=i+"px",e.style.right=r+"px";for(const[n,t]of Object.entries(s))e.style[n]=t})(o,e),t||n.appendChild(o)},C=()=>{try{const e=document.getElementById(L);e&&e.remove()}catch(e){console.error(e)}},k=Math.min(480,window.screen.width),x=Math.min(840,window.screen.height);let T;const E=async e=>{let n,t=-1;if(T&&!T.closed)return;const o=d(e);T=await((e,n,t,o)=>new Promise((i=>{try{const r=window.screenX+(window.outerWidth-t)/2,s=window.screenY+(window.outerHeight-o)/2,a=`width=${t},height=${o},left=${r},top=${s},location=no,menubar=no,toolbar=no,status=no`;let d,c=-1;const l=t=>{const o=t.source===d,r=t.origin===new URL(n).origin,s=t.data&&"AppLoaded"===t.data.type,a="popOut"===t.data.context,p=t.data.sid===e;o&&r&&s&&a&&p&&(clearTimeout(c),i(d),window.removeEventListener("message",l))};if(window.addEventListener("message",l),d=window.open(n,"dintero-checkout",a),!d)return console.log("createPopOutWindow no popOut"),void i(void 0);c=window.setTimeout((()=>{console.log("createPopOutWindow timeout"),i(void 0)}),3e3)}catch(e){i(void 0)}})))(e.sid,o,k,x);const i=()=>{window.clearInterval(t),t=-1,window.removeEventListener("beforeunload",r),T=void 0,e.onClose(),n&&n()},r=()=>{T&&T.close(),i()};return window.addEventListener("beforeunload",r),t=window.setInterval((()=>{T&&T.closed&&i()}),200),n=e.onOpen(T),{close:r,focus:()=>{T&&T.focus()},popOutWindow:T}},P=(e,n)=>{B(n),e.href&&r(e.href)},O=(e,n)=>{(e.height||0===e.height)&&n.iframe.setAttribute("style",`width:100%; height:${e.height}px;`)},A=(e,n)=>{try{n.iframe.scrollIntoView({block:"start",behavior:"smooth"})}catch(e){console.error(e)}},W=(e,n)=>{e.language&&(n.language=e.language)},$=(e,n)=>{const t={internalPopOutHandler:!0,eventTypes:[i.LanguageChanged],handler:(e,n)=>{var t,o,i;t=n.iframe,o=n.options.sid,i=e.language,t.contentWindow&&t.contentWindow.postMessage({type:"SetLanguage",sid:o,language:i},"*")}},r={internalPopOutHandler:!0,eventTypes:[o.SessionCancel,o.SessionPaymentOnHold,o.SessionPaymentAuthorized,o.SessionPaymentError],handler:(n,t)=>{if(n.href){C();try{e.close()}catch(e){console.error(e)}}else console.error("Payment Complete event missing href property")}},s=o=>{o.source===e&&"popOut"===o.data.context&&o.data.sid===n.options.sid&&[t,r,...n.handlers].forEach((e=>{e.eventTypes.includes(o.data.type)&&e.handler&&(e=>{try{e()}catch(e){console.error(e)}})((()=>{e.handler(o.data,n)}))}))};return window.addEventListener("message",s),()=>{window.removeEventListener("message",s)}},M=async(e,n)=>{const{close:t,focus:o,popOutWindow:i}=await E({sid:n.options.sid,endpoint:n.options.endpoint,shouldCallValidateSession:Boolean(n.options.onValidateSession),language:e.language,onOpen:e=>$(e,n),onClose:()=>{var e,t;b(),e=n.iframe,t=n.options.sid,e.contentWindow&&e.contentWindow.postMessage({type:"ClosedPopOut",sid:t},"*"),(e=>{try{const n=document.getElementById(L);n&&(e?n.setAttribute("disabled",e.toString()):n.removeAttribute("disabled"))}catch(e){console.error(e)}})(!1),n.popOutWindow=void 0}});return i?(r=n.iframe,s=n.options.sid,r.contentWindow&&r.contentWindow.postMessage({type:"OpenedPopOut",sid:s},"*"),n.popOutWindow=i,(e=>{try{if(document.getElementById(u))return;return v(e)}catch(e){console.error(e)}})({focus:o,close:t,event:e}),!0):(((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"OpenPopOutFailed",sid:n},"*")})(n.iframe,n.options.sid),!1);var r,s},_=async(e,n)=>{if(await M(e,n)&&n.options.onValidateSession){t=n.iframe,i=n.options.sid,t.contentWindow&&t.contentWindow.postMessage({type:"ValidatingPopOut",sid:i},"*");const r=((e,n)=>t=>{c(n.iframe,n.options.sid,t),t.success&&n.popOutWindow?n.popOutWindow.location.href=d({sid:n.options.sid,endpoint:n.options.endpoint,shouldCallValidateSession:!1,language:e.language}):(n.popOutWindow&&n.popOutWindow.close(),console.error(t.clientValidationError))})(e,n);try{n.options.onValidateSession({type:o.ValidateSession,session:n.session,callback:r},n,r)}catch(e){console.error(e),c(n.iframe,n.options.sid,{success:!1,clientValidationError:"Validation runtime error"})}}var t,i},V=(e,n)=>{(e=>e&&e.type===i.ShowPopOutButton)(e)&&(S({container:n.options.innerContainer,label:e.openLabel,top:e.top,left:e.left,right:e.right,styles:e.styles,disabled:e.disabled,onClick:()=>_(e,n)}),(e=>{const n=document.getElementById(h);n&&(n.innerText=e.focusLabel);const t=document.getElementById(f);t&&(t.innerText=e.descriptionLabel);const o=document.getElementById(m);o&&o.setAttribute("aria-label",e.descriptionLabel)})(e))},j=(e,n)=>{e.type===i.HidePopOutButton&&C()},B=e=>{if(C(),b(),e.popOutWindow)try{e.popOutWindow.close()}catch(e){console.error(e)}};e.embed=async e=>{const n=document.createElement("div");n.style.position="relative",n.style["box-sizing"]="border-box";const r={endpoint:"https://checkout.dintero.com",innerContainer:n,...e},{container:a,sid:d,language:p,endpoint:u,onSession:f,onSessionCancel:h,onPayment:m,onPaymentAuthorized:g,onPaymentError:y,onSessionNotFound:w,onSessionLocked:v,onSessionLockFailed:L,onActivePaymentType:S,onValidateSession:C,popOut:k}=r;let x;const T=[];let E=!1;a.appendChild(n);const{iframe:$,initiate:M}=((e,n,t)=>{if(!e||!e.appendChild)throw new Error("Invalid container");const o=document.createElement("iframe");return o.setAttribute("frameborder","0"),o.setAttribute("allowTransparency","true"),o.setAttribute("style","width:100%; height:0;"),o.setAttribute("sandbox","allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox"),o.setAttribute("allow","payment"),o.setAttribute("importance","high"),o.setAttribute("src",t),{iframe:o,initiate:async()=>new Promise(((n,t)=>{o.onload=()=>n(),o.onerror=()=>t(),e.appendChild(o)}))}})(n,0,s({sid:d,endpoint:u,language:p,ui:"inline",shouldCallValidateSession:void 0!==C,popOut:k})),_=(e,n,t)=>{if(!x)throw new Error("Unable to create action promise: checkout is undefined");return new Promise(((o,i)=>{const r=[];r.push(l({sid:d,endpoint:u,handler:e=>{r.forEach((e=>e.unsubscribe())),o(e)},eventTypes:[n],checkout:x,source:x.iframe.contentWindow})),r.push(l({sid:d,endpoint:u,handler:()=>{r.forEach((e=>e.unsubscribe())),i(`Received unexpected event: ${t}`)},eventTypes:[t],checkout:x,source:x.iframe.contentWindow})),e()}))},I=()=>_((()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"RefreshSession",sid:n},"*")})($,d)}),o.SessionUpdated,o.SessionNotFound),N=e=>{c($,d,e)},H=(e,n,i)=>(e,r)=>{if(!E){E=!0,B(r);const s=["sid","merchant_reference","transaction_id","error"].map((n=>[n,e[n]]));e.type!==o.SessionCancel||e.error||s.push(["error","cancelled"]),s.push(["language",r.language]),s.push(["sdk",t]);const a=s.filter((([e,n])=>n)).map((([e,n])=>`${e}=${n}`)).join("&");r.iframe.setAttribute("src",`${n}/embedResult/?${a}`),i(e,r)}},F=[{handler:W,eventTypes:[i.LanguageChanged]},{handler:O,eventTypes:[i.HeightChanged]},{handler:A,eventTypes:[i.ScrollToTop]},{handler:(e,n)=>{n.session=e.session,f&&f(e,n)},eventTypes:[o.SessionLoaded,o.SessionUpdated]},{eventTypes:[o.SessionPaymentOnHold],handler:m?H(0,u,m):P},{eventTypes:[o.SessionPaymentAuthorized],handler:g||m?H(0,u,g||m):P},{handler:h?H(0,u,h):P,eventTypes:[o.SessionCancel]},{handler:y?H(0,u,y):P,eventTypes:[o.SessionPaymentError]},{handler:w,eventTypes:[o.SessionNotFound]},{handler:(e,n)=>{v&&v(e,n,I)},eventTypes:[o.SessionLocked]},{handler:L,eventTypes:[o.SessionLockFailed]},{handler:S,eventTypes:[o.ActivePaymentProductType]},{handler:(e,n)=>{if(C)try{C({...e,callback:N},n,N)}catch(e){console.error(e),N({success:!1,clientValidationError:"Validation runtime error"})}},eventTypes:[o.ValidateSession]},{handler:V,eventTypes:[i.ShowPopOutButton]},{handler:j,eventTypes:[i.HidePopOutButton]}];return x={destroy:()=>{B(x),$&&(r.popOut&&b(),T.forEach((e=>e.unsubscribe())),$.parentElement&&n.removeChild($)),n.parentElement&&a.removeChild(n)},iframe:$,language:p,lockSession:()=>_((()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"LockSession",sid:n},"*")})($,d)}),o.SessionLocked,o.SessionLockFailed),refreshSession:I,setActivePaymentProductType:e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"SetActivePaymentProductType",sid:n,payment_product_type:t},"*")})($,d,e)},submitValidationResult:N,options:r,handlers:F,session:void 0,popOutWindow:void 0},F.forEach((({handler:e,eventTypes:n})=>{e&&T.push(l({sid:d,endpoint:u,handler:e,eventTypes:n,checkout:x,source:x.iframe.contentWindow}))})),await M(),x},e.redirect=e=>{const{sid:n,language:t,endpoint:o="https://checkout.dintero.com"}=e;r(s({sid:n,endpoint:o,language:t,shouldCallValidateSession:!1}))},Object.defineProperty(e,"__esModule",{value:!0})}));
7
7
  //# sourceMappingURL=dintero-checkout-web-sdk.umd.min.js.map