@bootpay/client-js 5.0.2-beta.2 → 5.0.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.
package/dist/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- !function(){"use strict";try{if("undefined"!=typeof document){var o=document.createElement("style");o.appendChild(document.createTextNode('.bootpay-progress-background{position:fixed;display:block;background-color:transparent;inset:0;text-align:center;z-index:200000;white-space:nowrap}.bootpay-progress-background.blur-off{background-color:transparent}.bootpay-progress-background:before{display:inline-block;height:100%;content:" ";vertical-align:middle}.bootpay-progress-background .progress-message-window{display:inline-block;text-align:center;max-width:600px;border-radius:3px;width:100%;background-color:transparent;padding:0;vertical-align:middle}@media (min-width: 600px){.bootpay-progress-background .progress-message-window{padding:1rem}}.bootpay-progress-background .progress-message-window .bootpay-spinner{display:inline-block;width:50px;height:50px;border-radius:50%;border-top:2px solid rgba(255,255,255,.2);border-right:2px solid rgba(255,255,255,.2);border-bottom:2px solid rgba(255,255,255,.2);border-left:2px solid #ffffff;animation:spin 1s infinite linear}.bootpay-progress-background .progress-message-window .alfred-text{margin-top:1rem}.bootpay-progress-background .progress-message-window .alfred-text span.alfred-inner-text{font-weight:400;color:#eee}@keyframes spin{0%{transform:rotate(0);border-left:2px solid #ffffff;border-top:2px solid rgba(255,255,255,.2);border-right:2px solid rgba(255,255,255,.2);border-bottom:2px solid rgba(255,255,255,.2)}50%{transform:rotate(180deg);border-left:3px solid #ffffff;border-top:2px solid rgba(255,255,255,.4);border-right:2px solid rgba(255,255,255,.4);border-bottom:2px solid rgba(255,255,255,.4)}to{transform:rotate(360deg);border-left:2px solid #ffffff;border-top:2px solid rgba(255,255,255,.2);border-right:2px solid rgba(255,255,255,.2);border-bottom:2px solid rgba(255,255,255,.2)}}body.bootpay-open{position:fixed!important;inset:0;padding:0;margin:0;height:100vh!important;overflow:hidden!important;-webkit-overflow-scrolling:auto!important}body.bootpay-open.bootpay-mobile .bootpay-payment-background{background-color:transparent}@media (min-width: 600px){body.bootpay-open.bootpay-mobile .bootpay-payment-background{background-color:#000000b3}}body.bootpay-open .bootpay-payment-background{position:fixed;inset:0;display:block;text-align:center;background-color:#000000b3;z-index:9999}body.bootpay-open .bootpay-payment-background:before{display:inline-block;vertical-align:middle;height:100%;content:" "}body.bootpay-open .bootpay-payment-background.__alert{padding:1rem}body.bootpay-open .bootpay-payment-background.__alert:before{display:inline-block;vertical-align:middle;height:100%;content:" "}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window{position:absolute;max-width:400px;width:100%;background-color:#fff;border-radius:12px;left:50%;top:50%;transform:translate(-50%,-50%);overflow:hidden;box-shadow:0 0 10px #0000001a}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window.fade-in{animation:__bootpay-fade-in .1s linear}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window.fade-out{animation:__bootpay-fade-out .1s linear}@media (max-width: 768px){body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window{left:1rem;right:1rem;width:auto;top:50%;transform:translateY(-50%)}}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header{padding:1rem;text-align:left;font-size:20px;font-weight:600;position:relative}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header>.bootpay-close-btn{top:40%;transform:translateY(-50%);padding:0;right:1rem}@media (min-width: 600px){body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header>.bootpay-close-btn{right:8px;top:50%;transform:translateY(-55%)}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header>.bootpay-close-btn:before,body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header>.bootpay-close-btn:after{background-color:#333;width:1px}}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-body{padding:1.5rem 1rem;text-align:center;font-size:16px;color:#333;line-height:1.5}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer{display:flex;justify-content:flex-end;border-top:1px solid #f2f2f2}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close{flex:0 1 50%;padding:1rem;background-color:#fff;color:#333;font-size:16px;cursor:pointer;border:0;outline:none}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close.border-right{border-right:1px solid #f2f2f2}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close:hover{background-color:#e0e0e0}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close.bootpay-primary{color:#507cf3;font-weight:600}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close.bootpay-primary:hover{color:#3f6be2}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window{position:relative;display:inline-block;vertical-align:middle}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window.__mobile{max-width:470px;height:90%}@media (max-width: 768px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window{position:absolute;inset:0;border-radius:0!important}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window.__mobile{position:absolute;max-width:inherit;inset:0;height:100%}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe{width:100%!important;height:100%!important;border-radius:0}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe.transparent{background:transparent!important}}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close{position:absolute;display:none;top:-32px;right:4px;color:#fff;font-size:32px;text-decoration:none;outline:none;box-shadow:none;border:0;background-color:transparent}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close:before,body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close:after{width:2px!important;background-color:#fff!important}@media (max-width: 768px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close{top:1rem;right:16px;color:#000;padding:0}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close:before,body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close:after{width:2px!important;background-color:#000!important}}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window{position:relative;width:400px;height:600px;display:none;background-color:#fff;border-radius:5px;overflow:hidden}@media (max-width: 768px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window{position:absolute;inset:0;width:100%;height:100%;border-radius:0}}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.header{position:absolute;left:0;right:0;top:0;height:50px;color:#333;background-color:#fff;text-align:left}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.body{position:absolute;inset:50px 0 72px;padding:1rem;text-align:left;font-size:14px}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.body>#bootpay-item-name-id{font-size:16px;color:#888;font-weight:400!important;text-align:center}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.body>#bootpay-price-id{font-size:36px;color:#333;font-weight:700;text-align:center}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.body>.agree-text{position:absolute;bottom:1rem;left:0;right:0;color:#888;font-size:14px;text-align:center}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.footer{position:absolute;left:0;right:0;bottom:0;height:72px;padding:0 1rem;margin:0}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.footer>button.bootpay-button{display:block;width:100%;padding:1rem;outline:none;border:none;background-color:#507cf3;border-radius:5px;color:#fff;font-size:16px}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.footer>button.bootpay-button:hover,body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.footer>button.bootpay-button:active{outline:none;box-shadow:none}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe{width:100%;height:100%;display:none;border:0!important;outline:0!important;border-radius:0;box-shadow:none}@media (min-width: 600px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe{width:0;height:0;border:0;outline:0;border-radius:0!important;box-shadow:none!important}}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe.rounded-iframe{border-radius:0}@media (min-width: 600px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe.rounded-iframe{width:0;height:0;border:0;outline:0;border-radius:20px!important;box-shadow:none!important}}body.bootpay-open .bootpay-payment-background #__bootpay-modal-iframe.slide-up{animation:__bootpay-slide-up .3s linear}body.bootpay-open .bootpay-payment-background #__bootpay-modal-iframe.slide-down{animation:__bootpay-slide-down .3s linear}body.bootpay-open .bootpay-payment-background>.bootpay-confirm-window>iframe{display:none;width:1px;height:1px;background:transparent;border:0!important;outline:0!important}.bootpay-close-btn{position:absolute;box-shadow:none;background-color:transparent;outline:0;z-index:10001;right:8px;top:8px;height:21px;width:21px;border:0!important;outline:none!important}@media (min-width: 600px){.bootpay-close-btn{right:4px;top:-32px;width:25px;height:25px;background:transparent;outline:none!important;border:0!important}}.bootpay-close-btn.active,.bootpay-close-btn:focus{outline:none!important;border:0!important}.bootpay-close-btn:before,.bootpay-close-btn:after{position:absolute;left:8px;top:2px;content:" ";height:24px;width:1px;background-color:#333}@media (min-width: 600px){.bootpay-close-btn:before,.bootpay-close-btn:after{height:23px;top:0;width:2px;background-color:#fff}}.bootpay-close-btn:before{transform:rotate(45deg)}.bootpay-close-btn:after{transform:rotate(-45deg)}@keyframes __bootpay-slide-up{0%{transform:translateY(150%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes __bootpay-slide-down{0%{transform:translateY(0);opacity:1}to{transform:translateY(150%);opacity:0}}@keyframes __bootpay-fade-in{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes __bootpay-fade-out{0%{opacity:1;scale:1}to{opacity:0;scale:.9}}')),document.head.appendChild(o)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}();
1
+ !function(){"use strict";try{if("undefined"!=typeof document){var o=document.createElement("style");o.appendChild(document.createTextNode('.bootpay-progress-background{position:fixed;display:block;background-color:transparent;inset:0;text-align:center;z-index:200000;white-space:nowrap}.bootpay-progress-background.blur-off{background-color:transparent}.bootpay-progress-background:before{display:inline-block;height:100%;content:" ";vertical-align:middle}.bootpay-progress-background .progress-message-window{display:inline-block;text-align:center;max-width:600px;border-radius:3px;width:100%;background-color:transparent;padding:0;vertical-align:middle}@media (min-width: 600px){.bootpay-progress-background .progress-message-window{padding:1rem}}.bootpay-progress-background .progress-message-window .bootpay-spinner{display:inline-block;width:50px;height:50px;border-radius:50%;border-top:2px solid rgba(255,255,255,.2);border-right:2px solid rgba(255,255,255,.2);border-bottom:2px solid rgba(255,255,255,.2);border-left:2px solid #ffffff;animation:spin 1s infinite linear}.bootpay-progress-background .progress-message-window .alfred-text{margin-top:1rem}.bootpay-progress-background .progress-message-window .alfred-text span.alfred-inner-text{font-weight:400;color:#eee}@keyframes spin{0%{transform:rotate(0);border-left:2px solid #ffffff;border-top:2px solid rgba(255,255,255,.2);border-right:2px solid rgba(255,255,255,.2);border-bottom:2px solid rgba(255,255,255,.2)}50%{transform:rotate(180deg);border-left:3px solid #ffffff;border-top:2px solid rgba(255,255,255,.4);border-right:2px solid rgba(255,255,255,.4);border-bottom:2px solid rgba(255,255,255,.4)}to{transform:rotate(360deg);border-left:2px solid #ffffff;border-top:2px solid rgba(255,255,255,.2);border-right:2px solid rgba(255,255,255,.2);border-bottom:2px solid rgba(255,255,255,.2)}}body.bootpay-open{position:fixed!important;inset:0;padding:0;margin:0;height:100vh!important;overflow:hidden!important;-webkit-overflow-scrolling:auto!important}body.bootpay-open.bootpay-mobile .bootpay-payment-background{background-color:transparent}@media (min-width: 600px){body.bootpay-open.bootpay-mobile .bootpay-payment-background{background-color:#000000b3}}body.bootpay-open .bootpay-payment-background{position:fixed;inset:0;display:block;text-align:center;background-color:#000000b3;z-index:9999}body.bootpay-open .bootpay-payment-background:before{display:inline-block;vertical-align:middle;height:100%;content:" "}body.bootpay-open .bootpay-payment-background.__alert{padding:1rem}body.bootpay-open .bootpay-payment-background.__alert:before{display:inline-block;vertical-align:middle;height:100%;content:" "}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window{position:absolute;max-width:400px;width:100%;background-color:#fff;border-radius:12px;left:50%;top:50%;transform:translate(-50%,-50%);overflow:hidden;box-shadow:0 0 10px #0000001a}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window.fade-in{animation:__bootpay-fade-in .1s linear}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window.fade-out{animation:__bootpay-fade-out .1s linear}@media (max-width: 768px){body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window{left:1rem;right:1rem;width:auto;top:50%;transform:translateY(-50%)}}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header{padding:1rem;text-align:left;font-size:20px;font-weight:600;position:relative}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header>.bootpay-close-btn{top:40%;transform:translateY(-50%);padding:0;right:1rem}@media (min-width: 600px){body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header>.bootpay-close-btn{right:8px;top:50%;transform:translateY(-55%)}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header>.bootpay-close-btn:before,body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-header>.bootpay-close-btn:after{background-color:#333;width:1px}}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-body{padding:1.5rem 1rem;text-align:center;font-size:16px;color:#333;line-height:1.5}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer{display:flex;justify-content:flex-end;border-top:1px solid #f2f2f2}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close{flex:0 1 50%;padding:1rem;background-color:#fff;color:#333;font-size:16px;cursor:pointer;border:0;outline:none}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close.border-right{border-right:1px solid #f2f2f2}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close:hover{background-color:#e0e0e0}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close.bootpay-primary{color:#507cf3;font-weight:600}body.bootpay-open .bootpay-payment-background.__alert>.bootpay-confirm-window>.bootpay__alert-footer>button.bootpay__alert-close.bootpay-primary:hover{color:#3f6be2}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window{position:relative;display:inline-block;vertical-align:middle}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window.__mobile{max-width:470px;height:90%}@media (max-width: 768px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window{position:absolute;inset:0;border-radius:0!important}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window.__mobile{position:absolute;max-width:inherit;inset:0;height:100%}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe{width:100%!important;height:100%!important;border-radius:0}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe.transparent{background:transparent!important}}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close{position:absolute;display:none;top:-32px;right:4px;color:#fff;font-size:32px;text-decoration:none;outline:none;box-shadow:none;border:0;background-color:transparent}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close:before,body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close:after{width:2px!important;background-color:#fff!important}@media (max-width: 768px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close{top:1rem;right:16px;color:#000;padding:0}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close:before,body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>button.bootpay-payment-close:after{width:2px!important;background-color:#000!important}}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window{position:relative;width:400px;height:600px;display:none;background-color:#fff;border-radius:5px;overflow:hidden}@media (max-width: 768px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window{position:absolute;inset:0;width:100%;height:100%;border-radius:0}}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.header{position:absolute;left:0;right:0;top:0;height:50px;color:#333;background-color:#fff;text-align:left}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.body{position:absolute;inset:50px 0 72px;padding:1rem;text-align:left;font-size:14px}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.body>#bootpay-item-name-id{font-size:16px;color:#888;font-weight:400!important;text-align:center}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.body>#bootpay-price-id{font-size:36px;color:#333;font-weight:700;text-align:center}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.body>.agree-text{position:absolute;bottom:1rem;left:0;right:0;color:#888;font-size:14px;text-align:center}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.footer{position:absolute;left:0;right:0;bottom:0;height:72px;padding:0 1rem;margin:0}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.footer>button.bootpay-button{display:block;width:100%;padding:1rem;outline:none;border:none;background-color:#507cf3;border-radius:5px;color:#fff;font-size:16px}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.footer>button.bootpay-button:hover,body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>.bootpay-popup-window>.footer>button.bootpay-button:active{outline:none;box-shadow:none}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe{width:100%;height:100%;display:none;border:0!important;outline:0!important;border-radius:0;box-shadow:none}@media (min-width: 600px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe{width:0;height:0;border:0;outline:0;border-radius:0!important;box-shadow:none!important}}body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe.rounded-iframe{border-radius:0}@media (min-width: 600px){body.bootpay-open .bootpay-payment-background>.bootpay-payment-window>iframe.rounded-iframe{width:0;height:0;border:0;outline:0;border-radius:20px!important;box-shadow:none!important}}body.bootpay-open .bootpay-payment-background #__bootpay-modal-iframe.slide-up{animation:__bootpay-slide-up .3s linear}body.bootpay-open .bootpay-payment-background #__bootpay-modal-iframe.slide-down{animation:__bootpay-slide-down .3s linear}body.bootpay-open .bootpay-payment-background>.bootpay-confirm-window>iframe{display:none;width:1px;height:1px;background:transparent;border:0!important;outline:0!important}.bootpay-close-btn{position:absolute;box-shadow:none;background-color:transparent;outline:0;z-index:10001;right:8px;top:8px;height:21px;width:21px;border:0!important;outline:none!important}@media (min-width: 600px){.bootpay-close-btn{right:4px;top:-32px;width:25px;height:25px;background:transparent;outline:none!important;border:0!important}}.bootpay-close-btn.active,.bootpay-close-btn:focus{outline:none!important;border:0!important}.bootpay-close-btn:before,.bootpay-close-btn:after{position:absolute;left:8px;top:2px;content:" ";height:24px;width:1px;background-color:#333}@media (min-width: 600px){.bootpay-close-btn:before,.bootpay-close-btn:after{height:23px;top:0;width:2px;background-color:#fff}}.bootpay-close-btn:before{transform:rotate(45deg)}.bootpay-close-btn:after{transform:rotate(-45deg)}@keyframes __bootpay-slide-up{0%{transform:translateY(150%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes __bootpay-slide-down{0%{transform:translateY(0);opacity:1}to{transform:translateY(150%);opacity:0}}@keyframes __bootpay-fade-in{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes __bootpay-fade-out{0%{opacity:1;scale:1}to{opacity:0;scale:.9}}.__bootpay-ex-el-fullscreen{position:absolute;inset:0;height:100%}.bootpay-ex-iframe-container{width:100%;height:100%}.bootpay-ex-iframe-container>iframe{width:100%;border:0;outline:none;overflow:scroll}.bootpay-ex-iframe-container>.bootpay-ex-overlay{position:fixed;inset:0;background-color:#000000b3;z-index:100000;text-align:center;display:none}.bootpay-ex-iframe-container>.bootpay-ex-overlay.fade-in{animation:fadeIn .2s ease}.bootpay-ex-iframe-container>.bootpay-ex-overlay.fade-out{animation:fadeOut .2s ease}.bootpay-ex-iframe-container>.bootpay-ex-overlay:before{display:inline-block;vertical-align:middle;height:100%;content:" "}@media (max-width: 600px){.bootpay-ex-iframe-container>.bootpay-ex-overlay:before{display:block;height:inherit;vertical-align:inherit}}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-overlay-iframe-container{display:inline-block;vertical-align:middle}@media (max-width: 600px){.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-overlay-iframe-container{width:100%!important;height:100%!important}}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container{display:inline-block;background-color:#fff;vertical-align:middle;max-width:450px;width:100%;text-align:left;border-radius:12px;overflow:hidden}@media (max-width: 768px){.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container{margin:1rem}}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container.zoom-in{animation:zoomIn .2s ease}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container.zoom-out{animation:zoomOut .2s ease}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-header{position:relative;padding:1rem 1.5rem;font-size:18px}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-header .bootpay-close-btn{position:absolute;box-shadow:none;background-color:transparent;outline:0;z-index:10001;right:1rem;top:50%;transform:translateY(-50%);height:21px;width:21px;border:0!important;outline:none!important}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-header .bootpay-close-btn.active,.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-header .bootpay-close-btn:focus{outline:none!important;border:0!important}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-header .bootpay-close-btn:before,.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-header .bootpay-close-btn:after{position:absolute;left:8px;top:0;content:" ";height:24px;width:1px;background-color:#888}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-header .bootpay-close-btn:before{transform:rotate(45deg)}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-header .bootpay-close-btn:after{transform:rotate(-45deg)}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-body{padding:1rem 1.5rem 2rem}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-footer>.bootpay-ex-alert-button-grid{display:flex;width:100%}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-footer>.bootpay-ex-alert-button-grid>.bootpay-ex-cols{flex:0 50%}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-footer button.bootpay-btn{display:block;box-shadow:none;background-color:transparent;border:0!important;outline:none!important;width:100%;padding:1rem 0}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-footer button.bootpay-btn.bootpay-alert-cancel-button{background-color:#f1f1f1;color:#333;font-size:18px;font-weight:500}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-footer button.bootpay-btn.bootpay-alert-cancel-button:hover{opacity:.8}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-footer button.bootpay-btn.bootpay-alert-confirm-button{background-color:#507cf3;color:#fff;font-size:18px;font-weight:500}.bootpay-ex-iframe-container>.bootpay-ex-overlay>.bootpay-ex-alert-container>.bootpay-ex-alert-footer button.bootpay-btn.bootpay-alert-confirm-button:hover{opacity:.8}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes zoomIn{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes zoomOut{0%{transform:scale(1)}to{transform:scale(.9)}}')),document.head.appendChild(o)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}();
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
@@ -743,113 +743,107 @@ function requireCore() {
743
743
  var encUtf8Exports = encUtf8.exports;
744
744
  const toUtf8 = /* @__PURE__ */ getDefaultExportFromCjs(encUtf8Exports);
745
745
  var encBase64 = { exports: {} };
746
- var hasRequiredEncBase64;
747
- function requireEncBase64() {
748
- if (hasRequiredEncBase64) return encBase64.exports;
749
- hasRequiredEncBase64 = 1;
750
- (function(module, exports) {
751
- (function(root, factory) {
752
- {
753
- module.exports = factory(requireCore());
754
- }
755
- })(commonjsGlobal, function(CryptoJS2) {
756
- (function() {
757
- var C = CryptoJS2;
758
- var C_lib = C.lib;
759
- var WordArray = C_lib.WordArray;
760
- var C_enc = C.enc;
761
- C_enc.Base64 = {
762
- /**
763
- * Converts a word array to a Base64 string.
764
- *
765
- * @param {WordArray} wordArray The word array.
766
- *
767
- * @return {string} The Base64 string.
768
- *
769
- * @static
770
- *
771
- * @example
772
- *
773
- * var base64String = CryptoJS.enc.Base64.stringify(wordArray);
774
- */
775
- stringify: function(wordArray) {
776
- var words = wordArray.words;
777
- var sigBytes = wordArray.sigBytes;
778
- var map = this._map;
779
- wordArray.clamp();
780
- var base64Chars = [];
781
- for (var i = 0; i < sigBytes; i += 3) {
782
- var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
783
- var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
784
- var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
785
- var triplet = byte1 << 16 | byte2 << 8 | byte3;
786
- for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
787
- base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 63));
788
- }
789
- }
790
- var paddingChar = map.charAt(64);
791
- if (paddingChar) {
792
- while (base64Chars.length % 4) {
793
- base64Chars.push(paddingChar);
794
- }
746
+ (function(module, exports) {
747
+ (function(root, factory) {
748
+ {
749
+ module.exports = factory(requireCore());
750
+ }
751
+ })(commonjsGlobal, function(CryptoJS2) {
752
+ (function() {
753
+ var C = CryptoJS2;
754
+ var C_lib = C.lib;
755
+ var WordArray = C_lib.WordArray;
756
+ var C_enc = C.enc;
757
+ C_enc.Base64 = {
758
+ /**
759
+ * Converts a word array to a Base64 string.
760
+ *
761
+ * @param {WordArray} wordArray The word array.
762
+ *
763
+ * @return {string} The Base64 string.
764
+ *
765
+ * @static
766
+ *
767
+ * @example
768
+ *
769
+ * var base64String = CryptoJS.enc.Base64.stringify(wordArray);
770
+ */
771
+ stringify: function(wordArray) {
772
+ var words = wordArray.words;
773
+ var sigBytes = wordArray.sigBytes;
774
+ var map = this._map;
775
+ wordArray.clamp();
776
+ var base64Chars = [];
777
+ for (var i = 0; i < sigBytes; i += 3) {
778
+ var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
779
+ var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
780
+ var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
781
+ var triplet = byte1 << 16 | byte2 << 8 | byte3;
782
+ for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
783
+ base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 63));
795
784
  }
796
- return base64Chars.join("");
797
- },
798
- /**
799
- * Converts a Base64 string to a word array.
800
- *
801
- * @param {string} base64Str The Base64 string.
802
- *
803
- * @return {WordArray} The word array.
804
- *
805
- * @static
806
- *
807
- * @example
808
- *
809
- * var wordArray = CryptoJS.enc.Base64.parse(base64String);
810
- */
811
- parse: function(base64Str) {
812
- var base64StrLength = base64Str.length;
813
- var map = this._map;
814
- var reverseMap = this._reverseMap;
815
- if (!reverseMap) {
816
- reverseMap = this._reverseMap = [];
817
- for (var j = 0; j < map.length; j++) {
818
- reverseMap[map.charCodeAt(j)] = j;
819
- }
785
+ }
786
+ var paddingChar = map.charAt(64);
787
+ if (paddingChar) {
788
+ while (base64Chars.length % 4) {
789
+ base64Chars.push(paddingChar);
820
790
  }
821
- var paddingChar = map.charAt(64);
822
- if (paddingChar) {
823
- var paddingIndex = base64Str.indexOf(paddingChar);
824
- if (paddingIndex !== -1) {
825
- base64StrLength = paddingIndex;
826
- }
791
+ }
792
+ return base64Chars.join("");
793
+ },
794
+ /**
795
+ * Converts a Base64 string to a word array.
796
+ *
797
+ * @param {string} base64Str The Base64 string.
798
+ *
799
+ * @return {WordArray} The word array.
800
+ *
801
+ * @static
802
+ *
803
+ * @example
804
+ *
805
+ * var wordArray = CryptoJS.enc.Base64.parse(base64String);
806
+ */
807
+ parse: function(base64Str) {
808
+ var base64StrLength = base64Str.length;
809
+ var map = this._map;
810
+ var reverseMap = this._reverseMap;
811
+ if (!reverseMap) {
812
+ reverseMap = this._reverseMap = [];
813
+ for (var j = 0; j < map.length; j++) {
814
+ reverseMap[map.charCodeAt(j)] = j;
827
815
  }
828
- return parseLoop(base64Str, base64StrLength, reverseMap);
829
- },
830
- _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
831
- };
832
- function parseLoop(base64Str, base64StrLength, reverseMap) {
833
- var words = [];
834
- var nBytes = 0;
835
- for (var i = 0; i < base64StrLength; i++) {
836
- if (i % 4) {
837
- var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
838
- var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
839
- var bitsCombined = bits1 | bits2;
840
- words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
841
- nBytes++;
816
+ }
817
+ var paddingChar = map.charAt(64);
818
+ if (paddingChar) {
819
+ var paddingIndex = base64Str.indexOf(paddingChar);
820
+ if (paddingIndex !== -1) {
821
+ base64StrLength = paddingIndex;
842
822
  }
843
823
  }
844
- return WordArray.create(words, nBytes);
824
+ return parseLoop(base64Str, base64StrLength, reverseMap);
825
+ },
826
+ _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
827
+ };
828
+ function parseLoop(base64Str, base64StrLength, reverseMap) {
829
+ var words = [];
830
+ var nBytes = 0;
831
+ for (var i = 0; i < base64StrLength; i++) {
832
+ if (i % 4) {
833
+ var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
834
+ var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
835
+ var bitsCombined = bits1 | bits2;
836
+ words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
837
+ nBytes++;
838
+ }
845
839
  }
846
- })();
847
- return CryptoJS2.enc.Base64;
848
- });
849
- })(encBase64);
850
- return encBase64.exports;
851
- }
852
- var encBase64Exports = requireEncBase64();
840
+ return WordArray.create(words, nBytes);
841
+ }
842
+ })();
843
+ return CryptoJS2.enc.Base64;
844
+ });
845
+ })(encBase64);
846
+ var encBase64Exports = encBase64.exports;
853
847
  const Base64 = /* @__PURE__ */ getDefaultExportFromCjs(encBase64Exports);
854
848
  class BootpayManager {
855
849
  $blank(value) {
@@ -1099,7 +1093,7 @@ class SessionStorageManager extends StorageManager {
1099
1093
  }
1100
1094
  const SessionStorage = new SessionStorageManager();
1101
1095
  const name = "@bootpay/client-js";
1102
- const version = "5.0.2-beta.2";
1096
+ const version = "5.0.2";
1103
1097
  const main = "dist/index.es.js";
1104
1098
  const types = "dist/src/index.d.ts";
1105
1099
  const styles = "dist/index.css";
@@ -1109,7 +1103,7 @@ const scripts = {
1109
1103
  deploy: "NODE_ENV=production ./node_modules/.bin/webpack --output-path=./dist --mode=production && gzip -kf dist/*.min.js && ./webview.sh $npm_package_version"
1110
1104
  };
1111
1105
  const dependencies = {
1112
- typescript: "^5.1.6"
1106
+ typescript: "^5.5.4"
1113
1107
  };
1114
1108
  const devDependencies = {
1115
1109
  "@types/ws": "^8.5.5",
@@ -1404,7 +1398,7 @@ class TemplateManager extends BootpayManager {
1404
1398
  for (let i in Object.keys(resizeData)) {
1405
1399
  let key = Object.keys(resizeData)[i];
1406
1400
  let value = resizeData[key];
1407
- if (this.$present(value) && !String(value).match(/%/) && (key.match(/width/) || key.match(/Width/) || key.match(/height/) || key.match(/Height/))) {
1401
+ if (this.$present(value) && !String(value).match(/%/) && !String(value).match(/vh/) && (key.match(/width/) || key.match(/Width/) || key.match(/height/) || key.match(/Height/))) {
1408
1402
  value = `${String(resizeData[key]).replace(/px/gi, "")}px`;
1409
1403
  }
1410
1404
  element.style.setProperty(key, value);
@@ -2861,7 +2855,7 @@ function requireMd5() {
2861
2855
  T[i] = Math2.abs(Math2.sin(i + 1)) * 4294967296 | 0;
2862
2856
  }
2863
2857
  })();
2864
- var MD5 = C_algo.MD5 = Hasher.extend({
2858
+ var MD52 = C_algo.MD5 = Hasher.extend({
2865
2859
  _doReset: function() {
2866
2860
  this._hash = new WordArray.init([
2867
2861
  1732584193,
@@ -3008,8 +3002,8 @@ function requireMd5() {
3008
3002
  var n = a + (c ^ (b | ~d)) + x + t;
3009
3003
  return (n << s | n >>> 32 - s) + b;
3010
3004
  }
3011
- C.MD5 = Hasher._createHelper(MD5);
3012
- C.HmacMD5 = Hasher._createHmacHelper(MD5);
3005
+ C.MD5 = Hasher._createHelper(MD52);
3006
+ C.HmacMD5 = Hasher._createHmacHelper(MD52);
3013
3007
  })(Math);
3014
3008
  return CryptoJS2.MD5;
3015
3009
  });
@@ -3229,7 +3223,7 @@ function requireEvpkdf() {
3229
3223
  var Base = C_lib.Base;
3230
3224
  var WordArray = C_lib.WordArray;
3231
3225
  var C_algo = C.algo;
3232
- var MD5 = C_algo.MD5;
3226
+ var MD52 = C_algo.MD5;
3233
3227
  var EvpKDF = C_algo.EvpKDF = Base.extend({
3234
3228
  /**
3235
3229
  * Configuration options.
@@ -3240,7 +3234,7 @@ function requireEvpkdf() {
3240
3234
  */
3241
3235
  cfg: Base.extend({
3242
3236
  keySize: 128 / 32,
3243
- hasher: MD5,
3237
+ hasher: MD52,
3244
3238
  iterations: 1
3245
3239
  }),
3246
3240
  /**
@@ -3948,7 +3942,7 @@ function requireAes() {
3948
3942
  (function(module, exports) {
3949
3943
  (function(root, factory, undef) {
3950
3944
  {
3951
- module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
3945
+ module.exports = factory(requireCore(), encBase64Exports, requireMd5(), requireEvpkdf(), requireCipherCore());
3952
3946
  }
3953
3947
  })(commonjsGlobal, function(CryptoJS2) {
3954
3948
  (function() {
@@ -8685,7 +8679,7 @@ function requireTripledes() {
8685
8679
  (function(module, exports) {
8686
8680
  (function(root, factory, undef) {
8687
8681
  {
8688
- module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
8682
+ module.exports = factory(requireCore(), encBase64Exports, requireMd5(), requireEvpkdf(), requireCipherCore());
8689
8683
  }
8690
8684
  })(commonjsGlobal, function(CryptoJS2) {
8691
8685
  (function() {
@@ -9465,7 +9459,7 @@ function requireRc4() {
9465
9459
  (function(module, exports) {
9466
9460
  (function(root, factory, undef) {
9467
9461
  {
9468
- module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
9462
+ module.exports = factory(requireCore(), encBase64Exports, requireMd5(), requireEvpkdf(), requireCipherCore());
9469
9463
  }
9470
9464
  })(commonjsGlobal, function(CryptoJS2) {
9471
9465
  (function() {
@@ -9547,7 +9541,7 @@ function requireRabbit() {
9547
9541
  (function(module, exports) {
9548
9542
  (function(root, factory, undef) {
9549
9543
  {
9550
- module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
9544
+ module.exports = factory(requireCore(), encBase64Exports, requireMd5(), requireEvpkdf(), requireCipherCore());
9551
9545
  }
9552
9546
  })(commonjsGlobal, function(CryptoJS2) {
9553
9547
  (function() {
@@ -9675,7 +9669,7 @@ function requireRabbitLegacy() {
9675
9669
  (function(module, exports) {
9676
9670
  (function(root, factory, undef) {
9677
9671
  {
9678
- module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
9672
+ module.exports = factory(requireCore(), encBase64Exports, requireMd5(), requireEvpkdf(), requireCipherCore());
9679
9673
  }
9680
9674
  })(commonjsGlobal, function(CryptoJS2) {
9681
9675
  (function() {
@@ -9795,7 +9789,7 @@ function requireRabbitLegacy() {
9795
9789
  (function(module, exports) {
9796
9790
  (function(root, factory, undef) {
9797
9791
  {
9798
- module.exports = factory(requireCore(), requireX64Core(), requireLibTypedarrays(), requireEncUtf16(), requireEncBase64(), requireEncBase64url(), requireMd5(), requireSha1(), requireSha256(), requireSha224(), requireSha512(), requireSha384(), requireSha3(), requireRipemd160(), requireHmac(), requirePbkdf2(), requireEvpkdf(), requireCipherCore(), requireModeCfb(), requireModeCtr(), requireModeCtrGladman(), requireModeOfb(), requireModeEcb(), requirePadAnsix923(), requirePadIso10126(), requirePadIso97971(), requirePadZeropadding(), requirePadNopadding(), requireFormatHex(), requireAes(), requireTripledes(), requireRc4(), requireRabbit(), requireRabbitLegacy());
9792
+ module.exports = factory(requireCore(), requireX64Core(), requireLibTypedarrays(), requireEncUtf16(), encBase64Exports, requireEncBase64url(), requireMd5(), requireSha1(), requireSha256(), requireSha224(), requireSha512(), requireSha384(), requireSha3(), requireRipemd160(), requireHmac(), requirePbkdf2(), requireEvpkdf(), requireCipherCore(), requireModeCfb(), requireModeCtr(), requireModeCtrGladman(), requireModeOfb(), requireModeEcb(), requirePadAnsix923(), requirePadIso10126(), requirePadIso97971(), requirePadZeropadding(), requirePadNopadding(), requireFormatHex(), requireAes(), requireTripledes(), requireRc4(), requireRabbit(), requireRabbitLegacy());
9799
9793
  }
9800
9794
  })(commonjsGlobal, function(CryptoJS2) {
9801
9795
  return CryptoJS2;
@@ -9803,6 +9797,370 @@ function requireRabbitLegacy() {
9803
9797
  })(cryptoJs);
9804
9798
  var cryptoJsExports = cryptoJs.exports;
9805
9799
  const CryptoJS = /* @__PURE__ */ getDefaultExportFromCjs(cryptoJsExports);
9800
+ var md5Exports = requireMd5();
9801
+ const MD5 = /* @__PURE__ */ getDefaultExportFromCjs(md5Exports);
9802
+ const ExWindowRouter = {
9803
+ parameterPrefix: "__b_",
9804
+ // query string url 업데이트를 진행한다
9805
+ updateParameters({ parameters, replace }) {
9806
+ const url = new URL(window.location);
9807
+ const originParameters = Object.fromEntries(new URLSearchParams(location.search));
9808
+ Object.keys(originParameters).forEach((key) => {
9809
+ if (key.match(this.parameterPrefix)) {
9810
+ url.searchParams.delete(key);
9811
+ } else {
9812
+ url.searchParams.set(key, originParameters[key]);
9813
+ }
9814
+ });
9815
+ if (parameters) {
9816
+ Object.keys(parameters).forEach((key) => {
9817
+ const parameterKey = `${this.parameterPrefix}${key}`;
9818
+ url.searchParams.set(parameterKey, parameters[key]);
9819
+ });
9820
+ }
9821
+ replace ? window.history.replaceState(url.toString(), "", url.toString()) : window.history.pushState(parameters, "", url.toString());
9822
+ }
9823
+ };
9824
+ const ExStore = {
9825
+ el: void 0,
9826
+ data: void 0,
9827
+ path: void 0,
9828
+ setExData(el, data2) {
9829
+ this.el = (el != null ? el : "").replace(/#/gi, "");
9830
+ this.data = data2;
9831
+ },
9832
+ encryptParameters() {
9833
+ return encodeURIComponent(
9834
+ this.encrypt({
9835
+ categories: this.data.categories,
9836
+ extra: this.data.extra
9837
+ })
9838
+ );
9839
+ },
9840
+ encryptKey() {
9841
+ return MD5(this.data.client_key).toString().substring(0, 16);
9842
+ },
9843
+ encrypt(data2) {
9844
+ if (isBlank(this.data.client_key)) {
9845
+ throw new Error("privateKey is not set");
9846
+ }
9847
+ const payload = typeof data2 === "string" ? data2 : JSON.stringify(data2);
9848
+ const encrypted = AES.encrypt(
9849
+ payload,
9850
+ CryptoJS.enc.Utf8.parse(this.encryptKey()),
9851
+ {
9852
+ mode: CryptoJS.mode.ECB,
9853
+ padding: CryptoJS.pad.Pkcs7
9854
+ }
9855
+ );
9856
+ return Base64.stringify(encrypted.ciphertext);
9857
+ },
9858
+ decrypt(data2) {
9859
+ if (isBlank(this.data.client_key)) {
9860
+ throw new Error("privateKey is not set");
9861
+ }
9862
+ const decrypted = AES.decrypt(
9863
+ data2,
9864
+ CryptoJS.enc.Utf8.parse(this.data.client_key.substring(0, 16)),
9865
+ {
9866
+ mode: CryptoJS.mode.ECB,
9867
+ padding: CryptoJS.pad.Pkcs7
9868
+ }
9869
+ );
9870
+ const decryptedString = decrypted.toString(CryptoJS.enc.Utf8);
9871
+ try {
9872
+ return JSON.parse(decryptedString);
9873
+ } catch (e) {
9874
+ return decryptedString;
9875
+ }
9876
+ },
9877
+ currentBootpayExtraParameters() {
9878
+ let queryString = [];
9879
+ const parameters = Object.fromEntries(new URLSearchParams(location.search));
9880
+ Object.keys(parameters).forEach((key) => {
9881
+ if (key.match(ExWindowRouter.parameterPrefix)) {
9882
+ queryString.push(`${key.replace(ExWindowRouter.parameterPrefix, "")}=${parameters[key]}`);
9883
+ }
9884
+ });
9885
+ return queryString.join("&");
9886
+ }
9887
+ };
9888
+ const EnvironmentEx = {
9889
+ mode: "production",
9890
+ locale: "ko",
9891
+ packageVersion: Package.version,
9892
+ EX_SHOP_URL: {
9893
+ development: "https://dev-i.bootpay.co.kr",
9894
+ stage: "https://stage-i.bootpay.co.kr",
9895
+ production: "https://i.bootpay.co.kr"
9896
+ },
9897
+ set(env) {
9898
+ this.mode = env;
9899
+ },
9900
+ setClientKey(clientKey) {
9901
+ this.clientKey = clientKey;
9902
+ return this.clientKey;
9903
+ },
9904
+ setLocale(locale) {
9905
+ this.locale = locale;
9906
+ },
9907
+ toExShopUrl(uri) {
9908
+ return [this.EX_SHOP_URL[this.mode], uri].join("/");
9909
+ }
9910
+ };
9911
+ class TemplateExManager extends TemplateManager {
9912
+ constructor() {
9913
+ super();
9914
+ this.$iFrameId = "bootpay-ex-iframe";
9915
+ this.$iFrameContainerId = "bootpay-ex-iframe-container";
9916
+ this.$exOverlayId = "bootpay-ex-overlay";
9917
+ this.$exOverlayContainerId = "bootpay-ex-overlay-container";
9918
+ this.$exStore = ExStore;
9919
+ this.$template = `
9920
+ <div class="bootpay-ex-iframe-container" id="${this.$iFrameContainerId}">
9921
+ <iframe id="${this.$iFrameId}" src="" allowtransparency="true" scrolling="yes" style="background: transparent; width: 100%; height: 100%;"></iframe>
9922
+ <div class="bootpay-ex-overlay" id="${this.$exOverlayId}">
9923
+ </div>
9924
+ </div>
9925
+ `;
9926
+ }
9927
+ render() {
9928
+ const element = document.getElementById(this.$exStore.el);
9929
+ if (this.$blank(this.$exStore.el) || element === null) {
9930
+ throw new Error("부트페이 Ex를 설정할 Element ID를 입력하지 않았거나 해당 Element DOM이 존재하지 않습니다.");
9931
+ }
9932
+ this.templateRender();
9933
+ }
9934
+ templateRender() {
9935
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
9936
+ const element = document.getElementById(this.$exStore.el);
9937
+ element.style.setProperty("height", "0px");
9938
+ element.innerHTML = this.$template;
9939
+ const iFrame = this.byId(this.$iFrameId);
9940
+ iFrame.setAttribute("src", this.shopUrl());
9941
+ if ((_c = (_b = (_a = this.$exStore.data) == null ? void 0 : _a.extra) == null ? void 0 : _b.window) == null ? void 0 : _c.fullscreen) {
9942
+ element.classList.add("__bootpay-ex-el-fullscreen");
9943
+ element.style.removeProperty("height");
9944
+ (_d = document.getElementById(this.$exStore.el)) == null ? void 0 : _d.style.setProperty("height", "100%");
9945
+ } else if (((_g = (_f = (_e = this.$exStore.data) == null ? void 0 : _e.extra) == null ? void 0 : _f.window) == null ? void 0 : _g.width) || ((_j = (_i = (_h = this.$exStore.data) == null ? void 0 : _h.extra) == null ? void 0 : _i.window) == null ? void 0 : _j.height)) {
9946
+ this.resize({
9947
+ width: this.$exStore.data.extra.window.width,
9948
+ height: this.$exStore.data.extra.window.height
9949
+ });
9950
+ }
9951
+ }
9952
+ resize(resizeData) {
9953
+ this.templateResize(this.$exStore.el, resizeData);
9954
+ }
9955
+ postMessage(event, data2) {
9956
+ var _a;
9957
+ const element = this.byId(this.$iFrameId);
9958
+ (_a = element == null ? void 0 : element.contentWindow) == null ? void 0 : _a.postMessage(JSON.stringify({
9959
+ bootpay_event: true,
9960
+ event,
9961
+ data: data2
9962
+ }), "*");
9963
+ }
9964
+ showAlert(message, title = "알림", options = {
9965
+ type: "notice",
9966
+ confirmText: "확인",
9967
+ cancelText: "취소"
9968
+ }) {
9969
+ const overlay = document.getElementById(this.$exOverlayId);
9970
+ overlay.innerHTML = `
9971
+ <div class="bootpay-ex-alert-container" id="${this.$exOverlayContainerId}">
9972
+ <div class="bootpay-ex-alert-header">
9973
+ <span>${title}</span>
9974
+ <button class="bootpay-close-btn" onClick="BootpayEx.hideAlert('cancel')"></button>
9975
+ </div>
9976
+ <div class="bootpay-ex-alert-body">
9977
+ ${message}
9978
+ </div>
9979
+ ${this.alertTypeTemplate(options)}
9980
+ </div>
9981
+ `;
9982
+ const container = document.getElementById(this.$exOverlayContainerId);
9983
+ overlay.style.display = "block";
9984
+ overlay.classList.remove("fade-out");
9985
+ container.classList.remove("zoom-out");
9986
+ overlay.classList.add("fade-in");
9987
+ container.classList.add("zoom-in");
9988
+ }
9989
+ hideAlert(eventName = "confirm") {
9990
+ const overlay = document.getElementById(this.$exOverlayId);
9991
+ const container = document.getElementById(this.$exOverlayContainerId);
9992
+ container.classList.replace("zoom-in", "zoom-out");
9993
+ overlay.classList.replace("fade-in", "fade-out");
9994
+ setTimeout(() => {
9995
+ overlay.style.display = "none";
9996
+ overlay.innerHTML = "";
9997
+ this.postMessage("alertResponse", {
9998
+ mode: eventName
9999
+ });
10000
+ }, 150);
10001
+ }
10002
+ showOverlayiFrameToUrl(url, options = { width: "100%", height: "100%" }) {
10003
+ const overlay = document.getElementById(this.$exOverlayId);
10004
+ const style = Object.keys(options).map((key) => `${key}: ${options[key]};`).join(" ");
10005
+ overlay.innerHTML = `
10006
+ <div class="bootpay-ex-overlay-iframe-container" id="${this.$exOverlayContainerId}" style="${style}">
10007
+ <iframe src="${url}" frameborder="0" allowtransparency="true" scrolling="no" style="background: transparent; width: 100%; height: 100%;"></iframe>
10008
+ </div>
10009
+ `;
10010
+ const container = document.getElementById(this.$exOverlayContainerId);
10011
+ overlay.style.display = "block";
10012
+ overlay.classList.add("fade-in");
10013
+ container.classList.add("zoom-in");
10014
+ }
10015
+ hideOverlayiFrame() {
10016
+ const overlay = document.getElementById(this.$exOverlayId);
10017
+ const container = document.getElementById(this.$exOverlayContainerId);
10018
+ container.classList.replace("zoom-in", "zoom-out");
10019
+ overlay.classList.replace("fade-in", "fade-out");
10020
+ setTimeout(() => {
10021
+ overlay.style.display = "none";
10022
+ overlay.innerHTML = "";
10023
+ }, 200);
10024
+ }
10025
+ alertTypeTemplate(options = { type: "notice", confirmText: "확인", cancelText: "취소" }) {
10026
+ if (options.type === "notice") {
10027
+ return `
10028
+ <div class="bootpay-ex-alert-footer">
10029
+ <button class="bootpay-alert-confirm-button bootpay-btn" onClick="BootpayEx.hideAlert('confirm')">${options.confirmText}</button>
10030
+ </div>
10031
+ `;
10032
+ } else {
10033
+ return `
10034
+ <div class="bootpay-ex-alert-footer">
10035
+ <div class="bootpay-ex-alert-button-grid">
10036
+ <div class="bootpay-ex-cols">
10037
+ <button class="bootpay-alert-cancel-button bootpay-btn" onClick="BootpayEx.hideAlert('cancel')">${options.cancelText}</button>
10038
+ </div>
10039
+ <div class="bootpay-ex-cols">
10040
+ <button class="bootpay-alert-confirm-button bootpay-btn" onClick="BootpayEx.hideAlert('confirm')">${options.confirmText}</button>
10041
+ </div>
10042
+ </div>
10043
+ </div>
10044
+ `;
10045
+ }
10046
+ }
10047
+ shopUrl() {
10048
+ const parameters = Object.fromEntries(new URLSearchParams(location.search));
10049
+ const url = isPresent(parameters.__b_u) ? EnvironmentEx.toExShopUrl(parameters.__b_u) : EnvironmentEx.toExShopUrl(
10050
+ `em/${this.$exStore.data.client_key}/${this.$exStore.encryptParameters()}?${this.$exStore.currentBootpayExtraParameters()}`
10051
+ );
10052
+ return url;
10053
+ }
10054
+ }
10055
+ const TemplateEx = new TemplateExManager();
10056
+ const ExWindowEvent = {
10057
+ resize: (data2) => {
10058
+ TemplateEx.resize(data2);
10059
+ },
10060
+ showAlert({ message, title, options }) {
10061
+ TemplateEx.showAlert(message, title, options);
10062
+ },
10063
+ hideAlert() {
10064
+ TemplateEx.hideAlert();
10065
+ },
10066
+ showOverlayiFrame({ url, options }) {
10067
+ TemplateEx.showOverlayiFrameToUrl(url, options);
10068
+ },
10069
+ hideOverlayiFrame() {
10070
+ TemplateEx.hideOverlayiFrame();
10071
+ },
10072
+ responseOverlayiFrame({ event, data: data2 }) {
10073
+ TemplateEx.postMessage(event, data2);
10074
+ this.hideOverlayiFrame();
10075
+ },
10076
+ addFavicon({ url }) {
10077
+ const link = document.querySelector("link[rel~='icon']");
10078
+ if (link) {
10079
+ link.href = url;
10080
+ } else {
10081
+ const link2 = document.createElement("link");
10082
+ link2.rel = "icon";
10083
+ link2.href = url;
10084
+ document.head.appendChild(link2);
10085
+ }
10086
+ }
10087
+ };
10088
+ class BootpayExEventManager extends BootpayWindowEvent {
10089
+ constructor() {
10090
+ super();
10091
+ this.$messageEventName = "message.BootpayExEvent";
10092
+ this.$routerEventName = "popstate.BootpayExEvent";
10093
+ this.$eventPrefix = "bootpay";
10094
+ this.$exStore = ExStore;
10095
+ }
10096
+ bind() {
10097
+ window.resetBootpayEventListener(this.$messageEventName, (e) => {
10098
+ const response = this.parseEvent(e.data);
10099
+ if (isPresent(response) && isPresent(response.event)) {
10100
+ const hookFunction = this.hookFunction(response.hook);
10101
+ if (isPresent(hookFunction) && isPresent(hookFunction[response.event])) {
10102
+ return hookFunction[response.event](response.data);
10103
+ } else {
10104
+ Logger.error("event", `BootpayExEventManager: ${response.event} is not defined`);
10105
+ }
10106
+ }
10107
+ });
10108
+ window.resetBootpayEventListener(this.$routerEventName, (e) => {
10109
+ const parameters = Object.fromEntries(new URLSearchParams(location.search));
10110
+ if (isPresent(parameters.__b_u)) {
10111
+ TemplateEx.postMessage("BootpayRouterChange", { url: `/${parameters.__b_u}` });
10112
+ }
10113
+ });
10114
+ }
10115
+ hookFunction(hook) {
10116
+ switch (hook) {
10117
+ case "ExWindowEvent":
10118
+ return ExWindowEvent;
10119
+ case "ExWindowRouter":
10120
+ return ExWindowRouter;
10121
+ }
10122
+ }
10123
+ }
10124
+ const BootpayExWindowEvent = new BootpayExEventManager();
10125
+ class BootpayExWindowManager extends BootpayManager {
10126
+ constructor() {
10127
+ super();
10128
+ }
10129
+ initialize() {
10130
+ ExStore.setExData(void 0, {
10131
+ client_key: void 0,
10132
+ categories: [],
10133
+ extra: {}
10134
+ });
10135
+ }
10136
+ render(el, data2) {
10137
+ if (this.$blank(data2.client_key)) {
10138
+ throw new Error("client_key가 입력되지 않았습니다.");
10139
+ }
10140
+ this.initialize();
10141
+ ExStore.setExData(el, data2);
10142
+ BootpayExWindowEvent.bind();
10143
+ TemplateEx.render();
10144
+ }
10145
+ hideAlert(eventName = "confirm") {
10146
+ TemplateEx.hideAlert(eventName);
10147
+ }
10148
+ }
10149
+ const BootpayExWindow = new BootpayExWindowManager();
10150
+ const BootpayEx = {
10151
+ render(el, data2) {
10152
+ BootpayExWindow.render(el, data2);
10153
+ },
10154
+ setEnvironmentMode(env) {
10155
+ EnvironmentEx.set(env);
10156
+ },
10157
+ hideAlert(eventName = "confirm") {
10158
+ BootpayExWindow.hideAlert(eventName);
10159
+ }
10160
+ };
10161
+ if (typeof window !== "undefined") {
10162
+ window.BootpayEx = BootpayEx;
10163
+ }
9806
10164
  const WidgetStore = {
9807
10165
  el: void 0,
9808
10166
  data: void 0,
@@ -10660,6 +11018,7 @@ if (typeof window !== "undefined") {
10660
11018
  export {
10661
11019
  Bootpay,
10662
11020
  Environment as BootpayEnvironment,
11021
+ BootpayEx,
10663
11022
  BootpaySDK,
10664
11023
  BootpayWidget,
10665
11024
  Bootpay as default