@monei-js/components 2.1.2 → 2.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"monei.umd.production.min.js","names":["Thumbmark","createToken","confirmPayment","shallowEqual","#remoteWindow","#allowedOrigins","#log","#validateReceivedMessage","#handleMessageFromRemoteWindow","#getOriginForSendingMessage","#isChildUsingDeprecatedProtocol","#port","#handleMessageFromPort","#messageCallbacks","#destroyPort","#concreteRemoteOrigin","#isAllowedOrigin","connect","WindowMessenger","componentOptions","componentOptions","createToken","componentOptions","componentOptions","componentOptions","componentOptions","_api","_utils"],"sources":["../../../node_modules/.pnpm/@thumbmarkjs+thumbmarkjs@1.7.6/node_modules/@thumbmarkjs/thumbmarkjs/dist/thumbmark.esm.js","../../shared/lib/utils.ts","../src/utils.ts","../src/config.ts","../src/api.ts","../src/bridge/event-emitter.ts","../src/bridge/drivers/react.ts","../src/bridge/drivers/vue.ts","../src/bridge/drivers/angular.ts","../src/bridge/drivers/index.ts","../../../node_modules/.pnpm/penpal@7.0.6/node_modules/penpal/dist/penpal.mjs","../../shared/lib/bridge-constants.ts","../src/bridge/constants.ts","../src/bridge/props.ts","../src/bridge/render.ts","../src/bridge/create-component.ts","../src/enums.ts","../src/container.ts","../src/card-input/index.ts","../src/payment-modal/index.ts","../src/paypal/index.ts","../src/bizum/modal.ts","../src/bizum/index.ts","../src/google-pay/index.ts","../src/payment-request/index.ts","../src/types.ts","../src/index.ts"],"sourcesContent":["const e=2592e5,t=\"thumbmark\",n=\"https://api.thumbmarkjs.com\",o={exclude:[],include:[],stabilize:[\"private\",\"iframe\"],logging:!0,timeout:5e3,cache_api_call:!0,cache_lifetime_in_ms:0,performance:!1,experimental:!1,property_name_factory:e=>`${t}_${e}`};let r={...o};function i(e,t){r[e]=t}const a={private:[{exclude:[\"canvas\"],browsers:[\"firefox\",\"safari>=17\",\"brave\"]},{exclude:[\"audio\"],browsers:[\"samsungbrowser\",\"safari\"]},{exclude:[\"fonts\"],browsers:[\"firefox\"]},{exclude:[\"audio.sampleHash\",\"hardware.deviceMemory\",\"header.acceptLanguage.q\",\"system.hardwareConcurrency\",\"plugins\"],browsers:[\"brave\"]},{exclude:[\"tls.extensions\"],browsers:[\"firefox\",\"chrome\",\"safari\"]},{exclude:[\"header.acceptLanguage\"],browsers:[\"edge\",\"chrome\"]}],iframe:[{exclude:[\"system.applePayVersion\",\"system.cookieEnabled\"],browsers:[\"safari\"]},{exclude:[\"permissions\"]}],vpn:[{exclude:[\"ip\"]}],always:[{exclude:[\"speech\"],browsers:[\"brave\",\"firefox\"]}]},s=\"undefined\"!=typeof window?window.OfflineAudioContext||window.webkitOfflineAudioContext:null;function c(e){let t=0;for(let n=0;n<e.length;++n)t+=Math.abs(e[n]);return t}function u(e,t,n){let o=[];for(let t=0;t<e[0].data.length;t++){let n=[];for(let o=0;o<e.length;o++)n.push(e[o].data[t]);o.push(l(n))}const r=new Uint8ClampedArray(o);return new ImageData(r,t,n)}function l(e){if(0===e.length)return 0;const t={};for(const n of e)t[n]=(t[n]||0)+1;let n=e[0];for(const e in t)t[e]>t[n]&&(n=parseInt(e,10));return n}function d(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const m=new Uint32Array([597399067,2869860233,951274213,2716044179]);function f(e,t){return e<<t|e>>>32-t}function p(e,t=0){if(t=t?0|t:0,\"string\"==typeof e&&(e=function(e){if(\"undefined\"!=typeof TextEncoder)return(new TextEncoder).encode(e).buffer;const t=[];for(let n=0;n<e.length;n++){let o=e.charCodeAt(n);o<128?t.push(o):o<2048?t.push(192|o>>6,128|63&o):o<55296||o>=57344?t.push(224|o>>12,128|o>>6&63,128|63&o):(n++,o=65536+((1023&o)<<10|1023&e.charCodeAt(n)),t.push(240|o>>18,128|o>>12&63,128|o>>6&63,128|63&o))}return new Uint8Array(t).buffer}(e)),!(e instanceof ArrayBuffer))throw new TypeError(\"Expected key to be ArrayBuffer or string\");const n=new Uint32Array([t,t,t,t]);!function(e,t){const n=e.byteLength/16|0,o=new Uint32Array(e,0,4*n);for(let e=0;e<n;e++){const n=o.subarray(4*e,4*(e+1));n[0]=Math.imul(n[0],m[0]),n[0]=f(n[0],15),n[0]=Math.imul(n[0],m[1]),t[0]=t[0]^n[0],t[0]=f(t[0],19),t[0]=t[0]+t[1],t[0]=Math.imul(t[0],5)+1444728091,n[1]=Math.imul(n[1],m[1]),n[1]=f(n[1],16),n[1]=Math.imul(n[1],m[2]),t[1]=t[1]^n[1],t[1]=f(t[1],17),t[1]=t[1]+t[2],t[1]=Math.imul(t[1],5)+197830471,n[2]=Math.imul(n[2],m[2]),n[2]=f(n[2],17),n[2]=Math.imul(n[2],m[3]),t[2]=t[2]^n[2],t[2]=f(t[2],15),t[2]=t[2]+t[3],t[2]=Math.imul(t[2],5)+2530024501,n[3]=Math.imul(n[3],m[3]),n[3]=f(n[3],18),n[3]=Math.imul(n[3],m[0]),t[3]=t[3]^n[3],t[3]=f(t[3],13),t[3]=t[3]+t[0],t[3]=Math.imul(t[3],5)+850148119}}(e,n),function(e,t){const n=e.byteLength/16|0,o=e.byteLength%16,r=new Uint32Array(4),i=new Uint8Array(e,16*n,o);switch(o){case 15:r[3]=r[3]^i[14]<<16;case 14:r[3]=r[3]^i[13]<<8;case 13:r[3]=r[3]^i[12],r[3]=Math.imul(r[3],m[3]),r[3]=f(r[3],18),r[3]=Math.imul(r[3],m[0]),t[3]=t[3]^r[3];case 12:r[2]=r[2]^i[11]<<24;case 11:r[2]=r[2]^i[10]<<16;case 10:r[2]=r[2]^i[9]<<8;case 9:r[2]=r[2]^i[8],r[2]=Math.imul(r[2],m[2]),r[2]=f(r[2],17),r[2]=Math.imul(r[2],m[3]),t[2]=t[2]^r[2];case 8:r[1]=r[1]^i[7]<<24;case 7:r[1]=r[1]^i[6]<<16;case 6:r[1]=r[1]^i[5]<<8;case 5:r[1]=r[1]^i[4],r[1]=Math.imul(r[1],m[1]),r[1]=f(r[1],16),r[1]=Math.imul(r[1],m[2]),t[1]=t[1]^r[1];case 4:r[0]=r[0]^i[3]<<24;case 3:r[0]=r[0]^i[2]<<16;case 2:r[0]=r[0]^i[1]<<8;case 1:r[0]=r[0]^i[0],r[0]=Math.imul(r[0],m[0]),r[0]=f(r[0],15),r[0]=Math.imul(r[0],m[1]),t[0]=t[0]^r[0]}}(e,n),function(e,t){t[0]=t[0]^e.byteLength,t[1]=t[1]^e.byteLength,t[2]=t[2]^e.byteLength,t[3]=t[3]^e.byteLength,t[0]=t[0]+t[1]|0,t[0]=t[0]+t[2]|0,t[0]=t[0]+t[3]|0,t[1]=t[1]+t[0]|0,t[2]=t[2]+t[0]|0,t[3]=t[3]+t[0]|0,t[0]=d(t[0]),t[1]=d(t[1]),t[2]=d(t[2]),t[3]=d(t[3]),t[0]=t[0]+t[1]|0,t[0]=t[0]+t[2]|0,t[0]=t[0]+t[3]|0,t[1]=t[1]+t[0]|0,t[2]=t[2]+t[0]|0,t[3]=t[3]+t[0]|0}(e,n);const o=new Uint8Array(n.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,\"0\"))).join(\"\")}const h=280;async function g(e){for(var t;!document.body;)await w(50);const n=document.createElement(\"iframe\");n.setAttribute(\"frameBorder\",\"0\");const o=n.style;o.setProperty(\"position\",\"fixed\"),o.setProperty(\"display\",\"block\",\"important\"),o.setProperty(\"visibility\",\"visible\"),o.setProperty(\"border\",\"0\"),o.setProperty(\"opacity\",\"0\"),n.src=\"about:blank\",document.body.appendChild(n);const r=n.contentDocument||(null===(t=n.contentWindow)||void 0===t?void 0:t.document);if(!r)throw new Error(\"Iframe document is not accessible\");e({iframe:r}),setTimeout((()=>{document.body.removeChild(n)}),0)}function w(e,t){return new Promise((n=>setTimeout(n,e,t)))}const v=[\"Arial\",\"Arial Black\",\"Arial Narrow\",\"Arial Rounded MT\",\"Arimo\",\"Archivo\",\"Barlow\",\"Bebas Neue\",\"Bitter\",\"Bookman\",\"Calibri\",\"Cabin\",\"Candara\",\"Century\",\"Century Gothic\",\"Comic Sans MS\",\"Constantia\",\"Courier\",\"Courier New\",\"Crimson Text\",\"DM Mono\",\"DM Sans\",\"DM Serif Display\",\"DM Serif Text\",\"Dosis\",\"Droid Sans\",\"Exo\",\"Fira Code\",\"Fira Sans\",\"Franklin Gothic Medium\",\"Garamond\",\"Geneva\",\"Georgia\",\"Gill Sans\",\"Helvetica\",\"Impact\",\"Inconsolata\",\"Indie Flower\",\"Inter\",\"Josefin Sans\",\"Karla\",\"Lato\",\"Lexend\",\"Lucida Bright\",\"Lucida Console\",\"Lucida Sans Unicode\",\"Manrope\",\"Merriweather\",\"Merriweather Sans\",\"Montserrat\",\"Myriad\",\"Noto Sans\",\"Nunito\",\"Nunito Sans\",\"Open Sans\",\"Optima\",\"Orbitron\",\"Oswald\",\"Pacifico\",\"Palatino\",\"Perpetua\",\"PT Sans\",\"PT Serif\",\"Poppins\",\"Prompt\",\"Public Sans\",\"Quicksand\",\"Rajdhani\",\"Recursive\",\"Roboto\",\"Roboto Condensed\",\"Rockwell\",\"Rubik\",\"Segoe Print\",\"Segoe Script\",\"Segoe UI\",\"Sora\",\"Source Sans Pro\",\"Space Mono\",\"Tahoma\",\"Taviraj\",\"Times\",\"Times New Roman\",\"Titillium Web\",\"Trebuchet MS\",\"Ubuntu\",\"Varela Round\",\"Verdana\",\"Work Sans\"],y=[\"monospace\",\"sans-serif\",\"serif\"];function S(e,t){return e.font=`72px ${t}`,e.measureText(\"WwMmLli0Oo\").width}function b(){var e;const t=document.createElement(\"canvas\"),n=null!==(e=t.getContext(\"webgl\"))&&void 0!==e?e:t.getContext(\"experimental-webgl\");if(n&&\"getParameter\"in n)try{const e=(n.getParameter(n.VENDOR)||\"\").toString(),t=(n.getParameter(n.RENDERER)||\"\").toString();let o={vendor:e,renderer:t,version:(n.getParameter(n.VERSION)||\"\").toString(),shadingLanguageVersion:(n.getParameter(n.SHADING_LANGUAGE_VERSION)||\"\").toString()};if(!t.length||!e.length){const e=n.getExtension(\"WEBGL_debug_renderer_info\");if(e){const t=(n.getParameter(e.UNMASKED_VENDOR_WEBGL)||\"\").toString(),r=(n.getParameter(e.UNMASKED_RENDERER_WEBGL)||\"\").toString();t&&(o.vendorUnmasked=t),r&&(o.rendererUnmasked=r)}}return o}catch(e){}return\"undefined\"}function M(){const e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],t[3]}const E=(e,t,n,o)=>{const r=(n-t)/o;let i=0;for(let n=0;n<o;n++){i+=e(t+(n+.5)*r)}return i*r};function P(e,t){const n={};return t.forEach((t=>{const o=function(e){if(0===e.length)return null;const t={};e.forEach((e=>{const n=String(e);t[n]=(t[n]||0)+1}));let n=e[0],o=1;return Object.keys(t).forEach((e=>{t[e]>o&&(n=e,o=t[e])})),n}(e.map((e=>t in e?e[t]:void 0)).filter((e=>void 0!==e)));o&&(n[t]=o)})),n}const x=[\"accelerometer\",\"accessibility\",\"accessibility-events\",\"ambient-light-sensor\",\"background-fetch\",\"background-sync\",\"bluetooth\",\"camera\",\"clipboard-read\",\"clipboard-write\",\"device-info\",\"display-capture\",\"gyroscope\",\"geolocation\",\"local-fonts\",\"magnetometer\",\"microphone\",\"midi\",\"nfc\",\"notifications\",\"payment-handler\",\"persistent-storage\",\"push\",\"speaker\",\"storage-access\",\"top-level-storage-access\",\"window-management\",\"query\"];function C(){if(\"undefined\"==typeof navigator)return{name:\"unknown\",version:\"unknown\"};const e=[{name:\"Brave\",detect:()=>!!navigator.brave}];for(const t of e)if(t.detect()){const e=A(navigator.userAgent);return{name:t.name,version:e.version}}return A(navigator.userAgent)}function A(e){var t,n,o,r,i,a;const s=[/(?<name>SamsungBrowser)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>EdgA|EdgiOS|Edg)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>OPR|OPX)\\/(?<version>\\d+(?:\\.\\d+)+)/,/Opera[\\s\\/](?<version>\\d+(?:\\.\\d+)+)/,/Opera Mini\\/(?<version>\\d+(?:\\.\\d+)+)/,/Opera Mobi\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>Vivaldi)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>CriOS)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>FxiOS)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>Chrome|Chromium)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>Firefox|Waterfox|Iceweasel|IceCat)\\/(?<version>\\d+(?:\\.\\d+)+)/,/Version\\/(?<version1>[\\d.]+).*Safari\\/[\\d.]+|(?<name>Safari)\\/(?<version2>[\\d.]+)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>[A-Za-z]+)\\/(?<version>\\d+(?:\\.\\d+)+)/],c={edg:\"Edge\",edga:\"Edge\",edgios:\"Edge\",opr:\"Opera\",opx:\"Opera\",crios:\"Chrome\",fxios:\"Firefox\",samsung:\"SamsungBrowser\",vivaldi:\"Vivaldi\"};for(const u of s){const s=e.match(u);if(s){let e=null===(t=s.groups)||void 0===t?void 0:t.name,l=(null===(n=s.groups)||void 0===n?void 0:n.version)||(null===(o=s.groups)||void 0===o?void 0:o.version1)||(null===(r=s.groups)||void 0===r?void 0:r.version2);if(e||!(null===(i=s.groups)||void 0===i?void 0:i.version1)&&!(null===(a=s.groups)||void 0===a?void 0:a.version2)||(e=\"Safari\"),!e&&u.source.includes(\"Opera Mini\")&&(e=\"Opera Mini\"),!e&&u.source.includes(\"Opera Mobi\")&&(e=\"Opera Mobi\"),!e&&u.source.includes(\"Opera\")&&(e=\"Opera\"),!e&&s[1]&&(e=s[1]),!l&&s[2]&&(l=s[2]),e){return{name:c[e.toLowerCase()]||e,version:l||\"unknown\"}}}}return{name:\"unknown\",version:\"unknown\"}}function _(){if(\"undefined\"==typeof navigator||!navigator.userAgent)return!1;const e=navigator.userAgent;return/Mobi|Android|iPhone|iPod|IEMobile|Opera Mini|Opera Mobi|webOS|BlackBerry|Windows Phone/i.test(e)&&!/iPad/i.test(e)}function T(){let e=[];const t={\"prefers-contrast\":[\"high\",\"more\",\"low\",\"less\",\"forced\",\"no-preference\"],\"any-hover\":[\"hover\",\"none\"],\"any-pointer\":[\"none\",\"coarse\",\"fine\"],pointer:[\"none\",\"coarse\",\"fine\"],hover:[\"hover\",\"none\"],update:[\"fast\",\"slow\"],\"inverted-colors\":[\"inverted\",\"none\"],\"prefers-reduced-motion\":[\"reduce\",\"no-preference\"],\"prefers-reduced-transparency\":[\"reduce\",\"no-preference\"],scripting:[\"none\",\"initial-only\",\"enabled\"],\"forced-colors\":[\"active\",\"none\"]};return Object.keys(t).forEach((n=>{t[n].forEach((t=>{matchMedia(`(${n}: ${t})`).matches&&e.push(`${n}: ${t}`)}))})),e}function k(){if(\"https:\"===window.location.protocol&&\"function\"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let t=15;t>0;t--)if(e(t))return t}catch(e){return 0}return 0}const R=\"SamsungBrowser\"!==C().name?1:3;let I,O=null;function L(e){const t=[];return function e(n){if(n&&n.toJSON&&\"function\"==typeof n.toJSON&&(n=n.toJSON()),void 0===n)return;if(\"number\"==typeof n)return isFinite(n)?\"\"+n:\"null\";if(\"object\"!=typeof n)return JSON.stringify(n);let o,r;if(Array.isArray(n)){for(r=\"[\",o=0;o<n.length;o++)o&&(r+=\",\"),r+=e(n[o])||\"null\";return r+\"]\"}if(null===n)return\"null\";if(-1!==t.indexOf(n))throw new TypeError(\"Converting circular structure to JSON\");const i=t.push(n)-1,a=Object.keys(n).sort();for(r=\"\",o=0;o<a.length;o++){const t=a[o],i=e(n[t]);i&&(r&&(r+=\",\"),r+=JSON.stringify(t)+\":\"+i)}return t.splice(i,1),\"{\"+r+\"}\"}(e)||\"\"}const B=[\"𝔄\",\"𝔅\",\"ℭ\",\"𝔇\",\"𝔈\",\"𝔉\",\"𝔸\",\"𝔹\",\"ℂ\",\"𝔻\",\"𝔼\",\"𝔽\"],N=[\"β\",\"ψ\",\"λ\",\"ε\",\"ζ\",\"α\",\"ξ\",\"μ\",\"ρ\",\"φ\",\"κ\",\"τ\",\"η\",\"σ\",\"ι\",\"ω\",\"γ\",\"ν\",\"χ\",\"δ\",\"θ\",\"π\",\"υ\",\"ο\"];function $(e,t){return`<math><mrow>${t}</mrow></math>`}function D(){let e=\"<mo>∏</mo>\";return B.forEach(((t,n)=>{const o=2*n,r=N.slice(o,o+2);2===r.length&&(e+=`<mmultiscripts><mi>${t}</mi><none/><mi>${r[1]}</mi><mprescripts></mprescripts><mi>${r[0]}</mi><none/></mmultiscripts>`)})),$(0,`<munderover><mmultiscripts>${e}</mmultiscripts></munderover>`)}function F(){const e=[];return B.forEach(((t,n)=>{const o=2*n,r=N.slice(o,o+2);2===r.length&&e.push($(0,`<mmultiscripts><mi>${t}</mi><none/><mi>${r[1]}</mi><mprescripts></mprescripts><mi>${r[0]}</mi><none/></mmultiscripts>`))})),e}const U={audio:async function(){return s?async function(){return new Promise(((e,t)=>{try{const t=new s(1,5e3,44100),n=t.createBufferSource(),o=t.createOscillator();o.frequency.value=1e3;const r=t.createDynamicsCompressor();let i;r.threshold.value=-50,r.knee.value=40,r.ratio.value=12,r.attack.value=0,r.release.value=.2,o.connect(r),r.connect(t.destination),o.start(),t.oncomplete=o=>{i=o.renderedBuffer.getChannelData(0),e({sampleHash:c(i),maxChannels:t.destination.maxChannelCount,channelCountMode:n.channelCountMode})},t.startRendering()}catch(e){console.error(\"Error creating audio fingerprint:\",e),t(e)}}))}():null},canvas:async function(){return new Promise((e=>{const t=Array.from({length:3},(()=>function(){const e=document.createElement(\"canvas\"),t=e.getContext(\"2d\");if(!t)return null;e.width=h,e.height=20;const n=t.createLinearGradient(0,0,e.width,e.height);n.addColorStop(0,\"red\"),n.addColorStop(1/6,\"orange\"),n.addColorStop(2/6,\"yellow\"),n.addColorStop(.5,\"green\"),n.addColorStop(4/6,\"blue\"),n.addColorStop(5/6,\"indigo\"),n.addColorStop(1,\"violet\"),t.fillStyle=n,t.fillRect(0,0,e.width,e.height);const o=\"Random Text WMwmil10Oo\";t.font=\"23.123px Arial\",t.fillStyle=\"black\",t.fillText(o,-5,15),t.fillStyle=\"rgba(0, 0, 255, 0.5)\",t.fillText(o,-3.3,17.7),t.beginPath(),t.moveTo(0,0),t.lineTo(2*e.width/7,e.height),t.strokeStyle=\"white\",t.lineWidth=2,t.stroke();const r=t.getImageData(0,0,e.width,e.height);return r}())).filter((e=>null!==e));0!==t.length?e({commonPixelsHash:p(u(t,h,20).data.toString()).toString()}):e(null)}))},fonts:async function(e){return new Promise((e=>{try{g((async({iframe:t})=>{const n=t.createElement(\"canvas\").getContext(\"2d\");if(!n)return void e(null);const o=y.map((e=>S(n,e)));let r={};v.forEach((e=>{const t=S(n,e);o.includes(t)||(r[e]=t)})),e(r)}))}catch(t){e(null)}}))},hardware:function(){return new Promise(((e,t)=>{const n=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,o=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:b(),architecture:M(),deviceMemory:n.toString()||\"undefined\",jsHeapSizeLimit:o.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:E(Math.asin,-1,1,97),cos:E(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:E(Math.sin,-Math.PI,Math.PI,97),tan:E(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){const t=(null==e?void 0:e.permissions_to_check)||x;return P(await Promise.all(Array.from({length:3},(()=>async function(e){const t={};for(const n of e)try{const e=await navigator.permissions.query({name:n});t[n]=e.state.toString()}catch(e){}return t}(t)))),t)},plugins:async function(){const e=[];if(navigator.plugins)for(let t=0;t<navigator.plugins.length;t++){const n=navigator.plugins[t];e.push([n.name,n.filename,n.description].join(\"|\"))}return new Promise((t=>{t({plugins:e})}))},screen:function(){return new Promise((e=>{if(\"undefined\"==typeof matchMedia||\"undefined\"==typeof screen)return void e(null);const t={is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:T()};_()&&navigator.maxTouchPoints>0&&(t.resolution=function(){const e=window.screen.width,t=window.screen.height,n=Math.max(e,t).toString(),o=Math.min(e,t).toString();return`${n}x${o}`}()),e(t)}))},system:function(){return new Promise((e=>{const t=C();e({platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:t.name,version:t.version},mobile:_(),applePayVersion:k(),cookieEnabled:window.navigator.cookieEnabled})}))},webgl:async function(){\"undefined\"!=typeof document&&(I=document.createElement(\"canvas\"),I.width=200,I.height=100,O=I.getContext(\"webgl\"));try{if(!O)throw new Error(\"WebGL not supported\");const e=Array.from({length:R},(()=>function(){try{if(!O)throw new Error(\"WebGL not supported\");const e=\"\\n attribute vec2 position;\\n void main() {\\n gl_Position = vec4(position, 0.0, 1.0);\\n }\\n \",t=\"\\n precision mediump float;\\n void main() {\\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\\n }\\n \",n=O.createShader(O.VERTEX_SHADER),o=O.createShader(O.FRAGMENT_SHADER);if(!n||!o)throw new Error(\"Failed to create shaders\");if(O.shaderSource(n,e),O.shaderSource(o,t),O.compileShader(n),!O.getShaderParameter(n,O.COMPILE_STATUS))throw new Error(\"Vertex shader compilation failed: \"+O.getShaderInfoLog(n));if(O.compileShader(o),!O.getShaderParameter(o,O.COMPILE_STATUS))throw new Error(\"Fragment shader compilation failed: \"+O.getShaderInfoLog(o));const r=O.createProgram();if(!r)throw new Error(\"Failed to create shader program\");if(O.attachShader(r,n),O.attachShader(r,o),O.linkProgram(r),!O.getProgramParameter(r,O.LINK_STATUS))throw new Error(\"Shader program linking failed: \"+O.getProgramInfoLog(r));O.useProgram(r);const i=137,a=new Float32Array(4*i),s=2*Math.PI/i;for(let e=0;e<i;e++){const t=e*s;a[4*e]=0,a[4*e+1]=0,a[4*e+2]=Math.cos(t)*(I.width/2),a[4*e+3]=Math.sin(t)*(I.height/2)}const c=O.createBuffer();O.bindBuffer(O.ARRAY_BUFFER,c),O.bufferData(O.ARRAY_BUFFER,a,O.STATIC_DRAW);const u=O.getAttribLocation(r,\"position\");O.enableVertexAttribArray(u),O.vertexAttribPointer(u,2,O.FLOAT,!1,0,0),O.viewport(0,0,I.width,I.height),O.clearColor(0,0,0,1),O.clear(O.COLOR_BUFFER_BIT),O.drawArrays(O.LINES,0,2*i);const l=new Uint8ClampedArray(I.width*I.height*4);O.readPixels(0,0,I.width,I.height,O.RGBA,O.UNSIGNED_BYTE,l);return new ImageData(l,I.width,I.height)}catch(e){return new ImageData(1,1)}finally{O&&(O.bindBuffer(O.ARRAY_BUFFER,null),O.useProgram(null),O.viewport(0,0,O.drawingBufferWidth,O.drawingBufferHeight),O.clearColor(0,0,0,0))}}()));return{commonPixelsHash:p(u(e,I.width,I.height).data.toString()).toString()}}catch(e){return{webgl:\"unsupported\"}}},webrtc:async function(e){return new Promise((t=>{try{const n=window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection;if(!n)return void t({supported:!1,error:\"WebRTC not supported\"});const o=new n({iceCandidatePoolSize:1,iceServers:[]});o.createDataChannel(\"\");(async()=>{try{const n={offerToReceiveAudio:!0,offerToReceiveVideo:!0},r=await o.createOffer(n);await o.setLocalDescription(r);const i=r.sdp||\"\",a=[...new Set((i.match(/extmap:\\d+ [^\\n\\r]+/g)||[]).map((e=>e.replace(/extmap:\\d+ /,\"\"))))].sort(),s=e=>{const t=i.match(new RegExp(`m=${e} [^\\\\s]+ [^\\\\s]+ ([^\\\\n\\\\r]+)`));return t?t[1].split(\" \"):[]},c=(e,t)=>t.map((t=>{const n=new RegExp(`(rtpmap|fmtp|rtcp-fb):${t} (.+)`,\"g\"),o=[...i.matchAll(n)];if(!o.length)return null;const r={};return o.forEach((t=>{const[n,o,i]=t,a=i.split(\"/\");\"rtpmap\"===o?(r.mimeType=`${e}/${a[0]}`,r.clockRate=+a[1],\"audio\"===e&&(r.channels=+a[2]||1)):\"rtcp-fb\"===o?(r.feedbackSupport=r.feedbackSupport||[],r.feedbackSupport.push(i)):\"fmtp\"===o&&(r.sdpFmtpLine=i)})),r})).filter(Boolean),u=c(\"audio\",s(\"audio\")),l=c(\"video\",s(\"video\")),d={audio:{count:u.length,hash:p(L(u))},video:{count:l.length,hash:p(L(l))},extensionsHash:p(L(a))},m=(null==e?void 0:e.timeout)||5e3,f=Math.floor(.9*m),h=await new Promise((e=>{const t=setTimeout((()=>{o.removeEventListener(\"icecandidate\",n),o.close(),e({supported:!0,...d,timeout:!0})}),f),n=r=>{const i=r.candidate;i&&i.candidate&&(clearTimeout(t),o.removeEventListener(\"icecandidate\",n),o.close(),e({supported:!0,...d,candidateType:i.type||\"\"}))};o.addEventListener(\"icecandidate\",n)}));t({details:h,hash:p(L(h))})}catch(e){o.close(),t({supported:!0,error:`WebRTC offer failed: ${e.message}`})}})()}catch(e){t({supported:!1,error:`WebRTC error: ${e.message}`})}}))},speech:async function(){return new Promise((e=>{try{if(\"undefined\"==typeof window||!window.speechSynthesis||\"function\"!=typeof window.speechSynthesis.getVoices)return void e({supported:!1,error:\"Speech Synthesis API not supported\"});let t=!1,n=null;const o=o=>{if(!t){t=!0,n&&clearTimeout(n);try{const t=o.map((e=>{const t=e=>e.replace(/\\\\/g,\"\\\\\\\\\").replace(/,/g,\"\\\\,\");return[t(e.voiceURI||\"\"),t(e.name||\"\"),t(e.lang||\"\"),e.localService?\"1\":\"0\",e.default?\"1\":\"0\"].join(\",\")}));t.sort();const n={voiceCount:o.length,voicesHash:p(L(t))};e({details:n,hash:p(L(n))})}catch(t){e({supported:!0,error:`Voice processing failed: ${t.message}`})}}},r=window.speechSynthesis.getVoices();if(r.length>0)return void o(r);n=setTimeout((()=>{const e=window.speechSynthesis.getVoices();o(e)}),800);const i=()=>{window.speechSynthesis.removeEventListener(\"voiceschanged\",i);const e=window.speechSynthesis.getVoices();o(e)};window.speechSynthesis.addEventListener(\"voiceschanged\",i)}catch(t){e({supported:!1,error:`Speech Synthesis error: ${t.message}`})}}))}},V={mathml:async function(){return new Promise((e=>{try{g((async({iframe:t})=>{try{if(!function(e){try{const t=e.createElement(\"math\");t.innerHTML=\"<mrow><mi>x</mi></mrow>\",t.style.position=\"absolute\",t.style.visibility=\"hidden\",e.body.appendChild(t);const n=t.getBoundingClientRect();return e.body.removeChild(t),n.width>0&&n.height>0}catch(e){return!1}}(t))return void e({supported:!1,error:\"MathML not supported\"});const n=[$(\"integral\",\"<msubsup><mo>∫</mo><mi>a</mi><mi>b</mi></msubsup><mfrac><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mfrac><mi>dx</mi>\"),$(\"fraction\",\"<mfrac><mrow><mi>π</mi><mo>×</mo><msup><mi>r</mi><mn>2</mn></msup></mrow><mrow><mn>2</mn><mi>σ</mi></mrow></mfrac>\"),$(\"matrix\",\"<mo>[</mo><mtable><mtr><mtd><mi>α</mi></mtd><mtd><mi>β</mi></mtd></mtr><mtr><mtd><mi>γ</mi></mtd><mtd><mi>δ</mi></mtd></mtr></mtable><mo>]</mo>\"),D(),...F()],o=[];let r=\"\";n.forEach(((e,n)=>{const i=function(e,t){try{const n=t.createElement(\"math\");n.innerHTML=e.replace(/<\\/?math>/g,\"\"),n.style.whiteSpace=\"nowrap\",n.style.position=\"absolute\",n.style.visibility=\"hidden\",n.style.top=\"-9999px\",t.body.appendChild(n);const o=n.getBoundingClientRect(),r=(t.defaultView||window).getComputedStyle(n),i={dimensions:{width:o.width,height:o.height},fontInfo:{fontFamily:r.fontFamily,fontSize:r.fontSize,fontWeight:r.fontWeight,fontStyle:r.fontStyle,lineHeight:r.lineHeight,fontVariant:r.fontVariant||\"normal\",fontStretch:r.fontStretch||\"normal\",fontSizeAdjust:r.fontSizeAdjust||\"none\",textRendering:r.textRendering||\"auto\",fontFeatureSettings:r.fontFeatureSettings||\"normal\",fontVariantNumeric:r.fontVariantNumeric||\"normal\",fontKerning:r.fontKerning||\"auto\"}};return t.body.removeChild(n),i}catch(e){return{error:e.message}}}(e,t);o.push({width:i.dimensions.width,height:i.dimensions.height}),0===n&&i.fontInfo&&(r=p(L(i.fontInfo)))}));const i={fontStyleHash:r,dimensions:o};e({details:i,hash:p(L(i))})}catch(t){e({supported:!1,error:`MathML error: ${t.message}`})}}))}catch(t){e({supported:!1,error:`MathML error: ${t.message}`})}}))}},j={},W={timeout:\"true\"},H=(e,t,n)=>{j[e]=t};function G(){return\"1.7.6\"}function z(e,t){var n,o;let r=C();if(\"unknown\"===r.name&&t){const e=null===(n=t.system)||void 0===n?void 0:n.browser;(null==e?void 0:e.name)&&(r={name:String(e.name),version:String(e.version||\"unknown\")})}const i=r.name.toLowerCase(),s=parseInt(r.version.split(\".\")[0]||\"0\",10),c=[...(null==e?void 0:e.exclude)||[]],u=[...new Set([...(null==e?void 0:e.stabilize)||[],\"always\"])];for(const e of u){const t=a[e];if(t)for(const e of t)\"browsers\"in e&&!(null===(o=e.browsers)||void 0===o?void 0:o.some((e=>{const t=e.match(/(.+?)(>=)(\\d+)/);return t?i===t[1]&&s>=+t[3]:i===e})))||c.push(...e.exclude)}return c}function J(e,t){const n=z(t,e),o=(null==t?void 0:t.include)||[];return function e(t,r=\"\"){const i={};for(const[a,s]of Object.entries(t)){const t=r?`${r}.${a}`:a;if(\"object\"!=typeof s||Array.isArray(s)||null===s){const e=n.some((e=>t.startsWith(e))),r=o.some((e=>t.startsWith(e)));e&&!r||(i[a]=s)}else{const n=e(s,t);Object.keys(n).length>0&&(i[a]=n)}}return i}(e)}const q=\"visitor_id\";function K(e){return e.storage_property_name?e.storage_property_name:e.property_name_factory(q)}const Y=`${t}_${q}`;function X(e,t){try{localStorage.setItem(K(t),e)}catch(e){}}const Z=\"cache\";function Q(e){try{const t=localStorage.getItem(e.property_name_factory(Z)),n=JSON.parse(t);return n||{}}catch(e){}return{}}function ee(t){return t.cache_lifetime_in_ms>e?Date.now()+e:Date.now()+t.cache_lifetime_in_ms}class te extends Error{constructor(e){super(`HTTP error! status: ${e}`),this.status=e}}let ne=null,oe=null;async function re(e,t,n,o){const r=await fetch(e,{method:\"POST\",headers:{\"x-api-key\":n.api_key,Authorization:\"custom-authorized\",\"Content-Type\":\"application/json\"},body:JSON.stringify(t)});if(!r.ok)throw new te(r.status);const i=await r.json();return i.visitorId&&i.visitorId!==o&&X(i.visitorId,n),oe=i,function(e,t){if(!e.cache_api_call||!e.cache_lifetime_in_ms)return;!function(e,t){const n={...Q(e),...t};try{localStorage.setItem(e.property_name_factory(Z),JSON.stringify(n))}catch(e){}}(e,{apiResponseExpiry:ee(e),apiResponse:t})}(n,i),i}const ie=(e,t)=>{if(e.cache_api_call){if(oe)return Promise.resolve(oe);const t=function(e){const t=Q(e);if(t&&t.apiResponse&&t.apiResponseExpiry&&Date.now()<=t.apiResponseExpiry)return t.apiResponse;return}(e);if(t)return Promise.resolve(t);if(ne)return ne}const o=`${e.api_endpoint||n}/thumbmark`,r=function(e){try{const t=K(e);let n=localStorage.getItem(t);return n||t===Y||(n=localStorage.getItem(Y),n&&X(n,e)),n}catch(e){return null}}(e),i={components:t,options:e,clientHash:p(L(t)),version:\"1.7.6\"};if(r&&(i.visitorId=r),e.metadata){const t=\"function\"==typeof e.metadata?e.metadata():e.metadata;if(t){(\"string\"==typeof t?t.length:JSON.stringify(t).length)>1e3?console.error(\"ThumbmarkJS: Metadata exceeds 1000 characters. Skipping metadata.\"):i.metadata=t}}const a=e.timeout||5e3,s=async function(e,t,n,o){for(let r=0;r<3;r++){r>0&&await new Promise((e=>setTimeout(e,200*r)));try{return await re(e,t,n,o)}catch(e){if(e instanceof te||2===r)throw e}}throw new Error(\"Unreachable\")}(o,i,e,r).finally((()=>{ne=null})),c=new Promise((t=>{setTimeout((()=>{const n=Q(e);t((null==n?void 0:n.apiResponse)||{info:{timed_out:!0},...r&&{visitorId:r}})}),a)}));return ne=Promise.race([s,c]),ne};async function ae(e,t={}){var r,i;if(\"undefined\"==typeof document||\"undefined\"==typeof window)return{thumbmark:\"\",components:{},info:{},version:\"1.7.6\",error:[{type:\"fatal\",message:\"Browser environment required\"}]};try{const a={...o,...e},s=[],c=a.logging&&!sessionStorage.getItem(\"_tmjs_l\")&&Math.random()<1e-4,u={...U,...j,...t},{elapsed:l,resolvedComponents:d,errors:m}=await se(u,a);s.push(...m);let f={},h={};if(c||a.experimental){const{elapsed:e,resolvedComponents:t,errors:n}=await se(V,a);f=t,h=e,s.push(...n)}const g=a.api_key?ie(a,d):null;let w=null;if(g)try{w=await g}catch(e){if(e instanceof te&&403===e.status)return{error:[{type:\"api_unauthorized\",message:\"Invalid API key or quota exceeded\"}],components:{},info:{},version:\"1.7.6\",thumbmark:\"\"};s.push({type:e instanceof te?\"api_error\":\"network_error\",message:e instanceof Error?e.message:String(e)})}(null===(r=null==w?void 0:w.info)||void 0===r?void 0:r.timed_out)&&s.push({type:\"api_timeout\",message:\"API request timed out\"});const v={...l,...h},y=a.performance?{elapsed:v}:{},S=J((null==w?void 0:w.components)||{},a),b={...d,...S},M=(null==w?void 0:w.info)||{uniqueness:{score:\"api only\"}},E=null!==(i=null==w?void 0:w.thumbmark)&&void 0!==i?i:p(L(b)),P=\"1.7.6\";c&&async function(e,t,o,r={},i=[]){var a;const s=`${n}/log`,c={thumbmark:e,components:t,experimental:r,version:\"1.7.6\",options:o,path:null===(a=null===window||void 0===window?void 0:window.location)||void 0===a?void 0:a.pathname,...i.length>0&&{errors:i}};sessionStorage.setItem(\"_tmjs_l\",\"1\");try{await fetch(s,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(c)})}catch(e){}}(E,b,a,f,s).catch((()=>{}));return{...(null==w?void 0:w.visitorId)&&{visitorId:w.visitorId},thumbmark:E,components:b,info:M,version:P,...y,...s.length>0&&{error:s},...Object.keys(f).length>0&&a.experimental&&{experimental:f},...(null==w?void 0:w.requestId)&&{requestId:w.requestId},...(null==w?void 0:w.metadata)&&{metadata:w.metadata}}}catch(e){return{thumbmark:\"\",components:{},info:{},version:\"1.7.6\",error:[{type:\"fatal\",message:e instanceof Error?e.message:String(e)}]}}}async function se(e,t){const n={...o,...t},r=z(n).filter((e=>!e.includes(\".\"))),i=Object.entries(e).filter((([e])=>{var t;return!(null===(t=null==n?void 0:n.exclude)||void 0===t?void 0:t.includes(e))})).filter((([e])=>!r.includes(e))).filter((([e])=>{var t,o,r,i;return(null===(t=null==n?void 0:n.include)||void 0===t?void 0:t.some((e=>e.includes(\".\"))))?null===(o=null==n?void 0:n.include)||void 0===o?void 0:o.some((t=>t.startsWith(e))):0===(null===(r=null==n?void 0:n.include)||void 0===r?void 0:r.length)||(null===(i=null==n?void 0:n.include)||void 0===i?void 0:i.includes(e))})),a=i.map((([e])=>e)),s=i.map((([e,n])=>n(t))),c=await function(e,t,n){return Promise.all(e.map((e=>{const o=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-o}))).catch((e=>({value:n,elapsed:performance.now()-o,error:e instanceof Error?e.message:String(e)}))),(r=t,i=n,new Promise((e=>{setTimeout((()=>e(i)),r)}))).then((e=>({value:e,elapsed:performance.now()-o,error:\"timeout\"})))]);var r,i})))}(s,(null==n?void 0:n.timeout)||5e3,W),u={},l={},d=[];c.forEach(((e,t)=>{var n;const o=a[t];u[o]=null!==(n=e.elapsed)&&void 0!==n?n:0,\"timeout\"===e.error?d.push({type:\"component_timeout\",message:`Component '${o}' timed out`,component:o}):e.error&&d.push({type:\"component_error\",message:e.error,component:o}),null!=e.value&&(l[o]=e.value)}));const m=J(l,n);return{elapsed:u,resolvedComponents:m,errors:d}}async function ce(){return(await ae(r)).components}async function ue(e){try{const t=await ae(r);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}}async function le(){try{const{elapsed:e,resolvedComponents:t}=await se(U,r);return{...t,elapsed:e}}catch(e){throw e}}class de{constructor(e){this.options={...o,...e},this.customComponents={}}async get(e){return ae({...this.options,...e},this.customComponents)}getVersion(){return\"1.7.6\"}includeComponent(e,t){this.customComponents[e]=t}}export{de as Thumbmark,J as filterThumbmarkData,ue as getFingerprint,ce as getFingerprintData,le as getFingerprintPerformance,ae as getThumbmark,G as getVersion,H as includeComponent,i as setOption,a as stabilizationExclusionRules,L as stableStringify};\n//# sourceMappingURL=thumbmark.esm.js.map\n","export const openInNewTab = (href: string) => {\n Object.assign(document.createElement('a'), {\n target: '_blank',\n href\n }).click();\n};\n\n// Compute relative luminance (WCAG 2.0) without polished dependency\nconst HEX_RE = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;\nconst RGB_RE = /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)/;\n\nexport function parseHexColor(hex: string): [number, number, number] {\n const h = hex.replace('#', '');\n const full = h.length === 3 ? h[0] + h[0] + h[1] + h[1] + h[2] + h[2] : h;\n return [\n parseInt(full.slice(0, 2), 16),\n parseInt(full.slice(2, 4), 16),\n parseInt(full.slice(4, 6), 16)\n ];\n}\n\nfunction parseColor(color: string): [number, number, number] | null {\n if (HEX_RE.test(color)) return parseHexColor(color);\n const match = color.match(RGB_RE);\n if (match) {\n // Reject semi-transparent rgba — luminance depends on the unknown base background\n if (match[4] !== undefined && parseFloat(match[4]) < 1) return null;\n return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];\n }\n return null;\n}\n\nfunction srgbToLinear(c: number): number {\n const s = c / 255;\n return s <= 0.04045 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);\n}\n\nfunction getLuminance(color: string): number {\n const rgb = parseColor(color);\n if (!rgb) return NaN;\n return (\n 0.2126 * srgbToLinear(rgb[0]) + 0.7152 * srgbToLinear(rgb[1]) + 0.0722 * srgbToLinear(rgb[2])\n );\n}\n\n// NaN luminance (unparseable input) assumes light background for safe dark text\nexport const isDark = (bgColor: string) => getLuminance(bgColor) < 0.5;\n\nexport const getTextColor = (bgColor: string) => (isDark(bgColor) ? '#F3F4F6' : '#374151');\n\n/** Parse a CSS px value — accepts \"10px\", \"10\", or 10. Returns number or defaultValue. */\nexport const parsePx = (value?: string | number, defaultValue?: number): number | undefined => {\n if (value == null) return defaultValue;\n if (typeof value === 'number') return value;\n const parsed = parseInt(value);\n return isNaN(parsed) ? defaultValue : parsed;\n};\n\n/** Convert a value to CSS px string — 10 → \"10px\", \"10px\" → \"10px\", undefined → defaultValue */\nexport const toCssPx = (value?: string | number, defaultValue?: string): string | undefined => {\n if (value == null) return defaultValue;\n return typeof value === 'number' ? `${value}px` : value || defaultValue;\n};\n\nexport const appendHiddenField = (form: HTMLFormElement, name: string, value?: string) => {\n if (!value) return;\n const field = document.createElement('input');\n field.type = 'hidden';\n field.name = name;\n field.value = value;\n form.appendChild(field);\n};\n\nexport const antiKeylogger = () => {\n // @ts-ignore\n window.onkeydown = undefined;\n // @ts-ignore\n window.onkeypress = undefined;\n // @ts-ignore\n window.onkeyup = undefined;\n // @ts-ignore\n document.onkeydown = undefined;\n // @ts-ignore\n document.onkeypress = undefined;\n // @ts-ignore\n document.onkeyup = undefined;\n};\n\nexport const formatShopName = (shopName = '') => {\n return shopName.split(' | ')[0];\n};\n\nconst lngMap: Record<string, string> = {\n ca: 'es_ES',\n en: 'en_GB',\n lv: 'en_GB',\n et: 'en_GB'\n};\n\nexport const getLocale = (language?: string) => {\n if (!language) return undefined;\n if (language.length > 2) return language.replace('-', '_');\n if (lngMap[language]) return lngMap[language];\n return `${language}_${language.toUpperCase()}`;\n};\n\nexport const openPopup = (params: {\n url?: string;\n title?: string;\n width: number;\n height: number;\n}): Window => {\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth\n ? window.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : screen.width;\n const height = window.innerHeight\n ? window.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : screen.height;\n\n const left = (width - params.width) / 2 + dualScreenLeft;\n const top = (height - params.height) / 2 + dualScreenTop;\n const newWindow = window.open(\n params.url || '',\n params.title,\n `\n scrollbars=yes,\n width=${params.width}, \n height=${params.height}, \n top=${top}, \n left=${left}\n `\n );\n\n if (!newWindow) {\n throw new Error('POPUP_BLOCKED');\n }\n if (newWindow.focus) newWindow.focus();\n return newWindow;\n};\n\nexport const isSafari = () => /apple/i.test(navigator.vendor);\n\nexport const obfuscatePhone = (phoneNumber?: string) => {\n if (!phoneNumber) return undefined;\n return phoneNumber.replace(/(\\d{2})(\\d{6})(\\d{3})/, '$1******$3');\n};\n","import {Thumbmark} from '@thumbmarkjs/thumbmarkjs';\nimport type {CSSObject} from './types/css';\nimport type {GetPaymentMethodsResponse} from './types';\n\nexport const transformStyle = (style: CSSObject) => {\n return Object.keys(style).reduce<any>((result, prop) => {\n if (typeof style[prop] === 'string') {\n result[prop] = style[prop];\n } else {\n result[prop] = `${style[prop]}px`;\n }\n return result;\n }, {});\n};\n\nexport const loadScript = (\n src: string,\n nonce?: string,\n dataset?: Record<string, string | undefined>,\n forceReload?: boolean\n): Promise<HTMLScriptElement> => {\n return new Promise((resolve, reject) => {\n const existingScript = Array.from(document.scripts).find((s) => s.src === src);\n if (existingScript) {\n if (forceReload) {\n existingScript.remove();\n } else {\n resolve(existingScript);\n return;\n }\n }\n const script = document.createElement('script');\n script.src = src;\n script.onload = () => resolve(script);\n script.onerror = (error) => reject(error);\n if (nonce) {\n script.setAttribute('nonce', nonce);\n }\n if (dataset) {\n Object.keys(dataset).forEach((key) => {\n if (dataset[key]) {\n script.dataset[key] = dataset[key];\n }\n });\n }\n document.head.appendChild(script);\n });\n};\n\nexport const stringify = (obj: Record<string, any>) => {\n return Object.keys(obj)\n .reduce<string[]>((result, key) => {\n if (obj[key] !== undefined) {\n result.push(`${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`);\n }\n return result;\n }, [])\n .join('&');\n};\n\nexport const fixLocalstorage = () => {\n let localStorage: Storage;\n try {\n ({localStorage} = window);\n } catch (_error) {\n const localStorageMock = (() => {\n let store = new Map();\n return {\n getItem(key: string): string {\n return store.get(key);\n },\n\n setItem: function (key: string, value: string) {\n store.set(key, value);\n },\n\n clear: function () {\n store = new Map();\n },\n\n removeItem: function (key: string) {\n store.delete(key);\n }\n };\n })();\n\n Object.defineProperty(window, 'localStorage', {value: localStorageMock});\n localStorage = localStorageMock as Storage;\n }\n return localStorage;\n};\n\nconst getLanguage = () => {\n let lang;\n const localStorage = fixLocalstorage();\n try {\n lang = localStorage.getItem('i18nextLng');\n } catch (_error) {}\n if (lang) {\n return lang.split('-')[0];\n }\n return '';\n};\n\n// parsePx and toCssPx — use from @monei-js/shared/lib/utils\nexport {parsePx, toCssPx} from '@monei-js/shared/lib/utils';\n\nconst safe = (fn: () => unknown): string => {\n try {\n return String(fn() ?? '');\n } catch {\n return '';\n }\n};\n\nexport const getClientEnv = () => {\n const env = [\n window.screen.colorDepth,\n window.screen.height,\n window.screen.width,\n new Date().getTimezoneOffset(),\n getLanguage(),\n safe(() => Intl.DateTimeFormat().resolvedOptions().timeZone),\n safe(() => window.devicePixelRatio),\n safe(() => navigator.hardwareConcurrency),\n safe(() => (navigator as any).deviceMemory),\n safe(() => navigator.maxTouchPoints),\n safe(() => navigator.platform),\n safe(() => navigator.languages?.join(','))\n ].join('|');\n return window.btoa(env);\n};\n\nconst FINGERPRINT_SEED_KEY = '_monei_fp';\n\nconst randomHex = (length: number): string => {\n if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function') {\n const bytes = new Uint8Array(length);\n crypto.getRandomValues(bytes);\n return Array.from(bytes, (b) => (b % 16).toString(16)).join('');\n }\n return Array.from({length}, () => Math.floor(Math.random() * 16).toString(16)).join('');\n};\n\nlet cachedSeed: string | null = null;\n\nconst getPersistentSeed = async (): Promise<Record<string, string>> => {\n if (cachedSeed) return {seed: cachedSeed};\n try {\n const localStorage = fixLocalstorage();\n cachedSeed = localStorage.getItem(FINGERPRINT_SEED_KEY);\n if (!cachedSeed) {\n cachedSeed = randomHex(32);\n try {\n localStorage.setItem(FINGERPRINT_SEED_KEY, cachedSeed);\n } catch {}\n }\n } catch {\n cachedSeed = randomHex(32);\n }\n return {seed: cachedSeed};\n};\n\nconst thumbmark = new Thumbmark({logging: false});\nthumbmark.includeComponent('persistent_seed', getPersistentSeed);\n\nexport const getClientFingerprint = async (): Promise<string> => {\n const [, result] = await withError(thumbmark.get());\n return result?.thumbmark ?? '';\n};\n\nexport const withError = async <T>(p: Promise<T>): Promise<[Error | undefined, T | undefined]> => {\n try {\n return [undefined, await p];\n } catch (err) {\n return [err as Error, undefined];\n }\n};\n\nexport const isMethodSupported = (config: GetPaymentMethodsResponse, paymentMethod: string) => {\n return config.paymentMethods && config.paymentMethods.includes(paymentMethod);\n};\n\nexport const validateComponentProps = ({props}: {props: any}) => {\n if (props.paymentId) return;\n if (props.accountId && props.amount && props.currency) return;\n throw new Error('You need to provide paymentId or accountId amount and currency');\n};\n","type Stage = 'local' | 'local-prod' | 'tunnel' | 'dev' | 'prod';\n\nconst stage = (process.env.STAGE as Stage) || 'prod';\nconst version = process.env.VERSION || 'v1';\n\ntype Config = {\n version: string;\n domain: string;\n stage: string;\n rootDomain: string;\n isProduction: boolean;\n paymentPageUrl: string;\n cardInputUrl: string;\n paymentModalUrl: string;\n bizumUrl: string;\n bizumButtonUrl: string;\n paypalUrl: string;\n apiUrl: string;\n paymentRequestUrl: string;\n secureDomain: string;\n};\n\nconst stageConfig: Record<Stage, Partial<Config>> = {\n local: {\n domain: 'http://card-input.localhost:1355',\n paymentPageUrl: 'http://payment-page.localhost:1355/',\n cardInputUrl: 'http://card-input.localhost:1355/',\n paymentModalUrl: 'http://payment-modal.localhost:1355/',\n paypalUrl: 'http://paypal.localhost:1355/',\n bizumUrl: 'http://bizum.localhost:1355/',\n bizumButtonUrl: 'http://bizum-button.localhost:1355/',\n paymentRequestUrl: 'http://payment-request.localhost:1355/',\n apiUrl: 'https://api.monei-dev.com/v1',\n secureDomain: 'https://secure.monei-dev.com',\n rootDomain: 'monei-dev.com'\n },\n 'local-prod': {\n domain: 'http://card-input.localhost:1355',\n paymentPageUrl: 'http://payment-page.localhost:1355/',\n cardInputUrl: 'http://card-input.localhost:1355/',\n paymentModalUrl: 'http://payment-modal.localhost:1355/',\n paypalUrl: 'http://paypal.localhost:1355/',\n bizumUrl: 'http://bizum.localhost:1355/',\n bizumButtonUrl: 'http://bizum-button.localhost:1355/',\n paymentRequestUrl: 'http://payment-request.localhost:1355/',\n apiUrl: 'https://api.monei.com/v1',\n secureDomain: 'https://secure.monei.com',\n rootDomain: 'monei.com'\n },\n tunnel: {\n domain: 'https://card-input.monei-dev-tunnel.com',\n paymentPageUrl: 'https://payment-page.monei-dev-tunnel.com/',\n cardInputUrl: 'https://card-input.monei-dev-tunnel.com/',\n paymentModalUrl: 'https://payment-modal.monei-dev-tunnel.com/',\n paypalUrl: 'https://paypal.monei-dev-tunnel.com/',\n bizumUrl: 'https://bizum.monei-dev-tunnel.com/',\n bizumButtonUrl: 'https://bizum-button.monei-dev-tunnel.com/',\n paymentRequestUrl: 'https://payment-request.monei-dev-tunnel.com/',\n apiUrl: 'https://api.monei.com/v1',\n secureDomain: 'https://secure.monei.com',\n rootDomain: 'monei.com'\n },\n dev: {\n domain: process.env.DOMAIN || 'https://js.monei-dev.com',\n apiUrl: 'https://api.monei-dev.com/v1',\n secureDomain: 'https://secure.monei-dev.com',\n rootDomain: 'monei-dev.com'\n },\n prod: {\n domain: process.env.DOMAIN || 'https://js.monei.com',\n apiUrl: 'https://api.monei.com/v1',\n secureDomain: 'https://secure.monei.com',\n rootDomain: 'monei.com'\n }\n};\n\nconst sc = stageConfig[stage];\nconst domain = sc.domain!;\n\nconst globalConfig = {\n domain,\n version,\n stage,\n isProduction: stage === 'prod',\n paymentPageUrl: sc.paymentPageUrl || `${domain}/${version}/payment-page/`,\n cardInputUrl: sc.cardInputUrl || `${domain}/${version}/inner-card-input/`,\n paymentModalUrl: sc.paymentModalUrl || `${domain}/${version}/inner-payment-modal/`,\n paypalUrl: sc.paypalUrl || `${domain}/${version}/inner-paypal/`,\n bizumUrl: sc.bizumUrl || `${domain}/${version}/inner-bizum/`,\n bizumButtonUrl: sc.bizumButtonUrl || `${domain}/${version}/inner-bizum-button/`,\n paymentRequestUrl: sc.paymentRequestUrl || `${domain}/${version}/inner-payment-request/`\n};\n\nexport const config = {...globalConfig, ...sc} as Config;\n","import {config} from './config';\nimport type {ConfirmPaymentParams} from './payment-modal';\nimport type {\n CreateApplePaySessionRequest,\n CreatePaymentRequest,\n CreateTokenRequest,\n CreateTokenResponse,\n GetPaymentMethodsRequest,\n GetPaymentMethodsResponse,\n PaymentResult,\n SendPaymentReceiptRequest,\n ValidateBizumPhoneRequest\n} from './types';\nimport {getClientEnv, getClientFingerprint, stringify, withError} from './utils';\n\ntype RequestParams = {\n method?: string;\n headers?: any;\n body?: any;\n};\nconst request = async (url: string, {method = 'GET', headers, body}: RequestParams = {}) => {\n if (method === 'POST') headers = {'Content-Type': 'application/json', ...headers};\n const res = await fetch(`${config.apiUrl}${url}`, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined\n });\n const [, result] = await withError(res.json());\n if (!res.ok) throw result || new Error(res.statusText);\n return result;\n};\n\nconst pmCache: Record<string, Promise<GetPaymentMethodsResponse>> = {};\n\nexport const getPaymentMethods = async ({\n accountId,\n paymentId\n}: GetPaymentMethodsRequest): Promise<GetPaymentMethodsResponse> => {\n let params: GetPaymentMethodsRequest;\n if (paymentId) params = {paymentId};\n else if (accountId) params = {accountId};\n else throw new Error('You need to provide paymentId or accountId');\n const query = stringify(params);\n if (query in pmCache) return pmCache[query];\n const promise = request(`/client-payment-methods?${query}`);\n pmCache[query] = promise;\n promise.catch(() => delete pmCache[query]);\n return promise;\n};\n\nexport const createToken = async ({\n paymentMethod,\n paymentId,\n sessionId,\n amount,\n currency,\n accountId,\n transactionType\n}: CreateTokenRequest): Promise<CreateTokenResponse> => {\n let body: CreateTokenRequest;\n if (paymentId) {\n body = {paymentId, paymentMethod};\n } else if (accountId) {\n body = {accountId, paymentMethod, sessionId, amount, currency, transactionType};\n } else throw new Error('You need to provide paymentId or accountId');\n const res: CreateTokenResponse = await request('/tokens', {\n method: 'POST',\n headers: {'X-Client-Env': getClientEnv(), 'X-Client-Fingerprint': await getClientFingerprint()},\n body: body\n });\n // Normalize: backend returns paymentToken, SDK uses token\n if (res.paymentToken && !res.token) res.token = res.paymentToken;\n return res;\n};\n\nexport const getPayment = async (paymentId: string): Promise<PaymentResult> => {\n return request(`/payments/${paymentId}/client-get`);\n};\n\nexport const confirmPayment = async ({\n paymentId,\n ...body\n}: ConfirmPaymentParams): Promise<PaymentResult> => {\n return request(`/payments/${paymentId}/client-confirm`, {\n method: 'POST',\n headers: {'X-Client-Env': getClientEnv(), 'X-Client-Fingerprint': await getClientFingerprint()},\n body\n });\n};\n\nexport const createPayment = async ({\n signature,\n ...body\n}: CreatePaymentRequest): Promise<PaymentResult> => {\n return request('/client-payments', {\n method: 'POST',\n headers: {\n 'X-Client-Env': getClientEnv(),\n 'X-Client-Fingerprint': await getClientFingerprint(),\n 'Client-Signature': signature\n },\n body\n });\n};\n\nexport const sendPaymentReceipt = async ({\n paymentId,\n customerEmail,\n signature,\n language\n}: SendPaymentReceiptRequest): Promise<PaymentResult> => {\n return request(`/payments/${paymentId}/client-receipt`, {\n method: 'POST',\n body: {customerEmail, signature, language}\n });\n};\n\nexport const createApplePaySession = async (body: CreateApplePaySessionRequest) => {\n return request(`/apple-pay/sessions`, {method: 'POST', body});\n};\n\nexport const validateBizumPhone = async (\n req: ValidateBizumPhoneRequest\n): Promise<{isValid: boolean}> => {\n return request(`/bizum/validate-phone`, {method: 'POST', body: req});\n};\n","import type {Cancelable, EventEmitterType} from './types';\n\ntype Handler = (...args: any[]) => void;\n\nexport class EventEmitter implements EventEmitterType {\n private listeners = new Map<string, Set<Handler>>();\n private destroyed = false;\n\n on(eventName: string, handler: Handler): Cancelable {\n if (this.destroyed) return {cancel: () => {}};\n\n let handlers = this.listeners.get(eventName);\n if (!handlers) {\n handlers = new Set();\n this.listeners.set(eventName, handlers);\n }\n handlers.add(handler);\n\n return {\n cancel: () => {\n handlers!.delete(handler);\n }\n };\n }\n\n once(eventName: string, handler: Handler): Cancelable {\n const wrapper = (...args: any[]) => {\n this.off(eventName, wrapper);\n handler(...args);\n };\n return this.on(eventName, wrapper);\n }\n\n trigger(eventName: string, ...args: any[]): void {\n if (this.destroyed) return;\n const handlers = this.listeners.get(eventName);\n if (!handlers) return;\n for (const handler of handlers) {\n try {\n handler(...args);\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n off(eventName: string, handler: Handler): void {\n const handlers = this.listeners.get(eventName);\n if (handlers) {\n handlers.delete(handler);\n }\n }\n\n destroy(): void {\n this.destroyed = true;\n this.listeners.clear();\n }\n}\n","import type {BridgeComponent, BridgeComponentConstructor} from '../types';\n\ntype ReactDeps = {React: any};\n\n/**\n * Creates a React driver for a bridge component.\n * Returns a forwardRef component that:\n * - On mount: creates bridge instance, renders into container div\n * - On update: calls updateProps with new props\n * - On unmount: calls destroy\n * - Exposes bridge instance via ref (needed for CardInput's createToken)\n */\nexport function createReactDriver<P extends Record<string, any>>(\n ComponentClass: BridgeComponentConstructor<P>\n): (deps: ReactDeps) => any {\n return ({React}: ReactDeps) => {\n return React.forwardRef(function BridgeReactWrapper(props: P, ref: any) {\n const containerRef = React.useRef(null) as {current: HTMLDivElement | null};\n const instanceRef = React.useRef(null) as {current: BridgeComponent<P> | null};\n const isMounted = React.useRef(false) as {current: boolean};\n const prevPropsRef = React.useRef({} as Record<string, any>);\n\n // Mount: create bridge instance + render into container div\n // useLayoutEffect to append SDK container BEFORE browser paint (prevents layout jump)\n React.useLayoutEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n let cancelled = false;\n const instance = new ComponentClass({...props} as P);\n instanceRef.current = instance;\n\n instance\n .render(el)\n .then(() => {\n if (cancelled) return;\n // Only expose ref after render completes (connection established)\n setRef(ref, instance);\n isMounted.current = true;\n })\n .catch((err: unknown) => {\n if (!cancelled) console.error(err);\n });\n\n return () => {\n cancelled = true;\n instance.destroy();\n instanceRef.current = null;\n isMounted.current = false;\n setRef(ref, null);\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Update: sync prop changes to bridge component (like componentDidUpdate)\n React.useEffect(() => {\n if (!isMounted.current || !instanceRef.current) return;\n if (shallowEqual(prevPropsRef.current, props)) return;\n prevPropsRef.current = {...props};\n instanceRef.current.updateProps({...props} as Partial<P>).catch(noop);\n });\n\n return React.createElement('div', {ref: containerRef});\n });\n };\n}\n\n/** Set a React ref (callback or object ref) */\nfunction setRef(ref: any, value: any): void {\n if (typeof ref === 'function') ref(value);\n else if (ref) ref.current = value;\n}\n\nfunction shallowEqual(a: Record<string, any>, b: Record<string, any>): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\nfunction noop() {}\n","import type {BridgeComponent, BridgeComponentConstructor} from '../types';\n\n/**\n * Creates a Vue 3 driver for a bridge component.\n * Returns a Vue component options object that:\n * - On mounted: creates bridge instance, renders into template div\n * - On $attrs change: calls updateProps\n * - On unmounted: calls destroy\n * - Exposes bridge instance via template ref\n */\nexport function createVue3Driver<P extends Record<string, any>>(\n ComponentClass: BridgeComponentConstructor<P>\n): () => any {\n return () => ({\n template: '<div></div>',\n inheritAttrs: false,\n\n mounted(this: VueInstance<P>) {\n const el = this.$el;\n this.__bridgeInstance = new ComponentClass({...this.$attrs} as P);\n this.__bridgeInstance.render(el).catch(console.error);\n },\n\n watch: {\n $attrs: {\n handler(this: VueInstance<P>) {\n if (this.__bridgeInstance) {\n this.__bridgeInstance.updateProps({...this.$attrs} as Partial<P>).catch(() => {});\n }\n },\n deep: true\n }\n },\n\n unmounted(this: VueInstance<P>) {\n if (this.__bridgeInstance) {\n this.__bridgeInstance.destroy();\n this.__bridgeInstance = null;\n }\n }\n });\n}\n\ntype VueInstance<P> = {\n $el: HTMLElement;\n $attrs: Record<string, any>;\n __bridgeInstance: BridgeComponent<P> | null;\n};\n","import type {BridgeComponent, BridgeComponentConstructor} from '../types';\n\ntype AngularDeps = {\n Component: any;\n NgModule: any;\n ElementRef: any;\n NgZone: any;\n Inject: any;\n};\n\n/**\n * Creates an Angular driver for a bridge component.\n * Returns an Angular module that declares a component which:\n * - On ngOnInit: creates bridge instance, renders into host element\n * - On ngDoCheck: calls updateProps when props change\n * - On ngOnDestroy: calls destroy\n */\nexport function createAngularDriver<P extends Record<string, any>>(\n ComponentClass: BridgeComponentConstructor<P>\n): (deps: AngularDeps) => any {\n return ({Component: AngularComponent, NgModule, ElementRef, NgZone, Inject}: AngularDeps) => {\n class ComponentInstance {\n elementRef: any;\n zone: any;\n props: Record<string, any> = {};\n __bridgeInstance: BridgeComponent<P> | null = null;\n private _prevProps: Record<string, any> = {};\n\n static parameters: any[];\n static annotations: any[];\n\n constructor(elementRef: any, zone: any) {\n this.elementRef = elementRef;\n this.zone = zone;\n }\n\n getProps(): P {\n const wrapped: Record<string, any> = {...this.props};\n const {zone} = this;\n // Wrap function props to run inside Angular zone\n for (const [key, value] of Object.entries(wrapped)) {\n if (typeof value === 'function') {\n wrapped[key] = function angularZoneWrapped(this: any, ...args: any[]) {\n return zone.run(() => value.apply(this, args));\n };\n }\n }\n return wrapped as P;\n }\n\n ngOnInit() {\n const el = this.elementRef.nativeElement;\n this.__bridgeInstance = new ComponentClass(this.getProps());\n this.__bridgeInstance.render(el).catch(console.error);\n }\n\n ngDoCheck() {\n if (this.__bridgeInstance && !shallowEqual(this._prevProps, this.props)) {\n this._prevProps = {...this.props};\n this.__bridgeInstance.updateProps(this.getProps()).catch(() => {});\n }\n }\n\n ngOnDestroy() {\n if (this.__bridgeInstance) {\n this.__bridgeInstance.destroy();\n this.__bridgeInstance = null;\n }\n }\n }\n\n ComponentInstance.parameters = [[new Inject(ElementRef)], [new Inject(NgZone)]];\n\n ComponentInstance.annotations = [\n new AngularComponent({\n selector: (ComponentClass.prototype as any).__options?.tag || 'bridge-component',\n template: '<div></div>',\n inputs: ['props']\n })\n ];\n\n class ModuleInstance {\n static annotations: any[];\n }\n\n ModuleInstance.annotations = [\n new NgModule({\n declarations: [ComponentInstance],\n exports: [ComponentInstance]\n })\n ];\n\n return ModuleInstance;\n };\n}\n\nfunction shallowEqual(a: Record<string, any>, b: Record<string, any>): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n","import type {BridgeComponentConstructor} from '../types';\nimport {createReactDriver} from './react';\nimport {createVue3Driver} from './vue';\nimport {createAngularDriver} from './angular';\n\nconst driverFactories: Record<\n string,\n (ctor: BridgeComponentConstructor<any>) => (deps?: any) => any\n> = {\n react: createReactDriver,\n vue3: createVue3Driver,\n angular: createAngularDriver\n};\n\n/**\n * Resolve a framework driver for a bridge component constructor.\n * Called by both the static and instance .driver() methods.\n */\nexport function resolveDriver<P extends Record<string, any>>(\n name: string,\n ComponentClass: BridgeComponentConstructor<P>,\n deps?: Record<string, any>\n): any {\n const factory = driverFactories[name];\n if (!factory) {\n throw new Error(\n `Unknown driver: ${name}. Available: ${Object.keys(driverFactories).join(', ')}`\n );\n }\n return factory(ComponentClass)(deps);\n}\n","// src/PenpalError.ts\nvar PenpalError = class extends Error {\n code;\n constructor(code, message) {\n super(message);\n this.name = \"PenpalError\";\n this.code = code;\n }\n};\nvar PenpalError_default = PenpalError;\n\n// src/errorSerialization.ts\nvar serializeError = (error) => ({\n name: error.name,\n message: error.message,\n stack: error.stack,\n penpalCode: error instanceof PenpalError_default ? error.code : void 0\n});\nvar deserializeError = ({\n name,\n message,\n stack,\n penpalCode\n}) => {\n const deserializedError = penpalCode ? new PenpalError_default(penpalCode, message) : new Error(message);\n deserializedError.name = name;\n deserializedError.stack = stack;\n return deserializedError;\n};\n\n// src/Reply.ts\nvar brand = Symbol(\"Reply\");\nvar Reply = class {\n value;\n transferables;\n // Allows TypeScript to distinguish between an actual instance of this\n // class versus an object that looks structurally similar.\n // eslint-disable-next-line no-unused-private-class-members\n #brand = brand;\n constructor(value, options) {\n this.value = value;\n this.transferables = options?.transferables;\n }\n};\nvar Reply_default = Reply;\n\n// src/namespace.ts\nvar namespace_default = \"penpal\";\n\n// src/guards.ts\nvar isObject = (value) => {\n return typeof value === \"object\" && value !== null;\n};\nvar isFunction = (value) => {\n return typeof value === \"function\";\n};\nvar isMessage = (data) => {\n return isObject(data) && data.namespace === namespace_default;\n};\nvar isSynMessage = (message) => {\n return message.type === \"SYN\";\n};\nvar isAck1Message = (message) => {\n return message.type === \"ACK1\";\n};\nvar isAck2Message = (message) => {\n return message.type === \"ACK2\";\n};\nvar isCallMessage = (message) => {\n return message.type === \"CALL\";\n};\nvar isReplyMessage = (message) => {\n return message.type === \"REPLY\";\n};\nvar isDestroyMessage = (message) => {\n return message.type === \"DESTROY\";\n};\n\n// src/methodSerialization.ts\nvar extractMethodPathsFromMethods = (methods, currentPath = []) => {\n const methodPaths = [];\n for (const key of Object.keys(methods)) {\n const value = methods[key];\n if (isFunction(value)) {\n methodPaths.push([...currentPath, key]);\n } else if (isObject(value)) {\n methodPaths.push(\n ...extractMethodPathsFromMethods(value, [...currentPath, key])\n );\n }\n }\n return methodPaths;\n};\nvar getMethodAtMethodPath = (methodPath, methods) => {\n const result = methodPath.reduce(\n (acc, pathSegment) => {\n return isObject(acc) ? acc[pathSegment] : void 0;\n },\n methods\n );\n return isFunction(result) ? result : void 0;\n};\nvar formatMethodPath = (methodPath) => {\n return methodPath.join(\".\");\n};\n\n// src/connectCallHandler.ts\nvar createErrorReplyMessage = (channel, callId, error) => ({\n namespace: namespace_default,\n channel,\n type: \"REPLY\",\n callId,\n isError: true,\n ...error instanceof Error ? { value: serializeError(error), isSerializedErrorInstance: true } : { value: error }\n});\nvar connectCallHandler = (messenger, methods, channel, log) => {\n let isDestroyed = false;\n const handleMessage = async (message) => {\n if (isDestroyed) {\n return;\n }\n if (!isCallMessage(message)) {\n return;\n }\n log?.(`Received ${formatMethodPath(message.methodPath)}() call`, message);\n const { methodPath, args, id: callId } = message;\n let replyMessage;\n let transferables;\n try {\n const method = getMethodAtMethodPath(methodPath, methods);\n if (!method) {\n throw new PenpalError_default(\n \"METHOD_NOT_FOUND\",\n `Method \\`${formatMethodPath(methodPath)}\\` is not found.`\n );\n }\n let value = await method(...args);\n if (value instanceof Reply_default) {\n transferables = value.transferables;\n value = await value.value;\n }\n replyMessage = {\n namespace: namespace_default,\n channel,\n type: \"REPLY\",\n callId,\n value\n };\n } catch (error) {\n replyMessage = createErrorReplyMessage(channel, callId, error);\n }\n if (isDestroyed) {\n return;\n }\n try {\n log?.(`Sending ${formatMethodPath(methodPath)}() reply`, replyMessage);\n messenger.sendMessage(replyMessage, transferables);\n } catch (error) {\n if (error.name === \"DataCloneError\") {\n replyMessage = createErrorReplyMessage(channel, callId, error);\n log?.(`Sending ${formatMethodPath(methodPath)}() reply`, replyMessage);\n messenger.sendMessage(replyMessage);\n }\n throw error;\n }\n };\n messenger.addMessageHandler(handleMessage);\n return () => {\n isDestroyed = true;\n messenger.removeMessageHandler(handleMessage);\n };\n};\nvar connectCallHandler_default = connectCallHandler;\n\n// src/generateId.ts\nvar generateId_default = crypto.randomUUID?.bind(crypto) ?? (() => new Array(4).fill(0).map(\n () => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16)\n).join(\"-\"));\n\n// src/CallOptions.ts\nvar brand2 = Symbol(\"CallOptions\");\nvar CallOptions = class {\n transferables;\n timeout;\n // Allows TypeScript to distinguish between an actual instance of this\n // class versus an object that looks structurally similar.\n // eslint-disable-next-line no-unused-private-class-members\n #brand = brand2;\n constructor(options) {\n this.transferables = options?.transferables;\n this.timeout = options?.timeout;\n }\n};\nvar CallOptions_default = CallOptions;\n\n// src/connectRemoteProxy.ts\nvar methodsToTreatAsNative = /* @__PURE__ */ new Set([\"apply\", \"call\", \"bind\"]);\nvar createRemoteProxy = (callback, log, path = []) => {\n return new Proxy(\n path.length ? () => {\n } : /* @__PURE__ */ Object.create(null),\n {\n get(target, prop) {\n if (prop === \"then\") {\n return;\n }\n if (path.length && methodsToTreatAsNative.has(prop)) {\n return Reflect.get(target, prop);\n }\n return createRemoteProxy(callback, log, [...path, prop]);\n },\n apply(target, _thisArg, args) {\n return callback(path, args);\n }\n }\n );\n};\nvar getDestroyedConnectionMethodCallError = (methodPath) => {\n return new PenpalError_default(\n \"CONNECTION_DESTROYED\",\n `Method call ${formatMethodPath(\n methodPath\n )}() failed due to destroyed connection`\n );\n};\nvar connectRemoteProxy = (messenger, channel, log) => {\n let isDestroyed = false;\n const replyHandlers = /* @__PURE__ */ new Map();\n const handleMessage = (message) => {\n if (!isReplyMessage(message)) {\n return;\n }\n const { callId, value, isError, isSerializedErrorInstance } = message;\n const replyHandler = replyHandlers.get(callId);\n if (!replyHandler) {\n return;\n }\n replyHandlers.delete(callId);\n log?.(\n `Received ${formatMethodPath(replyHandler.methodPath)}() call`,\n message\n );\n if (isError) {\n replyHandler.reject(\n isSerializedErrorInstance ? deserializeError(value) : value\n );\n } else {\n replyHandler.resolve(value);\n }\n };\n messenger.addMessageHandler(handleMessage);\n const remoteProxy = createRemoteProxy((methodPath, args) => {\n if (isDestroyed) {\n throw getDestroyedConnectionMethodCallError(methodPath);\n }\n const callId = generateId_default();\n const lastArg = args[args.length - 1];\n const lastArgIsOptions = lastArg instanceof CallOptions_default;\n const { timeout, transferables } = lastArgIsOptions ? lastArg : {};\n const argsWithoutOptions = lastArgIsOptions ? args.slice(0, -1) : args;\n return new Promise((resolve, reject) => {\n const timeoutId = timeout !== void 0 ? window.setTimeout(() => {\n replyHandlers.delete(callId);\n reject(\n new PenpalError_default(\n \"METHOD_CALL_TIMEOUT\",\n `Method call ${formatMethodPath(\n methodPath\n )}() timed out after ${timeout}ms`\n )\n );\n }, timeout) : void 0;\n replyHandlers.set(callId, { methodPath, resolve, reject, timeoutId });\n try {\n const callMessage = {\n namespace: namespace_default,\n channel,\n type: \"CALL\",\n id: callId,\n methodPath,\n args: argsWithoutOptions\n };\n log?.(`Sending ${formatMethodPath(methodPath)}() call`, callMessage);\n messenger.sendMessage(callMessage, transferables);\n } catch (error) {\n reject(\n new PenpalError_default(\"TRANSMISSION_FAILED\", error.message)\n );\n }\n });\n }, log);\n const destroy = () => {\n isDestroyed = true;\n messenger.removeMessageHandler(handleMessage);\n for (const { methodPath, reject, timeoutId } of replyHandlers.values()) {\n clearTimeout(timeoutId);\n reject(getDestroyedConnectionMethodCallError(methodPath));\n }\n replyHandlers.clear();\n };\n return {\n remoteProxy,\n destroy\n };\n};\nvar connectRemoteProxy_default = connectRemoteProxy;\n\n// src/getPromiseWithResolvers.ts\nvar getPromiseWithResolvers = () => {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return {\n promise,\n resolve,\n reject\n };\n};\nvar getPromiseWithResolvers_default = getPromiseWithResolvers;\n\n// src/backwardCompatibility.ts\nvar DEPRECATED_PENPAL_PARTICIPANT_ID = \"deprecated-penpal\";\nvar isDeprecatedMessage = (data) => {\n return isObject(data) && \"penpal\" in data;\n};\nvar upgradeMethodPath = (methodPath) => methodPath.split(\".\");\nvar downgradeMethodPath = (methodPath) => methodPath.join(\".\");\nvar stringifyUnknownMessage = (message) => {\n try {\n return JSON.stringify(message);\n } catch (_) {\n return String(message);\n }\n};\nvar getUnexpectedMessageError = (message) => {\n return new PenpalError_default(\n \"TRANSMISSION_FAILED\",\n `Unexpected message to translate: ${stringifyUnknownMessage(message)}`\n );\n};\nvar upgradeMessage = (message) => {\n if (message.penpal === \"syn\" /* Syn */) {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"SYN\",\n participantId: DEPRECATED_PENPAL_PARTICIPANT_ID\n };\n }\n if (message.penpal === \"ack\" /* Ack */) {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"ACK2\"\n };\n }\n if (message.penpal === \"call\" /* Call */) {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"CALL\",\n // Actually converting the ID to a string would break communication.\n id: message.id,\n methodPath: upgradeMethodPath(message.methodName),\n args: message.args\n };\n }\n if (message.penpal === \"reply\" /* Reply */) {\n if (message.resolution === \"fulfilled\" /* Fulfilled */) {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"REPLY\",\n // Actually converting the ID to a string would break communication.\n callId: message.id,\n value: message.returnValue\n };\n } else {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"REPLY\",\n // Actually converting the ID to a string would break communication.\n callId: message.id,\n isError: true,\n ...message.returnValueIsError ? {\n value: message.returnValue,\n isSerializedErrorInstance: true\n } : {\n value: message.returnValue\n }\n };\n }\n }\n throw getUnexpectedMessageError(message);\n};\nvar downgradeMessage = (message) => {\n if (isAck1Message(message)) {\n return {\n penpal: \"synAck\" /* SynAck */,\n methodNames: message.methodPaths.map(downgradeMethodPath)\n };\n }\n if (isCallMessage(message)) {\n return {\n penpal: \"call\" /* Call */,\n // Actually converting the ID to a number would break communication.\n id: message.id,\n methodName: downgradeMethodPath(message.methodPath),\n args: message.args\n };\n }\n if (isReplyMessage(message)) {\n if (message.isError) {\n return {\n penpal: \"reply\" /* Reply */,\n // Actually converting the ID to a number would break communication.\n id: message.callId,\n resolution: \"rejected\" /* Rejected */,\n ...message.isSerializedErrorInstance ? {\n returnValue: message.value,\n returnValueIsError: true\n } : { returnValue: message.value }\n };\n } else {\n return {\n penpal: \"reply\" /* Reply */,\n // Actually converting the ID to a number would break communication.\n id: message.callId,\n resolution: \"fulfilled\" /* Fulfilled */,\n returnValue: message.value\n };\n }\n }\n throw getUnexpectedMessageError(message);\n};\n\n// src/shakeHands.ts\nvar shakeHands = ({\n messenger,\n methods,\n timeout,\n channel,\n log\n}) => {\n const participantId = generateId_default();\n let remoteParticipantId;\n const destroyHandlers = [];\n let isComplete = false;\n const methodPaths = extractMethodPathsFromMethods(methods);\n const { promise, resolve, reject } = getPromiseWithResolvers_default();\n const timeoutId = timeout !== void 0 ? setTimeout(() => {\n reject(\n new PenpalError_default(\n \"CONNECTION_TIMEOUT\",\n `Connection timed out after ${timeout}ms`\n )\n );\n }, timeout) : void 0;\n const destroy = () => {\n for (const destroyHandler of destroyHandlers) {\n destroyHandler();\n }\n };\n const connectCallHandlerAndMethodProxies = () => {\n if (isComplete) {\n return;\n }\n destroyHandlers.push(connectCallHandler_default(messenger, methods, channel, log));\n const { remoteProxy, destroy: destroyMethodProxies } = connectRemoteProxy_default(messenger, channel, log);\n destroyHandlers.push(destroyMethodProxies);\n clearTimeout(timeoutId);\n isComplete = true;\n resolve({\n remoteProxy,\n destroy\n });\n };\n const sendSynMessage = () => {\n const synMessage = {\n namespace: namespace_default,\n type: \"SYN\",\n channel,\n participantId\n };\n log?.(`Sending handshake SYN`, synMessage);\n try {\n messenger.sendMessage(synMessage);\n } catch (error) {\n reject(new PenpalError_default(\"TRANSMISSION_FAILED\", error.message));\n }\n };\n const handleSynMessage = (message) => {\n log?.(`Received handshake SYN`, message);\n if (message.participantId === remoteParticipantId && // TODO: Used for backward-compatibility. Remove in next major version.\n remoteParticipantId !== DEPRECATED_PENPAL_PARTICIPANT_ID) {\n return;\n }\n remoteParticipantId = message.participantId;\n sendSynMessage();\n const isHandshakeLeader = participantId > remoteParticipantId || // TODO: Used for backward-compatibility. Remove in next major version.\n remoteParticipantId === DEPRECATED_PENPAL_PARTICIPANT_ID;\n if (!isHandshakeLeader) {\n return;\n }\n const ack1Message = {\n namespace: namespace_default,\n channel,\n type: \"ACK1\",\n methodPaths\n };\n log?.(`Sending handshake ACK1`, ack1Message);\n try {\n messenger.sendMessage(ack1Message);\n } catch (error) {\n reject(new PenpalError_default(\"TRANSMISSION_FAILED\", error.message));\n return;\n }\n };\n const handleAck1Message = (message) => {\n log?.(`Received handshake ACK1`, message);\n const ack2Message = {\n namespace: namespace_default,\n channel,\n type: \"ACK2\"\n };\n log?.(`Sending handshake ACK2`, ack2Message);\n try {\n messenger.sendMessage(ack2Message);\n } catch (error) {\n reject(new PenpalError_default(\"TRANSMISSION_FAILED\", error.message));\n return;\n }\n connectCallHandlerAndMethodProxies();\n };\n const handleAck2Message = (message) => {\n log?.(`Received handshake ACK2`, message);\n connectCallHandlerAndMethodProxies();\n };\n const handleMessage = (message) => {\n if (isSynMessage(message)) {\n handleSynMessage(message);\n }\n if (isAck1Message(message)) {\n handleAck1Message(message);\n }\n if (isAck2Message(message)) {\n handleAck2Message(message);\n }\n };\n messenger.addMessageHandler(handleMessage);\n destroyHandlers.push(() => messenger.removeMessageHandler(handleMessage));\n sendSynMessage();\n return promise;\n};\nvar shakeHands_default = shakeHands;\n\n// src/once.ts\nvar once = (fn) => {\n let isCalled = false;\n let result;\n return (...args) => {\n if (!isCalled) {\n isCalled = true;\n result = fn(...args);\n }\n return result;\n };\n};\nvar once_default = once;\n\n// src/connect.ts\nvar usedMessengers = /* @__PURE__ */ new WeakSet();\nvar connect = ({\n messenger,\n methods = {},\n timeout,\n channel,\n log\n}) => {\n if (!messenger) {\n throw new PenpalError_default(\"INVALID_ARGUMENT\", \"messenger must be defined\");\n }\n if (usedMessengers.has(messenger)) {\n throw new PenpalError_default(\n \"INVALID_ARGUMENT\",\n \"A messenger can only be used for a single connection\"\n );\n }\n usedMessengers.add(messenger);\n const connectionDestroyedHandlers = [messenger.destroy];\n const destroyConnection = once_default((notifyOtherParticipant) => {\n if (notifyOtherParticipant) {\n const destroyMessage = {\n namespace: namespace_default,\n channel,\n type: \"DESTROY\"\n };\n try {\n messenger.sendMessage(destroyMessage);\n } catch (_) {\n }\n }\n for (const connectionDestroyedHandler of connectionDestroyedHandlers) {\n connectionDestroyedHandler();\n }\n log?.(\"Connection destroyed\");\n });\n const validateReceivedMessage = (data) => {\n return isMessage(data) && data.channel === channel;\n };\n const promise = (async () => {\n try {\n messenger.initialize({ log, validateReceivedMessage });\n messenger.addMessageHandler((message) => {\n if (isDestroyMessage(message)) {\n destroyConnection(false);\n }\n });\n const { remoteProxy, destroy } = await shakeHands_default({\n messenger,\n methods,\n timeout,\n channel,\n log\n });\n connectionDestroyedHandlers.push(destroy);\n return remoteProxy;\n } catch (error) {\n destroyConnection(true);\n throw error;\n }\n })();\n return {\n promise,\n // Why we don't reject the connection promise when consumer calls destroy():\n // https://github.com/Aaronius/penpal/issues/51\n destroy: () => {\n destroyConnection(true);\n }\n };\n};\nvar connect_default = connect;\n\n// src/messengers/WindowMessenger.ts\nvar WindowMessenger = class {\n #remoteWindow;\n #allowedOrigins;\n #log;\n #validateReceivedMessage;\n #concreteRemoteOrigin;\n #messageCallbacks = /* @__PURE__ */ new Set();\n #port;\n // TODO: Used for backward-compatibility. Remove in next major version.\n #isChildUsingDeprecatedProtocol = false;\n constructor({ remoteWindow, allowedOrigins }) {\n if (!remoteWindow) {\n throw new PenpalError_default(\"INVALID_ARGUMENT\", \"remoteWindow must be defined\");\n }\n this.#remoteWindow = remoteWindow;\n this.#allowedOrigins = allowedOrigins?.length ? allowedOrigins : [window.origin];\n }\n initialize = ({\n log,\n validateReceivedMessage\n }) => {\n this.#log = log;\n this.#validateReceivedMessage = validateReceivedMessage;\n window.addEventListener(\"message\", this.#handleMessageFromRemoteWindow);\n };\n sendMessage = (message, transferables) => {\n if (isSynMessage(message)) {\n const originForSending = this.#getOriginForSendingMessage(message);\n this.#remoteWindow.postMessage(message, {\n targetOrigin: originForSending,\n transfer: transferables\n });\n return;\n }\n if (isAck1Message(message) || // If the child is using a previous version of Penpal, we need to\n // downgrade the message and send it through the window rather than\n // the port because older versions of Penpal don't use MessagePorts.\n this.#isChildUsingDeprecatedProtocol) {\n const payload = this.#isChildUsingDeprecatedProtocol ? downgradeMessage(message) : message;\n const originForSending = this.#getOriginForSendingMessage(message);\n this.#remoteWindow.postMessage(payload, {\n targetOrigin: originForSending,\n transfer: transferables\n });\n return;\n }\n if (isAck2Message(message)) {\n const { port1, port2 } = new MessageChannel();\n this.#port = port1;\n port1.addEventListener(\"message\", this.#handleMessageFromPort);\n port1.start();\n const transferablesToSend = [port2, ...transferables || []];\n const originForSending = this.#getOriginForSendingMessage(message);\n this.#remoteWindow.postMessage(message, {\n targetOrigin: originForSending,\n transfer: transferablesToSend\n });\n return;\n }\n if (this.#port) {\n this.#port.postMessage(message, {\n transfer: transferables\n });\n return;\n }\n throw new PenpalError_default(\n \"TRANSMISSION_FAILED\",\n \"Cannot send message because the MessagePort is not connected\"\n );\n };\n addMessageHandler = (callback) => {\n this.#messageCallbacks.add(callback);\n };\n removeMessageHandler = (callback) => {\n this.#messageCallbacks.delete(callback);\n };\n destroy = () => {\n window.removeEventListener(\"message\", this.#handleMessageFromRemoteWindow);\n this.#destroyPort();\n this.#messageCallbacks.clear();\n };\n #isAllowedOrigin = (origin) => {\n return this.#allowedOrigins.some(\n (allowedOrigin) => allowedOrigin instanceof RegExp ? allowedOrigin.test(origin) : allowedOrigin === origin || allowedOrigin === \"*\"\n );\n };\n #getOriginForSendingMessage = (message) => {\n if (isSynMessage(message)) {\n return \"*\";\n }\n if (!this.#concreteRemoteOrigin) {\n throw new PenpalError_default(\n \"TRANSMISSION_FAILED\",\n \"Cannot send message because the remote origin is not established\"\n );\n }\n return this.#concreteRemoteOrigin === \"null\" && this.#allowedOrigins.includes(\"*\") ? \"*\" : this.#concreteRemoteOrigin;\n };\n #destroyPort = () => {\n this.#port?.removeEventListener(\"message\", this.#handleMessageFromPort);\n this.#port?.close();\n this.#port = void 0;\n };\n #handleMessageFromRemoteWindow = ({\n source,\n origin,\n ports,\n data\n }) => {\n if (source !== this.#remoteWindow) {\n return;\n }\n if (isDeprecatedMessage(data)) {\n this.#log?.(\n \"Please upgrade the child window to the latest version of Penpal.\"\n );\n this.#isChildUsingDeprecatedProtocol = true;\n try {\n data = upgradeMessage(data);\n } catch (error) {\n this.#log?.(\n `Failed to translate deprecated message: ${error.message}`\n );\n return;\n }\n }\n if (!this.#validateReceivedMessage?.(data)) {\n return;\n }\n if (!this.#isAllowedOrigin(origin)) {\n this.#log?.(\n `Received a message from origin \\`${origin}\\` which did not match allowed origins \\`[${this.#allowedOrigins.join(\", \")}]\\``\n );\n return;\n }\n if (isSynMessage(data)) {\n this.#destroyPort();\n this.#concreteRemoteOrigin = origin;\n }\n if (isAck2Message(data) && // Previous versions of Penpal don't use MessagePorts and do all\n // communication through the window.\n !this.#isChildUsingDeprecatedProtocol) {\n this.#port = ports[0];\n if (!this.#port) {\n this.#log?.(\"Ignoring ACK2 because it did not include a MessagePort\");\n return;\n }\n this.#port.addEventListener(\"message\", this.#handleMessageFromPort);\n this.#port.start();\n }\n for (const callback of this.#messageCallbacks) {\n callback(data);\n }\n };\n #handleMessageFromPort = ({ data }) => {\n if (!this.#validateReceivedMessage?.(data)) {\n return;\n }\n for (const callback of this.#messageCallbacks) {\n callback(data);\n }\n };\n};\nvar WindowMessenger_default = WindowMessenger;\n\n// src/messengers/WorkerMessenger.ts\nvar WorkerMessenger = class {\n #worker;\n #log;\n #validateReceivedMessage;\n #messageCallbacks = /* @__PURE__ */ new Set();\n #port;\n constructor({ worker }) {\n if (!worker) {\n throw new PenpalError_default(\"INVALID_ARGUMENT\", \"worker must be defined\");\n }\n this.#worker = worker;\n }\n initialize = ({\n log,\n validateReceivedMessage\n }) => {\n this.#log = log;\n this.#validateReceivedMessage = validateReceivedMessage;\n this.#worker.addEventListener(\"message\", this.#handleMessage);\n };\n sendMessage = (message, transferables) => {\n if (isSynMessage(message) || isAck1Message(message)) {\n this.#worker.postMessage(message, { transfer: transferables });\n return;\n }\n if (isAck2Message(message)) {\n const { port1, port2 } = new MessageChannel();\n this.#port = port1;\n port1.addEventListener(\"message\", this.#handleMessage);\n port1.start();\n this.#worker.postMessage(message, {\n transfer: [port2, ...transferables || []]\n });\n return;\n }\n if (this.#port) {\n this.#port.postMessage(message, {\n transfer: transferables\n });\n return;\n }\n throw new PenpalError_default(\n \"TRANSMISSION_FAILED\",\n \"Cannot send message because the MessagePort is not connected\"\n );\n };\n addMessageHandler = (callback) => {\n this.#messageCallbacks.add(callback);\n };\n removeMessageHandler = (callback) => {\n this.#messageCallbacks.delete(callback);\n };\n destroy = () => {\n this.#worker.removeEventListener(\"message\", this.#handleMessage);\n this.#destroyPort();\n this.#messageCallbacks.clear();\n };\n #destroyPort = () => {\n this.#port?.removeEventListener(\"message\", this.#handleMessage);\n this.#port?.close();\n this.#port = void 0;\n };\n #handleMessage = ({ ports, data }) => {\n if (!this.#validateReceivedMessage?.(data)) {\n return;\n }\n if (isSynMessage(data)) {\n this.#destroyPort();\n }\n if (isAck2Message(data)) {\n this.#port = ports[0];\n if (!this.#port) {\n this.#log?.(\"Ignoring ACK2 because it did not include a MessagePort\");\n return;\n }\n this.#port.addEventListener(\"message\", this.#handleMessage);\n this.#port.start();\n }\n for (const callback of this.#messageCallbacks) {\n callback(data);\n }\n };\n};\nvar WorkerMessenger_default = WorkerMessenger;\n\n// src/messengers/PortMessenger.ts\nvar PortMessenger = class {\n #port;\n #validateReceivedMessage;\n #messageCallbacks = /* @__PURE__ */ new Set();\n constructor({ port }) {\n if (!port) {\n throw new PenpalError_default(\"INVALID_ARGUMENT\", \"port must be defined\");\n }\n this.#port = port;\n }\n initialize = ({ validateReceivedMessage }) => {\n this.#validateReceivedMessage = validateReceivedMessage;\n this.#port.addEventListener(\"message\", this.#handleMessage);\n this.#port.start();\n };\n sendMessage = (message, transferables) => {\n this.#port?.postMessage(message, {\n transfer: transferables\n });\n };\n addMessageHandler = (callback) => {\n this.#messageCallbacks.add(callback);\n };\n removeMessageHandler = (callback) => {\n this.#messageCallbacks.delete(callback);\n };\n destroy = () => {\n this.#port.removeEventListener(\"message\", this.#handleMessage);\n this.#port.close();\n this.#messageCallbacks.clear();\n };\n #handleMessage = ({ data }) => {\n if (!this.#validateReceivedMessage?.(data)) {\n return;\n }\n for (const callback of this.#messageCallbacks) {\n callback(data);\n }\n };\n};\nvar PortMessenger_default = PortMessenger;\n\n// src/ErrorCodeObj.ts\nvar ErrorCodeObj = {\n ConnectionDestroyed: \"CONNECTION_DESTROYED\",\n ConnectionTimeout: \"CONNECTION_TIMEOUT\",\n InvalidArgument: \"INVALID_ARGUMENT\",\n MethodCallTimeout: \"METHOD_CALL_TIMEOUT\",\n MethodNotFound: \"METHOD_NOT_FOUND\",\n TransmissionFailed: \"TRANSMISSION_FAILED\"\n};\nvar ErrorCodeObj_default = ErrorCodeObj;\n\n// src/debug.ts\nvar debug = (prefix) => {\n return (...args) => {\n console.log(`\\u270D\\uFE0F %c${prefix}%c`, \"font-weight: bold;\", \"\", ...args);\n };\n};\nvar debug_default = debug;\n\nexport { CallOptions_default as CallOptions, ErrorCodeObj_default as ErrorCode, PenpalError_default as PenpalError, PortMessenger_default as PortMessenger, Reply_default as Reply, WindowMessenger_default as WindowMessenger, WorkerMessenger_default as WorkerMessenger, connect_default as connect, debug_default as debug };\n//# sourceMappingURL=penpal.mjs.map\n//# sourceMappingURL=penpal.mjs.map","/** Protocol identifier for sync bootstrap messages between parent and child bridges */\nexport const BRIDGE_INIT_MSG = '__monei_bridge_init__';\n","/** Bridge lifecycle events (replaces zoid.EVENT) */\nexport const EVENT = {\n RENDERED: 'RENDERED',\n RESIZE: 'RESIZE',\n DESTROY: 'DESTROY',\n BEFORE_CLOSE: 'BEFORE_CLOSE',\n DISPLAY: 'DISPLAY'\n} as const;\n\n/**\n * Lifecycle prop names filtered from dispatch.\n * These are wired to bridge events, NOT forwarded to child.\n *\n * NOTE: onError, onFocus, onLoad are NOT here — they are user-facing\n * props that merchants pass and children call.\n */\nexport const LIFECYCLE_PROPS = new Set([\n 'onClose',\n 'onDestroy',\n 'onRendered',\n 'onRender',\n 'onDisplay',\n 'onResize',\n 'onProps'\n]);\n","/**\n * DOM utility: remove element from DOM.\n * Replaces belter.destroyElement().\n */\nexport function destroyElement(el: Element | null | undefined): void {\n if (el) el.remove();\n}\n\n/**\n * CSS utility: convert number to CSS pixel string, pass strings through.\n * Replaces belter.toCSS().\n */\nexport function toCSS(value: number | string): string {\n return typeof value === 'number' ? `${value}px` : value;\n}\n","import {connect, WindowMessenger} from 'penpal';\nimport type {Connection} from 'penpal';\nimport {BRIDGE_INIT_MSG} from '@monei-js/shared/lib/bridge-constants';\nimport {EVENT, LIFECYCLE_PROPS} from './constants';\nimport {normalizeAliases} from './create-component';\nimport {toCSS} from './props';\nimport type {\n BridgeComponent,\n BridgeComponentOptions,\n Cancelable,\n ChildMethods,\n ComputedPropConfig,\n EventEmitterType,\n ParentMethods\n} from './types';\n\n/** Per-component iframe sandbox attributes — least-privilege per component */\nconst SANDBOX: Record<string, string> = {\n 'monei-card-input': 'allow-scripts allow-forms allow-same-origin',\n 'monei-bizum':\n 'allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox',\n 'monei-bizum-button':\n 'allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox',\n 'monei-paypal':\n 'allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox',\n 'monei-payment-request': 'allow-scripts allow-forms allow-same-origin allow-popups',\n 'monei-payment-modal':\n 'allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox',\n 'monei-google-pay': 'allow-scripts allow-forms allow-same-origin allow-popups'\n};\n\ntype PendingPropsUpdate = {\n dataProps: Record<string, any>;\n functionNames: string[] | undefined;\n};\n\ntype RenderState = {\n dispatchMap: Map<string, Function>;\n connection: Connection<ChildMethods> | null;\n remote: {callChild: Function; updateProps: Function} | null;\n containerEl: HTMLElement | null;\n frame: HTMLIFrameElement | null;\n destroyed: boolean;\n ownsContainer: boolean;\n /** Buffered prop updates received before Penpal handshake completes */\n pendingPropsUpdate: PendingPropsUpdate | null;\n /** Keys with in-flight deferred removals (function→data transitions awaiting child delivery) */\n pendingRemovals: Set<string>;\n};\n\n/**\n * Resolve a container argument to an HTMLElement.\n */\nfunction resolveContainer(container?: string | HTMLElement): HTMLElement {\n if (!container) {\n throw new Error('render() requires a container element or selector');\n }\n if (typeof container === 'string') {\n const el = document.querySelector<HTMLElement>(container);\n if (!el) throw new Error(`Container not found: ${container}`);\n return el;\n }\n return container;\n}\n\n/**\n * Generate a unique ID for the container element.\n */\nfunction generateUid(tag: string): string {\n return `${tag}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\n/**\n * Wire lifecycle props to bridge events.\n * Called before containerTemplate in the render flow.\n */\nfunction wireLifecycleProps<P extends Record<string, any>>(\n props: P,\n event: EventEmitterType\n): void {\n // Map lifecycle prop names to bridge events.\n // Late binding: reads from props at call time so updateProps() changes are reflected.\n // props is a mutable ref — Object.assign(instance.props, newProps) updates it in-place.\n const mappings: Array<[string, string]> = [\n ['onClose', EVENT.DESTROY],\n ['onDestroy', EVENT.DESTROY],\n ['onRendered', EVENT.RENDERED],\n ['onResize', EVENT.RESIZE]\n ];\n // onRender, onDisplay: zoid-internal events with no penpal equivalent — intentionally unmapped\n // onProps: handled by bridge's updateProps mechanism — not an event\n\n for (const [propKey, eventName] of mappings) {\n event.on(eventName, (...args: any[]) => {\n const fn = (props as Record<string, any>)[propKey];\n if (typeof fn === 'function') fn(...args);\n });\n }\n}\n\n/**\n * Execute computed prop factories and classify remaining user props into\n * dispatch map (functions) and data payload (everything else).\n * Called AFTER containerTemplate so computed factories see state mutations.\n */\nfunction buildDataPayload<P extends Record<string, any>>(context: {\n props: P;\n options: BridgeComponentOptions<P>;\n state: Record<string, any>;\n dispatchMap: Map<string, Function>;\n}): {dataProps: Record<string, any>; functionNames: string[]} {\n const {props, options, state, dispatchMap} = context;\n const dataProps: Record<string, any> = {};\n const computedPropKeys = new Set<string>(\n options.computedProps ? Object.keys(options.computedProps) : []\n );\n\n // Execute computed prop factories\n if (options.computedProps) {\n for (const [key, config] of Object.entries(\n options.computedProps as Record<string, ComputedPropConfig<P>>\n )) {\n const result = config.factory({props, state});\n if (config.type === 'function') {\n dispatchMap.set(key, result);\n } else {\n // type: 'value' — included in data payload sent to child\n dataProps[key] = result;\n }\n }\n }\n\n // Classify remaining user props\n for (const [key, value] of Object.entries(props as Record<string, any>)) {\n if (LIFECYCLE_PROPS.has(key) || computedPropKeys.has(key)) continue;\n if (typeof value === 'function') {\n dispatchMap.set(key, value);\n } else {\n dataProps[key] = value;\n }\n }\n\n // Collect function names from dispatch map so child can create stubs.\n // Exclude built-in methods (close, resize, show, hide, getParentDomain, focus)\n // which are always created by bridge-child — only send user/computed function names.\n const builtins = new Set(['close', 'resize', 'show', 'hide', 'getParentDomain', 'focus']);\n const functionNames = [...dispatchMap.keys()].filter((k) => !builtins.has(k));\n\n return {dataProps, functionNames};\n}\n\n/**\n * Implements .render(), .updateProps(), .destroy(), .close() on a bridge component instance.\n * Called once from createComponent to wire up the actual rendering logic.\n */\nexport function attachRenderMethods<P extends Record<string, any>>(\n instance: BridgeComponent<P>,\n options: BridgeComponentOptions<P>\n): void {\n const renderState: RenderState = {\n dispatchMap: new Map(),\n connection: null,\n remote: null,\n containerEl: null,\n frame: null,\n destroyed: false,\n ownsContainer: false,\n pendingPropsUpdate: null,\n pendingRemovals: new Set()\n };\n\n // Add built-in dispatch methods\n let renderedTriggered = false;\n let lifecycleWired = false;\n renderState.dispatchMap.set('resize', (dimensions: {width?: number; height?: number}) => {\n const {autoResize} = options;\n const applied: {width?: number; height?: number} = {};\n\n // Filter dimensions based on autoResize config\n // No autoResize → allow all; autoResize set → only allow explicitly enabled dimensions\n if (dimensions.width !== undefined && (!autoResize || autoResize.width === true)) {\n applied.width = dimensions.width;\n }\n if (dimensions.height !== undefined && (!autoResize || autoResize.height === true)) {\n applied.height = dimensions.height;\n }\n\n // Update iframe dimensions\n if (renderState.frame) {\n if (applied.width !== undefined) {\n renderState.frame.style.width = toCSS(applied.width);\n }\n if (applied.height !== undefined) {\n renderState.frame.style.height = toCSS(applied.height);\n }\n }\n\n // Show iframe on first resize — child has rendered content with correct dimensions.\n // This fires as soon as Penpal connects (before updateProps), so the user sees\n // the component ~200ms earlier instead of waiting for the full handshake + prop delivery.\n if (!renderedTriggered) {\n renderedTriggered = true;\n instance.event.trigger(EVENT.RENDERED);\n }\n\n instance.event.trigger(EVENT.RESIZE, applied);\n });\n renderState.dispatchMap.set('close', () => instance.close());\n renderState.dispatchMap.set('show', () => {\n if (renderState.frame) renderState.frame.style.display = '';\n });\n renderState.dispatchMap.set('hide', () => {\n if (renderState.frame) renderState.frame.style.display = 'none';\n });\n renderState.dispatchMap.set('getParentDomain', () => window.location.origin);\n renderState.dispatchMap.set('focus', () => {\n if (renderState.frame) renderState.frame.focus();\n });\n\n /**\n * Render the component into the DOM and establish Penpal connection.\n *\n * Phase ordering:\n * 1. wireLifecycleProps — bind onClose/onRendered/onResize to bridge events\n * 2. prerenderTemplate — create loading placeholder (optional)\n * 3. containerTemplate — build wrapper DOM, may mutate `state` (e.g., state.__container for PayPal)\n * 4. buildDataPayload — run computed prop factories (read state mutations from step 3),\n * classify user props into dispatch map (functions) and data payload (serializable values)\n * 5. appendToDOM — container or bare iframe inserted into target element\n * 6. triggerDISPLAY — notify container template that DOM is ready\n * 7. sendBootstrap — postMessage initial props to iframe before script loads\n * 8. createConnection — establish Penpal async RPC channel, deliver props via updateProps\n */\n instance.render = async (container?: string | HTMLElement): Promise<void> => {\n if (renderState.destroyed) throw new Error('Component is destroyed');\n if (renderState.frame) throw new Error('Component already rendered');\n\n const targetEl = resolveContainer(container);\n const uid = generateUid(options.tag);\n const doc = targetEl.ownerDocument;\n\n // Create iframe — append parent origin to URL hash so child can restrict allowedOrigins\n const frame = doc.createElement('iframe');\n frame.src = options.url;\n frame.setAttribute('title', options.tag.replace(/-/g, '_'));\n frame.setAttribute('allowpaymentrequest', 'true');\n frame.setAttribute('allow', 'payment');\n frame.style.border = 'none';\n\n // Apply per-component sandbox — fallback to restrictive default if tag unknown\n const sandbox = SANDBOX[options.tag] ?? 'allow-scripts allow-forms allow-same-origin';\n frame.setAttribute('sandbox', sandbox);\n\n // Phase 1: Wire lifecycle props to events (before containerTemplate)\n // Guard: only wire once — handlers use late binding (read from props at call time),\n // so the first registration works for all future prop values. Without this guard,\n // a failed render() (e.g., PayPal missing paymentId) followed by retry would\n // register duplicate handlers, causing callbacks to fire multiple times per event.\n if (!lifecycleWired) {\n wireLifecycleProps(instance.props, instance.event);\n lifecycleWired = true;\n }\n\n // Track event subscriptions from template phases for rollback cleanup.\n // Lifecycle handlers (Phase 1) are guarded by lifecycleWired — only template subs need tracking.\n const templateSubs: Cancelable[] = [];\n const trackedEvent: EventEmitterType = {\n on(eventName: string, handler: (...args: any[]) => void) {\n const sub = instance.event.on(eventName, handler);\n templateSubs.push(sub);\n return sub;\n },\n once(eventName: string, handler: (...args: any[]) => void) {\n const sub = instance.event.once(eventName, handler);\n templateSubs.push(sub);\n return sub;\n },\n trigger(eventName: string, ...args: any[]) {\n instance.event.trigger(eventName, ...args);\n },\n off(eventName: string, handler: (...args: any[]) => void) {\n instance.event.off(eventName, handler);\n },\n destroy() {\n instance.event.destroy();\n }\n };\n\n // Phases 2-4 can register event handlers (via trackedEvent) and populate dispatchMap.\n // Wrap in try-catch so failures clean up side effects — without this, a retry would\n // accumulate duplicate template handlers and stale dispatch entries.\n let placeholder: HTMLElement | undefined;\n let containerNode: HTMLElement | undefined;\n let dataProps: Record<string, any> = {};\n let functionNames: string[] = [];\n try {\n // Phase 2: Create placeholder if prerenderTemplate provided\n if (options.prerenderTemplate) {\n placeholder = options.prerenderTemplate({\n uid,\n frame,\n placeholder: undefined,\n doc,\n props: instance.props,\n event: trackedEvent,\n dimensions: options.dimensions ?? {width: '100%', height: 'auto'},\n state: instance.state,\n container: targetEl\n }) as HTMLElement | undefined;\n }\n\n // Phase 3: Container template — MUST run before computed prop factories\n // Container template may mutate state (e.g., state.__container for PayPal)\n if (options.containerTemplate) {\n containerNode = options.containerTemplate({\n uid,\n frame,\n placeholder,\n doc,\n props: instance.props,\n event: trackedEvent,\n dimensions: options.dimensions ?? {width: '100%', height: 'auto'},\n state: instance.state,\n container: targetEl\n }) as HTMLElement | undefined;\n }\n\n // Phase 4: Build dispatch map + data payload AFTER containerTemplate\n ({dataProps, functionNames} = buildDataPayload({\n props: instance.props,\n options,\n state: instance.state,\n dispatchMap: renderState.dispatchMap\n }));\n } catch (err) {\n // Clean up template event subscriptions to prevent duplicate handlers on retry\n for (const sub of templateSubs) sub.cancel();\n // Clean up user/computed dispatch entries added by buildDataPayload\n const builtins = new Set(['close', 'resize', 'show', 'hide', 'getParentDomain', 'focus']);\n for (const key of renderState.dispatchMap.keys()) {\n if (!builtins.has(key)) renderState.dispatchMap.delete(key);\n }\n throw err;\n }\n\n // Mark as rendered AFTER template phases that can throw (e.g., PayPal validates props\n // in containerTemplate). Setting frame earlier would block render() retries on failure.\n renderState.frame = frame;\n\n // Phase 7 helper: defined before try block so catch can clean up the listener.\n const sendInitialProps = () => {\n if (frame.contentWindow) {\n frame.contentWindow.postMessage(\n {type: BRIDGE_INIT_MSG, props: dataProps, functionNames},\n new URL(options.url).origin\n );\n }\n };\n\n // Wrap post-frame-set phases in try/catch so async failures (Penpal rejection,\n // updateProps error) roll back render state instead of leaving a broken instance\n // that blocks retries with \"Component already rendered\".\n try {\n // Phase 5: Append to DOM\n if (containerNode) {\n targetEl.appendChild(containerNode);\n renderState.containerEl = containerNode;\n renderState.ownsContainer = true;\n } else {\n // No container template — append iframe directly\n targetEl.appendChild(frame);\n renderState.containerEl = targetEl;\n }\n\n // Phase 6: Notify container template that DOM is ready (for backdrop transitions etc.)\n instance.event.trigger(EVENT.DISPLAY);\n\n // Phase 7: Send initial data + function names via sync postMessage before iframe loads script.\n // Send on each iframe navigation/load attempt — child script picks up the first one\n frame.addEventListener('load', sendInitialProps);\n // Also try sending immediately if contentWindow is available (e.g., same-origin)\n if (frame.contentWindow) {\n sendInitialProps();\n }\n\n // Phase 8: Establish Penpal connection\n if (!frame.contentWindow) {\n throw new Error('iframe contentWindow is not available — frame may not be in the DOM');\n }\n\n const messenger = new WindowMessenger({\n remoteWindow: frame.contentWindow,\n allowedOrigins: [new URL(options.url).origin]\n });\n\n const connection = connect<ChildMethods>({\n messenger,\n methods: {\n callParent: (name: string, args: any[]) => {\n const fn = renderState.dispatchMap.get(name);\n if (!fn) throw new Error(`Unknown parent method: ${name}`);\n return fn(...args);\n }\n } satisfies ParentMethods\n });\n\n renderState.connection = connection;\n\n // Wait for child to connect — destroy() during handshake rejects this promise\n let remote: Awaited<typeof connection.promise>;\n try {\n remote = await connection.promise;\n } catch (err) {\n if (renderState.destroyed) return;\n throw err;\n }\n if (renderState.destroyed) return;\n renderState.remote = remote;\n\n // Expose callChild on state so components (e.g., CardInput) can do parent→child RPC\n instance.state.__callChild = remote.callChild;\n\n // Send initial data + function names to child via Penpal (ensures delivery even if postMessage was missed)\n await remote.updateProps(dataProps, functionNames);\n if (renderState.destroyed) return; // destroyed while sending initial props\n\n // Flush any prop updates that were buffered during the Penpal handshake\n if (renderState.pendingPropsUpdate) {\n const pending = renderState.pendingPropsUpdate;\n renderState.pendingPropsUpdate = null;\n\n // Track in-flight removals so concurrent updateProps calls detect them (via pendingRemovals).\n // Capture original function refs so cleanup doesn't clobber concurrent updates.\n const retainedFns = new Set(pending.functionNames ?? []);\n const flushRemovals = new Map<string, Function>();\n for (const key of Object.keys(pending.dataProps)) {\n if (renderState.dispatchMap.has(key) && !retainedFns.has(key)) {\n flushRemovals.set(key, renderState.dispatchMap.get(key)!);\n renderState.pendingRemovals.add(key);\n }\n }\n\n await renderState.remote!.updateProps(pending.dataProps, pending.functionNames);\n if (renderState.destroyed) return;\n\n // Clean up deferred dispatch map removals from function→data transitions during handshake.\n // Only remove if entry hasn't been replaced by a concurrent updateProps call.\n for (const [key, originalFn] of flushRemovals) {\n renderState.pendingRemovals.delete(key);\n if (renderState.dispatchMap.get(key) === originalFn) {\n renderState.dispatchMap.delete(key);\n }\n }\n }\n\n // RENDERED is now triggered on first resize (earlier visibility).\n // Ensure it fires even if no resize occurs (e.g., fixed-size components).\n if (!renderedTriggered) {\n renderedTriggered = true;\n instance.event.trigger(EVENT.RENDERED);\n }\n\n // Clean up load listener\n frame.removeEventListener('load', sendInitialProps);\n } catch (err) {\n // Roll back render state so the instance can retry render() on recoverable failures.\n // destroy() during handshake returns early (doesn't throw), so this only catches real errors.\n frame.removeEventListener('load', sendInitialProps);\n // Cancel template event subscriptions to prevent duplicate handlers on retry.\n // Without this, each failed render adds RENDERED/RESIZE/DESTROY handlers that\n // accumulate — PayPal's DESTROY handler operates on global Buttons.instances state.\n for (const sub of templateSubs) sub.cancel();\n // Clear stale RPC handle (set after Penpal connects but before updateProps fails)\n delete instance.state.__callChild;\n if (renderState.connection) {\n renderState.connection.destroy();\n renderState.connection = null;\n }\n renderState.remote = null;\n renderState.frame = null;\n if (renderState.ownsContainer && renderState.containerEl) {\n renderState.containerEl.remove();\n } else if (frame.parentNode) {\n frame.remove();\n }\n renderState.containerEl = null;\n renderState.ownsContainer = false;\n renderState.pendingPropsUpdate = null;\n renderState.pendingRemovals.clear();\n // Clear user/computed dispatch entries so retry re-derives from current props.\n // Retain built-in methods (resize, close, show, hide, getParentDomain, focus).\n const builtins = new Set(['close', 'resize', 'show', 'hide', 'getParentDomain', 'focus']);\n for (const key of renderState.dispatchMap.keys()) {\n if (!builtins.has(key)) {\n renderState.dispatchMap.delete(key);\n }\n }\n renderedTriggered = false;\n throw err;\n }\n };\n\n instance.updateProps = async (newProps: Partial<P>): Promise<void> => {\n if (renderState.destroyed) throw new Error('Component is destroyed');\n\n // Normalize aliased prop names to canonical before processing\n const normalized = normalizeAliases(\n newProps as Record<string, any>,\n options.aliases\n ) as Partial<P>;\n\n // Mutate props in-place so closures see current values\n Object.assign(instance.props, normalized);\n\n // Before render(): props mutation is sufficient — render() will re-derive dispatch map\n // from instance.props via buildDataPayload(). Skip classification to avoid stale dispatch\n // entries (e.g., function→data transition before first render leaves orphaned dispatch keys).\n if (!renderState.frame) return;\n\n // Classify new props: update dispatch map for functions, collect data for child\n const newDataProps: Record<string, any> = {};\n const newFunctionNames: string[] = [];\n const computedPropKeys = new Set<string>(\n options.computedProps ? Object.keys(options.computedProps) : []\n );\n // Track function→data transitions for deferred dispatch map cleanup.\n // Captures the original function ref so concurrent updateProps calls don't clobber each other.\n const deferredRemovals = new Map<string, Function>();\n\n for (const [key, value] of Object.entries(normalized as Record<string, any>)) {\n if (LIFECYCLE_PROPS.has(key) || computedPropKeys.has(key)) continue;\n if (typeof value === 'function') {\n // Track newly added functions so child can create stubs.\n // Also re-track if the pending buffer has a stale data entry for this key\n // (handles function→undefined→function toggle during handshake: dispatch map\n // still has the key due to deferred deletion, but the buffer would send\n // undefined and kill the callback on flush).\n const hasStaleBufferedData =\n renderState.pendingPropsUpdate != null && key in renderState.pendingPropsUpdate.dataProps;\n // Also re-track if a concurrent updateProps is delivering a removal for this key\n // (dispatch map still has the key due to deferred deletion, but the child will\n // receive the removal first and lose its stub).\n const hasPendingRemoval = renderState.pendingRemovals.has(key);\n if (!renderState.dispatchMap.has(key) || hasStaleBufferedData || hasPendingRemoval) {\n newFunctionNames.push(key);\n }\n // Update dispatch map — no Penpal re-registration needed\n renderState.dispatchMap.set(key, value);\n } else {\n // If prop was previously a function, defer dispatch map removal.\n // During handshake: defer to keep functions available for child's pending call flush.\n // Post-connect: defer until child receives the updateProps message to avoid race\n // where child invokes the old stub before the update arrives.\n if (renderState.dispatchMap.has(key)) {\n if (renderState.remote) {\n deferredRemovals.set(key, renderState.dispatchMap.get(key)!);\n renderState.pendingRemovals.add(key);\n }\n // During handshake: kept alive, cleaned up during flush (existing behavior)\n }\n newDataProps[key] = value;\n }\n }\n\n const resolvedFunctionNames = newFunctionNames.length > 0 ? newFunctionNames : undefined;\n\n // Send data props + any new function names to child via Penpal\n if (renderState.remote) {\n await renderState.remote.updateProps(newDataProps, resolvedFunctionNames);\n // Clean up dispatch entries for function→data transitions now that child received the update.\n // Only remove if entry hasn't been replaced by a concurrent updateProps call.\n for (const [key, originalFn] of deferredRemovals) {\n renderState.pendingRemovals.delete(key);\n if (renderState.dispatchMap.get(key) === originalFn) {\n renderState.dispatchMap.delete(key);\n }\n }\n } else {\n // During handshake (frame exists, remote pending): buffer for post-handshake flush.\n // Buffer update — will be flushed after Penpal handshake completes\n if (!renderState.pendingPropsUpdate) {\n renderState.pendingPropsUpdate = {dataProps: {}, functionNames: undefined};\n }\n Object.assign(renderState.pendingPropsUpdate.dataProps, newDataProps);\n // Remove previously buffered function names that are now data props\n // (handles function → non-function transition during handshake)\n if (renderState.pendingPropsUpdate.functionNames) {\n const dataKeys = Object.keys(newDataProps);\n if (dataKeys.length > 0) {\n const dataKeySet = new Set(dataKeys);\n renderState.pendingPropsUpdate.functionNames =\n renderState.pendingPropsUpdate.functionNames.filter((n) => !dataKeySet.has(n));\n if (renderState.pendingPropsUpdate.functionNames.length === 0) {\n renderState.pendingPropsUpdate.functionNames = undefined;\n }\n }\n }\n if (resolvedFunctionNames) {\n // Clean stale data entries for keys that are now functions\n for (const name of resolvedFunctionNames) {\n delete renderState.pendingPropsUpdate.dataProps[name];\n }\n renderState.pendingPropsUpdate.functionNames = [\n ...(renderState.pendingPropsUpdate.functionNames ?? []),\n ...resolvedFunctionNames\n ];\n }\n }\n };\n\n instance.destroy = async (): Promise<void> => {\n if (renderState.destroyed) return;\n renderState.destroyed = true;\n\n instance.event.trigger(EVENT.DESTROY);\n\n if (renderState.connection) {\n renderState.connection.destroy();\n renderState.connection = null;\n }\n renderState.remote = null;\n\n // Remove DOM\n if (renderState.frame) {\n renderState.frame.remove();\n renderState.frame = null;\n }\n if (renderState.ownsContainer && renderState.containerEl) {\n renderState.containerEl.remove();\n }\n\n instance.event.destroy();\n renderState.dispatchMap.clear();\n };\n\n instance.close = async (): Promise<void> => {\n await instance.destroy();\n };\n\n /**\n * Expose renderState for tests\n */\n (instance as any).__renderState = renderState;\n}\n","import {EventEmitter} from './event-emitter';\nimport {resolveDriver} from './drivers';\nimport {attachRenderMethods} from './render';\nimport type {\n BridgeComponent,\n BridgeComponentConstructor,\n BridgeComponentOptions,\n EventEmitterType\n} from './types';\n\nconst driverPackageMap: Record<string, string> = {\n react: '@monei-js/react-components',\n vue3: '@monei-js/vue-components',\n angular: '@monei-js/angular-components'\n};\n\nfunction warnDriverDeprecation(name: string): void {\n const pkg = driverPackageMap[name];\n const replacement = pkg ? `Use ${pkg} instead.` : '';\n console.warn(`[MONEI] .driver('${name}') is deprecated. ${replacement}`.trim());\n}\n\n/**\n * Normalize aliased prop names to canonical names.\n * Aliases define alternative INPUT names: { style: 'innerStyle' } means\n * merchants can pass either `style` or `innerStyle`, but internally\n * the canonical name `style` is always used (matching zoid semantics).\n */\nexport function normalizeAliases(\n props: Record<string, any>,\n aliases?: Record<string, string>\n): Record<string, any> {\n if (!aliases) return props;\n\n // Build reverse map: alias value → canonical key\n const reverseMap = new Map<string, string>();\n for (const [canonical, alias] of Object.entries(aliases)) {\n reverseMap.set(alias, canonical);\n }\n\n const result: Record<string, any> = {};\n for (const [key, value] of Object.entries(props)) {\n const canonicalKey = reverseMap.get(key) ?? key;\n result[canonicalKey] = value;\n }\n return result;\n}\n\n/**\n * Creates a bridge component constructor (replaces zoid.create).\n *\n * Returns a class that can be instantiated with `new Component(props)`\n * and has a static `.driver()` method for framework wrappers.\n */\nexport function createComponent<P extends Record<string, any>>(\n options: BridgeComponentOptions<P>\n): BridgeComponentConstructor<P> {\n class Component implements BridgeComponent<P> {\n props: P;\n state: Record<string, any> = {};\n event: EventEmitterType;\n submit?: (options?: any) => Promise<any>;\n\n constructor(props: P) {\n this.event = new EventEmitter();\n\n // Normalize aliased prop names to canonical (e.g., innerStyle → style)\n const normalizedProps = normalizeAliases(props as Record<string, any>, options.aliases) as P;\n\n // Apply default props\n if (options.defaultProps) {\n const defaults = options.defaultProps({event: this.event});\n this.props = {...defaults, ...normalizedProps} as P;\n } else {\n this.props = {...normalizedProps};\n }\n\n // Validate\n if (options.validate) {\n options.validate({props: this.props});\n }\n\n // Wire render/destroy/close methods (Task 2)\n attachRenderMethods(this, options);\n\n // Wire submit() if provided by component options (e.g., CardInput)\n if (options.submit) {\n this.submit = options.submit(this);\n }\n }\n\n // Render — wired by attachRenderMethods in constructor\n async render(_container?: string | HTMLElement): Promise<void> {\n throw new Error('render() not attached');\n }\n\n // UpdateProps — wired by attachRenderMethods\n async updateProps(_props: Partial<P>): Promise<void> {\n throw new Error('updateProps() not attached — call render() first');\n }\n\n async close(): Promise<void> {\n throw new Error('close() not attached');\n }\n\n async destroy(): Promise<void> {\n throw new Error('destroy() not attached');\n }\n\n driver(name: string, deps?: Record<string, any>): any {\n warnDriverDeprecation(name);\n return resolveDriver(name, Component as unknown as BridgeComponentConstructor<P>, deps);\n }\n }\n\n // Wrapper that supports both `new Component(props)` and `Component(props)`\n function ComponentWrapper(this: any, props: P) {\n if (!(this instanceof ComponentWrapper)) {\n return new (ComponentWrapper as any)(props);\n }\n return new Component(props);\n }\n\n // Copy prototype so instanceof checks work\n ComponentWrapper.prototype = Component.prototype;\n\n // Static driver method\n ComponentWrapper.driver = function (name: string, deps?: Record<string, any>): any {\n warnDriverDeprecation(name);\n return resolveDriver(name, ComponentWrapper as unknown as BridgeComponentConstructor<P>, deps);\n };\n\n // Store options on prototype for later tasks to access\n (Component.prototype as any).__options = options;\n\n return ComponentWrapper as unknown as BridgeComponentConstructor<P>;\n}\n","export enum CLASS {\n VISIBLE = 'is-visible',\n INVISIBLE = 'is-invisible'\n}\n","import {EVENT} from './bridge/constants';\nimport {destroyElement, toCSS} from './bridge/props';\nimport {CLASS} from './enums';\n\nexport type ContainerConfig = {\n background?: string;\n overflow?: string;\n borderRadius?: string;\n fadeOnRender?: boolean;\n allowTransparency?: boolean;\n modal?: boolean;\n};\n\nexport function createContainerTemplate(config: ContainerConfig = {}) {\n const {\n background = '#fff',\n overflow,\n borderRadius,\n fadeOnRender = true,\n allowTransparency = false,\n modal = false\n } = config;\n\n return function containerTemplateFn({\n uid,\n frame,\n placeholder,\n doc,\n props,\n event,\n dimensions: {width, height}\n }: Record<any, any>): HTMLElement | undefined {\n if (!frame) {\n return;\n }\n\n if (allowTransparency) {\n frame.setAttribute('allowtransparency', 'true');\n frame.style.background = 'transparent';\n }\n\n const div = doc.createElement('div');\n div.setAttribute('id', uid);\n const style = doc.createElement('style');\n if (props?.cspNonce) {\n style.setAttribute('nonce', props.cspNonce);\n }\n\n if (modal) {\n const backdrop = doc.createElement('div');\n backdrop.classList.add('backdrop');\n\n style.appendChild(\n doc.createTextNode(`\n #${uid} {\n position: fixed;\n inset: 0;\n z-index: 99999;\n }\n #${uid} > .backdrop {\n position: fixed;\n inset: 0;\n background-color: rgba(40, 40, 40, 0.7);\n opacity: 0;\n transition: opacity 0.35s ease-in-out;\n will-change: opacity;\n }\n #${uid} > .backdrop.${CLASS.VISIBLE} {\n opacity: 1;\n }\n #${uid} > iframe {\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transition: opacity .2s ease-in-out;\n }\n #${uid} > iframe.${CLASS.INVISIBLE} {\n opacity: 0;\n }\n #${uid} > iframe.${CLASS.VISIBLE} {\n opacity: 1;\n }\n `)\n );\n\n div.appendChild(backdrop);\n div.appendChild(frame);\n if (placeholder) {\n div.appendChild(placeholder);\n }\n div.appendChild(style);\n\n event.on(EVENT.DISPLAY, () => {\n void backdrop.offsetHeight;\n requestAnimationFrame(() => backdrop.classList.add(CLASS.VISIBLE));\n });\n\n event.on(EVENT.BEFORE_CLOSE, () => {\n backdrop.classList.remove(CLASS.VISIBLE);\n });\n\n // Modal always hides iframe until RENDERED (backdrop covers the page)\n frame.classList.add(CLASS.INVISIBLE);\n if (fadeOnRender && placeholder) {\n placeholder.classList.add(CLASS.VISIBLE);\n }\n\n event.on(EVENT.RENDERED, () => {\n if (fadeOnRender) {\n if (placeholder) {\n placeholder.classList.remove(CLASS.VISIBLE);\n placeholder.classList.add(CLASS.INVISIBLE);\n }\n frame.classList.remove(CLASS.INVISIBLE);\n frame.classList.add(CLASS.VISIBLE);\n setTimeout(() => destroyElement(placeholder), 1);\n } else {\n if (placeholder) destroyElement(placeholder);\n frame.style.transition = 'none';\n frame.classList.remove(CLASS.INVISIBLE);\n frame.classList.add(CLASS.VISIBLE);\n }\n });\n\n // No RESIZE handler — fullscreen modal uses inset: 0\n } else {\n const innerStyle = props?.style || props?.innerStyle;\n const initialHeight =\n height === '0'\n ? '0'\n : toCSS(\n innerStyle?.base?.height || innerStyle?.height || (height === 'auto' ? 45 : height)\n );\n\n const containerStyles = [\n 'display: block',\n 'position: relative',\n `width: ${width}`,\n `height: ${allowTransparency ? height : initialHeight}`,\n `background: ${background}`\n ];\n if (overflow) {\n containerStyles.push(`overflow: ${overflow}`);\n }\n if (borderRadius) {\n containerStyles.push(`border-radius: ${borderRadius}`);\n }\n\n style.appendChild(\n doc.createTextNode(`\n #${uid} {\n ${containerStyles.join(';\\n ')};\n }\n #${uid} > iframe {\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transition: opacity .2s ease-in-out;\n }\n #${uid} > iframe.${CLASS.INVISIBLE} {\n opacity: 0;\n }\n #${uid} > iframe.${CLASS.VISIBLE} {\n opacity: 1;\n }\n `)\n );\n\n div.appendChild(frame);\n if (placeholder) {\n div.appendChild(placeholder);\n }\n div.appendChild(style);\n\n event.on(EVENT.RESIZE, ({width: newWidth, height: newHeight}: Record<any, any>) => {\n if (typeof newWidth === 'number') {\n div.style.width = toCSS(newWidth);\n }\n\n if (typeof newHeight === 'number') {\n div.style.height = toCSS(newHeight);\n }\n });\n\n // Only hide iframe when there's a placeholder to crossfade with.\n // Without a placeholder, the iframe starts visible — child apps hide their\n // own body (display:none) until ready, and parent components use their own\n // loading overlays (e.g., React Skeleton). This eliminates the timing gap\n // between skeleton removal (onLoad) and iframe visibility (RENDERED).\n if (placeholder) {\n frame.classList.add(CLASS.INVISIBLE);\n if (fadeOnRender) {\n placeholder.classList.add(CLASS.VISIBLE);\n }\n\n event.on(EVENT.RENDERED, () => {\n if (fadeOnRender) {\n placeholder.classList.remove(CLASS.VISIBLE);\n placeholder.classList.add(CLASS.INVISIBLE);\n frame.classList.remove(CLASS.INVISIBLE);\n frame.classList.add(CLASS.VISIBLE);\n setTimeout(() => destroyElement(placeholder), 1);\n } else {\n destroyElement(placeholder);\n frame.style.transition = 'none';\n frame.classList.remove(CLASS.INVISIBLE);\n frame.classList.add(CLASS.VISIBLE);\n }\n });\n }\n }\n\n return div;\n };\n}\n\nexport const containerTemplate = createContainerTemplate({\n overflow: 'hidden',\n borderRadius: 'var(--monei-radius, 4px)'\n});\n\nexport const modalContainerTemplate = createContainerTemplate({modal: true});\n","import {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport {containerTemplate} from '../container';\nimport type {CardInputProps} from './types';\nimport {transformStyle, validateComponentProps} from '../utils';\nimport {config} from '../config';\nimport {getPaymentMethods} from '../api';\n\nexport * from './types';\n\nconst getCreateTokenFunction = (ref: any) => {\n if (ref.state?.__createToken) {\n return ref.state.__createToken;\n }\n throw new Error('Index is not registered');\n};\n\nexport const createToken = async (\n component?: any,\n options?: any\n): Promise<{token?: string; error?: string}> => {\n console.warn('[MONEI] Standalone createToken() is deprecated. Use cardInput.submit() instead.');\n const {data} = await getCreateTokenFunction(component)(options);\n return data;\n};\n\nconst componentOptions: BridgeComponentOptions<CardInputProps> = {\n tag: 'monei-card-input',\n url: config.cardInputUrl,\n dimensions: {\n width: '100%',\n height: 'auto'\n },\n autoResize: {\n width: false,\n height: true\n },\n aliases: {\n sessionId: 'orderId',\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n }\n },\n validate: validateComponentProps,\n submit: (instance) => async (opts?: any) => {\n const createTokenFn = instance.state?.__createToken;\n if (!createTokenFn) {\n throw new Error('CardInput is not rendered or connection is pending — call render() first');\n }\n const {data} = await createTokenFn(opts);\n return data;\n },\n containerTemplate: (params) => {\n // Set createToken on state — uses callChild (available after Penpal connects).\n // createToken is only called after user fills card, so connection is always ready.\n params.state.__createToken = async (data: any = {}) => {\n const callChild = params.state.__callChild;\n if (!callChild) {\n throw new Error('CardInput instance is not registered');\n }\n return {data: await callChild('createToken', [data])};\n };\n return containerTemplate(params);\n },\n prerenderTemplate: ({doc, props}) => {\n const html = doc.createElement('html');\n const body = doc.createElement('body');\n body.style.margin = '0';\n body.style.background = '#fff';\n const div = doc.createElement('div');\n div.style.height = '45px';\n div.style.boxSizing = 'border-box';\n const style = props.style || (props as any).innerStyle;\n if (style?.base) {\n Object.assign(div.style, transformStyle(style.base));\n }\n if (style?.loading) {\n Object.assign(div.style, transformStyle(style.loading));\n }\n body.appendChild(div);\n html.appendChild(body);\n return html;\n }\n};\n\nexport const CardInput = createComponent<CardInputProps>(componentOptions);\n","import {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport type {ConfirmPaymentParams, PaymentModalProps} from './types';\nimport {config} from '../config';\nimport type {PaymentResult} from '../types';\nimport {createContainerTemplate} from '../container';\n\nexport * from './types';\n\nconst componentOptions: BridgeComponentOptions<PaymentModalProps> = {\n tag: 'monei-payment-modal',\n url: config.paymentModalUrl,\n dimensions: {\n width: '100%',\n height: '100%'\n },\n autoResize: {\n width: false,\n height: false\n },\n aliases: {\n style: 'innerStyle'\n },\n containerTemplate: createContainerTemplate({\n background: 'transparent',\n fadeOnRender: false,\n allowTransparency: true\n })\n};\n\nexport const PaymentModal = createComponent<PaymentModalProps>(componentOptions);\n\nexport const confirmPayment = (params: ConfirmPaymentParams) => {\n const rootNode = document.createElement('div');\n const bodyOverflow = document.body.style.overflow;\n\n // Apply fullscreen styles BEFORE rendering so the iframe gets the correct\n // viewport size from the start (prevents mobile media query from matching).\n Object.assign(document.body.style, {overflow: 'hidden'});\n Object.assign(rootNode.style, {\n position: 'fixed',\n overflow: 'hidden',\n display: 'block',\n top: '0',\n bottom: '0',\n left: '0',\n right: '0',\n width: '100%',\n height: '100%',\n zIndex: '99999'\n });\n document.body.appendChild(rootNode);\n\n let modal: InstanceType<typeof PaymentModal> | null = null;\n\n const cleanup = () => {\n void modal?.destroy();\n modal = null;\n Object.assign(document.body.style, {overflow: bodyOverflow});\n if (rootNode.parentNode) rootNode.parentNode.removeChild(rootNode);\n };\n\n return new Promise<PaymentResult>((resolve, reject) => {\n modal = new PaymentModal({\n ...params,\n isOpen: true,\n onResult: (result: any) => {\n resolve(result);\n cleanup();\n },\n onError: (error: any) => {\n reject(error);\n cleanup();\n }\n } as any);\n modal.render(rootNode).catch((err) => {\n cleanup();\n reject(err);\n });\n });\n};\n","import {createComponent} from '../bridge/create-component';\nimport {EVENT} from '../bridge/constants';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport {createToken, getPaymentMethods} from '../api';\nimport {config} from '../config';\nimport {containerTemplate} from '../container';\nimport {loadScript, parsePx} from '../utils';\nimport type {PayPalProps} from './types';\n\nexport * from './types';\n\nconst namespace = 'monei-paypal';\n\nconst onLoadPaypal = async (props: PayPalProps, state: any, src: string) => {\n const script = await loadScript(src, props.cspNonce, {namespace, cspNonce: props.cspNonce}, true);\n state.__scriptId = script.dataset.uidAuto;\n const defaultStyle: Record<string, any> = {\n layout: 'horizontal',\n tagline: false,\n height: 45\n };\n const radius = parsePx(props.style?.borderRadius ?? props.borderRadius);\n if (radius) defaultStyle.borderRadius = radius;\n const style = {...defaultStyle, ...props.style};\n style.height = parsePx(style.height, 45);\n props.onLoad?.(true);\n let token: string | undefined;\n await (window as any)[namespace]\n .Buttons({\n createOrder: async () => {\n try {\n const result = await createToken({\n paymentId: props.paymentId,\n accountId: props.accountId,\n sessionId: props.sessionId,\n amount: props.amount,\n currency: props.currency,\n transactionType: props.transactionType,\n paymentMethod: {\n paypal: {}\n }\n });\n ({token} = result);\n return result.paypal?.orderId;\n } catch (error) {\n props.onError?.(error);\n return;\n }\n },\n onApprove: function (data: any) {\n if (data.orderID) {\n props.onSubmit({token});\n } else {\n props.onError?.(data);\n }\n },\n onClick: function (_data: any, actions: any) {\n let shouldOpen = true;\n if (props.onBeforeOpen) {\n shouldOpen = props.onBeforeOpen();\n }\n if (!shouldOpen) return actions.reject();\n },\n style\n })\n .render(state.__container);\n};\n\nconst componentOptions: BridgeComponentOptions<PayPalProps> = {\n tag: namespace,\n url: config.paypalUrl,\n dimensions: {\n width: '100%',\n height: '0'\n },\n autoResize: {\n width: false,\n height: false\n },\n aliases: {\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n },\n __onLoadPayPal: {\n factory: ({props, state}) => onLoadPaypal.bind(null, props as PayPalProps, state),\n type: 'function'\n }\n },\n containerTemplate: (params) => {\n params.state.__container = params.container;\n if (!params.props.accountId && !params.props.paymentId) {\n throw new Error('You need to provide paymentId or accountId');\n }\n const container = containerTemplate(params);\n params.event.on(EVENT.DESTROY, () => {\n (window as any)[namespace]?.Buttons?.instances?.forEach((instance: any) => {\n instance.close();\n });\n const scriptId = params.state.__scriptId;\n if (scriptId) {\n const script = document.querySelector(`script[data-uid-auto=\"${scriptId}\"]`);\n if (script) {\n script.remove();\n }\n }\n });\n return container;\n }\n};\n\nexport const PayPal = createComponent<PayPalProps>(componentOptions);\n","import {createComponent} from '../bridge/create-component';\nimport {EVENT} from '../bridge/constants';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport type {BizumModalProps} from './types';\nimport {config} from '../config';\nimport {modalContainerTemplate} from '../container';\n\nconst componentOptions: BridgeComponentOptions<BizumModalProps> = {\n tag: 'monei-bizum',\n url: config.bizumUrl,\n autoResize: {\n width: false,\n height: false\n },\n containerTemplate: (params) => {\n if (!params.frame) return;\n if (params.props.isHidden) {\n const div = params.doc.createElement('div');\n div.setAttribute('id', params.uid);\n div.style.display = 'none';\n div.appendChild(params.frame);\n if (params.placeholder) div.appendChild(params.placeholder);\n return div;\n }\n return modalContainerTemplate(params);\n },\n defaultProps: ({event}) => ({\n onBeforeClose: () => {\n event.trigger(EVENT.BEFORE_CLOSE);\n }\n })\n};\n\nexport const BizumModal = createComponent<BizumModalProps>(componentOptions);\n","import {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport type {GetPaymentMethodsResponse} from '..';\nimport {getPaymentMethods} from '../api';\nimport {config} from '../config';\nimport {containerTemplate} from '../container';\nimport {validateComponentProps} from '../utils';\nimport {BizumModal} from './modal';\nimport type {BizumProps} from './types';\n\nexport * from './modal';\nexport * from './types';\n\nconst componentOptions: BridgeComponentOptions<BizumProps> = {\n tag: 'monei-bizum-button',\n url: config.bizumButtonUrl,\n dimensions: {\n width: '100%',\n height: 'auto'\n },\n autoResize: {\n width: false,\n height: true\n },\n aliases: {\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n },\n __onClick: {\n factory: ({props, state}) => {\n const rootNode = document.createElement('div');\n return ({amount, currency}: GetPaymentMethodsResponse) => {\n if (state.isOpen) return;\n let shouldOpen = true;\n if (props.onBeforeOpen) {\n shouldOpen = props.onBeforeOpen();\n }\n if (!shouldOpen) return;\n state.isOpen = true;\n if (!rootNode.parentNode) document.body.appendChild(rootNode);\n const bizumModal = new BizumModal({\n amount,\n currency,\n ...props,\n onClose: () => {\n state.isOpen = false;\n window.onpopstate = null;\n document.body.style.overflow = '';\n },\n isOpen: true\n } as any);\n window.history.pushState(null, '', window.location.href);\n window.onpopstate = () => bizumModal.updateProps({isOpen: false});\n Object.assign(document.body.style, {overflow: 'hidden'});\n return bizumModal.render(rootNode);\n };\n },\n type: 'function'\n }\n },\n validate: validateComponentProps,\n containerTemplate\n};\n\nexport const Bizum = createComponent<BizumProps>(componentOptions);\n","import {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport type {GooglePayProps} from './types';\nimport {config} from '../config';\nimport {containerTemplate} from '../container';\nimport {validateComponentProps} from '../utils';\nimport {getPaymentMethods} from '../api';\n\nexport * from './types';\n\nconst componentOptions: BridgeComponentOptions<GooglePayProps> = {\n tag: 'monei-google-pay',\n url: config.paymentRequestUrl,\n dimensions: {\n width: '100%',\n height: '0'\n },\n autoResize: {\n width: false,\n height: true\n },\n aliases: {\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n }\n },\n validate: validateComponentProps,\n containerTemplate\n};\n\nexport const GooglePay = createComponent<GooglePayProps>(componentOptions);\n","import {getPaymentMethods} from '../api';\nimport {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport {config} from '../config';\nimport {containerTemplate} from '../container';\nimport {validateComponentProps} from '../utils';\nimport type {PaymentRequestProps} from './types';\n\nexport * from './types';\n\nconst componentOptions: BridgeComponentOptions<PaymentRequestProps> = {\n tag: 'monei-payment-request',\n url: config.paymentRequestUrl,\n dimensions: {\n width: '100%',\n height: 'auto'\n },\n autoResize: {\n width: false,\n height: true\n },\n aliases: {\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n }\n },\n validate: validateComponentProps,\n containerTemplate\n};\n\nexport const PaymentRequest = createComponent<PaymentRequestProps>(componentOptions);\n","export enum NextActionType {\n CONFIRM = 'CONFIRM',\n FRICTIONLESS_CHALLENGE = 'FRICTIONLESS_CHALLENGE',\n BIZUM_CHALLENGE = 'BIZUM_CHALLENGE',\n CHALLENGE = 'CHALLENGE',\n COMPLETE = 'COMPLETE'\n}\n\nexport enum CardBrand {\n Visa = 'visa',\n Mastercard = 'mastercard',\n Amex = 'amex',\n Discover = 'discover',\n Diners = 'diners',\n JCB = 'jcb',\n Maestro = 'maestro',\n UnionPay = 'unionpay',\n Elo = 'elo',\n Hipercard = 'hipercard'\n}\n\nexport enum TransactionType {\n AUTH = 'AUTH',\n SALE = 'SALE',\n PAYOUT = 'PAYOUT',\n VERIF = 'VERIF'\n}\n\nexport interface PaymentResult {\n id: string;\n status: string;\n orderId?: string;\n amount?: number;\n currency?: string;\n accountId?: string;\n statusCode?: string;\n statusMessage?: string;\n nextAction?: {\n type: NextActionType;\n mustRedirect: boolean;\n redirectUrl: string;\n };\n}\n\nexport interface Customer {\n email?: string;\n name?: string;\n phone?: string;\n}\n\nexport interface Address {\n country?: string;\n city?: string;\n line1?: string;\n line2?: string;\n zip?: string;\n state?: string;\n}\n\nexport interface BillingDetails {\n name?: string;\n email?: string;\n phone?: string;\n company?: string;\n address?: Address;\n}\n\nexport interface PaymentMethod {\n card?: {\n cardholderName?: string;\n cardholderEmail?: string;\n };\n}\n\nexport type GetPaymentMethodsRequest = {\n accountId?: string;\n paymentId?: string;\n t?: number;\n};\n\nexport type GetPaymentMethodsResponse = {\n paymentMethods: string[];\n livemode: boolean;\n accountId: string;\n amount?: number;\n currency?: string;\n merchantName?: string;\n merchantUrl?: string;\n countryCode?: string;\n metadata: {\n card: {\n brands: CardBrand[];\n };\n paypal?: {\n clientId: string;\n merchantId: string;\n };\n googlePay?: {\n merchantId: string;\n cvcRequired?: boolean;\n };\n applePay?: {\n merchantId: string;\n };\n clickToPay?: {\n tokenSupport: boolean;\n preselected: boolean;\n visa: {\n srciDpaId: string;\n srcInitiatorId: string;\n };\n mastercard: {\n srciDpaId: string;\n srcInitiatorId: string;\n };\n discover: {\n srciDpaId: string;\n srcInitiatorId: string;\n };\n };\n };\n};\n\nexport type CreateTokenRequest = {\n accountId?: string;\n paymentId?: string;\n sessionId?: string;\n amount?: number;\n currency?: string;\n transactionType?: TransactionType;\n paymentMethod: {\n card?: {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n };\n paypal?: {};\n googlePay?: {\n token: string;\n };\n applePay?: {\n token: string;\n };\n bizum?: {\n phoneNumber: string;\n remember?: boolean;\n };\n clickToPay?: {\n token: string;\n cardBrand: string;\n };\n };\n};\n\nexport type CreateTokenResponse = {\n token?: string;\n /** @deprecated Use `token` instead */\n paymentToken?: string;\n error?: string;\n paypal?: {\n orderId: string;\n };\n};\n\nexport type CreatePaymentRequest = {\n accountId: string;\n pointOfSaleId: string;\n amount: number;\n currency: string;\n signature: string;\n};\n\nexport type SendPaymentReceiptRequest = {\n paymentId: string;\n signature: string;\n customerEmail?: string;\n language?: string;\n};\n\nexport type CreateApplePaySessionRequest = {\n accountId: string;\n validationUrl: string;\n domainName: string;\n displayName: string;\n};\n\nexport type ValidateBizumPhoneRequest = {\n accountId?: string;\n paymentId?: string;\n amount?: number;\n phoneNumber: string;\n};\n","import * as _utils from './utils';\nimport * as _api from './api';\n\nexport * from './card-input';\nexport * from './payment-modal';\nexport * from './paypal';\nexport * from './bizum';\nexport * from './google-pay';\nexport * from './payment-request';\nexport * from './config';\nexport * from './types';\nexport type {BridgeComponent, BridgeComponentConstructor} from './bridge/types';\nexport * from './framework-types';\nexport const api = _api;\nexport const utils = _utils;\n"],"x_google_ignoreList":[0,10],"mappings":"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"}
1
+ {"version":3,"file":"monei.umd.production.min.js","names":["Thumbmark","createToken","confirmPayment","shallowEqual","#remoteWindow","#allowedOrigins","#log","#validateReceivedMessage","#handleMessageFromRemoteWindow","#getOriginForSendingMessage","#isChildUsingDeprecatedProtocol","#port","#handleMessageFromPort","#messageCallbacks","#destroyPort","#concreteRemoteOrigin","#isAllowedOrigin","connect","WindowMessenger","componentOptions","componentOptions","createToken","componentOptions","componentOptions","componentOptions","componentOptions","_api","_utils"],"sources":["../../../node_modules/.pnpm/@thumbmarkjs+thumbmarkjs@1.7.6/node_modules/@thumbmarkjs/thumbmarkjs/dist/thumbmark.esm.js","../../shared/lib/utils.ts","../src/utils.ts","../src/config.ts","../src/api.ts","../src/bridge/event-emitter.ts","../src/bridge/drivers/react.ts","../src/bridge/drivers/vue.ts","../src/bridge/drivers/angular.ts","../src/bridge/drivers/index.ts","../../../node_modules/.pnpm/penpal@7.0.6/node_modules/penpal/dist/penpal.mjs","../../shared/lib/bridge-constants.ts","../src/bridge/constants.ts","../src/bridge/props.ts","../src/bridge/render.ts","../src/bridge/create-component.ts","../src/enums.ts","../src/container.ts","../src/card-input/index.ts","../src/payment-modal/index.ts","../src/paypal/index.ts","../src/bizum/modal.ts","../src/bizum/index.ts","../src/google-pay/index.ts","../src/payment-request/index.ts","../src/types.ts","../src/index.ts"],"sourcesContent":["const e=2592e5,t=\"thumbmark\",n=\"https://api.thumbmarkjs.com\",o={exclude:[],include:[],stabilize:[\"private\",\"iframe\"],logging:!0,timeout:5e3,cache_api_call:!0,cache_lifetime_in_ms:0,performance:!1,experimental:!1,property_name_factory:e=>`${t}_${e}`};let r={...o};function i(e,t){r[e]=t}const a={private:[{exclude:[\"canvas\"],browsers:[\"firefox\",\"safari>=17\",\"brave\"]},{exclude:[\"audio\"],browsers:[\"samsungbrowser\",\"safari\"]},{exclude:[\"fonts\"],browsers:[\"firefox\"]},{exclude:[\"audio.sampleHash\",\"hardware.deviceMemory\",\"header.acceptLanguage.q\",\"system.hardwareConcurrency\",\"plugins\"],browsers:[\"brave\"]},{exclude:[\"tls.extensions\"],browsers:[\"firefox\",\"chrome\",\"safari\"]},{exclude:[\"header.acceptLanguage\"],browsers:[\"edge\",\"chrome\"]}],iframe:[{exclude:[\"system.applePayVersion\",\"system.cookieEnabled\"],browsers:[\"safari\"]},{exclude:[\"permissions\"]}],vpn:[{exclude:[\"ip\"]}],always:[{exclude:[\"speech\"],browsers:[\"brave\",\"firefox\"]}]},s=\"undefined\"!=typeof window?window.OfflineAudioContext||window.webkitOfflineAudioContext:null;function c(e){let t=0;for(let n=0;n<e.length;++n)t+=Math.abs(e[n]);return t}function u(e,t,n){let o=[];for(let t=0;t<e[0].data.length;t++){let n=[];for(let o=0;o<e.length;o++)n.push(e[o].data[t]);o.push(l(n))}const r=new Uint8ClampedArray(o);return new ImageData(r,t,n)}function l(e){if(0===e.length)return 0;const t={};for(const n of e)t[n]=(t[n]||0)+1;let n=e[0];for(const e in t)t[e]>t[n]&&(n=parseInt(e,10));return n}function d(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const m=new Uint32Array([597399067,2869860233,951274213,2716044179]);function f(e,t){return e<<t|e>>>32-t}function p(e,t=0){if(t=t?0|t:0,\"string\"==typeof e&&(e=function(e){if(\"undefined\"!=typeof TextEncoder)return(new TextEncoder).encode(e).buffer;const t=[];for(let n=0;n<e.length;n++){let o=e.charCodeAt(n);o<128?t.push(o):o<2048?t.push(192|o>>6,128|63&o):o<55296||o>=57344?t.push(224|o>>12,128|o>>6&63,128|63&o):(n++,o=65536+((1023&o)<<10|1023&e.charCodeAt(n)),t.push(240|o>>18,128|o>>12&63,128|o>>6&63,128|63&o))}return new Uint8Array(t).buffer}(e)),!(e instanceof ArrayBuffer))throw new TypeError(\"Expected key to be ArrayBuffer or string\");const n=new Uint32Array([t,t,t,t]);!function(e,t){const n=e.byteLength/16|0,o=new Uint32Array(e,0,4*n);for(let e=0;e<n;e++){const n=o.subarray(4*e,4*(e+1));n[0]=Math.imul(n[0],m[0]),n[0]=f(n[0],15),n[0]=Math.imul(n[0],m[1]),t[0]=t[0]^n[0],t[0]=f(t[0],19),t[0]=t[0]+t[1],t[0]=Math.imul(t[0],5)+1444728091,n[1]=Math.imul(n[1],m[1]),n[1]=f(n[1],16),n[1]=Math.imul(n[1],m[2]),t[1]=t[1]^n[1],t[1]=f(t[1],17),t[1]=t[1]+t[2],t[1]=Math.imul(t[1],5)+197830471,n[2]=Math.imul(n[2],m[2]),n[2]=f(n[2],17),n[2]=Math.imul(n[2],m[3]),t[2]=t[2]^n[2],t[2]=f(t[2],15),t[2]=t[2]+t[3],t[2]=Math.imul(t[2],5)+2530024501,n[3]=Math.imul(n[3],m[3]),n[3]=f(n[3],18),n[3]=Math.imul(n[3],m[0]),t[3]=t[3]^n[3],t[3]=f(t[3],13),t[3]=t[3]+t[0],t[3]=Math.imul(t[3],5)+850148119}}(e,n),function(e,t){const n=e.byteLength/16|0,o=e.byteLength%16,r=new Uint32Array(4),i=new Uint8Array(e,16*n,o);switch(o){case 15:r[3]=r[3]^i[14]<<16;case 14:r[3]=r[3]^i[13]<<8;case 13:r[3]=r[3]^i[12],r[3]=Math.imul(r[3],m[3]),r[3]=f(r[3],18),r[3]=Math.imul(r[3],m[0]),t[3]=t[3]^r[3];case 12:r[2]=r[2]^i[11]<<24;case 11:r[2]=r[2]^i[10]<<16;case 10:r[2]=r[2]^i[9]<<8;case 9:r[2]=r[2]^i[8],r[2]=Math.imul(r[2],m[2]),r[2]=f(r[2],17),r[2]=Math.imul(r[2],m[3]),t[2]=t[2]^r[2];case 8:r[1]=r[1]^i[7]<<24;case 7:r[1]=r[1]^i[6]<<16;case 6:r[1]=r[1]^i[5]<<8;case 5:r[1]=r[1]^i[4],r[1]=Math.imul(r[1],m[1]),r[1]=f(r[1],16),r[1]=Math.imul(r[1],m[2]),t[1]=t[1]^r[1];case 4:r[0]=r[0]^i[3]<<24;case 3:r[0]=r[0]^i[2]<<16;case 2:r[0]=r[0]^i[1]<<8;case 1:r[0]=r[0]^i[0],r[0]=Math.imul(r[0],m[0]),r[0]=f(r[0],15),r[0]=Math.imul(r[0],m[1]),t[0]=t[0]^r[0]}}(e,n),function(e,t){t[0]=t[0]^e.byteLength,t[1]=t[1]^e.byteLength,t[2]=t[2]^e.byteLength,t[3]=t[3]^e.byteLength,t[0]=t[0]+t[1]|0,t[0]=t[0]+t[2]|0,t[0]=t[0]+t[3]|0,t[1]=t[1]+t[0]|0,t[2]=t[2]+t[0]|0,t[3]=t[3]+t[0]|0,t[0]=d(t[0]),t[1]=d(t[1]),t[2]=d(t[2]),t[3]=d(t[3]),t[0]=t[0]+t[1]|0,t[0]=t[0]+t[2]|0,t[0]=t[0]+t[3]|0,t[1]=t[1]+t[0]|0,t[2]=t[2]+t[0]|0,t[3]=t[3]+t[0]|0}(e,n);const o=new Uint8Array(n.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,\"0\"))).join(\"\")}const h=280;async function g(e){for(var t;!document.body;)await w(50);const n=document.createElement(\"iframe\");n.setAttribute(\"frameBorder\",\"0\");const o=n.style;o.setProperty(\"position\",\"fixed\"),o.setProperty(\"display\",\"block\",\"important\"),o.setProperty(\"visibility\",\"visible\"),o.setProperty(\"border\",\"0\"),o.setProperty(\"opacity\",\"0\"),n.src=\"about:blank\",document.body.appendChild(n);const r=n.contentDocument||(null===(t=n.contentWindow)||void 0===t?void 0:t.document);if(!r)throw new Error(\"Iframe document is not accessible\");e({iframe:r}),setTimeout((()=>{document.body.removeChild(n)}),0)}function w(e,t){return new Promise((n=>setTimeout(n,e,t)))}const v=[\"Arial\",\"Arial Black\",\"Arial Narrow\",\"Arial Rounded MT\",\"Arimo\",\"Archivo\",\"Barlow\",\"Bebas Neue\",\"Bitter\",\"Bookman\",\"Calibri\",\"Cabin\",\"Candara\",\"Century\",\"Century Gothic\",\"Comic Sans MS\",\"Constantia\",\"Courier\",\"Courier New\",\"Crimson Text\",\"DM Mono\",\"DM Sans\",\"DM Serif Display\",\"DM Serif Text\",\"Dosis\",\"Droid Sans\",\"Exo\",\"Fira Code\",\"Fira Sans\",\"Franklin Gothic Medium\",\"Garamond\",\"Geneva\",\"Georgia\",\"Gill Sans\",\"Helvetica\",\"Impact\",\"Inconsolata\",\"Indie Flower\",\"Inter\",\"Josefin Sans\",\"Karla\",\"Lato\",\"Lexend\",\"Lucida Bright\",\"Lucida Console\",\"Lucida Sans Unicode\",\"Manrope\",\"Merriweather\",\"Merriweather Sans\",\"Montserrat\",\"Myriad\",\"Noto Sans\",\"Nunito\",\"Nunito Sans\",\"Open Sans\",\"Optima\",\"Orbitron\",\"Oswald\",\"Pacifico\",\"Palatino\",\"Perpetua\",\"PT Sans\",\"PT Serif\",\"Poppins\",\"Prompt\",\"Public Sans\",\"Quicksand\",\"Rajdhani\",\"Recursive\",\"Roboto\",\"Roboto Condensed\",\"Rockwell\",\"Rubik\",\"Segoe Print\",\"Segoe Script\",\"Segoe UI\",\"Sora\",\"Source Sans Pro\",\"Space Mono\",\"Tahoma\",\"Taviraj\",\"Times\",\"Times New Roman\",\"Titillium Web\",\"Trebuchet MS\",\"Ubuntu\",\"Varela Round\",\"Verdana\",\"Work Sans\"],y=[\"monospace\",\"sans-serif\",\"serif\"];function S(e,t){return e.font=`72px ${t}`,e.measureText(\"WwMmLli0Oo\").width}function b(){var e;const t=document.createElement(\"canvas\"),n=null!==(e=t.getContext(\"webgl\"))&&void 0!==e?e:t.getContext(\"experimental-webgl\");if(n&&\"getParameter\"in n)try{const e=(n.getParameter(n.VENDOR)||\"\").toString(),t=(n.getParameter(n.RENDERER)||\"\").toString();let o={vendor:e,renderer:t,version:(n.getParameter(n.VERSION)||\"\").toString(),shadingLanguageVersion:(n.getParameter(n.SHADING_LANGUAGE_VERSION)||\"\").toString()};if(!t.length||!e.length){const e=n.getExtension(\"WEBGL_debug_renderer_info\");if(e){const t=(n.getParameter(e.UNMASKED_VENDOR_WEBGL)||\"\").toString(),r=(n.getParameter(e.UNMASKED_RENDERER_WEBGL)||\"\").toString();t&&(o.vendorUnmasked=t),r&&(o.rendererUnmasked=r)}}return o}catch(e){}return\"undefined\"}function M(){const e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],t[3]}const E=(e,t,n,o)=>{const r=(n-t)/o;let i=0;for(let n=0;n<o;n++){i+=e(t+(n+.5)*r)}return i*r};function P(e,t){const n={};return t.forEach((t=>{const o=function(e){if(0===e.length)return null;const t={};e.forEach((e=>{const n=String(e);t[n]=(t[n]||0)+1}));let n=e[0],o=1;return Object.keys(t).forEach((e=>{t[e]>o&&(n=e,o=t[e])})),n}(e.map((e=>t in e?e[t]:void 0)).filter((e=>void 0!==e)));o&&(n[t]=o)})),n}const x=[\"accelerometer\",\"accessibility\",\"accessibility-events\",\"ambient-light-sensor\",\"background-fetch\",\"background-sync\",\"bluetooth\",\"camera\",\"clipboard-read\",\"clipboard-write\",\"device-info\",\"display-capture\",\"gyroscope\",\"geolocation\",\"local-fonts\",\"magnetometer\",\"microphone\",\"midi\",\"nfc\",\"notifications\",\"payment-handler\",\"persistent-storage\",\"push\",\"speaker\",\"storage-access\",\"top-level-storage-access\",\"window-management\",\"query\"];function C(){if(\"undefined\"==typeof navigator)return{name:\"unknown\",version:\"unknown\"};const e=[{name:\"Brave\",detect:()=>!!navigator.brave}];for(const t of e)if(t.detect()){const e=A(navigator.userAgent);return{name:t.name,version:e.version}}return A(navigator.userAgent)}function A(e){var t,n,o,r,i,a;const s=[/(?<name>SamsungBrowser)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>EdgA|EdgiOS|Edg)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>OPR|OPX)\\/(?<version>\\d+(?:\\.\\d+)+)/,/Opera[\\s\\/](?<version>\\d+(?:\\.\\d+)+)/,/Opera Mini\\/(?<version>\\d+(?:\\.\\d+)+)/,/Opera Mobi\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>Vivaldi)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>CriOS)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>FxiOS)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>Chrome|Chromium)\\/(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>Firefox|Waterfox|Iceweasel|IceCat)\\/(?<version>\\d+(?:\\.\\d+)+)/,/Version\\/(?<version1>[\\d.]+).*Safari\\/[\\d.]+|(?<name>Safari)\\/(?<version2>[\\d.]+)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\\d+(?:\\.\\d+)+)/,/(?<name>[A-Za-z]+)\\/(?<version>\\d+(?:\\.\\d+)+)/],c={edg:\"Edge\",edga:\"Edge\",edgios:\"Edge\",opr:\"Opera\",opx:\"Opera\",crios:\"Chrome\",fxios:\"Firefox\",samsung:\"SamsungBrowser\",vivaldi:\"Vivaldi\"};for(const u of s){const s=e.match(u);if(s){let e=null===(t=s.groups)||void 0===t?void 0:t.name,l=(null===(n=s.groups)||void 0===n?void 0:n.version)||(null===(o=s.groups)||void 0===o?void 0:o.version1)||(null===(r=s.groups)||void 0===r?void 0:r.version2);if(e||!(null===(i=s.groups)||void 0===i?void 0:i.version1)&&!(null===(a=s.groups)||void 0===a?void 0:a.version2)||(e=\"Safari\"),!e&&u.source.includes(\"Opera Mini\")&&(e=\"Opera Mini\"),!e&&u.source.includes(\"Opera Mobi\")&&(e=\"Opera Mobi\"),!e&&u.source.includes(\"Opera\")&&(e=\"Opera\"),!e&&s[1]&&(e=s[1]),!l&&s[2]&&(l=s[2]),e){return{name:c[e.toLowerCase()]||e,version:l||\"unknown\"}}}}return{name:\"unknown\",version:\"unknown\"}}function _(){if(\"undefined\"==typeof navigator||!navigator.userAgent)return!1;const e=navigator.userAgent;return/Mobi|Android|iPhone|iPod|IEMobile|Opera Mini|Opera Mobi|webOS|BlackBerry|Windows Phone/i.test(e)&&!/iPad/i.test(e)}function T(){let e=[];const t={\"prefers-contrast\":[\"high\",\"more\",\"low\",\"less\",\"forced\",\"no-preference\"],\"any-hover\":[\"hover\",\"none\"],\"any-pointer\":[\"none\",\"coarse\",\"fine\"],pointer:[\"none\",\"coarse\",\"fine\"],hover:[\"hover\",\"none\"],update:[\"fast\",\"slow\"],\"inverted-colors\":[\"inverted\",\"none\"],\"prefers-reduced-motion\":[\"reduce\",\"no-preference\"],\"prefers-reduced-transparency\":[\"reduce\",\"no-preference\"],scripting:[\"none\",\"initial-only\",\"enabled\"],\"forced-colors\":[\"active\",\"none\"]};return Object.keys(t).forEach((n=>{t[n].forEach((t=>{matchMedia(`(${n}: ${t})`).matches&&e.push(`${n}: ${t}`)}))})),e}function k(){if(\"https:\"===window.location.protocol&&\"function\"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let t=15;t>0;t--)if(e(t))return t}catch(e){return 0}return 0}const R=\"SamsungBrowser\"!==C().name?1:3;let I,O=null;function L(e){const t=[];return function e(n){if(n&&n.toJSON&&\"function\"==typeof n.toJSON&&(n=n.toJSON()),void 0===n)return;if(\"number\"==typeof n)return isFinite(n)?\"\"+n:\"null\";if(\"object\"!=typeof n)return JSON.stringify(n);let o,r;if(Array.isArray(n)){for(r=\"[\",o=0;o<n.length;o++)o&&(r+=\",\"),r+=e(n[o])||\"null\";return r+\"]\"}if(null===n)return\"null\";if(-1!==t.indexOf(n))throw new TypeError(\"Converting circular structure to JSON\");const i=t.push(n)-1,a=Object.keys(n).sort();for(r=\"\",o=0;o<a.length;o++){const t=a[o],i=e(n[t]);i&&(r&&(r+=\",\"),r+=JSON.stringify(t)+\":\"+i)}return t.splice(i,1),\"{\"+r+\"}\"}(e)||\"\"}const B=[\"𝔄\",\"𝔅\",\"ℭ\",\"𝔇\",\"𝔈\",\"𝔉\",\"𝔸\",\"𝔹\",\"ℂ\",\"𝔻\",\"𝔼\",\"𝔽\"],N=[\"β\",\"ψ\",\"λ\",\"ε\",\"ζ\",\"α\",\"ξ\",\"μ\",\"ρ\",\"φ\",\"κ\",\"τ\",\"η\",\"σ\",\"ι\",\"ω\",\"γ\",\"ν\",\"χ\",\"δ\",\"θ\",\"π\",\"υ\",\"ο\"];function $(e,t){return`<math><mrow>${t}</mrow></math>`}function D(){let e=\"<mo>∏</mo>\";return B.forEach(((t,n)=>{const o=2*n,r=N.slice(o,o+2);2===r.length&&(e+=`<mmultiscripts><mi>${t}</mi><none/><mi>${r[1]}</mi><mprescripts></mprescripts><mi>${r[0]}</mi><none/></mmultiscripts>`)})),$(0,`<munderover><mmultiscripts>${e}</mmultiscripts></munderover>`)}function F(){const e=[];return B.forEach(((t,n)=>{const o=2*n,r=N.slice(o,o+2);2===r.length&&e.push($(0,`<mmultiscripts><mi>${t}</mi><none/><mi>${r[1]}</mi><mprescripts></mprescripts><mi>${r[0]}</mi><none/></mmultiscripts>`))})),e}const U={audio:async function(){return s?async function(){return new Promise(((e,t)=>{try{const t=new s(1,5e3,44100),n=t.createBufferSource(),o=t.createOscillator();o.frequency.value=1e3;const r=t.createDynamicsCompressor();let i;r.threshold.value=-50,r.knee.value=40,r.ratio.value=12,r.attack.value=0,r.release.value=.2,o.connect(r),r.connect(t.destination),o.start(),t.oncomplete=o=>{i=o.renderedBuffer.getChannelData(0),e({sampleHash:c(i),maxChannels:t.destination.maxChannelCount,channelCountMode:n.channelCountMode})},t.startRendering()}catch(e){console.error(\"Error creating audio fingerprint:\",e),t(e)}}))}():null},canvas:async function(){return new Promise((e=>{const t=Array.from({length:3},(()=>function(){const e=document.createElement(\"canvas\"),t=e.getContext(\"2d\");if(!t)return null;e.width=h,e.height=20;const n=t.createLinearGradient(0,0,e.width,e.height);n.addColorStop(0,\"red\"),n.addColorStop(1/6,\"orange\"),n.addColorStop(2/6,\"yellow\"),n.addColorStop(.5,\"green\"),n.addColorStop(4/6,\"blue\"),n.addColorStop(5/6,\"indigo\"),n.addColorStop(1,\"violet\"),t.fillStyle=n,t.fillRect(0,0,e.width,e.height);const o=\"Random Text WMwmil10Oo\";t.font=\"23.123px Arial\",t.fillStyle=\"black\",t.fillText(o,-5,15),t.fillStyle=\"rgba(0, 0, 255, 0.5)\",t.fillText(o,-3.3,17.7),t.beginPath(),t.moveTo(0,0),t.lineTo(2*e.width/7,e.height),t.strokeStyle=\"white\",t.lineWidth=2,t.stroke();const r=t.getImageData(0,0,e.width,e.height);return r}())).filter((e=>null!==e));0!==t.length?e({commonPixelsHash:p(u(t,h,20).data.toString()).toString()}):e(null)}))},fonts:async function(e){return new Promise((e=>{try{g((async({iframe:t})=>{const n=t.createElement(\"canvas\").getContext(\"2d\");if(!n)return void e(null);const o=y.map((e=>S(n,e)));let r={};v.forEach((e=>{const t=S(n,e);o.includes(t)||(r[e]=t)})),e(r)}))}catch(t){e(null)}}))},hardware:function(){return new Promise(((e,t)=>{const n=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,o=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:b(),architecture:M(),deviceMemory:n.toString()||\"undefined\",jsHeapSizeLimit:o.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:E(Math.asin,-1,1,97),cos:E(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:E(Math.sin,-Math.PI,Math.PI,97),tan:E(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){const t=(null==e?void 0:e.permissions_to_check)||x;return P(await Promise.all(Array.from({length:3},(()=>async function(e){const t={};for(const n of e)try{const e=await navigator.permissions.query({name:n});t[n]=e.state.toString()}catch(e){}return t}(t)))),t)},plugins:async function(){const e=[];if(navigator.plugins)for(let t=0;t<navigator.plugins.length;t++){const n=navigator.plugins[t];e.push([n.name,n.filename,n.description].join(\"|\"))}return new Promise((t=>{t({plugins:e})}))},screen:function(){return new Promise((e=>{if(\"undefined\"==typeof matchMedia||\"undefined\"==typeof screen)return void e(null);const t={is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:T()};_()&&navigator.maxTouchPoints>0&&(t.resolution=function(){const e=window.screen.width,t=window.screen.height,n=Math.max(e,t).toString(),o=Math.min(e,t).toString();return`${n}x${o}`}()),e(t)}))},system:function(){return new Promise((e=>{const t=C();e({platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:t.name,version:t.version},mobile:_(),applePayVersion:k(),cookieEnabled:window.navigator.cookieEnabled})}))},webgl:async function(){\"undefined\"!=typeof document&&(I=document.createElement(\"canvas\"),I.width=200,I.height=100,O=I.getContext(\"webgl\"));try{if(!O)throw new Error(\"WebGL not supported\");const e=Array.from({length:R},(()=>function(){try{if(!O)throw new Error(\"WebGL not supported\");const e=\"\\n attribute vec2 position;\\n void main() {\\n gl_Position = vec4(position, 0.0, 1.0);\\n }\\n \",t=\"\\n precision mediump float;\\n void main() {\\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\\n }\\n \",n=O.createShader(O.VERTEX_SHADER),o=O.createShader(O.FRAGMENT_SHADER);if(!n||!o)throw new Error(\"Failed to create shaders\");if(O.shaderSource(n,e),O.shaderSource(o,t),O.compileShader(n),!O.getShaderParameter(n,O.COMPILE_STATUS))throw new Error(\"Vertex shader compilation failed: \"+O.getShaderInfoLog(n));if(O.compileShader(o),!O.getShaderParameter(o,O.COMPILE_STATUS))throw new Error(\"Fragment shader compilation failed: \"+O.getShaderInfoLog(o));const r=O.createProgram();if(!r)throw new Error(\"Failed to create shader program\");if(O.attachShader(r,n),O.attachShader(r,o),O.linkProgram(r),!O.getProgramParameter(r,O.LINK_STATUS))throw new Error(\"Shader program linking failed: \"+O.getProgramInfoLog(r));O.useProgram(r);const i=137,a=new Float32Array(4*i),s=2*Math.PI/i;for(let e=0;e<i;e++){const t=e*s;a[4*e]=0,a[4*e+1]=0,a[4*e+2]=Math.cos(t)*(I.width/2),a[4*e+3]=Math.sin(t)*(I.height/2)}const c=O.createBuffer();O.bindBuffer(O.ARRAY_BUFFER,c),O.bufferData(O.ARRAY_BUFFER,a,O.STATIC_DRAW);const u=O.getAttribLocation(r,\"position\");O.enableVertexAttribArray(u),O.vertexAttribPointer(u,2,O.FLOAT,!1,0,0),O.viewport(0,0,I.width,I.height),O.clearColor(0,0,0,1),O.clear(O.COLOR_BUFFER_BIT),O.drawArrays(O.LINES,0,2*i);const l=new Uint8ClampedArray(I.width*I.height*4);O.readPixels(0,0,I.width,I.height,O.RGBA,O.UNSIGNED_BYTE,l);return new ImageData(l,I.width,I.height)}catch(e){return new ImageData(1,1)}finally{O&&(O.bindBuffer(O.ARRAY_BUFFER,null),O.useProgram(null),O.viewport(0,0,O.drawingBufferWidth,O.drawingBufferHeight),O.clearColor(0,0,0,0))}}()));return{commonPixelsHash:p(u(e,I.width,I.height).data.toString()).toString()}}catch(e){return{webgl:\"unsupported\"}}},webrtc:async function(e){return new Promise((t=>{try{const n=window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection;if(!n)return void t({supported:!1,error:\"WebRTC not supported\"});const o=new n({iceCandidatePoolSize:1,iceServers:[]});o.createDataChannel(\"\");(async()=>{try{const n={offerToReceiveAudio:!0,offerToReceiveVideo:!0},r=await o.createOffer(n);await o.setLocalDescription(r);const i=r.sdp||\"\",a=[...new Set((i.match(/extmap:\\d+ [^\\n\\r]+/g)||[]).map((e=>e.replace(/extmap:\\d+ /,\"\"))))].sort(),s=e=>{const t=i.match(new RegExp(`m=${e} [^\\\\s]+ [^\\\\s]+ ([^\\\\n\\\\r]+)`));return t?t[1].split(\" \"):[]},c=(e,t)=>t.map((t=>{const n=new RegExp(`(rtpmap|fmtp|rtcp-fb):${t} (.+)`,\"g\"),o=[...i.matchAll(n)];if(!o.length)return null;const r={};return o.forEach((t=>{const[n,o,i]=t,a=i.split(\"/\");\"rtpmap\"===o?(r.mimeType=`${e}/${a[0]}`,r.clockRate=+a[1],\"audio\"===e&&(r.channels=+a[2]||1)):\"rtcp-fb\"===o?(r.feedbackSupport=r.feedbackSupport||[],r.feedbackSupport.push(i)):\"fmtp\"===o&&(r.sdpFmtpLine=i)})),r})).filter(Boolean),u=c(\"audio\",s(\"audio\")),l=c(\"video\",s(\"video\")),d={audio:{count:u.length,hash:p(L(u))},video:{count:l.length,hash:p(L(l))},extensionsHash:p(L(a))},m=(null==e?void 0:e.timeout)||5e3,f=Math.floor(.9*m),h=await new Promise((e=>{const t=setTimeout((()=>{o.removeEventListener(\"icecandidate\",n),o.close(),e({supported:!0,...d,timeout:!0})}),f),n=r=>{const i=r.candidate;i&&i.candidate&&(clearTimeout(t),o.removeEventListener(\"icecandidate\",n),o.close(),e({supported:!0,...d,candidateType:i.type||\"\"}))};o.addEventListener(\"icecandidate\",n)}));t({details:h,hash:p(L(h))})}catch(e){o.close(),t({supported:!0,error:`WebRTC offer failed: ${e.message}`})}})()}catch(e){t({supported:!1,error:`WebRTC error: ${e.message}`})}}))},speech:async function(){return new Promise((e=>{try{if(\"undefined\"==typeof window||!window.speechSynthesis||\"function\"!=typeof window.speechSynthesis.getVoices)return void e({supported:!1,error:\"Speech Synthesis API not supported\"});let t=!1,n=null;const o=o=>{if(!t){t=!0,n&&clearTimeout(n);try{const t=o.map((e=>{const t=e=>e.replace(/\\\\/g,\"\\\\\\\\\").replace(/,/g,\"\\\\,\");return[t(e.voiceURI||\"\"),t(e.name||\"\"),t(e.lang||\"\"),e.localService?\"1\":\"0\",e.default?\"1\":\"0\"].join(\",\")}));t.sort();const n={voiceCount:o.length,voicesHash:p(L(t))};e({details:n,hash:p(L(n))})}catch(t){e({supported:!0,error:`Voice processing failed: ${t.message}`})}}},r=window.speechSynthesis.getVoices();if(r.length>0)return void o(r);n=setTimeout((()=>{const e=window.speechSynthesis.getVoices();o(e)}),800);const i=()=>{window.speechSynthesis.removeEventListener(\"voiceschanged\",i);const e=window.speechSynthesis.getVoices();o(e)};window.speechSynthesis.addEventListener(\"voiceschanged\",i)}catch(t){e({supported:!1,error:`Speech Synthesis error: ${t.message}`})}}))}},V={mathml:async function(){return new Promise((e=>{try{g((async({iframe:t})=>{try{if(!function(e){try{const t=e.createElement(\"math\");t.innerHTML=\"<mrow><mi>x</mi></mrow>\",t.style.position=\"absolute\",t.style.visibility=\"hidden\",e.body.appendChild(t);const n=t.getBoundingClientRect();return e.body.removeChild(t),n.width>0&&n.height>0}catch(e){return!1}}(t))return void e({supported:!1,error:\"MathML not supported\"});const n=[$(\"integral\",\"<msubsup><mo>∫</mo><mi>a</mi><mi>b</mi></msubsup><mfrac><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mfrac><mi>dx</mi>\"),$(\"fraction\",\"<mfrac><mrow><mi>π</mi><mo>×</mo><msup><mi>r</mi><mn>2</mn></msup></mrow><mrow><mn>2</mn><mi>σ</mi></mrow></mfrac>\"),$(\"matrix\",\"<mo>[</mo><mtable><mtr><mtd><mi>α</mi></mtd><mtd><mi>β</mi></mtd></mtr><mtr><mtd><mi>γ</mi></mtd><mtd><mi>δ</mi></mtd></mtr></mtable><mo>]</mo>\"),D(),...F()],o=[];let r=\"\";n.forEach(((e,n)=>{const i=function(e,t){try{const n=t.createElement(\"math\");n.innerHTML=e.replace(/<\\/?math>/g,\"\"),n.style.whiteSpace=\"nowrap\",n.style.position=\"absolute\",n.style.visibility=\"hidden\",n.style.top=\"-9999px\",t.body.appendChild(n);const o=n.getBoundingClientRect(),r=(t.defaultView||window).getComputedStyle(n),i={dimensions:{width:o.width,height:o.height},fontInfo:{fontFamily:r.fontFamily,fontSize:r.fontSize,fontWeight:r.fontWeight,fontStyle:r.fontStyle,lineHeight:r.lineHeight,fontVariant:r.fontVariant||\"normal\",fontStretch:r.fontStretch||\"normal\",fontSizeAdjust:r.fontSizeAdjust||\"none\",textRendering:r.textRendering||\"auto\",fontFeatureSettings:r.fontFeatureSettings||\"normal\",fontVariantNumeric:r.fontVariantNumeric||\"normal\",fontKerning:r.fontKerning||\"auto\"}};return t.body.removeChild(n),i}catch(e){return{error:e.message}}}(e,t);o.push({width:i.dimensions.width,height:i.dimensions.height}),0===n&&i.fontInfo&&(r=p(L(i.fontInfo)))}));const i={fontStyleHash:r,dimensions:o};e({details:i,hash:p(L(i))})}catch(t){e({supported:!1,error:`MathML error: ${t.message}`})}}))}catch(t){e({supported:!1,error:`MathML error: ${t.message}`})}}))}},j={},W={timeout:\"true\"},H=(e,t,n)=>{j[e]=t};function G(){return\"1.7.6\"}function z(e,t){var n,o;let r=C();if(\"unknown\"===r.name&&t){const e=null===(n=t.system)||void 0===n?void 0:n.browser;(null==e?void 0:e.name)&&(r={name:String(e.name),version:String(e.version||\"unknown\")})}const i=r.name.toLowerCase(),s=parseInt(r.version.split(\".\")[0]||\"0\",10),c=[...(null==e?void 0:e.exclude)||[]],u=[...new Set([...(null==e?void 0:e.stabilize)||[],\"always\"])];for(const e of u){const t=a[e];if(t)for(const e of t)\"browsers\"in e&&!(null===(o=e.browsers)||void 0===o?void 0:o.some((e=>{const t=e.match(/(.+?)(>=)(\\d+)/);return t?i===t[1]&&s>=+t[3]:i===e})))||c.push(...e.exclude)}return c}function J(e,t){const n=z(t,e),o=(null==t?void 0:t.include)||[];return function e(t,r=\"\"){const i={};for(const[a,s]of Object.entries(t)){const t=r?`${r}.${a}`:a;if(\"object\"!=typeof s||Array.isArray(s)||null===s){const e=n.some((e=>t.startsWith(e))),r=o.some((e=>t.startsWith(e)));e&&!r||(i[a]=s)}else{const n=e(s,t);Object.keys(n).length>0&&(i[a]=n)}}return i}(e)}const q=\"visitor_id\";function K(e){return e.storage_property_name?e.storage_property_name:e.property_name_factory(q)}const Y=`${t}_${q}`;function X(e,t){try{localStorage.setItem(K(t),e)}catch(e){}}const Z=\"cache\";function Q(e){try{const t=localStorage.getItem(e.property_name_factory(Z)),n=JSON.parse(t);return n||{}}catch(e){}return{}}function ee(t){return t.cache_lifetime_in_ms>e?Date.now()+e:Date.now()+t.cache_lifetime_in_ms}class te extends Error{constructor(e){super(`HTTP error! status: ${e}`),this.status=e}}let ne=null,oe=null;async function re(e,t,n,o){const r=await fetch(e,{method:\"POST\",headers:{\"x-api-key\":n.api_key,Authorization:\"custom-authorized\",\"Content-Type\":\"application/json\"},body:JSON.stringify(t)});if(!r.ok)throw new te(r.status);const i=await r.json();return i.visitorId&&i.visitorId!==o&&X(i.visitorId,n),oe=i,function(e,t){if(!e.cache_api_call||!e.cache_lifetime_in_ms)return;!function(e,t){const n={...Q(e),...t};try{localStorage.setItem(e.property_name_factory(Z),JSON.stringify(n))}catch(e){}}(e,{apiResponseExpiry:ee(e),apiResponse:t})}(n,i),i}const ie=(e,t)=>{if(e.cache_api_call){if(oe)return Promise.resolve(oe);const t=function(e){const t=Q(e);if(t&&t.apiResponse&&t.apiResponseExpiry&&Date.now()<=t.apiResponseExpiry)return t.apiResponse;return}(e);if(t)return Promise.resolve(t);if(ne)return ne}const o=`${e.api_endpoint||n}/thumbmark`,r=function(e){try{const t=K(e);let n=localStorage.getItem(t);return n||t===Y||(n=localStorage.getItem(Y),n&&X(n,e)),n}catch(e){return null}}(e),i={components:t,options:e,clientHash:p(L(t)),version:\"1.7.6\"};if(r&&(i.visitorId=r),e.metadata){const t=\"function\"==typeof e.metadata?e.metadata():e.metadata;if(t){(\"string\"==typeof t?t.length:JSON.stringify(t).length)>1e3?console.error(\"ThumbmarkJS: Metadata exceeds 1000 characters. Skipping metadata.\"):i.metadata=t}}const a=e.timeout||5e3,s=async function(e,t,n,o){for(let r=0;r<3;r++){r>0&&await new Promise((e=>setTimeout(e,200*r)));try{return await re(e,t,n,o)}catch(e){if(e instanceof te||2===r)throw e}}throw new Error(\"Unreachable\")}(o,i,e,r).finally((()=>{ne=null})),c=new Promise((t=>{setTimeout((()=>{const n=Q(e);t((null==n?void 0:n.apiResponse)||{info:{timed_out:!0},...r&&{visitorId:r}})}),a)}));return ne=Promise.race([s,c]),ne};async function ae(e,t={}){var r,i;if(\"undefined\"==typeof document||\"undefined\"==typeof window)return{thumbmark:\"\",components:{},info:{},version:\"1.7.6\",error:[{type:\"fatal\",message:\"Browser environment required\"}]};try{const a={...o,...e},s=[],c=a.logging&&!sessionStorage.getItem(\"_tmjs_l\")&&Math.random()<1e-4,u={...U,...j,...t},{elapsed:l,resolvedComponents:d,errors:m}=await se(u,a);s.push(...m);let f={},h={};if(c||a.experimental){const{elapsed:e,resolvedComponents:t,errors:n}=await se(V,a);f=t,h=e,s.push(...n)}const g=a.api_key?ie(a,d):null;let w=null;if(g)try{w=await g}catch(e){if(e instanceof te&&403===e.status)return{error:[{type:\"api_unauthorized\",message:\"Invalid API key or quota exceeded\"}],components:{},info:{},version:\"1.7.6\",thumbmark:\"\"};s.push({type:e instanceof te?\"api_error\":\"network_error\",message:e instanceof Error?e.message:String(e)})}(null===(r=null==w?void 0:w.info)||void 0===r?void 0:r.timed_out)&&s.push({type:\"api_timeout\",message:\"API request timed out\"});const v={...l,...h},y=a.performance?{elapsed:v}:{},S=J((null==w?void 0:w.components)||{},a),b={...d,...S},M=(null==w?void 0:w.info)||{uniqueness:{score:\"api only\"}},E=null!==(i=null==w?void 0:w.thumbmark)&&void 0!==i?i:p(L(b)),P=\"1.7.6\";c&&async function(e,t,o,r={},i=[]){var a;const s=`${n}/log`,c={thumbmark:e,components:t,experimental:r,version:\"1.7.6\",options:o,path:null===(a=null===window||void 0===window?void 0:window.location)||void 0===a?void 0:a.pathname,...i.length>0&&{errors:i}};sessionStorage.setItem(\"_tmjs_l\",\"1\");try{await fetch(s,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(c)})}catch(e){}}(E,b,a,f,s).catch((()=>{}));return{...(null==w?void 0:w.visitorId)&&{visitorId:w.visitorId},thumbmark:E,components:b,info:M,version:P,...y,...s.length>0&&{error:s},...Object.keys(f).length>0&&a.experimental&&{experimental:f},...(null==w?void 0:w.requestId)&&{requestId:w.requestId},...(null==w?void 0:w.metadata)&&{metadata:w.metadata}}}catch(e){return{thumbmark:\"\",components:{},info:{},version:\"1.7.6\",error:[{type:\"fatal\",message:e instanceof Error?e.message:String(e)}]}}}async function se(e,t){const n={...o,...t},r=z(n).filter((e=>!e.includes(\".\"))),i=Object.entries(e).filter((([e])=>{var t;return!(null===(t=null==n?void 0:n.exclude)||void 0===t?void 0:t.includes(e))})).filter((([e])=>!r.includes(e))).filter((([e])=>{var t,o,r,i;return(null===(t=null==n?void 0:n.include)||void 0===t?void 0:t.some((e=>e.includes(\".\"))))?null===(o=null==n?void 0:n.include)||void 0===o?void 0:o.some((t=>t.startsWith(e))):0===(null===(r=null==n?void 0:n.include)||void 0===r?void 0:r.length)||(null===(i=null==n?void 0:n.include)||void 0===i?void 0:i.includes(e))})),a=i.map((([e])=>e)),s=i.map((([e,n])=>n(t))),c=await function(e,t,n){return Promise.all(e.map((e=>{const o=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-o}))).catch((e=>({value:n,elapsed:performance.now()-o,error:e instanceof Error?e.message:String(e)}))),(r=t,i=n,new Promise((e=>{setTimeout((()=>e(i)),r)}))).then((e=>({value:e,elapsed:performance.now()-o,error:\"timeout\"})))]);var r,i})))}(s,(null==n?void 0:n.timeout)||5e3,W),u={},l={},d=[];c.forEach(((e,t)=>{var n;const o=a[t];u[o]=null!==(n=e.elapsed)&&void 0!==n?n:0,\"timeout\"===e.error?d.push({type:\"component_timeout\",message:`Component '${o}' timed out`,component:o}):e.error&&d.push({type:\"component_error\",message:e.error,component:o}),null!=e.value&&(l[o]=e.value)}));const m=J(l,n);return{elapsed:u,resolvedComponents:m,errors:d}}async function ce(){return(await ae(r)).components}async function ue(e){try{const t=await ae(r);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}}async function le(){try{const{elapsed:e,resolvedComponents:t}=await se(U,r);return{...t,elapsed:e}}catch(e){throw e}}class de{constructor(e){this.options={...o,...e},this.customComponents={}}async get(e){return ae({...this.options,...e},this.customComponents)}getVersion(){return\"1.7.6\"}includeComponent(e,t){this.customComponents[e]=t}}export{de as Thumbmark,J as filterThumbmarkData,ue as getFingerprint,ce as getFingerprintData,le as getFingerprintPerformance,ae as getThumbmark,G as getVersion,H as includeComponent,i as setOption,a as stabilizationExclusionRules,L as stableStringify};\n//# sourceMappingURL=thumbmark.esm.js.map\n","export const openInNewTab = (href: string) => {\n Object.assign(document.createElement('a'), {\n target: '_blank',\n href\n }).click();\n};\n\n// Compute relative luminance (WCAG 2.0) without polished dependency\nconst HEX_RE = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;\nconst RGB_RE = /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)/;\n\nexport function parseHexColor(hex: string): [number, number, number] {\n const h = hex.replace('#', '');\n const full = h.length === 3 ? h[0] + h[0] + h[1] + h[1] + h[2] + h[2] : h;\n return [\n parseInt(full.slice(0, 2), 16),\n parseInt(full.slice(2, 4), 16),\n parseInt(full.slice(4, 6), 16)\n ];\n}\n\nfunction parseColor(color: string): [number, number, number] | null {\n if (HEX_RE.test(color)) return parseHexColor(color);\n const match = color.match(RGB_RE);\n if (match) {\n // Reject semi-transparent rgba — luminance depends on the unknown base background\n if (match[4] !== undefined && parseFloat(match[4]) < 1) return null;\n return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];\n }\n return null;\n}\n\nfunction srgbToLinear(c: number): number {\n const s = c / 255;\n return s <= 0.04045 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);\n}\n\nfunction getLuminance(color: string): number {\n const rgb = parseColor(color);\n if (!rgb) return NaN;\n return (\n 0.2126 * srgbToLinear(rgb[0]) + 0.7152 * srgbToLinear(rgb[1]) + 0.0722 * srgbToLinear(rgb[2])\n );\n}\n\n// NaN luminance (unparseable input) assumes light background for safe dark text\nexport const isDark = (bgColor: string) => getLuminance(bgColor) < 0.5;\n\nexport const getTextColor = (bgColor: string) => (isDark(bgColor) ? '#F3F4F6' : '#374151');\n\n/** Parse a CSS px value — accepts \"10px\", \"10\", or 10. Returns number or defaultValue. */\nexport const parsePx = (value?: string | number, defaultValue?: number): number | undefined => {\n if (value == null) return defaultValue;\n if (typeof value === 'number') return value;\n const parsed = parseInt(value);\n return isNaN(parsed) ? defaultValue : parsed;\n};\n\n/** Convert a value to CSS px string — 10 → \"10px\", \"10px\" → \"10px\", undefined → defaultValue */\nexport const toCssPx = (value?: string | number, defaultValue?: string): string | undefined => {\n if (value == null) return defaultValue;\n return typeof value === 'number' ? `${value}px` : value || defaultValue;\n};\n\nexport const appendHiddenField = (form: HTMLFormElement, name: string, value?: string) => {\n if (!value) return;\n const field = document.createElement('input');\n field.type = 'hidden';\n field.name = name;\n field.value = value;\n form.appendChild(field);\n};\n\nexport const antiKeylogger = () => {\n // @ts-ignore\n window.onkeydown = undefined;\n // @ts-ignore\n window.onkeypress = undefined;\n // @ts-ignore\n window.onkeyup = undefined;\n // @ts-ignore\n document.onkeydown = undefined;\n // @ts-ignore\n document.onkeypress = undefined;\n // @ts-ignore\n document.onkeyup = undefined;\n};\n\nexport const formatShopName = (shopName = '') => {\n return shopName.split(' | ')[0];\n};\n\nconst lngMap: Record<string, string> = {\n ca: 'es_ES',\n en: 'en_GB',\n lv: 'en_GB',\n et: 'en_GB'\n};\n\nexport const getLocale = (language?: string) => {\n if (!language) return undefined;\n if (language.length > 2) return language.replace('-', '_');\n if (lngMap[language]) return lngMap[language];\n return `${language}_${language.toUpperCase()}`;\n};\n\nexport const openPopup = (params: {\n url?: string;\n title?: string;\n width: number;\n height: number;\n}): Window => {\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth\n ? window.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : screen.width;\n const height = window.innerHeight\n ? window.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : screen.height;\n\n const left = (width - params.width) / 2 + dualScreenLeft;\n const top = (height - params.height) / 2 + dualScreenTop;\n const newWindow = window.open(\n params.url || '',\n params.title,\n `\n scrollbars=yes,\n width=${params.width}, \n height=${params.height}, \n top=${top}, \n left=${left}\n `\n );\n\n if (!newWindow) {\n throw new Error('POPUP_BLOCKED');\n }\n if (newWindow.focus) newWindow.focus();\n return newWindow;\n};\n\nexport const isSafari = () => /apple/i.test(navigator.vendor);\n\nexport const obfuscatePhone = (phoneNumber?: string) => {\n if (!phoneNumber) return undefined;\n return phoneNumber.replace(/(\\d{2})(\\d{6})(\\d{3})/, '$1******$3');\n};\n","import {Thumbmark} from '@thumbmarkjs/thumbmarkjs';\nimport type {CSSObject} from './types/css';\nimport type {GetPaymentMethodsResponse} from './types';\n\nexport const transformStyle = (style: CSSObject) => {\n return Object.keys(style).reduce<any>((result, prop) => {\n if (typeof style[prop] === 'string') {\n result[prop] = style[prop];\n } else {\n result[prop] = `${style[prop]}px`;\n }\n return result;\n }, {});\n};\n\nexport const loadScript = (\n src: string,\n nonce?: string,\n dataset?: Record<string, string | undefined>,\n forceReload?: boolean\n): Promise<HTMLScriptElement> => {\n return new Promise((resolve, reject) => {\n const existingScript = Array.from(document.scripts).find((s) => s.src === src);\n if (existingScript) {\n if (forceReload) {\n existingScript.remove();\n } else {\n resolve(existingScript);\n return;\n }\n }\n const script = document.createElement('script');\n script.src = src;\n script.onload = () => resolve(script);\n script.onerror = (error) => reject(error);\n if (nonce) {\n script.setAttribute('nonce', nonce);\n }\n if (dataset) {\n Object.keys(dataset).forEach((key) => {\n if (dataset[key]) {\n script.dataset[key] = dataset[key];\n }\n });\n }\n document.head.appendChild(script);\n });\n};\n\nexport const stringify = (obj: Record<string, any>) => {\n return Object.keys(obj)\n .reduce<string[]>((result, key) => {\n if (obj[key] !== undefined) {\n result.push(`${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`);\n }\n return result;\n }, [])\n .join('&');\n};\n\nexport const fixLocalstorage = () => {\n let localStorage: Storage;\n try {\n ({localStorage} = window);\n } catch (_error) {\n const localStorageMock = (() => {\n let store = new Map();\n return {\n getItem(key: string): string {\n return store.get(key);\n },\n\n setItem: function (key: string, value: string) {\n store.set(key, value);\n },\n\n clear: function () {\n store = new Map();\n },\n\n removeItem: function (key: string) {\n store.delete(key);\n }\n };\n })();\n\n Object.defineProperty(window, 'localStorage', {value: localStorageMock});\n localStorage = localStorageMock as Storage;\n }\n return localStorage;\n};\n\nconst getLanguage = () => {\n let lang;\n const localStorage = fixLocalstorage();\n try {\n lang = localStorage.getItem('i18nextLng');\n } catch (_error) {}\n if (lang) {\n return lang.split('-')[0];\n }\n return '';\n};\n\n// parsePx and toCssPx — use from @monei-js/shared/lib/utils\nexport {parsePx, toCssPx} from '@monei-js/shared/lib/utils';\n\nconst safe = (fn: () => unknown): string => {\n try {\n return String(fn() ?? '');\n } catch {\n return '';\n }\n};\n\nexport const getClientEnv = () => {\n const env = [\n window.screen.colorDepth,\n window.screen.height,\n window.screen.width,\n new Date().getTimezoneOffset(),\n getLanguage(),\n safe(() => Intl.DateTimeFormat().resolvedOptions().timeZone),\n safe(() => window.devicePixelRatio),\n safe(() => navigator.hardwareConcurrency),\n safe(() => (navigator as any).deviceMemory),\n safe(() => navigator.maxTouchPoints),\n safe(() => navigator.platform),\n safe(() => navigator.languages?.join(','))\n ].join('|');\n return window.btoa(env);\n};\n\nconst FINGERPRINT_SEED_KEY = '_monei_fp';\n\nconst randomHex = (length: number): string => {\n if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function') {\n const bytes = new Uint8Array(length);\n crypto.getRandomValues(bytes);\n return Array.from(bytes, (b) => (b % 16).toString(16)).join('');\n }\n return Array.from({length}, () => Math.floor(Math.random() * 16).toString(16)).join('');\n};\n\nlet cachedSeed: string | null = null;\n\nconst getPersistentSeed = async (): Promise<Record<string, string>> => {\n if (cachedSeed) return {seed: cachedSeed};\n try {\n const localStorage = fixLocalstorage();\n cachedSeed = localStorage.getItem(FINGERPRINT_SEED_KEY);\n if (!cachedSeed) {\n cachedSeed = randomHex(32);\n try {\n localStorage.setItem(FINGERPRINT_SEED_KEY, cachedSeed);\n } catch {}\n }\n } catch {\n cachedSeed = randomHex(32);\n }\n return {seed: cachedSeed};\n};\n\nconst thumbmark = new Thumbmark({logging: false});\nthumbmark.includeComponent('persistent_seed', getPersistentSeed);\n\nexport const getClientFingerprint = async (): Promise<string> => {\n const [, result] = await withError(thumbmark.get());\n return result?.thumbmark ?? '';\n};\n\nexport const withError = async <T>(p: Promise<T>): Promise<[Error | undefined, T | undefined]> => {\n try {\n return [undefined, await p];\n } catch (err) {\n return [err as Error, undefined];\n }\n};\n\nexport const isMethodSupported = (config: GetPaymentMethodsResponse, paymentMethod: string) => {\n return config.paymentMethods && config.paymentMethods.includes(paymentMethod);\n};\n\nexport const validateComponentProps = ({props}: {props: any}) => {\n if (props.paymentId) return;\n if (props.accountId && props.amount && props.currency) return;\n throw new Error('You need to provide paymentId or accountId amount and currency');\n};\n","type Stage = 'local' | 'local-prod' | 'tunnel' | 'dev' | 'prod';\n\nconst stage = (process.env.STAGE as Stage) || 'prod';\nconst version = process.env.VERSION || 'v3';\n\ntype Config = {\n version: string;\n domain: string;\n stage: string;\n rootDomain: string;\n isProduction: boolean;\n paymentPageUrl: string;\n cardInputUrl: string;\n paymentModalUrl: string;\n bizumUrl: string;\n bizumButtonUrl: string;\n paypalUrl: string;\n apiUrl: string;\n paymentRequestUrl: string;\n secureDomain: string;\n};\n\nconst stageConfig: Record<Stage, Partial<Config>> = {\n local: {\n domain: 'http://card-input.localhost:1355',\n paymentPageUrl: 'http://payment-page.localhost:1355/',\n cardInputUrl: 'http://card-input.localhost:1355/',\n paymentModalUrl: 'http://payment-modal.localhost:1355/',\n paypalUrl: 'http://paypal.localhost:1355/',\n bizumUrl: 'http://bizum.localhost:1355/',\n bizumButtonUrl: 'http://bizum-button.localhost:1355/',\n paymentRequestUrl: 'http://payment-request.localhost:1355/',\n apiUrl: 'https://api.monei-dev.com/v1',\n secureDomain: 'https://secure.monei-dev.com',\n rootDomain: 'monei-dev.com'\n },\n 'local-prod': {\n domain: 'http://card-input.localhost:1355',\n paymentPageUrl: 'http://payment-page.localhost:1355/',\n cardInputUrl: 'http://card-input.localhost:1355/',\n paymentModalUrl: 'http://payment-modal.localhost:1355/',\n paypalUrl: 'http://paypal.localhost:1355/',\n bizumUrl: 'http://bizum.localhost:1355/',\n bizumButtonUrl: 'http://bizum-button.localhost:1355/',\n paymentRequestUrl: 'http://payment-request.localhost:1355/',\n apiUrl: 'https://api.monei.com/v1',\n secureDomain: 'https://secure.monei.com',\n rootDomain: 'monei.com'\n },\n tunnel: {\n domain: 'https://card-input.monei-dev-tunnel.com',\n paymentPageUrl: 'https://payment-page.monei-dev-tunnel.com/',\n cardInputUrl: 'https://card-input.monei-dev-tunnel.com/',\n paymentModalUrl: 'https://payment-modal.monei-dev-tunnel.com/',\n paypalUrl: 'https://paypal.monei-dev-tunnel.com/',\n bizumUrl: 'https://bizum.monei-dev-tunnel.com/',\n bizumButtonUrl: 'https://bizum-button.monei-dev-tunnel.com/',\n paymentRequestUrl: 'https://payment-request.monei-dev-tunnel.com/',\n apiUrl: 'https://api.monei.com/v1',\n secureDomain: 'https://secure.monei.com',\n rootDomain: 'monei.com'\n },\n dev: {\n domain: process.env.DOMAIN || 'https://js.monei-dev.com',\n apiUrl: 'https://api.monei-dev.com/v1',\n secureDomain: 'https://secure.monei-dev.com',\n rootDomain: 'monei-dev.com'\n },\n prod: {\n domain: process.env.DOMAIN || 'https://js.monei.com',\n apiUrl: 'https://api.monei.com/v1',\n secureDomain: 'https://secure.monei.com',\n rootDomain: 'monei.com'\n }\n};\n\nconst sc = stageConfig[stage];\nconst domain = sc.domain!;\n\nconst globalConfig = {\n domain,\n version,\n stage,\n isProduction: stage === 'prod',\n paymentPageUrl: sc.paymentPageUrl || `${domain}/${version}/payment-page/`,\n cardInputUrl: sc.cardInputUrl || `${domain}/${version}/inner-card-input/`,\n paymentModalUrl: sc.paymentModalUrl || `${domain}/${version}/inner-payment-modal/`,\n paypalUrl: sc.paypalUrl || `${domain}/${version}/inner-paypal/`,\n bizumUrl: sc.bizumUrl || `${domain}/${version}/inner-bizum/`,\n bizumButtonUrl: sc.bizumButtonUrl || `${domain}/${version}/inner-bizum-button/`,\n paymentRequestUrl: sc.paymentRequestUrl || `${domain}/${version}/inner-payment-request/`\n};\n\nexport const config = {...globalConfig, ...sc} as Config;\n","import {config} from './config';\nimport type {ConfirmPaymentParams} from './payment-modal';\nimport type {\n CreateApplePaySessionRequest,\n CreatePaymentRequest,\n CreateTokenRequest,\n CreateTokenResponse,\n GetPaymentMethodsRequest,\n GetPaymentMethodsResponse,\n PaymentResult,\n SendPaymentReceiptRequest,\n ValidateBizumPhoneRequest\n} from './types';\nimport {getClientEnv, getClientFingerprint, stringify, withError} from './utils';\n\ntype RequestParams = {\n method?: string;\n headers?: any;\n body?: any;\n};\nconst request = async (url: string, {method = 'GET', headers, body}: RequestParams = {}) => {\n if (method === 'POST') headers = {'Content-Type': 'application/json', ...headers};\n const res = await fetch(`${config.apiUrl}${url}`, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined\n });\n const [, result] = await withError(res.json());\n if (!res.ok) throw result || new Error(res.statusText);\n return result;\n};\n\nconst pmCache: Record<string, Promise<GetPaymentMethodsResponse>> = {};\n\nexport const getPaymentMethods = async ({\n accountId,\n paymentId\n}: GetPaymentMethodsRequest): Promise<GetPaymentMethodsResponse> => {\n let params: GetPaymentMethodsRequest;\n if (paymentId) params = {paymentId};\n else if (accountId) params = {accountId};\n else throw new Error('You need to provide paymentId or accountId');\n const query = stringify(params);\n if (query in pmCache) return pmCache[query];\n const promise = request(`/client-payment-methods?${query}`);\n pmCache[query] = promise;\n promise.catch(() => delete pmCache[query]);\n return promise;\n};\n\nexport const createToken = async ({\n paymentMethod,\n paymentId,\n sessionId,\n amount,\n currency,\n accountId,\n transactionType\n}: CreateTokenRequest): Promise<CreateTokenResponse> => {\n let body: CreateTokenRequest;\n if (paymentId) {\n body = {paymentId, paymentMethod};\n } else if (accountId) {\n body = {accountId, paymentMethod, sessionId, amount, currency, transactionType};\n } else throw new Error('You need to provide paymentId or accountId');\n const res: CreateTokenResponse = await request('/tokens', {\n method: 'POST',\n headers: {'X-Client-Env': getClientEnv(), 'X-Client-Fingerprint': await getClientFingerprint()},\n body: body\n });\n // Normalize: backend returns paymentToken, SDK uses token\n if (res.paymentToken && !res.token) res.token = res.paymentToken;\n return res;\n};\n\nexport const getPayment = async (paymentId: string): Promise<PaymentResult> => {\n return request(`/payments/${paymentId}/client-get`);\n};\n\nexport const confirmPayment = async ({\n paymentId,\n ...body\n}: ConfirmPaymentParams): Promise<PaymentResult> => {\n return request(`/payments/${paymentId}/client-confirm`, {\n method: 'POST',\n headers: {'X-Client-Env': getClientEnv(), 'X-Client-Fingerprint': await getClientFingerprint()},\n body\n });\n};\n\nexport const createPayment = async ({\n signature,\n ...body\n}: CreatePaymentRequest): Promise<PaymentResult> => {\n return request('/client-payments', {\n method: 'POST',\n headers: {\n 'X-Client-Env': getClientEnv(),\n 'X-Client-Fingerprint': await getClientFingerprint(),\n 'Client-Signature': signature\n },\n body\n });\n};\n\nexport const sendPaymentReceipt = async ({\n paymentId,\n customerEmail,\n signature,\n language\n}: SendPaymentReceiptRequest): Promise<PaymentResult> => {\n return request(`/payments/${paymentId}/client-receipt`, {\n method: 'POST',\n body: {customerEmail, signature, language}\n });\n};\n\nexport const createApplePaySession = async (body: CreateApplePaySessionRequest) => {\n return request(`/apple-pay/sessions`, {method: 'POST', body});\n};\n\nexport const validateBizumPhone = async (\n req: ValidateBizumPhoneRequest\n): Promise<{isValid: boolean}> => {\n return request(`/bizum/validate-phone`, {method: 'POST', body: req});\n};\n","import type {Cancelable, EventEmitterType} from './types';\n\ntype Handler = (...args: any[]) => void;\n\nexport class EventEmitter implements EventEmitterType {\n private listeners = new Map<string, Set<Handler>>();\n private destroyed = false;\n\n on(eventName: string, handler: Handler): Cancelable {\n if (this.destroyed) return {cancel: () => {}};\n\n let handlers = this.listeners.get(eventName);\n if (!handlers) {\n handlers = new Set();\n this.listeners.set(eventName, handlers);\n }\n handlers.add(handler);\n\n return {\n cancel: () => {\n handlers!.delete(handler);\n }\n };\n }\n\n once(eventName: string, handler: Handler): Cancelable {\n const wrapper = (...args: any[]) => {\n this.off(eventName, wrapper);\n handler(...args);\n };\n return this.on(eventName, wrapper);\n }\n\n trigger(eventName: string, ...args: any[]): void {\n if (this.destroyed) return;\n const handlers = this.listeners.get(eventName);\n if (!handlers) return;\n for (const handler of handlers) {\n try {\n handler(...args);\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n off(eventName: string, handler: Handler): void {\n const handlers = this.listeners.get(eventName);\n if (handlers) {\n handlers.delete(handler);\n }\n }\n\n destroy(): void {\n this.destroyed = true;\n this.listeners.clear();\n }\n}\n","import type {BridgeComponent, BridgeComponentConstructor} from '../types';\n\ntype ReactDeps = {React: any};\n\n/**\n * Creates a React driver for a bridge component.\n * Returns a forwardRef component that:\n * - On mount: creates bridge instance, renders into container div\n * - On update: calls updateProps with new props\n * - On unmount: calls destroy\n * - Exposes bridge instance via ref (needed for CardInput's createToken)\n */\nexport function createReactDriver<P extends Record<string, any>>(\n ComponentClass: BridgeComponentConstructor<P>\n): (deps: ReactDeps) => any {\n return ({React}: ReactDeps) => {\n return React.forwardRef(function BridgeReactWrapper(props: P, ref: any) {\n const containerRef = React.useRef(null) as {current: HTMLDivElement | null};\n const instanceRef = React.useRef(null) as {current: BridgeComponent<P> | null};\n const isMounted = React.useRef(false) as {current: boolean};\n const prevPropsRef = React.useRef({} as Record<string, any>);\n\n // Mount: create bridge instance + render into container div\n // useLayoutEffect to append SDK container BEFORE browser paint (prevents layout jump)\n React.useLayoutEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n let cancelled = false;\n const instance = new ComponentClass({...props} as P);\n instanceRef.current = instance;\n\n instance\n .render(el)\n .then(() => {\n if (cancelled) return;\n // Only expose ref after render completes (connection established)\n setRef(ref, instance);\n isMounted.current = true;\n })\n .catch((err: unknown) => {\n if (!cancelled) console.error(err);\n });\n\n return () => {\n cancelled = true;\n instance.destroy();\n instanceRef.current = null;\n isMounted.current = false;\n setRef(ref, null);\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Update: sync prop changes to bridge component (like componentDidUpdate)\n React.useEffect(() => {\n if (!isMounted.current || !instanceRef.current) return;\n if (shallowEqual(prevPropsRef.current, props)) return;\n prevPropsRef.current = {...props};\n instanceRef.current.updateProps({...props} as Partial<P>).catch(noop);\n });\n\n return React.createElement('div', {ref: containerRef});\n });\n };\n}\n\n/** Set a React ref (callback or object ref) */\nfunction setRef(ref: any, value: any): void {\n if (typeof ref === 'function') ref(value);\n else if (ref) ref.current = value;\n}\n\nfunction shallowEqual(a: Record<string, any>, b: Record<string, any>): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\nfunction noop() {}\n","import type {BridgeComponent, BridgeComponentConstructor} from '../types';\n\n/**\n * Creates a Vue 3 driver for a bridge component.\n * Returns a Vue component options object that:\n * - On mounted: creates bridge instance, renders into template div\n * - On $attrs change: calls updateProps\n * - On unmounted: calls destroy\n * - Exposes bridge instance via template ref\n */\nexport function createVue3Driver<P extends Record<string, any>>(\n ComponentClass: BridgeComponentConstructor<P>\n): () => any {\n return () => ({\n template: '<div></div>',\n inheritAttrs: false,\n\n mounted(this: VueInstance<P>) {\n const el = this.$el;\n this.__bridgeInstance = new ComponentClass({...this.$attrs} as P);\n this.__bridgeInstance.render(el).catch(console.error);\n },\n\n watch: {\n $attrs: {\n handler(this: VueInstance<P>) {\n if (this.__bridgeInstance) {\n this.__bridgeInstance.updateProps({...this.$attrs} as Partial<P>).catch(() => {});\n }\n },\n deep: true\n }\n },\n\n unmounted(this: VueInstance<P>) {\n if (this.__bridgeInstance) {\n this.__bridgeInstance.destroy();\n this.__bridgeInstance = null;\n }\n }\n });\n}\n\ntype VueInstance<P> = {\n $el: HTMLElement;\n $attrs: Record<string, any>;\n __bridgeInstance: BridgeComponent<P> | null;\n};\n","import type {BridgeComponent, BridgeComponentConstructor} from '../types';\n\ntype AngularDeps = {\n Component: any;\n NgModule: any;\n ElementRef: any;\n NgZone: any;\n Inject: any;\n};\n\n/**\n * Creates an Angular driver for a bridge component.\n * Returns an Angular module that declares a component which:\n * - On ngOnInit: creates bridge instance, renders into host element\n * - On ngDoCheck: calls updateProps when props change\n * - On ngOnDestroy: calls destroy\n */\nexport function createAngularDriver<P extends Record<string, any>>(\n ComponentClass: BridgeComponentConstructor<P>\n): (deps: AngularDeps) => any {\n return ({Component: AngularComponent, NgModule, ElementRef, NgZone, Inject}: AngularDeps) => {\n class ComponentInstance {\n elementRef: any;\n zone: any;\n props: Record<string, any> = {};\n __bridgeInstance: BridgeComponent<P> | null = null;\n private _prevProps: Record<string, any> = {};\n\n static parameters: any[];\n static annotations: any[];\n\n constructor(elementRef: any, zone: any) {\n this.elementRef = elementRef;\n this.zone = zone;\n }\n\n getProps(): P {\n const wrapped: Record<string, any> = {...this.props};\n const {zone} = this;\n // Wrap function props to run inside Angular zone\n for (const [key, value] of Object.entries(wrapped)) {\n if (typeof value === 'function') {\n wrapped[key] = function angularZoneWrapped(this: any, ...args: any[]) {\n return zone.run(() => value.apply(this, args));\n };\n }\n }\n return wrapped as P;\n }\n\n ngOnInit() {\n const el = this.elementRef.nativeElement;\n this.__bridgeInstance = new ComponentClass(this.getProps());\n this.__bridgeInstance.render(el).catch(console.error);\n }\n\n ngDoCheck() {\n if (this.__bridgeInstance && !shallowEqual(this._prevProps, this.props)) {\n this._prevProps = {...this.props};\n this.__bridgeInstance.updateProps(this.getProps()).catch(() => {});\n }\n }\n\n ngOnDestroy() {\n if (this.__bridgeInstance) {\n this.__bridgeInstance.destroy();\n this.__bridgeInstance = null;\n }\n }\n }\n\n ComponentInstance.parameters = [[new Inject(ElementRef)], [new Inject(NgZone)]];\n\n ComponentInstance.annotations = [\n new AngularComponent({\n selector: (ComponentClass.prototype as any).__options?.tag || 'bridge-component',\n template: '<div></div>',\n inputs: ['props']\n })\n ];\n\n class ModuleInstance {\n static annotations: any[];\n }\n\n ModuleInstance.annotations = [\n new NgModule({\n declarations: [ComponentInstance],\n exports: [ComponentInstance]\n })\n ];\n\n return ModuleInstance;\n };\n}\n\nfunction shallowEqual(a: Record<string, any>, b: Record<string, any>): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n","import type {BridgeComponentConstructor} from '../types';\nimport {createReactDriver} from './react';\nimport {createVue3Driver} from './vue';\nimport {createAngularDriver} from './angular';\n\nconst driverFactories: Record<\n string,\n (ctor: BridgeComponentConstructor<any>) => (deps?: any) => any\n> = {\n react: createReactDriver,\n vue3: createVue3Driver,\n angular: createAngularDriver\n};\n\n/**\n * Resolve a framework driver for a bridge component constructor.\n * Called by both the static and instance .driver() methods.\n */\nexport function resolveDriver<P extends Record<string, any>>(\n name: string,\n ComponentClass: BridgeComponentConstructor<P>,\n deps?: Record<string, any>\n): any {\n const factory = driverFactories[name];\n if (!factory) {\n throw new Error(\n `Unknown driver: ${name}. Available: ${Object.keys(driverFactories).join(', ')}`\n );\n }\n return factory(ComponentClass)(deps);\n}\n","// src/PenpalError.ts\nvar PenpalError = class extends Error {\n code;\n constructor(code, message) {\n super(message);\n this.name = \"PenpalError\";\n this.code = code;\n }\n};\nvar PenpalError_default = PenpalError;\n\n// src/errorSerialization.ts\nvar serializeError = (error) => ({\n name: error.name,\n message: error.message,\n stack: error.stack,\n penpalCode: error instanceof PenpalError_default ? error.code : void 0\n});\nvar deserializeError = ({\n name,\n message,\n stack,\n penpalCode\n}) => {\n const deserializedError = penpalCode ? new PenpalError_default(penpalCode, message) : new Error(message);\n deserializedError.name = name;\n deserializedError.stack = stack;\n return deserializedError;\n};\n\n// src/Reply.ts\nvar brand = Symbol(\"Reply\");\nvar Reply = class {\n value;\n transferables;\n // Allows TypeScript to distinguish between an actual instance of this\n // class versus an object that looks structurally similar.\n // eslint-disable-next-line no-unused-private-class-members\n #brand = brand;\n constructor(value, options) {\n this.value = value;\n this.transferables = options?.transferables;\n }\n};\nvar Reply_default = Reply;\n\n// src/namespace.ts\nvar namespace_default = \"penpal\";\n\n// src/guards.ts\nvar isObject = (value) => {\n return typeof value === \"object\" && value !== null;\n};\nvar isFunction = (value) => {\n return typeof value === \"function\";\n};\nvar isMessage = (data) => {\n return isObject(data) && data.namespace === namespace_default;\n};\nvar isSynMessage = (message) => {\n return message.type === \"SYN\";\n};\nvar isAck1Message = (message) => {\n return message.type === \"ACK1\";\n};\nvar isAck2Message = (message) => {\n return message.type === \"ACK2\";\n};\nvar isCallMessage = (message) => {\n return message.type === \"CALL\";\n};\nvar isReplyMessage = (message) => {\n return message.type === \"REPLY\";\n};\nvar isDestroyMessage = (message) => {\n return message.type === \"DESTROY\";\n};\n\n// src/methodSerialization.ts\nvar extractMethodPathsFromMethods = (methods, currentPath = []) => {\n const methodPaths = [];\n for (const key of Object.keys(methods)) {\n const value = methods[key];\n if (isFunction(value)) {\n methodPaths.push([...currentPath, key]);\n } else if (isObject(value)) {\n methodPaths.push(\n ...extractMethodPathsFromMethods(value, [...currentPath, key])\n );\n }\n }\n return methodPaths;\n};\nvar getMethodAtMethodPath = (methodPath, methods) => {\n const result = methodPath.reduce(\n (acc, pathSegment) => {\n return isObject(acc) ? acc[pathSegment] : void 0;\n },\n methods\n );\n return isFunction(result) ? result : void 0;\n};\nvar formatMethodPath = (methodPath) => {\n return methodPath.join(\".\");\n};\n\n// src/connectCallHandler.ts\nvar createErrorReplyMessage = (channel, callId, error) => ({\n namespace: namespace_default,\n channel,\n type: \"REPLY\",\n callId,\n isError: true,\n ...error instanceof Error ? { value: serializeError(error), isSerializedErrorInstance: true } : { value: error }\n});\nvar connectCallHandler = (messenger, methods, channel, log) => {\n let isDestroyed = false;\n const handleMessage = async (message) => {\n if (isDestroyed) {\n return;\n }\n if (!isCallMessage(message)) {\n return;\n }\n log?.(`Received ${formatMethodPath(message.methodPath)}() call`, message);\n const { methodPath, args, id: callId } = message;\n let replyMessage;\n let transferables;\n try {\n const method = getMethodAtMethodPath(methodPath, methods);\n if (!method) {\n throw new PenpalError_default(\n \"METHOD_NOT_FOUND\",\n `Method \\`${formatMethodPath(methodPath)}\\` is not found.`\n );\n }\n let value = await method(...args);\n if (value instanceof Reply_default) {\n transferables = value.transferables;\n value = await value.value;\n }\n replyMessage = {\n namespace: namespace_default,\n channel,\n type: \"REPLY\",\n callId,\n value\n };\n } catch (error) {\n replyMessage = createErrorReplyMessage(channel, callId, error);\n }\n if (isDestroyed) {\n return;\n }\n try {\n log?.(`Sending ${formatMethodPath(methodPath)}() reply`, replyMessage);\n messenger.sendMessage(replyMessage, transferables);\n } catch (error) {\n if (error.name === \"DataCloneError\") {\n replyMessage = createErrorReplyMessage(channel, callId, error);\n log?.(`Sending ${formatMethodPath(methodPath)}() reply`, replyMessage);\n messenger.sendMessage(replyMessage);\n }\n throw error;\n }\n };\n messenger.addMessageHandler(handleMessage);\n return () => {\n isDestroyed = true;\n messenger.removeMessageHandler(handleMessage);\n };\n};\nvar connectCallHandler_default = connectCallHandler;\n\n// src/generateId.ts\nvar generateId_default = crypto.randomUUID?.bind(crypto) ?? (() => new Array(4).fill(0).map(\n () => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16)\n).join(\"-\"));\n\n// src/CallOptions.ts\nvar brand2 = Symbol(\"CallOptions\");\nvar CallOptions = class {\n transferables;\n timeout;\n // Allows TypeScript to distinguish between an actual instance of this\n // class versus an object that looks structurally similar.\n // eslint-disable-next-line no-unused-private-class-members\n #brand = brand2;\n constructor(options) {\n this.transferables = options?.transferables;\n this.timeout = options?.timeout;\n }\n};\nvar CallOptions_default = CallOptions;\n\n// src/connectRemoteProxy.ts\nvar methodsToTreatAsNative = /* @__PURE__ */ new Set([\"apply\", \"call\", \"bind\"]);\nvar createRemoteProxy = (callback, log, path = []) => {\n return new Proxy(\n path.length ? () => {\n } : /* @__PURE__ */ Object.create(null),\n {\n get(target, prop) {\n if (prop === \"then\") {\n return;\n }\n if (path.length && methodsToTreatAsNative.has(prop)) {\n return Reflect.get(target, prop);\n }\n return createRemoteProxy(callback, log, [...path, prop]);\n },\n apply(target, _thisArg, args) {\n return callback(path, args);\n }\n }\n );\n};\nvar getDestroyedConnectionMethodCallError = (methodPath) => {\n return new PenpalError_default(\n \"CONNECTION_DESTROYED\",\n `Method call ${formatMethodPath(\n methodPath\n )}() failed due to destroyed connection`\n );\n};\nvar connectRemoteProxy = (messenger, channel, log) => {\n let isDestroyed = false;\n const replyHandlers = /* @__PURE__ */ new Map();\n const handleMessage = (message) => {\n if (!isReplyMessage(message)) {\n return;\n }\n const { callId, value, isError, isSerializedErrorInstance } = message;\n const replyHandler = replyHandlers.get(callId);\n if (!replyHandler) {\n return;\n }\n replyHandlers.delete(callId);\n log?.(\n `Received ${formatMethodPath(replyHandler.methodPath)}() call`,\n message\n );\n if (isError) {\n replyHandler.reject(\n isSerializedErrorInstance ? deserializeError(value) : value\n );\n } else {\n replyHandler.resolve(value);\n }\n };\n messenger.addMessageHandler(handleMessage);\n const remoteProxy = createRemoteProxy((methodPath, args) => {\n if (isDestroyed) {\n throw getDestroyedConnectionMethodCallError(methodPath);\n }\n const callId = generateId_default();\n const lastArg = args[args.length - 1];\n const lastArgIsOptions = lastArg instanceof CallOptions_default;\n const { timeout, transferables } = lastArgIsOptions ? lastArg : {};\n const argsWithoutOptions = lastArgIsOptions ? args.slice(0, -1) : args;\n return new Promise((resolve, reject) => {\n const timeoutId = timeout !== void 0 ? window.setTimeout(() => {\n replyHandlers.delete(callId);\n reject(\n new PenpalError_default(\n \"METHOD_CALL_TIMEOUT\",\n `Method call ${formatMethodPath(\n methodPath\n )}() timed out after ${timeout}ms`\n )\n );\n }, timeout) : void 0;\n replyHandlers.set(callId, { methodPath, resolve, reject, timeoutId });\n try {\n const callMessage = {\n namespace: namespace_default,\n channel,\n type: \"CALL\",\n id: callId,\n methodPath,\n args: argsWithoutOptions\n };\n log?.(`Sending ${formatMethodPath(methodPath)}() call`, callMessage);\n messenger.sendMessage(callMessage, transferables);\n } catch (error) {\n reject(\n new PenpalError_default(\"TRANSMISSION_FAILED\", error.message)\n );\n }\n });\n }, log);\n const destroy = () => {\n isDestroyed = true;\n messenger.removeMessageHandler(handleMessage);\n for (const { methodPath, reject, timeoutId } of replyHandlers.values()) {\n clearTimeout(timeoutId);\n reject(getDestroyedConnectionMethodCallError(methodPath));\n }\n replyHandlers.clear();\n };\n return {\n remoteProxy,\n destroy\n };\n};\nvar connectRemoteProxy_default = connectRemoteProxy;\n\n// src/getPromiseWithResolvers.ts\nvar getPromiseWithResolvers = () => {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return {\n promise,\n resolve,\n reject\n };\n};\nvar getPromiseWithResolvers_default = getPromiseWithResolvers;\n\n// src/backwardCompatibility.ts\nvar DEPRECATED_PENPAL_PARTICIPANT_ID = \"deprecated-penpal\";\nvar isDeprecatedMessage = (data) => {\n return isObject(data) && \"penpal\" in data;\n};\nvar upgradeMethodPath = (methodPath) => methodPath.split(\".\");\nvar downgradeMethodPath = (methodPath) => methodPath.join(\".\");\nvar stringifyUnknownMessage = (message) => {\n try {\n return JSON.stringify(message);\n } catch (_) {\n return String(message);\n }\n};\nvar getUnexpectedMessageError = (message) => {\n return new PenpalError_default(\n \"TRANSMISSION_FAILED\",\n `Unexpected message to translate: ${stringifyUnknownMessage(message)}`\n );\n};\nvar upgradeMessage = (message) => {\n if (message.penpal === \"syn\" /* Syn */) {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"SYN\",\n participantId: DEPRECATED_PENPAL_PARTICIPANT_ID\n };\n }\n if (message.penpal === \"ack\" /* Ack */) {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"ACK2\"\n };\n }\n if (message.penpal === \"call\" /* Call */) {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"CALL\",\n // Actually converting the ID to a string would break communication.\n id: message.id,\n methodPath: upgradeMethodPath(message.methodName),\n args: message.args\n };\n }\n if (message.penpal === \"reply\" /* Reply */) {\n if (message.resolution === \"fulfilled\" /* Fulfilled */) {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"REPLY\",\n // Actually converting the ID to a string would break communication.\n callId: message.id,\n value: message.returnValue\n };\n } else {\n return {\n namespace: namespace_default,\n channel: void 0,\n type: \"REPLY\",\n // Actually converting the ID to a string would break communication.\n callId: message.id,\n isError: true,\n ...message.returnValueIsError ? {\n value: message.returnValue,\n isSerializedErrorInstance: true\n } : {\n value: message.returnValue\n }\n };\n }\n }\n throw getUnexpectedMessageError(message);\n};\nvar downgradeMessage = (message) => {\n if (isAck1Message(message)) {\n return {\n penpal: \"synAck\" /* SynAck */,\n methodNames: message.methodPaths.map(downgradeMethodPath)\n };\n }\n if (isCallMessage(message)) {\n return {\n penpal: \"call\" /* Call */,\n // Actually converting the ID to a number would break communication.\n id: message.id,\n methodName: downgradeMethodPath(message.methodPath),\n args: message.args\n };\n }\n if (isReplyMessage(message)) {\n if (message.isError) {\n return {\n penpal: \"reply\" /* Reply */,\n // Actually converting the ID to a number would break communication.\n id: message.callId,\n resolution: \"rejected\" /* Rejected */,\n ...message.isSerializedErrorInstance ? {\n returnValue: message.value,\n returnValueIsError: true\n } : { returnValue: message.value }\n };\n } else {\n return {\n penpal: \"reply\" /* Reply */,\n // Actually converting the ID to a number would break communication.\n id: message.callId,\n resolution: \"fulfilled\" /* Fulfilled */,\n returnValue: message.value\n };\n }\n }\n throw getUnexpectedMessageError(message);\n};\n\n// src/shakeHands.ts\nvar shakeHands = ({\n messenger,\n methods,\n timeout,\n channel,\n log\n}) => {\n const participantId = generateId_default();\n let remoteParticipantId;\n const destroyHandlers = [];\n let isComplete = false;\n const methodPaths = extractMethodPathsFromMethods(methods);\n const { promise, resolve, reject } = getPromiseWithResolvers_default();\n const timeoutId = timeout !== void 0 ? setTimeout(() => {\n reject(\n new PenpalError_default(\n \"CONNECTION_TIMEOUT\",\n `Connection timed out after ${timeout}ms`\n )\n );\n }, timeout) : void 0;\n const destroy = () => {\n for (const destroyHandler of destroyHandlers) {\n destroyHandler();\n }\n };\n const connectCallHandlerAndMethodProxies = () => {\n if (isComplete) {\n return;\n }\n destroyHandlers.push(connectCallHandler_default(messenger, methods, channel, log));\n const { remoteProxy, destroy: destroyMethodProxies } = connectRemoteProxy_default(messenger, channel, log);\n destroyHandlers.push(destroyMethodProxies);\n clearTimeout(timeoutId);\n isComplete = true;\n resolve({\n remoteProxy,\n destroy\n });\n };\n const sendSynMessage = () => {\n const synMessage = {\n namespace: namespace_default,\n type: \"SYN\",\n channel,\n participantId\n };\n log?.(`Sending handshake SYN`, synMessage);\n try {\n messenger.sendMessage(synMessage);\n } catch (error) {\n reject(new PenpalError_default(\"TRANSMISSION_FAILED\", error.message));\n }\n };\n const handleSynMessage = (message) => {\n log?.(`Received handshake SYN`, message);\n if (message.participantId === remoteParticipantId && // TODO: Used for backward-compatibility. Remove in next major version.\n remoteParticipantId !== DEPRECATED_PENPAL_PARTICIPANT_ID) {\n return;\n }\n remoteParticipantId = message.participantId;\n sendSynMessage();\n const isHandshakeLeader = participantId > remoteParticipantId || // TODO: Used for backward-compatibility. Remove in next major version.\n remoteParticipantId === DEPRECATED_PENPAL_PARTICIPANT_ID;\n if (!isHandshakeLeader) {\n return;\n }\n const ack1Message = {\n namespace: namespace_default,\n channel,\n type: \"ACK1\",\n methodPaths\n };\n log?.(`Sending handshake ACK1`, ack1Message);\n try {\n messenger.sendMessage(ack1Message);\n } catch (error) {\n reject(new PenpalError_default(\"TRANSMISSION_FAILED\", error.message));\n return;\n }\n };\n const handleAck1Message = (message) => {\n log?.(`Received handshake ACK1`, message);\n const ack2Message = {\n namespace: namespace_default,\n channel,\n type: \"ACK2\"\n };\n log?.(`Sending handshake ACK2`, ack2Message);\n try {\n messenger.sendMessage(ack2Message);\n } catch (error) {\n reject(new PenpalError_default(\"TRANSMISSION_FAILED\", error.message));\n return;\n }\n connectCallHandlerAndMethodProxies();\n };\n const handleAck2Message = (message) => {\n log?.(`Received handshake ACK2`, message);\n connectCallHandlerAndMethodProxies();\n };\n const handleMessage = (message) => {\n if (isSynMessage(message)) {\n handleSynMessage(message);\n }\n if (isAck1Message(message)) {\n handleAck1Message(message);\n }\n if (isAck2Message(message)) {\n handleAck2Message(message);\n }\n };\n messenger.addMessageHandler(handleMessage);\n destroyHandlers.push(() => messenger.removeMessageHandler(handleMessage));\n sendSynMessage();\n return promise;\n};\nvar shakeHands_default = shakeHands;\n\n// src/once.ts\nvar once = (fn) => {\n let isCalled = false;\n let result;\n return (...args) => {\n if (!isCalled) {\n isCalled = true;\n result = fn(...args);\n }\n return result;\n };\n};\nvar once_default = once;\n\n// src/connect.ts\nvar usedMessengers = /* @__PURE__ */ new WeakSet();\nvar connect = ({\n messenger,\n methods = {},\n timeout,\n channel,\n log\n}) => {\n if (!messenger) {\n throw new PenpalError_default(\"INVALID_ARGUMENT\", \"messenger must be defined\");\n }\n if (usedMessengers.has(messenger)) {\n throw new PenpalError_default(\n \"INVALID_ARGUMENT\",\n \"A messenger can only be used for a single connection\"\n );\n }\n usedMessengers.add(messenger);\n const connectionDestroyedHandlers = [messenger.destroy];\n const destroyConnection = once_default((notifyOtherParticipant) => {\n if (notifyOtherParticipant) {\n const destroyMessage = {\n namespace: namespace_default,\n channel,\n type: \"DESTROY\"\n };\n try {\n messenger.sendMessage(destroyMessage);\n } catch (_) {\n }\n }\n for (const connectionDestroyedHandler of connectionDestroyedHandlers) {\n connectionDestroyedHandler();\n }\n log?.(\"Connection destroyed\");\n });\n const validateReceivedMessage = (data) => {\n return isMessage(data) && data.channel === channel;\n };\n const promise = (async () => {\n try {\n messenger.initialize({ log, validateReceivedMessage });\n messenger.addMessageHandler((message) => {\n if (isDestroyMessage(message)) {\n destroyConnection(false);\n }\n });\n const { remoteProxy, destroy } = await shakeHands_default({\n messenger,\n methods,\n timeout,\n channel,\n log\n });\n connectionDestroyedHandlers.push(destroy);\n return remoteProxy;\n } catch (error) {\n destroyConnection(true);\n throw error;\n }\n })();\n return {\n promise,\n // Why we don't reject the connection promise when consumer calls destroy():\n // https://github.com/Aaronius/penpal/issues/51\n destroy: () => {\n destroyConnection(true);\n }\n };\n};\nvar connect_default = connect;\n\n// src/messengers/WindowMessenger.ts\nvar WindowMessenger = class {\n #remoteWindow;\n #allowedOrigins;\n #log;\n #validateReceivedMessage;\n #concreteRemoteOrigin;\n #messageCallbacks = /* @__PURE__ */ new Set();\n #port;\n // TODO: Used for backward-compatibility. Remove in next major version.\n #isChildUsingDeprecatedProtocol = false;\n constructor({ remoteWindow, allowedOrigins }) {\n if (!remoteWindow) {\n throw new PenpalError_default(\"INVALID_ARGUMENT\", \"remoteWindow must be defined\");\n }\n this.#remoteWindow = remoteWindow;\n this.#allowedOrigins = allowedOrigins?.length ? allowedOrigins : [window.origin];\n }\n initialize = ({\n log,\n validateReceivedMessage\n }) => {\n this.#log = log;\n this.#validateReceivedMessage = validateReceivedMessage;\n window.addEventListener(\"message\", this.#handleMessageFromRemoteWindow);\n };\n sendMessage = (message, transferables) => {\n if (isSynMessage(message)) {\n const originForSending = this.#getOriginForSendingMessage(message);\n this.#remoteWindow.postMessage(message, {\n targetOrigin: originForSending,\n transfer: transferables\n });\n return;\n }\n if (isAck1Message(message) || // If the child is using a previous version of Penpal, we need to\n // downgrade the message and send it through the window rather than\n // the port because older versions of Penpal don't use MessagePorts.\n this.#isChildUsingDeprecatedProtocol) {\n const payload = this.#isChildUsingDeprecatedProtocol ? downgradeMessage(message) : message;\n const originForSending = this.#getOriginForSendingMessage(message);\n this.#remoteWindow.postMessage(payload, {\n targetOrigin: originForSending,\n transfer: transferables\n });\n return;\n }\n if (isAck2Message(message)) {\n const { port1, port2 } = new MessageChannel();\n this.#port = port1;\n port1.addEventListener(\"message\", this.#handleMessageFromPort);\n port1.start();\n const transferablesToSend = [port2, ...transferables || []];\n const originForSending = this.#getOriginForSendingMessage(message);\n this.#remoteWindow.postMessage(message, {\n targetOrigin: originForSending,\n transfer: transferablesToSend\n });\n return;\n }\n if (this.#port) {\n this.#port.postMessage(message, {\n transfer: transferables\n });\n return;\n }\n throw new PenpalError_default(\n \"TRANSMISSION_FAILED\",\n \"Cannot send message because the MessagePort is not connected\"\n );\n };\n addMessageHandler = (callback) => {\n this.#messageCallbacks.add(callback);\n };\n removeMessageHandler = (callback) => {\n this.#messageCallbacks.delete(callback);\n };\n destroy = () => {\n window.removeEventListener(\"message\", this.#handleMessageFromRemoteWindow);\n this.#destroyPort();\n this.#messageCallbacks.clear();\n };\n #isAllowedOrigin = (origin) => {\n return this.#allowedOrigins.some(\n (allowedOrigin) => allowedOrigin instanceof RegExp ? allowedOrigin.test(origin) : allowedOrigin === origin || allowedOrigin === \"*\"\n );\n };\n #getOriginForSendingMessage = (message) => {\n if (isSynMessage(message)) {\n return \"*\";\n }\n if (!this.#concreteRemoteOrigin) {\n throw new PenpalError_default(\n \"TRANSMISSION_FAILED\",\n \"Cannot send message because the remote origin is not established\"\n );\n }\n return this.#concreteRemoteOrigin === \"null\" && this.#allowedOrigins.includes(\"*\") ? \"*\" : this.#concreteRemoteOrigin;\n };\n #destroyPort = () => {\n this.#port?.removeEventListener(\"message\", this.#handleMessageFromPort);\n this.#port?.close();\n this.#port = void 0;\n };\n #handleMessageFromRemoteWindow = ({\n source,\n origin,\n ports,\n data\n }) => {\n if (source !== this.#remoteWindow) {\n return;\n }\n if (isDeprecatedMessage(data)) {\n this.#log?.(\n \"Please upgrade the child window to the latest version of Penpal.\"\n );\n this.#isChildUsingDeprecatedProtocol = true;\n try {\n data = upgradeMessage(data);\n } catch (error) {\n this.#log?.(\n `Failed to translate deprecated message: ${error.message}`\n );\n return;\n }\n }\n if (!this.#validateReceivedMessage?.(data)) {\n return;\n }\n if (!this.#isAllowedOrigin(origin)) {\n this.#log?.(\n `Received a message from origin \\`${origin}\\` which did not match allowed origins \\`[${this.#allowedOrigins.join(\", \")}]\\``\n );\n return;\n }\n if (isSynMessage(data)) {\n this.#destroyPort();\n this.#concreteRemoteOrigin = origin;\n }\n if (isAck2Message(data) && // Previous versions of Penpal don't use MessagePorts and do all\n // communication through the window.\n !this.#isChildUsingDeprecatedProtocol) {\n this.#port = ports[0];\n if (!this.#port) {\n this.#log?.(\"Ignoring ACK2 because it did not include a MessagePort\");\n return;\n }\n this.#port.addEventListener(\"message\", this.#handleMessageFromPort);\n this.#port.start();\n }\n for (const callback of this.#messageCallbacks) {\n callback(data);\n }\n };\n #handleMessageFromPort = ({ data }) => {\n if (!this.#validateReceivedMessage?.(data)) {\n return;\n }\n for (const callback of this.#messageCallbacks) {\n callback(data);\n }\n };\n};\nvar WindowMessenger_default = WindowMessenger;\n\n// src/messengers/WorkerMessenger.ts\nvar WorkerMessenger = class {\n #worker;\n #log;\n #validateReceivedMessage;\n #messageCallbacks = /* @__PURE__ */ new Set();\n #port;\n constructor({ worker }) {\n if (!worker) {\n throw new PenpalError_default(\"INVALID_ARGUMENT\", \"worker must be defined\");\n }\n this.#worker = worker;\n }\n initialize = ({\n log,\n validateReceivedMessage\n }) => {\n this.#log = log;\n this.#validateReceivedMessage = validateReceivedMessage;\n this.#worker.addEventListener(\"message\", this.#handleMessage);\n };\n sendMessage = (message, transferables) => {\n if (isSynMessage(message) || isAck1Message(message)) {\n this.#worker.postMessage(message, { transfer: transferables });\n return;\n }\n if (isAck2Message(message)) {\n const { port1, port2 } = new MessageChannel();\n this.#port = port1;\n port1.addEventListener(\"message\", this.#handleMessage);\n port1.start();\n this.#worker.postMessage(message, {\n transfer: [port2, ...transferables || []]\n });\n return;\n }\n if (this.#port) {\n this.#port.postMessage(message, {\n transfer: transferables\n });\n return;\n }\n throw new PenpalError_default(\n \"TRANSMISSION_FAILED\",\n \"Cannot send message because the MessagePort is not connected\"\n );\n };\n addMessageHandler = (callback) => {\n this.#messageCallbacks.add(callback);\n };\n removeMessageHandler = (callback) => {\n this.#messageCallbacks.delete(callback);\n };\n destroy = () => {\n this.#worker.removeEventListener(\"message\", this.#handleMessage);\n this.#destroyPort();\n this.#messageCallbacks.clear();\n };\n #destroyPort = () => {\n this.#port?.removeEventListener(\"message\", this.#handleMessage);\n this.#port?.close();\n this.#port = void 0;\n };\n #handleMessage = ({ ports, data }) => {\n if (!this.#validateReceivedMessage?.(data)) {\n return;\n }\n if (isSynMessage(data)) {\n this.#destroyPort();\n }\n if (isAck2Message(data)) {\n this.#port = ports[0];\n if (!this.#port) {\n this.#log?.(\"Ignoring ACK2 because it did not include a MessagePort\");\n return;\n }\n this.#port.addEventListener(\"message\", this.#handleMessage);\n this.#port.start();\n }\n for (const callback of this.#messageCallbacks) {\n callback(data);\n }\n };\n};\nvar WorkerMessenger_default = WorkerMessenger;\n\n// src/messengers/PortMessenger.ts\nvar PortMessenger = class {\n #port;\n #validateReceivedMessage;\n #messageCallbacks = /* @__PURE__ */ new Set();\n constructor({ port }) {\n if (!port) {\n throw new PenpalError_default(\"INVALID_ARGUMENT\", \"port must be defined\");\n }\n this.#port = port;\n }\n initialize = ({ validateReceivedMessage }) => {\n this.#validateReceivedMessage = validateReceivedMessage;\n this.#port.addEventListener(\"message\", this.#handleMessage);\n this.#port.start();\n };\n sendMessage = (message, transferables) => {\n this.#port?.postMessage(message, {\n transfer: transferables\n });\n };\n addMessageHandler = (callback) => {\n this.#messageCallbacks.add(callback);\n };\n removeMessageHandler = (callback) => {\n this.#messageCallbacks.delete(callback);\n };\n destroy = () => {\n this.#port.removeEventListener(\"message\", this.#handleMessage);\n this.#port.close();\n this.#messageCallbacks.clear();\n };\n #handleMessage = ({ data }) => {\n if (!this.#validateReceivedMessage?.(data)) {\n return;\n }\n for (const callback of this.#messageCallbacks) {\n callback(data);\n }\n };\n};\nvar PortMessenger_default = PortMessenger;\n\n// src/ErrorCodeObj.ts\nvar ErrorCodeObj = {\n ConnectionDestroyed: \"CONNECTION_DESTROYED\",\n ConnectionTimeout: \"CONNECTION_TIMEOUT\",\n InvalidArgument: \"INVALID_ARGUMENT\",\n MethodCallTimeout: \"METHOD_CALL_TIMEOUT\",\n MethodNotFound: \"METHOD_NOT_FOUND\",\n TransmissionFailed: \"TRANSMISSION_FAILED\"\n};\nvar ErrorCodeObj_default = ErrorCodeObj;\n\n// src/debug.ts\nvar debug = (prefix) => {\n return (...args) => {\n console.log(`\\u270D\\uFE0F %c${prefix}%c`, \"font-weight: bold;\", \"\", ...args);\n };\n};\nvar debug_default = debug;\n\nexport { CallOptions_default as CallOptions, ErrorCodeObj_default as ErrorCode, PenpalError_default as PenpalError, PortMessenger_default as PortMessenger, Reply_default as Reply, WindowMessenger_default as WindowMessenger, WorkerMessenger_default as WorkerMessenger, connect_default as connect, debug_default as debug };\n//# sourceMappingURL=penpal.mjs.map\n//# sourceMappingURL=penpal.mjs.map","/** Protocol identifier for sync bootstrap messages between parent and child bridges */\nexport const BRIDGE_INIT_MSG = '__monei_bridge_init__';\n","/** Bridge lifecycle events (replaces zoid.EVENT) */\nexport const EVENT = {\n RENDERED: 'RENDERED',\n RESIZE: 'RESIZE',\n DESTROY: 'DESTROY',\n BEFORE_CLOSE: 'BEFORE_CLOSE',\n DISPLAY: 'DISPLAY'\n} as const;\n\n/**\n * Lifecycle prop names filtered from dispatch.\n * These are wired to bridge events, NOT forwarded to child.\n *\n * NOTE: onError, onFocus, onLoad are NOT here — they are user-facing\n * props that merchants pass and children call.\n */\nexport const LIFECYCLE_PROPS = new Set([\n 'onClose',\n 'onDestroy',\n 'onRendered',\n 'onRender',\n 'onDisplay',\n 'onResize',\n 'onProps'\n]);\n","/**\n * DOM utility: remove element from DOM.\n * Replaces belter.destroyElement().\n */\nexport function destroyElement(el: Element | null | undefined): void {\n if (el) el.remove();\n}\n\n/**\n * CSS utility: convert number to CSS pixel string, pass strings through.\n * Replaces belter.toCSS().\n */\nexport function toCSS(value: number | string): string {\n return typeof value === 'number' ? `${value}px` : value;\n}\n","import {connect, WindowMessenger} from 'penpal';\nimport type {Connection} from 'penpal';\nimport {BRIDGE_INIT_MSG} from '@monei-js/shared/lib/bridge-constants';\nimport {EVENT, LIFECYCLE_PROPS} from './constants';\nimport {normalizeAliases} from './create-component';\nimport {toCSS} from './props';\nimport type {\n BridgeComponent,\n BridgeComponentOptions,\n Cancelable,\n ChildMethods,\n ComputedPropConfig,\n EventEmitterType,\n ParentMethods\n} from './types';\n\n/** Per-component iframe sandbox attributes — least-privilege per component */\nconst SANDBOX: Record<string, string> = {\n 'monei-card-input': 'allow-scripts allow-forms allow-same-origin',\n 'monei-bizum':\n 'allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox',\n 'monei-bizum-button':\n 'allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox',\n 'monei-paypal':\n 'allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox',\n 'monei-payment-request': 'allow-scripts allow-forms allow-same-origin allow-popups',\n 'monei-payment-modal':\n 'allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox',\n 'monei-google-pay': 'allow-scripts allow-forms allow-same-origin allow-popups'\n};\n\ntype PendingPropsUpdate = {\n dataProps: Record<string, any>;\n functionNames: string[] | undefined;\n};\n\ntype RenderState = {\n dispatchMap: Map<string, Function>;\n connection: Connection<ChildMethods> | null;\n remote: {callChild: Function; updateProps: Function} | null;\n containerEl: HTMLElement | null;\n frame: HTMLIFrameElement | null;\n destroyed: boolean;\n ownsContainer: boolean;\n /** Buffered prop updates received before Penpal handshake completes */\n pendingPropsUpdate: PendingPropsUpdate | null;\n /** Keys with in-flight deferred removals (function→data transitions awaiting child delivery) */\n pendingRemovals: Set<string>;\n};\n\n/**\n * Resolve a container argument to an HTMLElement.\n */\nfunction resolveContainer(container?: string | HTMLElement): HTMLElement {\n if (!container) {\n throw new Error('render() requires a container element or selector');\n }\n if (typeof container === 'string') {\n const el = document.querySelector<HTMLElement>(container);\n if (!el) throw new Error(`Container not found: ${container}`);\n return el;\n }\n return container;\n}\n\n/**\n * Generate a unique ID for the container element.\n */\nfunction generateUid(tag: string): string {\n return `${tag}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\n/**\n * Wire lifecycle props to bridge events.\n * Called before containerTemplate in the render flow.\n */\nfunction wireLifecycleProps<P extends Record<string, any>>(\n props: P,\n event: EventEmitterType\n): void {\n // Map lifecycle prop names to bridge events.\n // Late binding: reads from props at call time so updateProps() changes are reflected.\n // props is a mutable ref — Object.assign(instance.props, newProps) updates it in-place.\n const mappings: Array<[string, string]> = [\n ['onClose', EVENT.DESTROY],\n ['onDestroy', EVENT.DESTROY],\n ['onRendered', EVENT.RENDERED],\n ['onResize', EVENT.RESIZE]\n ];\n // onRender, onDisplay: zoid-internal events with no penpal equivalent — intentionally unmapped\n // onProps: handled by bridge's updateProps mechanism — not an event\n\n for (const [propKey, eventName] of mappings) {\n event.on(eventName, (...args: any[]) => {\n const fn = (props as Record<string, any>)[propKey];\n if (typeof fn === 'function') fn(...args);\n });\n }\n}\n\n/**\n * Execute computed prop factories and classify remaining user props into\n * dispatch map (functions) and data payload (everything else).\n * Called AFTER containerTemplate so computed factories see state mutations.\n */\nfunction buildDataPayload<P extends Record<string, any>>(context: {\n props: P;\n options: BridgeComponentOptions<P>;\n state: Record<string, any>;\n dispatchMap: Map<string, Function>;\n}): {dataProps: Record<string, any>; functionNames: string[]} {\n const {props, options, state, dispatchMap} = context;\n const dataProps: Record<string, any> = {};\n const computedPropKeys = new Set<string>(\n options.computedProps ? Object.keys(options.computedProps) : []\n );\n\n // Execute computed prop factories\n if (options.computedProps) {\n for (const [key, config] of Object.entries(\n options.computedProps as Record<string, ComputedPropConfig<P>>\n )) {\n const result = config.factory({props, state});\n if (config.type === 'function') {\n dispatchMap.set(key, result);\n } else {\n // type: 'value' — included in data payload sent to child\n dataProps[key] = result;\n }\n }\n }\n\n // Classify remaining user props\n for (const [key, value] of Object.entries(props as Record<string, any>)) {\n if (LIFECYCLE_PROPS.has(key) || computedPropKeys.has(key)) continue;\n if (typeof value === 'function') {\n dispatchMap.set(key, value);\n } else {\n dataProps[key] = value;\n }\n }\n\n // Collect function names from dispatch map so child can create stubs.\n // Exclude built-in methods (close, resize, show, hide, getParentDomain, focus)\n // which are always created by bridge-child — only send user/computed function names.\n const builtins = new Set(['close', 'resize', 'show', 'hide', 'getParentDomain', 'focus']);\n const functionNames = [...dispatchMap.keys()].filter((k) => !builtins.has(k));\n\n return {dataProps, functionNames};\n}\n\n/**\n * Implements .render(), .updateProps(), .destroy(), .close() on a bridge component instance.\n * Called once from createComponent to wire up the actual rendering logic.\n */\nexport function attachRenderMethods<P extends Record<string, any>>(\n instance: BridgeComponent<P>,\n options: BridgeComponentOptions<P>\n): void {\n const renderState: RenderState = {\n dispatchMap: new Map(),\n connection: null,\n remote: null,\n containerEl: null,\n frame: null,\n destroyed: false,\n ownsContainer: false,\n pendingPropsUpdate: null,\n pendingRemovals: new Set()\n };\n\n // Add built-in dispatch methods\n let renderedTriggered = false;\n let lifecycleWired = false;\n renderState.dispatchMap.set('resize', (dimensions: {width?: number; height?: number}) => {\n const {autoResize} = options;\n const applied: {width?: number; height?: number} = {};\n\n // Filter dimensions based on autoResize config\n // No autoResize → allow all; autoResize set → only allow explicitly enabled dimensions\n if (dimensions.width !== undefined && (!autoResize || autoResize.width === true)) {\n applied.width = dimensions.width;\n }\n if (dimensions.height !== undefined && (!autoResize || autoResize.height === true)) {\n applied.height = dimensions.height;\n }\n\n // Update iframe dimensions\n if (renderState.frame) {\n if (applied.width !== undefined) {\n renderState.frame.style.width = toCSS(applied.width);\n }\n if (applied.height !== undefined) {\n renderState.frame.style.height = toCSS(applied.height);\n }\n }\n\n // Show iframe on first resize — child has rendered content with correct dimensions.\n // This fires as soon as Penpal connects (before updateProps), so the user sees\n // the component ~200ms earlier instead of waiting for the full handshake + prop delivery.\n if (!renderedTriggered) {\n renderedTriggered = true;\n instance.event.trigger(EVENT.RENDERED);\n }\n\n instance.event.trigger(EVENT.RESIZE, applied);\n });\n renderState.dispatchMap.set('close', () => instance.close());\n renderState.dispatchMap.set('show', () => {\n if (renderState.frame) renderState.frame.style.display = '';\n });\n renderState.dispatchMap.set('hide', () => {\n if (renderState.frame) renderState.frame.style.display = 'none';\n });\n renderState.dispatchMap.set('getParentDomain', () => window.location.origin);\n renderState.dispatchMap.set('focus', () => {\n if (renderState.frame) renderState.frame.focus();\n });\n\n /**\n * Render the component into the DOM and establish Penpal connection.\n *\n * Phase ordering:\n * 1. wireLifecycleProps — bind onClose/onRendered/onResize to bridge events\n * 2. prerenderTemplate — create loading placeholder (optional)\n * 3. containerTemplate — build wrapper DOM, may mutate `state` (e.g., state.__container for PayPal)\n * 4. buildDataPayload — run computed prop factories (read state mutations from step 3),\n * classify user props into dispatch map (functions) and data payload (serializable values)\n * 5. appendToDOM — container or bare iframe inserted into target element\n * 6. triggerDISPLAY — notify container template that DOM is ready\n * 7. sendBootstrap — postMessage initial props to iframe before script loads\n * 8. createConnection — establish Penpal async RPC channel, deliver props via updateProps\n */\n instance.render = async (container?: string | HTMLElement): Promise<void> => {\n if (renderState.destroyed) throw new Error('Component is destroyed');\n if (renderState.frame) throw new Error('Component already rendered');\n\n const targetEl = resolveContainer(container);\n const uid = generateUid(options.tag);\n const doc = targetEl.ownerDocument;\n\n // Create iframe — append parent origin to URL hash so child can restrict allowedOrigins\n const frame = doc.createElement('iframe');\n frame.src = options.url;\n frame.setAttribute('title', options.tag.replace(/-/g, '_'));\n frame.setAttribute('allowpaymentrequest', 'true');\n frame.setAttribute('allow', 'payment');\n frame.style.border = 'none';\n\n // Apply per-component sandbox — fallback to restrictive default if tag unknown\n const sandbox = SANDBOX[options.tag] ?? 'allow-scripts allow-forms allow-same-origin';\n frame.setAttribute('sandbox', sandbox);\n\n // Phase 1: Wire lifecycle props to events (before containerTemplate)\n // Guard: only wire once — handlers use late binding (read from props at call time),\n // so the first registration works for all future prop values. Without this guard,\n // a failed render() (e.g., PayPal missing paymentId) followed by retry would\n // register duplicate handlers, causing callbacks to fire multiple times per event.\n if (!lifecycleWired) {\n wireLifecycleProps(instance.props, instance.event);\n lifecycleWired = true;\n }\n\n // Track event subscriptions from template phases for rollback cleanup.\n // Lifecycle handlers (Phase 1) are guarded by lifecycleWired — only template subs need tracking.\n const templateSubs: Cancelable[] = [];\n const trackedEvent: EventEmitterType = {\n on(eventName: string, handler: (...args: any[]) => void) {\n const sub = instance.event.on(eventName, handler);\n templateSubs.push(sub);\n return sub;\n },\n once(eventName: string, handler: (...args: any[]) => void) {\n const sub = instance.event.once(eventName, handler);\n templateSubs.push(sub);\n return sub;\n },\n trigger(eventName: string, ...args: any[]) {\n instance.event.trigger(eventName, ...args);\n },\n off(eventName: string, handler: (...args: any[]) => void) {\n instance.event.off(eventName, handler);\n },\n destroy() {\n instance.event.destroy();\n }\n };\n\n // Phases 2-4 can register event handlers (via trackedEvent) and populate dispatchMap.\n // Wrap in try-catch so failures clean up side effects — without this, a retry would\n // accumulate duplicate template handlers and stale dispatch entries.\n let placeholder: HTMLElement | undefined;\n let containerNode: HTMLElement | undefined;\n let dataProps: Record<string, any> = {};\n let functionNames: string[] = [];\n try {\n // Phase 2: Create placeholder if prerenderTemplate provided\n if (options.prerenderTemplate) {\n placeholder = options.prerenderTemplate({\n uid,\n frame,\n placeholder: undefined,\n doc,\n props: instance.props,\n event: trackedEvent,\n dimensions: options.dimensions ?? {width: '100%', height: 'auto'},\n state: instance.state,\n container: targetEl\n }) as HTMLElement | undefined;\n }\n\n // Phase 3: Container template — MUST run before computed prop factories\n // Container template may mutate state (e.g., state.__container for PayPal)\n if (options.containerTemplate) {\n containerNode = options.containerTemplate({\n uid,\n frame,\n placeholder,\n doc,\n props: instance.props,\n event: trackedEvent,\n dimensions: options.dimensions ?? {width: '100%', height: 'auto'},\n state: instance.state,\n container: targetEl\n }) as HTMLElement | undefined;\n }\n\n // Phase 4: Build dispatch map + data payload AFTER containerTemplate\n ({dataProps, functionNames} = buildDataPayload({\n props: instance.props,\n options,\n state: instance.state,\n dispatchMap: renderState.dispatchMap\n }));\n } catch (err) {\n // Clean up template event subscriptions to prevent duplicate handlers on retry\n for (const sub of templateSubs) sub.cancel();\n // Clean up user/computed dispatch entries added by buildDataPayload\n const builtins = new Set(['close', 'resize', 'show', 'hide', 'getParentDomain', 'focus']);\n for (const key of renderState.dispatchMap.keys()) {\n if (!builtins.has(key)) renderState.dispatchMap.delete(key);\n }\n throw err;\n }\n\n // Mark as rendered AFTER template phases that can throw (e.g., PayPal validates props\n // in containerTemplate). Setting frame earlier would block render() retries on failure.\n renderState.frame = frame;\n\n // Phase 7 helper: defined before try block so catch can clean up the listener.\n const targetOrigin = new URL(options.url).origin;\n const sendInitialProps = () => {\n try {\n frame.contentWindow?.postMessage(\n {type: BRIDGE_INIT_MSG, props: dataProps, functionNames},\n targetOrigin\n );\n } catch {\n // Expected for cross-origin iframes before navigation completes —\n // contentWindow origin is still the parent's origin, not the target.\n // The load event listener will retry successfully.\n }\n };\n\n // Wrap post-frame-set phases in try/catch so async failures (Penpal rejection,\n // updateProps error) roll back render state instead of leaving a broken instance\n // that blocks retries with \"Component already rendered\".\n try {\n // Phase 5: Append to DOM\n if (containerNode) {\n targetEl.appendChild(containerNode);\n renderState.containerEl = containerNode;\n renderState.ownsContainer = true;\n } else {\n // No container template — append iframe directly\n targetEl.appendChild(frame);\n renderState.containerEl = targetEl;\n }\n\n // Phase 6: Notify container template that DOM is ready (for backdrop transitions etc.)\n instance.event.trigger(EVENT.DISPLAY);\n\n // Phase 7: Send initial data + function names via sync postMessage before iframe loads script.\n // Send on each iframe navigation/load attempt — child script picks up the first one\n frame.addEventListener('load', sendInitialProps);\n // Also try sending immediately if contentWindow is available (e.g., same-origin)\n if (frame.contentWindow) {\n sendInitialProps();\n }\n\n // Phase 8: Establish Penpal connection\n if (!frame.contentWindow) {\n throw new Error('iframe contentWindow is not available — frame may not be in the DOM');\n }\n\n const messenger = new WindowMessenger({\n remoteWindow: frame.contentWindow,\n allowedOrigins: [new URL(options.url).origin]\n });\n\n const connection = connect<ChildMethods>({\n messenger,\n methods: {\n callParent: (name: string, args: any[]) => {\n const fn = renderState.dispatchMap.get(name);\n if (!fn) throw new Error(`Unknown parent method: ${name}`);\n return fn(...args);\n }\n } satisfies ParentMethods\n });\n\n renderState.connection = connection;\n\n // Wait for child to connect — destroy() during handshake rejects this promise\n let remote: Awaited<typeof connection.promise>;\n try {\n remote = await connection.promise;\n } catch (err) {\n if (renderState.destroyed) return;\n throw err;\n }\n if (renderState.destroyed) return;\n renderState.remote = remote;\n\n // Expose callChild on state so components (e.g., CardInput) can do parent→child RPC\n instance.state.__callChild = remote.callChild;\n\n // Send initial data + function names to child via Penpal (ensures delivery even if postMessage was missed)\n await remote.updateProps(dataProps, functionNames);\n if (renderState.destroyed) return; // destroyed while sending initial props\n\n // Flush any prop updates that were buffered during the Penpal handshake\n if (renderState.pendingPropsUpdate) {\n const pending = renderState.pendingPropsUpdate;\n renderState.pendingPropsUpdate = null;\n\n // Track in-flight removals so concurrent updateProps calls detect them (via pendingRemovals).\n // Capture original function refs so cleanup doesn't clobber concurrent updates.\n const retainedFns = new Set(pending.functionNames ?? []);\n const flushRemovals = new Map<string, Function>();\n for (const key of Object.keys(pending.dataProps)) {\n if (renderState.dispatchMap.has(key) && !retainedFns.has(key)) {\n flushRemovals.set(key, renderState.dispatchMap.get(key)!);\n renderState.pendingRemovals.add(key);\n }\n }\n\n await renderState.remote!.updateProps(pending.dataProps, pending.functionNames);\n if (renderState.destroyed) return;\n\n // Clean up deferred dispatch map removals from function→data transitions during handshake.\n // Only remove if entry hasn't been replaced by a concurrent updateProps call.\n for (const [key, originalFn] of flushRemovals) {\n renderState.pendingRemovals.delete(key);\n if (renderState.dispatchMap.get(key) === originalFn) {\n renderState.dispatchMap.delete(key);\n }\n }\n }\n\n // RENDERED is now triggered on first resize (earlier visibility).\n // Ensure it fires even if no resize occurs (e.g., fixed-size components).\n if (!renderedTriggered) {\n renderedTriggered = true;\n instance.event.trigger(EVENT.RENDERED);\n }\n\n // Clean up load listener\n frame.removeEventListener('load', sendInitialProps);\n } catch (err) {\n // Roll back render state so the instance can retry render() on recoverable failures.\n // destroy() during handshake returns early (doesn't throw), so this only catches real errors.\n frame.removeEventListener('load', sendInitialProps);\n // Cancel template event subscriptions to prevent duplicate handlers on retry.\n // Without this, each failed render adds RENDERED/RESIZE/DESTROY handlers that\n // accumulate — PayPal's DESTROY handler operates on global Buttons.instances state.\n for (const sub of templateSubs) sub.cancel();\n // Clear stale RPC handle (set after Penpal connects but before updateProps fails)\n delete instance.state.__callChild;\n if (renderState.connection) {\n renderState.connection.destroy();\n renderState.connection = null;\n }\n renderState.remote = null;\n renderState.frame = null;\n if (renderState.ownsContainer && renderState.containerEl) {\n renderState.containerEl.remove();\n } else if (frame.parentNode) {\n frame.remove();\n }\n renderState.containerEl = null;\n renderState.ownsContainer = false;\n renderState.pendingPropsUpdate = null;\n renderState.pendingRemovals.clear();\n // Clear user/computed dispatch entries so retry re-derives from current props.\n // Retain built-in methods (resize, close, show, hide, getParentDomain, focus).\n const builtins = new Set(['close', 'resize', 'show', 'hide', 'getParentDomain', 'focus']);\n for (const key of renderState.dispatchMap.keys()) {\n if (!builtins.has(key)) {\n renderState.dispatchMap.delete(key);\n }\n }\n renderedTriggered = false;\n throw err;\n }\n };\n\n instance.updateProps = async (newProps: Partial<P>): Promise<void> => {\n if (renderState.destroyed) throw new Error('Component is destroyed');\n\n // Normalize aliased prop names to canonical before processing\n const normalized = normalizeAliases(\n newProps as Record<string, any>,\n options.aliases\n ) as Partial<P>;\n\n // Mutate props in-place so closures see current values\n Object.assign(instance.props, normalized);\n\n // Before render(): props mutation is sufficient — render() will re-derive dispatch map\n // from instance.props via buildDataPayload(). Skip classification to avoid stale dispatch\n // entries (e.g., function→data transition before first render leaves orphaned dispatch keys).\n if (!renderState.frame) return;\n\n // Classify new props: update dispatch map for functions, collect data for child\n const newDataProps: Record<string, any> = {};\n const newFunctionNames: string[] = [];\n const computedPropKeys = new Set<string>(\n options.computedProps ? Object.keys(options.computedProps) : []\n );\n // Track function→data transitions for deferred dispatch map cleanup.\n // Captures the original function ref so concurrent updateProps calls don't clobber each other.\n const deferredRemovals = new Map<string, Function>();\n\n for (const [key, value] of Object.entries(normalized as Record<string, any>)) {\n if (LIFECYCLE_PROPS.has(key) || computedPropKeys.has(key)) continue;\n if (typeof value === 'function') {\n // Track newly added functions so child can create stubs.\n // Also re-track if the pending buffer has a stale data entry for this key\n // (handles function→undefined→function toggle during handshake: dispatch map\n // still has the key due to deferred deletion, but the buffer would send\n // undefined and kill the callback on flush).\n const hasStaleBufferedData =\n renderState.pendingPropsUpdate != null && key in renderState.pendingPropsUpdate.dataProps;\n // Also re-track if a concurrent updateProps is delivering a removal for this key\n // (dispatch map still has the key due to deferred deletion, but the child will\n // receive the removal first and lose its stub).\n const hasPendingRemoval = renderState.pendingRemovals.has(key);\n if (!renderState.dispatchMap.has(key) || hasStaleBufferedData || hasPendingRemoval) {\n newFunctionNames.push(key);\n }\n // Update dispatch map — no Penpal re-registration needed\n renderState.dispatchMap.set(key, value);\n } else {\n // If prop was previously a function, defer dispatch map removal.\n // During handshake: defer to keep functions available for child's pending call flush.\n // Post-connect: defer until child receives the updateProps message to avoid race\n // where child invokes the old stub before the update arrives.\n if (renderState.dispatchMap.has(key)) {\n if (renderState.remote) {\n deferredRemovals.set(key, renderState.dispatchMap.get(key)!);\n renderState.pendingRemovals.add(key);\n }\n // During handshake: kept alive, cleaned up during flush (existing behavior)\n }\n newDataProps[key] = value;\n }\n }\n\n const resolvedFunctionNames = newFunctionNames.length > 0 ? newFunctionNames : undefined;\n\n // Send data props + any new function names to child via Penpal\n if (renderState.remote) {\n await renderState.remote.updateProps(newDataProps, resolvedFunctionNames);\n // Clean up dispatch entries for function→data transitions now that child received the update.\n // Only remove if entry hasn't been replaced by a concurrent updateProps call.\n for (const [key, originalFn] of deferredRemovals) {\n renderState.pendingRemovals.delete(key);\n if (renderState.dispatchMap.get(key) === originalFn) {\n renderState.dispatchMap.delete(key);\n }\n }\n } else {\n // During handshake (frame exists, remote pending): buffer for post-handshake flush.\n // Buffer update — will be flushed after Penpal handshake completes\n if (!renderState.pendingPropsUpdate) {\n renderState.pendingPropsUpdate = {dataProps: {}, functionNames: undefined};\n }\n Object.assign(renderState.pendingPropsUpdate.dataProps, newDataProps);\n // Remove previously buffered function names that are now data props\n // (handles function → non-function transition during handshake)\n if (renderState.pendingPropsUpdate.functionNames) {\n const dataKeys = Object.keys(newDataProps);\n if (dataKeys.length > 0) {\n const dataKeySet = new Set(dataKeys);\n renderState.pendingPropsUpdate.functionNames =\n renderState.pendingPropsUpdate.functionNames.filter((n) => !dataKeySet.has(n));\n if (renderState.pendingPropsUpdate.functionNames.length === 0) {\n renderState.pendingPropsUpdate.functionNames = undefined;\n }\n }\n }\n if (resolvedFunctionNames) {\n // Clean stale data entries for keys that are now functions\n for (const name of resolvedFunctionNames) {\n delete renderState.pendingPropsUpdate.dataProps[name];\n }\n renderState.pendingPropsUpdate.functionNames = [\n ...(renderState.pendingPropsUpdate.functionNames ?? []),\n ...resolvedFunctionNames\n ];\n }\n }\n };\n\n instance.destroy = async (): Promise<void> => {\n if (renderState.destroyed) return;\n renderState.destroyed = true;\n\n instance.event.trigger(EVENT.DESTROY);\n\n if (renderState.connection) {\n renderState.connection.destroy();\n renderState.connection = null;\n }\n renderState.remote = null;\n\n // Remove DOM\n if (renderState.frame) {\n renderState.frame.remove();\n renderState.frame = null;\n }\n if (renderState.ownsContainer && renderState.containerEl) {\n renderState.containerEl.remove();\n }\n\n instance.event.destroy();\n renderState.dispatchMap.clear();\n };\n\n instance.close = async (): Promise<void> => {\n await instance.destroy();\n };\n\n /**\n * Expose renderState for tests\n */\n (instance as any).__renderState = renderState;\n}\n","import {EventEmitter} from './event-emitter';\nimport {resolveDriver} from './drivers';\nimport {attachRenderMethods} from './render';\nimport type {\n BridgeComponent,\n BridgeComponentConstructor,\n BridgeComponentOptions,\n EventEmitterType\n} from './types';\n\nconst driverPackageMap: Record<string, string> = {\n react: '@monei-js/react-components',\n vue3: '@monei-js/vue-components',\n angular: '@monei-js/angular-components'\n};\n\nfunction warnDriverDeprecation(name: string): void {\n const pkg = driverPackageMap[name];\n const replacement = pkg ? `Use ${pkg} instead.` : '';\n console.warn(`[MONEI] .driver('${name}') is deprecated. ${replacement}`.trim());\n}\n\n/**\n * Normalize aliased prop names to canonical names.\n * Aliases define alternative INPUT names: { style: 'innerStyle' } means\n * merchants can pass either `style` or `innerStyle`, but internally\n * the canonical name `style` is always used (matching zoid semantics).\n */\nexport function normalizeAliases(\n props: Record<string, any>,\n aliases?: Record<string, string>\n): Record<string, any> {\n if (!aliases) return props;\n\n // Build reverse map: alias value → canonical key\n const reverseMap = new Map<string, string>();\n for (const [canonical, alias] of Object.entries(aliases)) {\n reverseMap.set(alias, canonical);\n }\n\n const result: Record<string, any> = {};\n for (const [key, value] of Object.entries(props)) {\n const canonicalKey = reverseMap.get(key) ?? key;\n result[canonicalKey] = value;\n }\n return result;\n}\n\n/**\n * Creates a bridge component constructor (replaces zoid.create).\n *\n * Returns a class that can be instantiated with `new Component(props)`\n * and has a static `.driver()` method for framework wrappers.\n */\nexport function createComponent<P extends Record<string, any>>(\n options: BridgeComponentOptions<P>\n): BridgeComponentConstructor<P> {\n class Component implements BridgeComponent<P> {\n props: P;\n state: Record<string, any> = {};\n event: EventEmitterType;\n submit?: (options?: any) => Promise<any>;\n\n constructor(props: P) {\n this.event = new EventEmitter();\n\n // Normalize aliased prop names to canonical (e.g., innerStyle → style)\n const normalizedProps = normalizeAliases(props as Record<string, any>, options.aliases) as P;\n\n // Apply default props\n if (options.defaultProps) {\n const defaults = options.defaultProps({event: this.event});\n this.props = {...defaults, ...normalizedProps} as P;\n } else {\n this.props = {...normalizedProps};\n }\n\n // Validate\n if (options.validate) {\n options.validate({props: this.props});\n }\n\n // Wire render/destroy/close methods (Task 2)\n attachRenderMethods(this, options);\n\n // Wire submit() if provided by component options (e.g., CardInput)\n if (options.submit) {\n this.submit = options.submit(this);\n }\n }\n\n // Render — wired by attachRenderMethods in constructor\n async render(_container?: string | HTMLElement): Promise<void> {\n throw new Error('render() not attached');\n }\n\n // UpdateProps — wired by attachRenderMethods\n async updateProps(_props: Partial<P>): Promise<void> {\n throw new Error('updateProps() not attached — call render() first');\n }\n\n async close(): Promise<void> {\n throw new Error('close() not attached');\n }\n\n async destroy(): Promise<void> {\n throw new Error('destroy() not attached');\n }\n\n driver(name: string, deps?: Record<string, any>): any {\n warnDriverDeprecation(name);\n return resolveDriver(name, Component as unknown as BridgeComponentConstructor<P>, deps);\n }\n }\n\n // Wrapper that supports both `new Component(props)` and `Component(props)`\n function ComponentWrapper(this: any, props: P) {\n if (!(this instanceof ComponentWrapper)) {\n return new (ComponentWrapper as any)(props);\n }\n return new Component(props);\n }\n\n // Copy prototype so instanceof checks work\n ComponentWrapper.prototype = Component.prototype;\n\n // Static driver method\n ComponentWrapper.driver = function (name: string, deps?: Record<string, any>): any {\n warnDriverDeprecation(name);\n return resolveDriver(name, ComponentWrapper as unknown as BridgeComponentConstructor<P>, deps);\n };\n\n // Store options on prototype for later tasks to access\n (Component.prototype as any).__options = options;\n\n return ComponentWrapper as unknown as BridgeComponentConstructor<P>;\n}\n","export enum CLASS {\n VISIBLE = 'is-visible',\n INVISIBLE = 'is-invisible'\n}\n","import {EVENT} from './bridge/constants';\nimport {destroyElement, toCSS} from './bridge/props';\nimport {CLASS} from './enums';\n\nexport type ContainerConfig = {\n background?: string;\n overflow?: string;\n borderRadius?: string;\n fadeOnRender?: boolean;\n allowTransparency?: boolean;\n modal?: boolean;\n};\n\nexport function createContainerTemplate(config: ContainerConfig = {}) {\n const {\n background = '#fff',\n overflow,\n borderRadius,\n fadeOnRender = true,\n allowTransparency = false,\n modal = false\n } = config;\n\n return function containerTemplateFn({\n uid,\n frame,\n placeholder,\n doc,\n props,\n event,\n dimensions: {width, height}\n }: Record<any, any>): HTMLElement | undefined {\n if (!frame) {\n return;\n }\n\n if (allowTransparency) {\n frame.setAttribute('allowtransparency', 'true');\n frame.style.background = 'transparent';\n }\n\n const div = doc.createElement('div');\n div.setAttribute('id', uid);\n const style = doc.createElement('style');\n if (props?.cspNonce) {\n style.setAttribute('nonce', props.cspNonce);\n }\n\n if (modal) {\n const backdrop = doc.createElement('div');\n backdrop.classList.add('backdrop');\n\n style.appendChild(\n doc.createTextNode(`\n #${uid} {\n position: fixed;\n inset: 0;\n z-index: 99999;\n }\n #${uid} > .backdrop {\n position: fixed;\n inset: 0;\n background-color: rgba(40, 40, 40, 0.7);\n opacity: 0;\n transition: opacity 0.35s ease-in-out;\n will-change: opacity;\n }\n #${uid} > .backdrop.${CLASS.VISIBLE} {\n opacity: 1;\n }\n #${uid} > iframe {\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transition: opacity .2s ease-in-out;\n }\n #${uid} > iframe.${CLASS.INVISIBLE} {\n opacity: 0;\n }\n #${uid} > iframe.${CLASS.VISIBLE} {\n opacity: 1;\n }\n `)\n );\n\n div.appendChild(backdrop);\n div.appendChild(frame);\n if (placeholder) {\n div.appendChild(placeholder);\n }\n div.appendChild(style);\n\n event.on(EVENT.DISPLAY, () => {\n void backdrop.offsetHeight;\n requestAnimationFrame(() => backdrop.classList.add(CLASS.VISIBLE));\n });\n\n event.on(EVENT.BEFORE_CLOSE, () => {\n backdrop.classList.remove(CLASS.VISIBLE);\n });\n\n // Modal always hides iframe until RENDERED (backdrop covers the page)\n frame.classList.add(CLASS.INVISIBLE);\n if (fadeOnRender && placeholder) {\n placeholder.classList.add(CLASS.VISIBLE);\n }\n\n event.on(EVENT.RENDERED, () => {\n if (fadeOnRender) {\n if (placeholder) {\n placeholder.classList.remove(CLASS.VISIBLE);\n placeholder.classList.add(CLASS.INVISIBLE);\n }\n frame.classList.remove(CLASS.INVISIBLE);\n frame.classList.add(CLASS.VISIBLE);\n setTimeout(() => destroyElement(placeholder), 1);\n } else {\n if (placeholder) destroyElement(placeholder);\n frame.style.transition = 'none';\n frame.classList.remove(CLASS.INVISIBLE);\n frame.classList.add(CLASS.VISIBLE);\n }\n });\n\n // No RESIZE handler — fullscreen modal uses inset: 0\n } else {\n const innerStyle = props?.style || props?.innerStyle;\n const initialHeight =\n height === '0'\n ? '0'\n : toCSS(\n innerStyle?.base?.height || innerStyle?.height || (height === 'auto' ? 45 : height)\n );\n\n const containerStyles = [\n 'display: block',\n 'position: relative',\n `width: ${width}`,\n `height: ${allowTransparency ? height : initialHeight}`,\n `background: ${background}`\n ];\n if (overflow) {\n containerStyles.push(`overflow: ${overflow}`);\n }\n if (borderRadius) {\n containerStyles.push(`border-radius: ${borderRadius}`);\n }\n\n style.appendChild(\n doc.createTextNode(`\n #${uid} {\n ${containerStyles.join(';\\n ')};\n }\n #${uid} > iframe {\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transition: opacity .2s ease-in-out;\n }\n #${uid} > iframe.${CLASS.INVISIBLE} {\n opacity: 0;\n }\n #${uid} > iframe.${CLASS.VISIBLE} {\n opacity: 1;\n }\n `)\n );\n\n div.appendChild(frame);\n if (placeholder) {\n div.appendChild(placeholder);\n }\n div.appendChild(style);\n\n event.on(EVENT.RESIZE, ({width: newWidth, height: newHeight}: Record<any, any>) => {\n if (typeof newWidth === 'number') {\n div.style.width = toCSS(newWidth);\n }\n\n if (typeof newHeight === 'number') {\n div.style.height = toCSS(newHeight);\n }\n });\n\n // Only hide iframe when there's a placeholder to crossfade with.\n // Without a placeholder, the iframe starts visible — child apps hide their\n // own body (display:none) until ready, and parent components use their own\n // loading overlays (e.g., React Skeleton). This eliminates the timing gap\n // between skeleton removal (onLoad) and iframe visibility (RENDERED).\n if (placeholder) {\n frame.classList.add(CLASS.INVISIBLE);\n if (fadeOnRender) {\n placeholder.classList.add(CLASS.VISIBLE);\n }\n\n event.on(EVENT.RENDERED, () => {\n if (fadeOnRender) {\n placeholder.classList.remove(CLASS.VISIBLE);\n placeholder.classList.add(CLASS.INVISIBLE);\n frame.classList.remove(CLASS.INVISIBLE);\n frame.classList.add(CLASS.VISIBLE);\n setTimeout(() => destroyElement(placeholder), 1);\n } else {\n destroyElement(placeholder);\n frame.style.transition = 'none';\n frame.classList.remove(CLASS.INVISIBLE);\n frame.classList.add(CLASS.VISIBLE);\n }\n });\n }\n }\n\n return div;\n };\n}\n\nexport const containerTemplate = createContainerTemplate({\n overflow: 'hidden',\n borderRadius: 'var(--monei-radius, 4px)'\n});\n\nexport const modalContainerTemplate = createContainerTemplate({modal: true});\n","import {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport {containerTemplate} from '../container';\nimport type {CardInputProps} from './types';\nimport {transformStyle, validateComponentProps} from '../utils';\nimport {config} from '../config';\nimport {getPaymentMethods} from '../api';\n\nexport * from './types';\n\nconst getCreateTokenFunction = (ref: any) => {\n if (ref.state?.__createToken) {\n return ref.state.__createToken;\n }\n throw new Error('Index is not registered');\n};\n\nexport const createToken = async (\n component?: any,\n options?: any\n): Promise<{token?: string; error?: string}> => {\n console.warn('[MONEI] Standalone createToken() is deprecated. Use cardInput.submit() instead.');\n const {data} = await getCreateTokenFunction(component)(options);\n return data;\n};\n\nconst componentOptions: BridgeComponentOptions<CardInputProps> = {\n tag: 'monei-card-input',\n url: config.cardInputUrl,\n dimensions: {\n width: '100%',\n height: 'auto'\n },\n autoResize: {\n width: false,\n height: true\n },\n aliases: {\n sessionId: 'orderId',\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n }\n },\n validate: validateComponentProps,\n submit: (instance) => async (opts?: any) => {\n const createTokenFn = instance.state?.__createToken;\n if (!createTokenFn) {\n throw new Error('CardInput is not rendered or connection is pending — call render() first');\n }\n const {data} = await createTokenFn(opts);\n return data;\n },\n containerTemplate: (params) => {\n // Set createToken on state — uses callChild (available after Penpal connects).\n // createToken is only called after user fills card, so connection is always ready.\n params.state.__createToken = async (data: any = {}) => {\n const callChild = params.state.__callChild;\n if (!callChild) {\n throw new Error('CardInput instance is not registered');\n }\n return {data: await callChild('createToken', [data])};\n };\n return containerTemplate(params);\n },\n prerenderTemplate: ({doc, props}) => {\n const html = doc.createElement('html');\n const body = doc.createElement('body');\n body.style.margin = '0';\n body.style.background = '#fff';\n const div = doc.createElement('div');\n div.style.height = '45px';\n div.style.boxSizing = 'border-box';\n const style = props.style || (props as any).innerStyle;\n if (style?.base) {\n Object.assign(div.style, transformStyle(style.base));\n }\n if (style?.loading) {\n Object.assign(div.style, transformStyle(style.loading));\n }\n body.appendChild(div);\n html.appendChild(body);\n return html;\n }\n};\n\nexport const CardInput = createComponent<CardInputProps>(componentOptions);\n","import {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport type {ConfirmPaymentParams, PaymentModalProps} from './types';\nimport {config} from '../config';\nimport type {PaymentResult} from '../types';\nimport {createContainerTemplate} from '../container';\n\nexport * from './types';\n\nconst componentOptions: BridgeComponentOptions<PaymentModalProps> = {\n tag: 'monei-payment-modal',\n url: config.paymentModalUrl,\n dimensions: {\n width: '100%',\n height: '100%'\n },\n autoResize: {\n width: false,\n height: false\n },\n aliases: {\n style: 'innerStyle'\n },\n containerTemplate: createContainerTemplate({\n background: 'transparent',\n fadeOnRender: false,\n allowTransparency: true\n })\n};\n\nexport const PaymentModal = createComponent<PaymentModalProps>(componentOptions);\n\nexport const confirmPayment = (params: ConfirmPaymentParams) => {\n const rootNode = document.createElement('div');\n const bodyOverflow = document.body.style.overflow;\n\n // Apply fullscreen styles BEFORE rendering so the iframe gets the correct\n // viewport size from the start (prevents mobile media query from matching).\n Object.assign(document.body.style, {overflow: 'hidden'});\n Object.assign(rootNode.style, {\n position: 'fixed',\n overflow: 'hidden',\n display: 'block',\n top: '0',\n bottom: '0',\n left: '0',\n right: '0',\n width: '100%',\n height: '100%',\n zIndex: '99999'\n });\n document.body.appendChild(rootNode);\n\n let modal: InstanceType<typeof PaymentModal> | null = null;\n\n const cleanup = () => {\n void modal?.destroy();\n modal = null;\n Object.assign(document.body.style, {overflow: bodyOverflow});\n if (rootNode.parentNode) rootNode.parentNode.removeChild(rootNode);\n };\n\n return new Promise<PaymentResult>((resolve, reject) => {\n modal = new PaymentModal({\n ...params,\n isOpen: true,\n onResult: (result: any) => {\n resolve(result);\n cleanup();\n },\n onError: (error: any) => {\n reject(error);\n cleanup();\n }\n } as any);\n modal.render(rootNode).catch((err) => {\n cleanup();\n reject(err);\n });\n });\n};\n","import {createComponent} from '../bridge/create-component';\nimport {EVENT} from '../bridge/constants';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport {createToken, getPaymentMethods} from '../api';\nimport {config} from '../config';\nimport {containerTemplate} from '../container';\nimport {loadScript, parsePx} from '../utils';\nimport type {PayPalProps} from './types';\n\nexport * from './types';\n\nconst namespace = 'monei-paypal';\n\nconst onLoadPaypal = async (props: PayPalProps, state: any, src: string) => {\n const script = await loadScript(src, props.cspNonce, {namespace, cspNonce: props.cspNonce}, true);\n state.__scriptId = script.dataset.uidAuto;\n const defaultStyle: Record<string, any> = {\n layout: 'horizontal',\n tagline: false,\n height: 45\n };\n const radius = parsePx(props.style?.borderRadius ?? props.borderRadius);\n if (radius) defaultStyle.borderRadius = radius;\n const style = {...defaultStyle, ...props.style};\n style.height = parsePx(style.height, 45);\n props.onLoad?.(true);\n let token: string | undefined;\n await (window as any)[namespace]\n .Buttons({\n createOrder: async () => {\n try {\n const result = await createToken({\n paymentId: props.paymentId,\n accountId: props.accountId,\n sessionId: props.sessionId,\n amount: props.amount,\n currency: props.currency,\n transactionType: props.transactionType,\n paymentMethod: {\n paypal: {}\n }\n });\n ({token} = result);\n return result.paypal?.orderId;\n } catch (error) {\n props.onError?.(error);\n return;\n }\n },\n onApprove: function (data: any) {\n if (data.orderID) {\n props.onSubmit({token});\n } else {\n props.onError?.(data);\n }\n },\n onClick: function (_data: any, actions: any) {\n let shouldOpen = true;\n if (props.onBeforeOpen) {\n shouldOpen = props.onBeforeOpen();\n }\n if (!shouldOpen) return actions.reject();\n },\n style\n })\n .render(state.__container);\n};\n\nconst componentOptions: BridgeComponentOptions<PayPalProps> = {\n tag: namespace,\n url: config.paypalUrl,\n dimensions: {\n width: '100%',\n height: '0'\n },\n autoResize: {\n width: false,\n height: false\n },\n aliases: {\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n },\n __onLoadPayPal: {\n factory: ({props, state}) => onLoadPaypal.bind(null, props as PayPalProps, state),\n type: 'function'\n }\n },\n containerTemplate: (params) => {\n params.state.__container = params.container;\n if (!params.props.accountId && !params.props.paymentId) {\n throw new Error('You need to provide paymentId or accountId');\n }\n const container = containerTemplate(params);\n params.event.on(EVENT.DESTROY, () => {\n (window as any)[namespace]?.Buttons?.instances?.forEach((instance: any) => {\n instance.close();\n });\n const scriptId = params.state.__scriptId;\n if (scriptId) {\n const script = document.querySelector(`script[data-uid-auto=\"${scriptId}\"]`);\n if (script) {\n script.remove();\n }\n }\n });\n return container;\n }\n};\n\nexport const PayPal = createComponent<PayPalProps>(componentOptions);\n","import {createComponent} from '../bridge/create-component';\nimport {EVENT} from '../bridge/constants';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport type {BizumModalProps} from './types';\nimport {config} from '../config';\nimport {modalContainerTemplate} from '../container';\n\nconst componentOptions: BridgeComponentOptions<BizumModalProps> = {\n tag: 'monei-bizum',\n url: config.bizumUrl,\n autoResize: {\n width: false,\n height: false\n },\n containerTemplate: (params) => {\n if (!params.frame) return;\n if (params.props.isHidden) {\n const div = params.doc.createElement('div');\n div.setAttribute('id', params.uid);\n div.style.display = 'none';\n div.appendChild(params.frame);\n if (params.placeholder) div.appendChild(params.placeholder);\n return div;\n }\n return modalContainerTemplate(params);\n },\n defaultProps: ({event}) => ({\n onBeforeClose: () => {\n event.trigger(EVENT.BEFORE_CLOSE);\n }\n })\n};\n\nexport const BizumModal = createComponent<BizumModalProps>(componentOptions);\n","import {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport type {GetPaymentMethodsResponse} from '..';\nimport {getPaymentMethods} from '../api';\nimport {config} from '../config';\nimport {containerTemplate} from '../container';\nimport {validateComponentProps} from '../utils';\nimport {BizumModal} from './modal';\nimport type {BizumProps} from './types';\n\nexport * from './modal';\nexport * from './types';\n\nconst componentOptions: BridgeComponentOptions<BizumProps> = {\n tag: 'monei-bizum-button',\n url: config.bizumButtonUrl,\n dimensions: {\n width: '100%',\n height: 'auto'\n },\n autoResize: {\n width: false,\n height: true\n },\n aliases: {\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n },\n __onClick: {\n factory: ({props, state}) => {\n const rootNode = document.createElement('div');\n return ({amount, currency}: GetPaymentMethodsResponse) => {\n if (state.isOpen) return;\n let shouldOpen = true;\n if (props.onBeforeOpen) {\n shouldOpen = props.onBeforeOpen();\n }\n if (!shouldOpen) return;\n state.isOpen = true;\n if (!rootNode.parentNode) document.body.appendChild(rootNode);\n const bizumModal = new BizumModal({\n amount,\n currency,\n ...props,\n onClose: () => {\n state.isOpen = false;\n window.onpopstate = null;\n document.body.style.overflow = '';\n },\n isOpen: true\n } as any);\n window.history.pushState(null, '', window.location.href);\n window.onpopstate = () => bizumModal.updateProps({isOpen: false});\n Object.assign(document.body.style, {overflow: 'hidden'});\n return bizumModal.render(rootNode);\n };\n },\n type: 'function'\n }\n },\n validate: validateComponentProps,\n containerTemplate\n};\n\nexport const Bizum = createComponent<BizumProps>(componentOptions);\n","import {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport type {GooglePayProps} from './types';\nimport {config} from '../config';\nimport {containerTemplate} from '../container';\nimport {validateComponentProps} from '../utils';\nimport {getPaymentMethods} from '../api';\n\nexport * from './types';\n\nconst componentOptions: BridgeComponentOptions<GooglePayProps> = {\n tag: 'monei-google-pay',\n url: config.paymentRequestUrl,\n dimensions: {\n width: '100%',\n height: '0'\n },\n autoResize: {\n width: false,\n height: true\n },\n aliases: {\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n }\n },\n validate: validateComponentProps,\n containerTemplate\n};\n\nexport const GooglePay = createComponent<GooglePayProps>(componentOptions);\n","import {getPaymentMethods} from '../api';\nimport {createComponent} from '../bridge/create-component';\nimport type {BridgeComponentOptions} from '../bridge/types';\nimport {config} from '../config';\nimport {containerTemplate} from '../container';\nimport {validateComponentProps} from '../utils';\nimport type {PaymentRequestProps} from './types';\n\nexport * from './types';\n\nconst componentOptions: BridgeComponentOptions<PaymentRequestProps> = {\n tag: 'monei-payment-request',\n url: config.paymentRequestUrl,\n dimensions: {\n width: '100%',\n height: 'auto'\n },\n autoResize: {\n width: false,\n height: true\n },\n aliases: {\n style: 'innerStyle'\n },\n computedProps: {\n __getConfig: {\n factory: ({props}) => getPaymentMethods.bind(null, props),\n type: 'function'\n }\n },\n validate: validateComponentProps,\n containerTemplate\n};\n\nexport const PaymentRequest = createComponent<PaymentRequestProps>(componentOptions);\n","export enum NextActionType {\n CONFIRM = 'CONFIRM',\n FRICTIONLESS_CHALLENGE = 'FRICTIONLESS_CHALLENGE',\n BIZUM_CHALLENGE = 'BIZUM_CHALLENGE',\n CHALLENGE = 'CHALLENGE',\n COMPLETE = 'COMPLETE'\n}\n\nexport enum CardBrand {\n Visa = 'visa',\n Mastercard = 'mastercard',\n Amex = 'amex',\n Discover = 'discover',\n Diners = 'diners',\n JCB = 'jcb',\n Maestro = 'maestro',\n UnionPay = 'unionpay',\n Elo = 'elo',\n Hipercard = 'hipercard'\n}\n\nexport enum TransactionType {\n AUTH = 'AUTH',\n SALE = 'SALE',\n PAYOUT = 'PAYOUT',\n VERIF = 'VERIF'\n}\n\nexport interface PaymentResult {\n id: string;\n status: string;\n orderId?: string;\n amount?: number;\n currency?: string;\n accountId?: string;\n statusCode?: string;\n statusMessage?: string;\n nextAction?: {\n type: NextActionType;\n mustRedirect: boolean;\n redirectUrl: string;\n };\n}\n\nexport interface Customer {\n email?: string;\n name?: string;\n phone?: string;\n}\n\nexport interface Address {\n country?: string;\n city?: string;\n line1?: string;\n line2?: string;\n zip?: string;\n state?: string;\n}\n\nexport interface BillingDetails {\n name?: string;\n email?: string;\n phone?: string;\n company?: string;\n address?: Address;\n}\n\nexport interface PaymentMethod {\n card?: {\n cardholderName?: string;\n cardholderEmail?: string;\n };\n}\n\nexport type GetPaymentMethodsRequest = {\n accountId?: string;\n paymentId?: string;\n t?: number;\n};\n\nexport type GetPaymentMethodsResponse = {\n paymentMethods: string[];\n livemode: boolean;\n accountId: string;\n amount?: number;\n currency?: string;\n merchantName?: string;\n merchantUrl?: string;\n countryCode?: string;\n metadata: {\n card: {\n brands: CardBrand[];\n };\n paypal?: {\n clientId: string;\n merchantId: string;\n };\n googlePay?: {\n merchantId: string;\n cvcRequired?: boolean;\n };\n applePay?: {\n merchantId: string;\n };\n clickToPay?: {\n tokenSupport: boolean;\n preselected: boolean;\n visa: {\n srciDpaId: string;\n srcInitiatorId: string;\n };\n mastercard: {\n srciDpaId: string;\n srcInitiatorId: string;\n };\n discover: {\n srciDpaId: string;\n srcInitiatorId: string;\n };\n };\n };\n};\n\nexport type CreateTokenRequest = {\n accountId?: string;\n paymentId?: string;\n sessionId?: string;\n amount?: number;\n currency?: string;\n transactionType?: TransactionType;\n paymentMethod: {\n card?: {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n };\n paypal?: {};\n googlePay?: {\n token: string;\n };\n applePay?: {\n token: string;\n };\n bizum?: {\n phoneNumber: string;\n remember?: boolean;\n };\n clickToPay?: {\n token: string;\n cardBrand: string;\n };\n };\n};\n\nexport type CreateTokenResponse = {\n token?: string;\n /** @deprecated Use `token` instead */\n paymentToken?: string;\n error?: string;\n paypal?: {\n orderId: string;\n };\n};\n\nexport type CreatePaymentRequest = {\n accountId: string;\n pointOfSaleId: string;\n amount: number;\n currency: string;\n signature: string;\n};\n\nexport type SendPaymentReceiptRequest = {\n paymentId: string;\n signature: string;\n customerEmail?: string;\n language?: string;\n};\n\nexport type CreateApplePaySessionRequest = {\n accountId: string;\n validationUrl: string;\n domainName: string;\n displayName: string;\n};\n\nexport type ValidateBizumPhoneRequest = {\n accountId?: string;\n paymentId?: string;\n amount?: number;\n phoneNumber: string;\n};\n","import * as _utils from './utils';\nimport * as _api from './api';\n\nexport * from './card-input';\nexport * from './payment-modal';\nexport * from './paypal';\nexport * from './bizum';\nexport * from './google-pay';\nexport * from './payment-request';\nexport * from './config';\nexport * from './types';\nexport type {BridgeComponent, BridgeComponentConstructor} from './bridge/types';\nexport * from './framework-types';\nexport const api = _api;\nexport const utils = _utils;\n"],"x_google_ignoreList":[0,10],"mappings":"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"}