@thepayulink/checkout 2.0.1 → 2.1.1

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,47 +1,341 @@
1
- var PayulinkCheckoutNS=(()=>{var y=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var _=(o,n)=>{for(var e in n)y(o,e,{get:n[e],enumerable:!0})},E=(o,n,e,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let c of w(n))!$.call(o,c)&&c!==e&&y(o,c,{get:()=>n[c],enumerable:!(i=v(n,c))||i.enumerable});return o};var I=o=>E(y({},"__esModule",{value:!0}),o);var C={};_(C,{default:()=>p});var t="plco",g=!1,S=()=>typeof window!="undefined"&&window.matchMedia("(max-width: 640px)").matches;function P(o){if(g)return;g=!0;let n=`
2
- .${t}-root{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;
3
- font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif}
4
- .${t}-backdrop{position:absolute;inset:0;background:rgba(8,12,20,.62);backdrop-filter:blur(4px)}
5
- .${t}-sheet{position:relative;width:100%;max-width:420px;max-height:92vh;display:flex;flex-direction:column;
6
- background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 24px 70px -20px rgba(0,0,0,.5);
7
- animation:${t}-in .22s cubic-bezier(.16,1,.3,1)}
8
- @keyframes ${t}-in{from{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}
9
- .${t}-head{display:flex;align-items:center;gap:10px;padding:14px 14px 12px;border-bottom:1px solid rgba(15,23,42,.08)}
10
- .${t}-brand{flex:1;min-width:0}
11
- .${t}-name{font-size:13px;font-weight:600;color:#0f172a;line-height:1.2;
12
- overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
13
- .${t}-amount{font-size:20px;font-weight:700;color:#0f172a;letter-spacing:-.02em;margin-top:2px;
14
- font-variant-numeric:tabular-nums}
15
- .${t}-badge{font-size:10px;font-weight:700;letter-spacing:.08em;color:#92400e;background:#fef3c7;
16
- padding:3px 7px;border-radius:5px}
17
- .${t}-close{border:0;background:rgba(15,23,42,.05);color:#475569;width:30px;height:30px;border-radius:8px;
18
- font-size:20px;line-height:1;cursor:pointer;transition:background .15s}
19
- .${t}-close:hover{background:rgba(15,23,42,.1)}
20
- .${t}-close:focus-visible{outline:2px solid ${o||"#38BDF8"};outline-offset:2px}
21
- .${t}-body{flex:1;min-height:420px;background:#f8fafc}
22
- .${t}-frame{width:100%;height:100%;min-height:420px;border:0;display:block}
23
- .${t}-msg{padding:36px 20px;text-align:center;color:#64748b;font-size:13px}
24
- .${t}-cta{display:block;margin:10px 14px 0;padding:13px;border-radius:10px;text-align:center;text-decoration:none;
25
- font-weight:700;font-size:14px;color:#06121f;background:${o||"#38BDF8"}}
26
- .${t}-foot{padding:10px;text-align:center;font-size:11px;color:#94a3b8}
27
- @media (max-width:640px){
28
- .${t}-sheet{max-width:100%;height:100%;max-height:100%;border-radius:0}
1
+ var PayulinkCheckoutNS=(()=>{var Z=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var ue=Object.prototype.hasOwnProperty;var he=(o,g)=>{for(var c in g)Z(o,c,{get:g[c],enumerable:!0})},ge=(o,g,c,i)=>{if(g&&typeof g=="object"||typeof g=="function")for(let a of fe(g))!ue.call(o,a)&&a!==c&&Z(o,a,{get:()=>g[a],enumerable:!(i=de(g,a))||i.enumerable});return o};var ye=o=>ge(Z({},"__esModule",{value:!0}),o);var Pe={};he(Pe,{default:()=>Y});var xe=`
2
+ #pl-overlay * { box-sizing: border-box; margin: 0; padding: 0; }
3
+ #pl-overlay { --pl-blue:#3395ff; --pl-blue-dark:#1f86f5; --pl-brand:#0b3068; --pl-ink:#1a2a44; --pl-mut:#6b7c93; --pl-line:#eceff4;
4
+ position: fixed; inset: 0; z-index: 2147483000; font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
5
+ display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(20,24,31,0);
6
+ animation: pl-backdropIn .4s ease forwards; -webkit-font-smoothing: antialiased; }
7
+ @keyframes pl-backdropIn { to { background: rgba(13,17,23,.62); backdrop-filter: blur(3px); } }
8
+ #pl-overlay.pl-closing { animation: pl-backdropOut .25s ease forwards; }
9
+ @keyframes pl-backdropOut { to { background: rgba(20,24,31,0); backdrop-filter: blur(0); } }
10
+
11
+ #pl-overlay .pl-modal { width: 100%; max-width: 1060px; height: 600px; max-height: 92vh; background: #fff; border-radius: 16px; overflow: hidden; display: flex;
12
+ box-shadow: 0 30px 80px rgba(0,0,0,.45); opacity: 0; transform: translateY(16px) scale(.97);
13
+ animation: pl-modalIn .5s cubic-bezier(.16,1,.3,1) .08s forwards; }
14
+ @keyframes pl-modalIn { to { opacity: 1; transform: none; } }
15
+ #pl-overlay.pl-closing .pl-modal { animation: pl-modalOut .22s ease forwards; }
16
+ @keyframes pl-modalOut { to { opacity: 0; transform: translateY(12px) scale(.97); } }
17
+
18
+ /* ============ LEFT BRAND PANEL ============ */
19
+ #pl-overlay .pl-left { width: 320px; flex-shrink: 0; color: #fff; padding: 26px 24px; display: flex; flex-direction: column; position: relative; overflow: hidden;
20
+ background: radial-gradient(120% 80% at 100% 0%, rgba(255,255,255,.12) 0%, rgba(255,255,255,0) 45%), linear-gradient(165deg, color-mix(in srgb, var(--pl-brand) 86%, #2a55a8) 0%, var(--pl-brand) 55%, color-mix(in srgb, var(--pl-brand) 80%, #000) 100%); }
21
+ #pl-overlay .pl-left::before { content:""; position:absolute; width:240px; height:240px; right:-90px; bottom:120px; border-radius:50%;
22
+ background: radial-gradient(circle, rgba(255,255,255,.10), transparent 70%); animation: pl-float 8s ease-in-out infinite; }
23
+ @keyframes pl-float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-18px)} }
24
+ #pl-overlay .pl-left > * { position: relative; z-index: 1; opacity: 0; animation: pl-fadeUp .55s cubic-bezier(.4,0,.2,1) forwards; }
25
+ #pl-overlay .pl-left > *:nth-child(1){animation-delay:.22s} #pl-overlay .pl-left > *:nth-child(2){animation-delay:.30s}
26
+ #pl-overlay .pl-left > *:nth-child(3){animation-delay:.38s} #pl-overlay .pl-left > *:nth-child(4){animation-delay:.46s}
27
+ @keyframes pl-fadeUp { from{opacity:0;transform:translateY(10px)} to{opacity:1;transform:none} }
28
+
29
+ #pl-overlay .pl-brandrow { display: flex; align-items: center; gap: 12px; margin-bottom: 26px; }
30
+ #pl-overlay .pl-logo { position: relative; width: 50px; height: 50px; border-radius: 14px; background: #fff; display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 5px 16px rgba(0,0,0,.22); overflow: hidden; }
31
+ #pl-overlay .pl-logo img { width: 100%; height: 100%; object-fit: contain; padding: 6px; }
32
+ #pl-overlay .pl-logo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(115deg, transparent 32%, rgba(255,255,255,.8) 50%, transparent 68%); transform: translateX(-160%); animation: pl-shine 5s ease-in-out infinite; }
33
+ @keyframes pl-shine { 0% { transform: translateX(-160%); } 22% { transform: translateX(160%); } 100% { transform: translateX(160%); } }
34
+ #pl-overlay .pl-bname { font-size: 20px; font-weight: 800; letter-spacing: -.3px; line-height: 1.1; }
35
+ #pl-overlay .pl-btrust { display: inline-flex; align-items: center; gap: 5px; margin-top: 6px; font-size: 11.5px; font-weight: 600; color: #cfe0a8;
36
+ background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.14); padding: 3px 9px 3px 6px; border-radius: 20px; }
37
+ #pl-overlay .pl-btrust svg { width: 14px; height: 14px; color: #8fd04f; }
38
+
39
+ #pl-overlay .pl-summary { background: rgba(255,255,255,.92); border-radius: 14px; padding: 18px; color: var(--pl-ink); box-shadow: 0 8px 24px rgba(0,0,0,.16); }
40
+ #pl-overlay .pl-summary .pl-sl { font-size: 13px; font-weight: 600; color: #5b6b85; }
41
+ #pl-overlay .pl-summary .pl-samt { font-size: 32px; font-weight: 800; letter-spacing: -.6px; margin: 6px 0 12px; }
42
+ #pl-overlay .pl-summary .pl-snote { font-size: 12.5px; line-height: 1.55; color: #5b6b85; border-top: 1px solid #eceff4; padding-top: 11px; }
43
+
44
+ #pl-overlay .pl-illus { margin-top: auto; align-self: center; width: 215px; color: #fff; opacity: .9; }
45
+ #pl-overlay .pl-secured { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 18px; font-size: 12px; color: rgba(255,255,255,.7); font-weight: 500; }
46
+ #pl-overlay .pl-secured svg { color: rgba(255,255,255,.7); }
47
+ #pl-overlay .pl-pb { display: inline-flex; align-items: center; gap: 5px; }
48
+ #pl-overlay .pl-pb img { width: 16px; height: 16px; object-fit: contain; border-radius: 4px; background: #fff; padding: 1px; }
49
+ #pl-overlay .pl-pb strong { color: #fff; font-weight: 800; }
50
+
51
+ /* ============ RIGHT / MAIN ============ */
52
+ #pl-overlay .pl-main { flex: 1; display: flex; flex-direction: column; min-width: 0; background: #fff; }
53
+ #pl-overlay .pl-head { display: flex; align-items: center; gap: 4px; padding: 15px 16px; border-bottom: 1px solid var(--pl-line); flex-shrink: 0; }
54
+ #pl-overlay .pl-head .pl-title { flex: 1; text-align: center; font-size: 16px; font-weight: 700; color: var(--pl-ink); }
55
+ #pl-overlay .pl-hic { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; color: var(--pl-mut); cursor: pointer; border: none; background: none; border-radius: 50%; transition: background .15s; flex-shrink: 0; }
56
+ #pl-overlay .pl-hic svg { width: 19px; height: 19px; }
57
+ #pl-overlay .pl-hic:hover { background: #f2f4f7; }
58
+ #pl-overlay .pl-back { opacity: 0; pointer-events: none; transition: opacity .2s; }
59
+ #pl-overlay .pl-back.pl-show { opacity: 1; pointer-events: auto; }
60
+ #pl-overlay .pl-dots { font-size: 20px; } #pl-overlay .pl-close-x { font-size: 24px; }
61
+
62
+ #pl-overlay .pl-vp { flex: 1; position: relative; overflow: hidden; }
63
+ #pl-overlay .pl-screen { position: absolute; inset: 0; overflow-y: auto; opacity: 0; transform: translateX(30px); pointer-events: none;
64
+ transition: transform .3s cubic-bezier(.4,0,.2,1), opacity .3s cubic-bezier(.4,0,.2,1); }
65
+ #pl-overlay .pl-screen.pl-active { opacity: 1; transform: none; pointer-events: auto; }
66
+ #pl-overlay .pl-pad { padding: 24px 28px; }
67
+
68
+ #pl-overlay .pl-foot { display: flex; align-items: center; justify-content: center; gap: 7px; padding: 12px; border-top: 1px solid var(--pl-line); font-size: 12.5px; color: #97a3b4; flex-shrink: 0; background: #fbfcfe; font-weight: 500; }
69
+ #pl-overlay .pl-foot svg { width: 14px; height: 14px; }
70
+
71
+ /* ---- secured splash (gateway init animation) ---- */
72
+ #pl-overlay .pl-splash { position: absolute; inset: 0; z-index: 8; background: #f4f5f7; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; transition: opacity .45s ease, visibility .45s; }
73
+ #pl-overlay .pl-splash.pl-splash-hide { opacity: 0; visibility: hidden; }
74
+ #pl-overlay .pl-shield { position: relative; width: 148px; height: 172px; display: flex; align-items: center; justify-content: center;
75
+ animation: pl-shieldin .65s cubic-bezier(.16,1,.3,1) both, pl-shieldfloat 3.2s ease-in-out 0.65s infinite; transform-origin: center; }
76
+ #pl-overlay .pl-shield-bg { position: absolute; inset: 0; width: 100%; height: 100%; filter: drop-shadow(0 18px 34px rgba(40,90,220,.38)); }
77
+ #pl-overlay .pl-shield-shine { position: absolute; top: 8%; left: 14%; width: 36%; height: 30%; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.55), rgba(255,255,255,0) 70%); z-index: 1; pointer-events: none; }
78
+ #pl-overlay .pl-shield-logo { position: relative; z-index: 2; width: 60px; height: 60px; object-fit: contain; border-radius: 16px; background: #fff; padding: 9px; box-shadow: 0 6px 16px rgba(0,0,0,.20); margin-bottom: 12px;
79
+ animation: pl-shlogoin .6s cubic-bezier(.16,1,.3,1) .2s both; }
80
+ @keyframes pl-shieldin { from { opacity: 0; transform: scale(.5) translateY(12px); } }
81
+ @keyframes pl-shlogoin { from { opacity: 0; transform: scale(.4) rotate(-10deg); } }
82
+ @keyframes pl-shieldfloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
83
+ #pl-overlay .pl-splash-foot { position: absolute; bottom: 48px; display: flex; align-items: center; gap: 7px; font-size: 14px; color: #8a97a8; font-weight: 500;
84
+ opacity: 0; animation: pl-fadeUp .5s ease .45s forwards; }
85
+ #pl-overlay .pl-splash-foot .pl-pb { display: inline-flex; align-items: center; gap: 6px; }
86
+ #pl-overlay .pl-splash-foot img { width: 18px; height: 18px; object-fit: contain; border-radius: 4px; }
87
+ #pl-overlay .pl-splash-foot strong { color: #162f56; font-weight: 800; }
88
+ @media (max-width: 840px) { #pl-overlay .pl-splash { z-index: 12; } #pl-overlay .pl-splash-foot { bottom: 38px; } }
89
+
90
+ /* ---- loader ---- */
91
+ #pl-overlay .pl-loader { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; gap: 18px; }
92
+ @keyframes pl-spin { to { transform: rotate(360deg); } }
93
+ #pl-overlay .pl-bload { position: relative; width: 86px; height: 86px; display: flex; align-items: center; justify-content: center; }
94
+ #pl-overlay .pl-bload img { width: 48px; height: 48px; object-fit: contain; border-radius: 13px; z-index: 3; animation: pl-breathe 1.5s ease-in-out infinite; }
95
+ @keyframes pl-breathe { 0%,100% { transform: scale(1); } 50% { transform: scale(1.12); } }
96
+ #pl-overlay .pl-bring { position: absolute; inset: 4px; border-radius: 50%; z-index: 2; background: conic-gradient(from 0deg, var(--pl-blue), rgba(51,149,255,0) 68%);
97
+ -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px)); mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px)); animation: pl-spin .9s linear infinite; }
98
+ #pl-overlay .pl-bripple { position: absolute; inset: 0; border-radius: 50%; border: 2px solid rgba(51,149,255,.45); z-index: 1; animation: pl-ripple 1.8s ease-out infinite; }
99
+ #pl-overlay .pl-bripple2 { animation-delay: .9s; }
100
+ @keyframes pl-ripple { 0% { transform: scale(.6); opacity: .7; } 100% { transform: scale(1.7); opacity: 0; } }
101
+ #pl-overlay .pl-loader p { font-size: 13px; color: var(--pl-mut); font-weight: 500; animation: pl-fadepulse 1.6s ease-in-out infinite; }
102
+ @keyframes pl-fadepulse { 0%,100% { opacity: .55; } 50% { opacity: 1; } }
103
+
104
+ /* ---- contact form ---- */
105
+ #pl-overlay .pl-h1 { font-size: 19px; font-weight: 700; color: var(--pl-ink); margin-bottom: 4px; letter-spacing: -.2px; }
106
+ #pl-overlay .pl-sub { font-size: 13px; color: var(--pl-mut); margin-bottom: 20px; }
107
+ #pl-overlay .pl-opt { font-weight: 400; color: #aab2bf; }
108
+ #pl-overlay .pl-field { margin-bottom: 18px; }
109
+ #pl-overlay .pl-field label { display: block; font-size: 13px; color: var(--pl-mut); margin-bottom: 7px; font-weight: 600; }
110
+ #pl-overlay .pl-input { width: 100%; padding: 13px 14px; border: 1px solid #d5dae0; border-radius: 9px; font-size: 15px; font-family: inherit; color: var(--pl-ink); outline: none; transition: border-color .15s, box-shadow .15s; }
111
+ #pl-overlay .pl-input:focus { border-color: var(--pl-blue); box-shadow: 0 0 0 3px rgba(51,149,255,.16); }
112
+ #pl-overlay .pl-input::placeholder { color: #aab2bf; }
113
+ #pl-overlay .pl-phone { display: flex; }
114
+ #pl-overlay .pl-phone .pl-cc { display: flex; align-items: center; padding: 0 12px; border: 1px solid #d5dae0; border-right: none; border-radius: 9px 0 0 9px; background: #f7f8fa; font-size: 15px; color: var(--pl-ink); white-space: nowrap; }
115
+ #pl-overlay .pl-phone .pl-input { border-radius: 0 9px 9px 0; }
116
+ #pl-overlay .pl-inwrap { position: relative; }
117
+ #pl-overlay .pl-inicon { position: absolute; left: 13px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: #aab2bf; pointer-events: none; }
118
+ #pl-overlay .pl-padleft { padding-left: 42px; }
119
+ #pl-overlay .pl-cta { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; padding: 15px; margin-top: 8px; background: linear-gradient(135deg, var(--pl-blue), var(--pl-blue-dark)); color: #fff; border: none; border-radius: 11px; font-size: 15px; font-weight: 700; cursor: pointer; font-family: inherit;
120
+ transition: filter .15s, transform .08s, box-shadow .15s; box-shadow: 0 8px 20px rgba(51,149,255,.3); }
121
+ #pl-overlay .pl-cta:hover { filter: brightness(1.05); transform: translateY(-1px); }
122
+ #pl-overlay .pl-cta:active { transform: scale(.99); }
123
+ #pl-overlay .pl-cta-arr svg { width: 18px; height: 18px; transition: transform .15s; }
124
+ #pl-overlay .pl-cta:hover .pl-cta-arr svg { transform: translateX(3px); }
125
+ #pl-overlay .pl-err { color:#e02424; font-size:12.5px; font-weight:600; margin-top:8px; min-height:14px; text-align:center; }
126
+ #pl-overlay .pl-trust { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 16px; font-size: 12px; color: #1a9d57; font-weight: 600; }
127
+ #pl-overlay .pl-trust svg { width: 14px; height: 14px; }
128
+
129
+ /* ============ OPTIONS: nav + pane ============ */
130
+ #pl-overlay .pl-options { display: flex; height: 100%; }
131
+ #pl-overlay .pl-nav { width: 240px; flex-shrink: 0; border-right: 1px solid var(--pl-line); padding: 12px 12px 16px; overflow-y: auto; background: #fcfdff; }
132
+ #pl-overlay .pl-navlabel { font-size: 11px; font-weight: 700; color: #9aa6b6; text-transform: uppercase; letter-spacing: .6px; padding: 12px 8px 8px; }
133
+ #pl-overlay .pl-navitem { display: flex; align-items: center; gap: 12px; padding: 13px 12px; border-radius: 11px; cursor: pointer; transition: background .14s, box-shadow .14s; position: relative; }
134
+ #pl-overlay .pl-navitem:hover { background: #f1f5fd; }
135
+ #pl-overlay .pl-navitem.active { background: #fff; box-shadow: inset 3px 0 0 var(--pl-blue), 0 2px 12px rgba(51,149,255,.12); border: 1px solid #e4ecfb; }
136
+ #pl-overlay .pl-ni-ic { width: 38px; height: 38px; border-radius: 10px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; background: #eaf2ff; color: var(--pl-blue); }
137
+ #pl-overlay .pl-ni-ic svg { width: 20px; height: 20px; }
138
+ #pl-overlay .pl-ni-body { flex: 1; min-width: 0; }
139
+ #pl-overlay .pl-ni-t { font-size: 14.5px; font-weight: 600; color: var(--pl-ink); }
140
+ #pl-overlay .pl-ni-s { font-size: 11.5px; color: var(--pl-mut); margin-top: 2px; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
141
+ #pl-overlay .pl-ni-apps { display: flex; gap: 3px; flex-shrink: 0; }
142
+ #pl-overlay .pl-ni-apps img { width: 19px; height: 19px; border-radius: 5px; background: #fff; border: 1px solid var(--pl-line); padding: 2px; object-fit: contain; }
143
+ #pl-overlay .pl-navitem.pl-disabled { cursor: pointer; }
144
+ #pl-overlay .pl-navitem.pl-disabled:hover { background: #f1f5fd; }
145
+ #pl-overlay .pl-ni-ic.pl-ic-card { background: #eaf0ff; color: #4071e0; }
146
+ #pl-overlay .pl-ni-ic.pl-ic-netbanking { background: #e7f6ef; color: #1a9d57; }
147
+ #pl-overlay .pl-ni-ic.pl-ic-wallet { background: #fdeede; color: #d98324; }
148
+ #pl-overlay .pl-ni-ic.pl-ic-emi { background: #f1ecfd; color: #7a52d8; }
149
+ #pl-overlay .pl-soon { font-size: 10px; font-weight: 700; color: #8a97a8; background: #eef1f5; padding: 4px 8px; border-radius: 999px; white-space: nowrap; flex-shrink: 0; align-self: center; }
150
+ #pl-overlay .pl-navitem.active, #pl-overlay .pl-navitem { animation: pl-fadeUp .36s cubic-bezier(.4,0,.2,1) backwards; }
151
+ #pl-overlay .pl-nav .pl-navitem:nth-of-type(2){animation-delay:.04s} #pl-overlay .pl-nav .pl-navitem:nth-of-type(3){animation-delay:.08s}
152
+ #pl-overlay .pl-nav .pl-navitem:nth-of-type(4){animation-delay:.12s} #pl-overlay .pl-nav .pl-navitem:nth-of-type(5){animation-delay:.16s}
153
+
154
+ /* ---- pane (UPI detail) ---- */
155
+ #pl-overlay .pl-pane { flex: 1; min-width: 0; padding: 22px 26px; overflow-y: auto; }
156
+ #pl-overlay .pl-paneh { font-size: 16px; font-weight: 700; color: var(--pl-ink); margin-bottom: 14px; }
157
+ #pl-overlay .pl-paneh2 { margin-top: 26px; }
158
+ #pl-overlay .pl-qrcard { display: flex; align-items: center; gap: 22px; background: #f4f6fc; border: 1px solid #e9edf6; border-radius: 16px; padding: 20px; animation: pl-qrpop .5s cubic-bezier(.16,1,.3,1) backwards .06s; }
159
+ @keyframes pl-qrpop { from { opacity: 0; transform: scale(.96) translateY(6px); } }
160
+ #pl-overlay .pl-qrbox { position: relative; width: 162px; height: 162px; flex-shrink: 0; background: #fff; border-radius: 14px; padding: 11px; box-shadow: 0 8px 22px rgba(20,40,80,.1); display: flex; align-items: center; justify-content: center; }
161
+ #pl-overlay .pl-qrbox img { display: block; width: 140px !important; height: 140px !important; }
162
+ #pl-overlay .pl-qrside { flex: 1; min-width: 0; }
163
+ #pl-overlay .pl-scan { font-size: 14px; font-weight: 600; color: var(--pl-ink); line-height: 1.4; margin-bottom: 14px; }
164
+ #pl-overlay .pl-approw { display: flex; flex-wrap: wrap; align-content: flex-start; gap: 8px; margin-bottom: 16px; }
165
+ #pl-overlay .pl-uapp { width: 38px; height: 38px; flex-shrink: 0; border: 1px solid #e6ebf4; border-radius: 11px; display: flex; align-items: center; justify-content: center; cursor: pointer; background: #fff; transition: border-color .15s, transform .12s, box-shadow .15s; }
166
+ #pl-overlay .pl-uapp:hover { border-color: var(--pl-blue); transform: translateY(-2px); box-shadow: 0 8px 16px rgba(51,149,255,.16); }
167
+ #pl-overlay .pl-uapp img { width: 100%; height: 100%; object-fit: contain; padding: 7px; }
168
+ #pl-overlay .pl-validrow { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; color: #0a8a4a; background: #e7f8ef; border: 1px solid #bfead0; padding: 5px 12px; border-radius: 20px; }
169
+ #pl-overlay .pl-validrow.pl-expired { color: #e02424; background: #fdecec; border-color: #f5c2c2; }
170
+ #pl-overlay .pl-validrow.pl-expired .pl-dot { background: #e02424; animation: none; }
171
+ #pl-overlay .pl-dot { width: 7px; height: 7px; border-radius: 50%; background: #1aa85a; animation: pl-blink 1.6s infinite; }
172
+ @keyframes pl-blink { 0%{box-shadow:0 0 0 0 rgba(26,168,90,.6)} 70%{box-shadow:0 0 0 7px rgba(26,168,90,0)} 100%{box-shadow:0 0 0 0 rgba(26,168,90,0)} }
173
+
174
+ #pl-overlay .pl-vparow { display: flex; flex-direction: column; gap: 12px; border: 1px solid #e6ebf4; border-radius: 14px; padding: 16px; }
175
+ #pl-overlay .pl-vpa { width: 100%; padding: 14px 14px; border: 1px solid #d5dae0; border-radius: 10px; font-size: 15px; font-family: inherit; color: var(--pl-ink); outline: none; transition: border-color .15s, box-shadow .15s; }
176
+ #pl-overlay .pl-vpa:focus { border-color: var(--pl-blue); box-shadow: 0 0 0 3px rgba(51,149,255,.16); }
177
+ #pl-overlay .pl-vpa::placeholder { color: #aab2bf; }
178
+ #pl-overlay .pl-verify { width: 100%; padding: 15px; background: #16181f; color: #fff; border: none; border-radius: 10px; font-size: 15px; font-weight: 700; cursor: pointer; font-family: inherit; transition: filter .15s, transform .08s; }
179
+ #pl-overlay .pl-verify:hover { filter: brightness(1.25); }
180
+ #pl-overlay .pl-verify:active { transform: scale(.99); }
181
+
182
+ #pl-overlay .pl-pendrow { display:flex; align-items:center; justify-content:center; gap:8px; margin-top:18px; font-size:13px; font-weight:600; color:var(--pl-mut); }
183
+ #pl-overlay .pl-pendrow.pl-fail { color:#e02424; }
184
+ #pl-overlay .pl-mini-spin { width:14px; height:14px; border:2px solid #d5dae0; border-top-color:var(--pl-blue); border-radius:50%; animation:pl-spin .8s linear infinite; display:inline-block; }
185
+ #pl-overlay .pl-qrloading { width:140px; height:140px; border-radius:10px; background:linear-gradient(90deg,#f2f4f7,#e9eef6,#f2f4f7); background-size:200% 100%; animation:pl-shimmer 1.2s linear infinite; }
186
+ @keyframes pl-shimmer { to { background-position:-200% 0; } }
187
+ #pl-overlay .pl-qrerr { width:140px; height:140px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:9px; font-size:11.5px; line-height:1.35; color:#8a97a8; text-align:center; padding:6px; }
188
+ #pl-overlay .pl-retry { background:var(--pl-blue); color:#fff; border:none; border-radius:8px; padding:7px 14px; font:700 12px Inter,sans-serif; cursor:pointer; }
189
+
190
+ /* ---- success (celebration) ---- */
191
+ #pl-overlay .pl-success { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; text-align: center; gap: 6px; }
192
+ #pl-overlay .pl-burst { position: relative; width: 132px; height: 132px; display: flex; align-items: center; justify-content: center; margin-bottom: 14px; }
193
+ #pl-overlay .pl-check { position: relative; z-index: 3; width: 84px; height: 84px; border-radius: 50%; background: linear-gradient(145deg,#13c66a,#00a251); display: flex; align-items: center; justify-content: center; box-shadow: 0 12px 32px rgba(0,162,81,.4); animation: pl-pop .55s cubic-bezier(.2,1.5,.35,1) both, pl-glow 2.4s ease-in-out .7s infinite; }
194
+ #pl-overlay .pl-check svg { width: 44px; height: 44px; stroke: #fff; stroke-width: 3; fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 48; stroke-dashoffset: 48; animation: pl-draw .5s .28s cubic-bezier(.6,0,.3,1) forwards; }
195
+ @keyframes pl-pop { 0% { transform: scale(0); opacity: 0; } 60% { transform: scale(1.12); opacity: 1; } 100% { transform: scale(1); opacity: 1; } }
196
+ @keyframes pl-draw { to { stroke-dashoffset: 0; } }
197
+ @keyframes pl-glow { 0%,100% { box-shadow: 0 12px 32px rgba(0,162,81,.4); } 50% { box-shadow: 0 12px 40px rgba(0,162,81,.6); } }
198
+ #pl-overlay .pl-ripple { position: absolute; z-index: 1; width: 86px; height: 86px; border-radius: 50%; border: 2.5px solid rgba(0,162,81,.45); opacity: 0; animation: pl-rip 1.5s ease-out .12s 2 forwards; }
199
+ #pl-overlay .pl-ripple2 { animation-delay: .55s; border-color: rgba(0,162,81,.3); }
200
+ @keyframes pl-rip { 0% { transform: scale(.6); opacity: .85; } 100% { transform: scale(2.05); opacity: 0; } }
201
+ #pl-overlay .pl-confetti { position: absolute; left: 50%; top: 50%; z-index: 2; background: var(--c); opacity: 0; transform: translate(-50%,-50%) scale(.3); animation: pl-conf 1.9s cubic-bezier(.12,.7,.2,1) forwards; }
202
+ @keyframes pl-conf { 0% { opacity: 0; transform: translate(-50%,-50%) scale(.3); } 12% { opacity: 1; } 72% { opacity: 1; transform: translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) rotate(var(--r)) scale(1); } 100% { opacity: 0; transform: translate(calc(-50% + var(--tx) * 1.12), calc(-50% + var(--ty) * 1.12 + 14px)) rotate(var(--r)) scale(.9); } }
203
+ #pl-overlay .pl-success h2 { font-size: 22px; color: var(--pl-ink); font-weight: 700; animation: pl-fadeUp .45s ease .4s backwards; }
204
+ #pl-overlay .pl-success p { font-size: 13px; color: var(--pl-mut); animation: pl-fadeUp .45s ease .5s backwards; }
205
+ #pl-overlay .pl-pid { font-family: ui-monospace, Menlo, monospace; font-size: 12px; color: var(--pl-ink); background: #f2f4f7; padding: 6px 10px; border-radius: 6px; margin-top: 8px; animation: pl-fadeUp .45s ease .6s backwards; }
206
+ #pl-overlay .pl-utr { margin-top: 6px; }
207
+ @media (prefers-reduced-motion: reduce) { #pl-overlay .pl-confetti, #pl-overlay .pl-ripple { display: none; } #pl-overlay .pl-check { animation: pl-pop .3s ease both; } }
208
+
209
+ #pl-overlay .pl-screen::-webkit-scrollbar, #pl-overlay .pl-nav::-webkit-scrollbar, #pl-overlay .pl-pane::-webkit-scrollbar { width: 6px; }
210
+ #pl-overlay .pl-screen::-webkit-scrollbar-thumb, #pl-overlay .pl-nav::-webkit-scrollbar-thumb, #pl-overlay .pl-pane::-webkit-scrollbar-thumb { background: #d5dae0; border-radius: 3px; }
211
+
212
+ #pl-toast { position:fixed; bottom:26px; left:50%; transform:translateX(-50%) translateY(10px); background:#16181f; color:#fff; padding:12px 20px; border-radius:10px; font:600 14px Inter,system-ui,sans-serif; box-shadow:0 10px 30px rgba(0,0,0,.3); z-index:2147483600; opacity:0; pointer-events:none; transition:opacity .2s, transform .2s; max-width:90vw; text-align:center; }
213
+ #pl-toast.pl-show { opacity:1; transform:translateX(-50%) translateY(0); }
214
+
215
+ /* ============ RESPONSIVE / MOBILE ============ */
216
+ @media (max-width: 840px) {
217
+ #pl-overlay { padding: 0; align-items: stretch; }
218
+ #pl-overlay .pl-modal { flex-direction: column; height: 100%; max-height: 100%; max-width: 100%; border-radius: 0; }
219
+ #pl-overlay .pl-left { width: 100%; flex-direction: row; align-items: center; gap: 14px; padding: 14px 16px; flex-shrink: 0; }
220
+ #pl-overlay .pl-left::before { display: none; }
221
+ #pl-overlay .pl-brandrow { margin-bottom: 0; flex: 1; }
222
+ #pl-overlay .pl-logo { width: 44px; height: 44px; }
223
+ #pl-overlay .pl-bname { font-size: 17px; }
224
+ #pl-overlay .pl-summary { background: none; box-shadow: none; padding: 0; text-align: right; }
225
+ #pl-overlay .pl-summary .pl-sl, #pl-overlay .pl-summary .pl-snote { display: none; }
226
+ #pl-overlay .pl-summary .pl-samt { font-size: 22px; margin: 0; color: #fff; }
227
+ #pl-overlay .pl-illus, #pl-overlay .pl-secured { display: none; }
228
+ #pl-overlay .pl-main { flex: 1; min-height: 0; }
229
+ #pl-overlay .pl-options { flex-direction: column; }
230
+ #pl-overlay .pl-nav { display: none; }
231
+ #pl-overlay .pl-pane { padding: 20px 18px; }
232
+ #pl-overlay .pl-back.pl-show { opacity: 0; pointer-events: none; }
29
233
  }
30
- @media (prefers-reduced-motion:reduce){.${t}-sheet{animation:none}}`,e=document.createElement("style");e.setAttribute("data-payulink","checkout"),e.textContent=n,document.head.appendChild(e)}function x(o={}){var m;P(o.themeColor);let n=L(o.amount,o.currency),e=document.body.style.overflow;document.body.style.overflow="hidden";let i=document.createElement("div");i.className=`${t}-root`,i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true"),i.setAttribute("aria-label","Payment"),i.innerHTML=`
31
- <div class="${t}-backdrop" data-close="1"></div>
32
- <div class="${t}-sheet">
33
- <div class="${t}-head">
34
- <div class="${t}-brand">
35
- <div class="${t}-name">${h(o.merchantName||"Payment")}</div>
36
- <div class="${t}-amount">${n}</div>
234
+ @media (max-width: 460px) {
235
+ #pl-overlay .pl-qrcard { flex-direction: column; text-align: center; gap: 16px; }
236
+ #pl-overlay .pl-qrside { width: 100%; }
237
+ #pl-overlay .pl-approw { justify-content: center; }
238
+ #pl-overlay .pl-validrow { margin: 0 auto; }
239
+ }
240
+ `,W=!1;function ee(o=document){if(W&&o.getElementById("pl-checkout-styles"))return;let g=o.createElement("style");g.id="pl-checkout-styles",g.textContent=xe,o.head.appendChild(g),W=!0}var ve=o=>"\u20B9"+Number(o||0).toLocaleString("en-IN",{maximumFractionDigits:2}),me=o=>`${Math.floor(o/60)}:${o%60<10?"0":""}${o%60}`,L=o=>String(o==null?"":o).replace(/[&<>"]/g,g=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[g]),O=o=>`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${o}</svg>`,U={qr:O('<rect width="5" height="5" x="3" y="3" rx="1"/><rect width="5" height="5" x="16" y="3" rx="1"/><rect width="5" height="5" x="3" y="16" rx="1"/><path d="M21 16h-3a2 2 0 0 0-2 2v3"/><path d="M21 21v.01"/><path d="M12 7v3a2 2 0 0 1-2 2H7"/><path d="M3 12h.01"/><path d="M12 3h.01"/><path d="M12 16v.01"/><path d="M16 12h1"/><path d="M21 12v.01"/><path d="M12 21v-1"/>'),card:O('<rect width="20" height="14" x="2" y="5" rx="2"/><line x1="2" x2="22" y1="10" y2="10"/>'),netbanking:O('<path d="M10 18v-7"/><path d="M11.119 2.205a2 2 0 0 1 1.762 0l7.84 3.846A.5.5 0 0 1 20.5 7h-17a.5.5 0 0 1-.22-.949z"/><path d="M14 18v-7"/><path d="M18 18v-7"/><path d="M3 22h18"/><path d="M6 18v-7"/>'),wallet:O('<path d="M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1"/><path d="M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4"/>'),emi:O('<path d="M16 14v2.2l1.6 1"/><path d="M16 2v4"/><path d="M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5"/><path d="M3 10h5"/><path d="M8 2v4"/><circle cx="16" cy="16" r="6"/>'),back:O('<path d="M15 18l-6-6 6-6"/>'),mail:O('<rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 5L2 7"/>'),arrow:O('<path d="M5 12h14M13 6l6 6-6 6"/>'),verified:O('<path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/>'),lock:O('<rect width="18" height="11" x="3" y="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>')},te='<svg width="13" height="13" viewBox="0 0 24 24" fill="currentColor"><path d="M12 1l9 4v6c0 5.5-3.8 10.7-9 12-5.2-1.3-9-6.5-9-12V5l9-4z"/></svg>',be=[{m:"card",t:"Cards",s:"Visa, Mastercard & RuPay",ic:"card"},{m:"netbanking",t:"Netbanking",s:"All Indian banks",ic:"netbanking"},{m:"wallet",t:"Wallet",s:"Paytm, PhonePe & more",ic:"wallet"},{m:"emi",t:"EMI",s:"EMI via cards & more",ic:"emi"}];function re(o){ee(),o=Object.assign({name:"Payment",description:"",amount:0,assetBase:"/assets",logo:"/assets/payulink-logo.png",prefill:{},apiBase:""},o);let g=String(o.apiBase||"").replace(/\/$/,""),c=ve(o.amount),i=["gpay","phonepe","paytm","bhim","amazonpay"].reduce((f,p)=>(f[p]=`${o.assetBase}/upi/${p}.png`,f),{}),a=["phonepe","gpay","paytm","bhim","amazonpay"],r={screen:"loader",order:null,customer:null,timer:null,stop:null,done:!1,utr:null,expiryMs:null},t=document.createElement("div");t.id="pl-overlay",o.brandColor&&t.style.setProperty("--pl-brand",o.brandColor),t.innerHTML=`
241
+ <div class="pl-modal" role="dialog" aria-modal="true">
242
+ <div class="pl-splash" id="pl-splash">
243
+ <div class="pl-shield">
244
+ <svg class="pl-shield-bg" viewBox="0 0 120 140" aria-hidden="true">
245
+ <defs><linearGradient id="pl-shgrad" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#5a93ff"/><stop offset="1" stop-color="#1f5fe0"/></linearGradient></defs>
246
+ <path d="M60 3 L113 25 V70 C113 105 90 128 60 137 C30 128 7 105 7 70 V25 Z" fill="url(#pl-shgrad)"/>
247
+ </svg>
248
+ <span class="pl-shield-shine"></span>
249
+ <img class="pl-shield-logo" src="${L(o.assetBase)}/payulink-logo.png" alt="payulink">
250
+ </div>
251
+ <div class="pl-splash-foot">Secured By <span class="pl-pb"><img src="${L(o.assetBase)}/payulink-logo.png" alt=""><strong>payulink</strong></span></div>
252
+ </div>
253
+ <aside class="pl-left">
254
+ <div class="pl-brandrow">
255
+ <div class="pl-logo"><img src="${L(o.logo)}" alt=""></div>
256
+ <div class="pl-bmeta">
257
+ <div class="pl-bname">${L(o.name)}</div>
258
+ <div class="pl-btrust">${U.verified}<span>Trusted Business</span></div>
259
+ </div>
260
+ </div>
261
+ <div class="pl-summary">
262
+ <div class="pl-sl">Price Summary</div>
263
+ <div class="pl-samt">${c}</div>
264
+ <div class="pl-snote">${L(o.note||"Paying for "+(o.description||o.name))}</div>
265
+ </div>
266
+ <svg class="pl-illus" viewBox="0 0 230 150" fill="none"><rect x="20" y="70" width="58" height="68" rx="5" fill="#fff" fill-opacity=".92"/><path d="M33 70c0-10 5-16 16-16s16 6 16 16" stroke="#fff" stroke-width="3.5"/><rect x="88" y="55" width="68" height="83" rx="5" fill="#fff"/><path d="M104 55c0-12 6-19 18-19s18 7 18 19" stroke="#fff" stroke-width="3.5"/><rect x="150" y="92" width="52" height="46" rx="4" fill="#fff" fill-opacity=".92"/><circle cx="178" cy="40" r="18" fill="#fff"/><path d="M178 30v20M168 40h20" stroke="currentColor" stroke-width="3.5" opacity=".5"/></svg>
267
+ <div class="pl-secured">${te}Secured by <span class="pl-pb"><img src="${L(o.assetBase)}/payulink-logo.png" alt=""><strong>payulink</strong></span></div>
268
+ </aside>
269
+ <section class="pl-main">
270
+ <header class="pl-head">
271
+ <button class="pl-hic pl-back" id="pl-back" aria-label="Back">${U.back}</button>
272
+ <div class="pl-title" id="pl-title">Payment Options</div>
273
+ <button class="pl-hic pl-dots" aria-label="More">\u22EF</button>
274
+ <button class="pl-hic pl-close-x" id="pl-close" aria-label="Close">\xD7</button>
275
+ </header>
276
+ <div class="pl-vp"><div class="pl-screen pl-active" id="pl-screen"></div></div>
277
+ <footer class="pl-foot">${U.lock}<span>Encrypted &amp; secure payments</span></footer>
278
+ </section>
279
+ </div>`,document.body.appendChild(t);let e=document.body.style.overflow;document.body.style.overflow="hidden";let h=t.querySelector(".pl-vp"),m=t.querySelector("#pl-title"),b=t.querySelector("#pl-back");function x(){y(),o.onDismiss&&o.onDismiss()}function y(){if(r.stop)try{r.stop()}catch{}clearInterval(r.timer),t.classList.add("pl-closing"),document.body.style.overflow=e,setTimeout(()=>t.remove(),240)}t.querySelector("#pl-close").onclick=x,t.addEventListener("mousedown",f=>{f.target.id==="pl-overlay"&&x()}),b.onclick=()=>{r.screen==="contact"||r.screen==="success"||C("options")};let _={loader:"Payment Options",contact:"Contact Details",options:"Payment Options",success:"Payment Successful"};function C(f){r.screen=f,m.textContent=_[f]||"Payment",b.classList.toggle("pl-show",f==="options"),clearInterval(r.timer);let p=document.createElement("div");p.className="pl-screen pl-active"+(f==="options"?" pl-screen-options":""),p.innerHTML=E[f]?E[f]():"",h.replaceChildren(p),J(f,p)}let A=a.slice(0,4).map(f=>`<img src="${i[f]}" alt="">`).join(""),P=a.map(f=>`<a class="pl-uapp" data-app="${f}" title="${f}"><img src="${i[f]}" alt="${f}"></a>`).join(""),E={loader:()=>`<div class="pl-loader"><div class="pl-bload"><img src="${L(o.logo)}" alt=""><span class="pl-bring"></span><span class="pl-bripple"></span><span class="pl-bripple pl-bripple2"></span></div><p>Securely loading payment options\u2026</p></div>`,contact:()=>`
280
+ <div class="pl-pad">
281
+ <div class="pl-h1">Contact details</div>
282
+ <div class="pl-sub">Enter your details to continue the payment</div>
283
+ <div class="pl-field"><label>Full Name</label>
284
+ <input class="pl-input" id="pl-name" type="text" placeholder="Enter your name" value="${L(o.prefill.name||"")}"></div>
285
+ <div class="pl-field"><label>Mobile Number</label>
286
+ <div class="pl-phone"><div class="pl-cc">+91</div>
287
+ <input class="pl-input" id="pl-mobile" type="tel" maxlength="10" placeholder="Enter mobile number" value="${L(o.prefill.contact||"")}"></div></div>
288
+ <div class="pl-field"><label>Email Address <span class="pl-opt">(optional)</span></label>
289
+ <div class="pl-inwrap"><span class="pl-inicon">${U.mail}</span>
290
+ <input class="pl-input pl-padleft" id="pl-email" type="email" placeholder="Enter email address" value="${L(o.prefill.email||"")}"></div></div>
291
+ <button class="pl-cta" id="pl-continue">Continue <span class="pl-cta-arr">${U.arrow}</span></button>
292
+ <div class="pl-err" id="pl-cerr"></div>
293
+ <div class="pl-trust">${te}100% secure payments</div>
294
+ </div>`,options:()=>`
295
+ <div class="pl-options">
296
+ <div class="pl-nav" id="pl-nav">
297
+ <div class="pl-navlabel">Recommended</div>
298
+ <div class="pl-navitem active" data-m="upi">
299
+ <div class="pl-ni-ic">${U.qr}</div>
300
+ <div class="pl-ni-body"><div class="pl-ni-t">UPI</div></div>
301
+ <div class="pl-ni-apps">${A}</div>
302
+ </div>
303
+ <div class="pl-navlabel">Cards, Banking &amp; More</div>
304
+ ${be.map(f=>`
305
+ <div class="pl-navitem pl-disabled" data-m="${f.m}">
306
+ <div class="pl-ni-ic pl-ic-${f.ic}">${U[f.ic]}</div>
307
+ <div class="pl-ni-body"><div class="pl-ni-t">${f.t}</div><div class="pl-ni-s">${f.s}</div></div>
308
+ <span class="pl-soon">Coming soon</span>
309
+ </div>`).join("")}
310
+ </div>
311
+ <div class="pl-pane" id="pl-pane">${S()}</div>
312
+ </div>`,success:()=>{let f=["#00c060","#3395ff","#ffb020","#ff5a5f","#7a52d8","#19c3c3"];return`
313
+ <div class="pl-success">
314
+ <div class="pl-burst">
315
+ ${Array.from({length:18},(k,M)=>{let I=M/18*Math.PI*2+(M%2?.22:-.22),H=60+M*13%40,K=Math.round(Math.cos(I)*H),$=Math.round(Math.sin(I)*H),X=f[M%f.length],se=(M%2?1:-1)*(140+M*14),pe=M%3===0?6:8,ce=M%4===0?6:12;return`<i class="pl-confetti" style="--tx:${K}px;--ty:${$}px;--c:${X};--r:${se}deg;width:${pe}px;height:${ce}px;border-radius:${M%4===0?"50%":"2px"};animation-delay:${(.15+M*.024).toFixed(3)}s"></i>`}).join("")}
316
+ <span class="pl-ripple"></span><span class="pl-ripple pl-ripple2"></span>
317
+ <div class="pl-check"><svg viewBox="0 0 24 24"><path d="M5 13l4 4L19 7"/></svg></div>
318
+ </div>
319
+ <h2>Payment Successful</h2>
320
+ <p>${c} paid${o.name?" to "+L(o.name):""}</p>
321
+ <div class="pl-pid" id="pl-pid">${L(r.order&&r.order.merchant_order_no||"")}</div>
322
+ ${r.utr?`<div class="pl-pid pl-utr">UTR ${L(r.utr)}</div>`:""}
323
+ </div>`}};function S(){return`
324
+ <div class="pl-paneh">UPI QR</div>
325
+ <div class="pl-qrcard">
326
+ <div class="pl-qrbox" id="pl-qr"><div class="pl-qrloading"></div></div>
327
+ <div class="pl-qrside">
328
+ <div class="pl-scan">Scan the QR using any UPI App</div>
329
+ <div class="pl-approw" id="pl-applist">${P}</div>
330
+ <div class="pl-validrow"><span class="pl-dot"></span><span id="pl-timer">Valid 5:00</span></div>
37
331
  </div>
38
- ${o.mode==="test"?`<span class="${t}-badge">TEST</span>`:""}
39
- <button class="${t}-close" aria-label="Close" data-close="1">&times;</button>
40
332
  </div>
41
- <div class="${t}-body">
42
- ${o.url?`<iframe class="${t}-frame" src="${h(o.url)}" allow="clipboard-write" referrerpolicy="origin"></iframe>`:`<div class="${t}-msg">Could not load the payment page.</div>`}
333
+ <div class="pl-paneh pl-paneh2">Pay with UPI ID / Number</div>
334
+ <div class="pl-vparow">
335
+ <input class="pl-vpa" id="pl-vpa" placeholder="example@okhdfcbank" autocomplete="off" spellcheck="false">
336
+ <button class="pl-verify" id="pl-verify">Verify and Pay</button>
43
337
  </div>
44
- ${o.upiIntentUrl&&S()?`<a class="${t}-cta" href="${h(o.upiIntentUrl)}">Pay ${n} in a UPI app</a>`:""}
45
- <div class="${t}-foot">Secured by PayuLink</div>
46
- </div>`;let c=!1,f=()=>{c||(c=!0,document.removeEventListener("keydown",u),document.body.style.overflow=e,i.remove())},a=()=>{f(),typeof o.onDismiss=="function"&&o.onDismiss()},u=r=>{r.key==="Escape"&&a()};return i.addEventListener("click",r=>{r.target instanceof Element&&r.target.closest("[data-close]")&&a()}),document.addEventListener("keydown",u),document.body.appendChild(i),(m=i.querySelector(`.${t}-close`))==null||m.focus(),{close:f}}function L(o,n){let e=Number(o||0)/100;try{return new Intl.NumberFormat("en-IN",{style:"currency",currency:n||"INR",minimumFractionDigits:e%1===0?0:2}).format(e)}catch{return"\u20B9"+e}}function h(o){return String(o!=null?o:"").replace(/[&<>"']/g,n=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[n])}var k={apiBase:"https://payulink.io/api",name:null,theme:{color:"#38BDF8"},pollMs:2500},p=class o{constructor(n={}){if(typeof window=="undefined"||typeof document=="undefined")throw new Error("PayuLink checkout runs in the browser only. On React Native use @thepayulink/checkout-react-native; on a server use @thepayulink/server.");let e=n.key||n.keyId||n.key_id;if(!e)throw new Error("PayuLink: `key` (your publishable pl_live_\u2026 / pl_test_\u2026 key) is required");if(/^pl_(live|test)_/.test(e)===!1&&console.warn("PayuLink: `key` should look like pl_live_\u2026 or pl_test_\u2026"),n.keySecret||n.key_secret)throw new Error("PayuLink: never pass a key_secret to the browser SDK. It belongs on your server only.");this.options=Object.assign({},k,n,{key:e})}open(n={}){let e=Object.assign({},this.options,n),i=String(e.apiBase||"").replace(/\/$/,""),c=e.order_id||e.orderId;if(!c)throw new Error("PayuLink: `order_id` is required. Create it on your server with POST /v1/orders.");let f=r=>{typeof e.onError=="function"?e.onError(r):console.error("PayuLink:",r.message||r)},a={_overlay:null,_stop:null,close(){var r,d;(r=this._stop)==null||r.call(this),(d=this._overlay)==null||d.close()}},u=!1,m=r=>{var d,s;u||(u=!0,(d=a._stop)==null||d.call(a),(s=a._overlay)==null||s.close(),typeof e.handler=="function"&&e.handler(r),typeof e.onSuccess=="function"&&e.onSuccess(r))};return(async()=>{let r;try{let s=await fetch(`${i}/v1/checkout/session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key_id:e.key,order_id:c,customer:e.prefill?{name:e.prefill.name,contact:e.prefill.contact,email:e.prefill.email}:void 0})});if(r=await s.json().catch(()=>({})),!s.ok){let b=(r==null?void 0:r.error)||{};throw new Error(b.description||`Could not start payment (HTTP ${s.status})`)}}catch(s){return f(s)}a._overlay=x({url:r.payment_link,upiIntentUrl:r.upi_intent_url,amount:r.amount,currency:r.currency,merchantName:e.name||r.merchant_name,themeColor:e.theme&&e.theme.color||k.theme.color,mode:r.mode,onDismiss:()=>{var s;u||(u=!0,(s=a._stop)==null||s.call(a),typeof e.onDismiss=="function"&&e.onDismiss())}});let d=setInterval(async()=>{var s;try{let l=await(await fetch(`${i}/v1/checkout/session/${encodeURIComponent(r.session_token)}`)).json().catch(()=>({}));l.status==="paid"&&l.payulink_signature?m({payulink_order_id:l.payulink_order_id,payulink_payment_id:l.payulink_payment_id,payulink_signature:l.payulink_signature,utr:l.utr,amount:l.amount}):(l.status==="failed"||l.status==="expired")&&(clearInterval(d),(s=a._overlay)==null||s.close(),f(new Error(`Payment ${l.status}`)))}catch{}},e.pollMs);a._stop=()=>clearInterval(d)})(),a}static open(n={}){return new o(n).open(n)}};typeof window!="undefined"&&(window.PayuLink=p,window.PayulinkCheckout=p);return I(C);})();
338
+ <div id="pl-status" class="pl-pendrow"><span class="pl-mini-spin"></span> Waiting for payment\u2026</div>`}function J(f,p){if(f==="contact")p.querySelector("#pl-continue").onclick=()=>{let k=p.querySelector("#pl-name").value.trim(),M=p.querySelector("#pl-mobile").value.replace(/\D/g,""),I=p.querySelector("#pl-email").value.trim(),H=p.querySelector("#pl-cerr");if(k.length<2)return H.textContent="Please enter your name";if(M.length!==10)return H.textContent="Enter a valid 10-digit mobile number";r.customer={name:k,mobile:M,email:I},C("options")};else if(f==="options"){p.querySelectorAll(".pl-navitem").forEach(M=>M.onclick=()=>{M.dataset.m!=="upi"&&T("Coming soon \u2014 please pay via UPI / QR for now")});let k=p.querySelector("#pl-verify");k&&(k.onclick=()=>{let M=(p.querySelector("#pl-vpa").value||"").trim();if(!/^[\w.\-]{2,}@[a-zA-Z]{2,}$/.test(M))return p.querySelector("#pl-vpa").focus(),T("Enter a valid UPI ID, e.g. name@okhdfcbank");let I=r.order&&(r.order.upi_intent_url||r.order.payment_link);I&&/Android|iPhone|iPad|Mobile/i.test(navigator.userAgent)?location.href=I:T("Scan the QR with your phone\u2019s UPI app to complete the payment.")}),B(),R(!0)}}let z=!1;async function R(f){if(f||C("options"),r.order){G();return}if(!z){z=!0;try{r.customer||(r.customer={name:o.prefill.name||"Customer",mobile:(o.prefill.contact||"").replace(/\D/g,""),email:o.prefill.email||""}),r.order=await o.createOrder(r.customer),G(),d()}catch(p){let k=t.querySelector("#pl-qr");if(k){k.innerHTML=`<div class="pl-qrerr"><span>${L(p.message||"Could not start payment")}</span><button class="pl-retry" id="pl-retry">Try again</button></div>`;let M=k.querySelector("#pl-retry");M&&(M.onclick=()=>{z=!1,k.innerHTML='<div class="pl-qrloading"></div>',R(!0)})}}finally{z=!1}}}function G(){let f=r.order;if(!f)return;l(f);let p=t.querySelector("#pl-qr");p&&(f.qr_data_url?p.innerHTML=`<img src="${f.qr_data_url}" alt="UPI QR">`:p.innerHTML='<div class="pl-qrerr"><span>QR unavailable \u2014 use a UPI app below</span></div>');let k=f.upi_intent_url||f.payment_link||"#",M=t.querySelector("#pl-applist");M&&M.querySelectorAll(".pl-uapp").forEach(I=>{I.setAttribute("href",k),I.setAttribute("target","_blank"),I.setAttribute("rel","noopener")}),B()}function l(f){f&&f.expires_at&&f.server_now?r.expiryMs=Date.now()+Math.max(0,f.expires_at-f.server_now):r.expiryMs||(r.expiryMs=Date.now()+5*60*1e3)}function u(){if(r.done)return;let f=t.querySelector("#pl-qr");f&&(f.innerHTML='<div class="pl-qrerr"><span>QR code expired</span><button class="pl-retry" id="pl-regen">Generate new QR</button></div>');let p=t.querySelector("#pl-regen");p&&(p.onclick=n);let k=t.querySelector("#pl-timer");k&&(k.textContent="Expired");let M=t.querySelector(".pl-validrow");M&&M.classList.add("pl-expired")}function n(){if(r.stop){try{r.stop()}catch{}r.stop=null}r.order=null,r.expiryMs=null,z=!1;let f=t.querySelector(".pl-validrow");f&&f.classList.remove("pl-expired");let p=t.querySelector("#pl-qr");p&&(p.innerHTML='<div class="pl-qrloading"></div>'),R(!0)}function d(){!r.order||r.stop||(r.stop=o.watchOrder(r.order.merchant_order_no,f=>{!f||typeof f.status!="number"||(f.status===0?(r.utr=f.utr||r.utr,v()):f.status===3?(clearInterval(r.timer),r.expiryMs=Date.now(),u(),s("failed","QR expired \u2014 generate a new one")):[1,4].includes(f.status)?s("failed","Payment "+(f.status_label||"failed").toLowerCase()):f.status===6&&s("pending","Processing payment\u2026"))}))}function s(f,p){let k=t.querySelector("#pl-status");k&&(k.className=f==="failed"?"pl-pendrow pl-fail":"pl-pendrow",k.innerHTML=(f==="pending"?'<span class="pl-mini-spin"></span> ':"")+L(p))}function v(){r.done||(r.done=!0,clearInterval(r.timer),C("success"),o.onSuccess&&o.onSuccess({merchant_order_no:r.order.merchant_order_no,utr:r.utr,amount:o.amount}),r.utr||w())}async function w(){for(let f=0;f<10&&!r.utr;f++){await new Promise(p=>setTimeout(p,4e3));try{let p=await fetch(`${g}/api/order/${r.order.merchant_order_no}`).then(k=>k.json());if(p.utr){r.utr=p.utr;let k=t.querySelector("#pl-pid");k&&r.screen==="success"&&k.insertAdjacentHTML("afterend",`<div class="pl-pid pl-utr">UTR ${L(p.utr)}</div>`);break}}catch{}}}function B(){clearInterval(r.timer);let f=()=>{let p=t.querySelector("#pl-timer");if(!p)return;if(!r.expiryMs){p.textContent="Valid 5:00";return}let k=Math.max(0,Math.round((r.expiryMs-Date.now())/1e3));p.textContent=k>0?"Valid "+me(k):"Expired",k<=0&&(clearInterval(r.timer),u())};f(),r.timer=setInterval(f,1e3)}function T(f){let p=document.getElementById("pl-toast");p||(p=document.createElement("div"),p.id="pl-toast",document.body.appendChild(p)),p.textContent=f,p.classList.add("pl-show"),clearTimeout(p._t),p._t=setTimeout(()=>p.classList.remove("pl-show"),2600)}return C("loader"),setTimeout(()=>{let f=o.prefill||{};f.name&&(f.contact||"").replace(/\D/g,"").length===10?(r.customer={name:f.name,mobile:f.contact.replace(/\D/g,""),email:f.email||""},C("options")):C("contact");let p=t.querySelector("#pl-splash");p&&(p.classList.add("pl-splash-hide"),setTimeout(()=>p.remove(),450))},1600),{close:y}}var Q=function(o,g){let a=o,r=F[g],t=null,e=0,h=null,m=[],b={},x=function(l,u){e=a*4+17,t=function(n){let d=new Array(n);for(let s=0;s<n;s+=1){d[s]=new Array(n);for(let v=0;v<n;v+=1)d[s][v]=null}return d}(e),y(0,0),y(e-7,0),y(0,e-7),A(),C(),E(l,u),a>=7&&P(l),h==null&&(h=z(a,r,m)),S(h,u)},y=function(l,u){for(let n=-1;n<=7;n+=1)if(!(l+n<=-1||e<=l+n))for(let d=-1;d<=7;d+=1)u+d<=-1||e<=u+d||(0<=n&&n<=6&&(d==0||d==6)||0<=d&&d<=6&&(n==0||n==6)||2<=n&&n<=4&&2<=d&&d<=4?t[l+n][u+d]=!0:t[l+n][u+d]=!1)},_=function(){let l=0,u=0;for(let n=0;n<8;n+=1){x(!0,n);let d=N.getLostPoint(b);(n==0||l>d)&&(l=d,u=n)}return u},C=function(){for(let l=8;l<e-8;l+=1)t[l][6]==null&&(t[l][6]=l%2==0);for(let l=8;l<e-8;l+=1)t[6][l]==null&&(t[6][l]=l%2==0)},A=function(){let l=N.getPatternPosition(a);for(let u=0;u<l.length;u+=1)for(let n=0;n<l.length;n+=1){let d=l[u],s=l[n];if(t[d][s]==null)for(let v=-2;v<=2;v+=1)for(let w=-2;w<=2;w+=1)v==-2||v==2||w==-2||w==2||v==0&&w==0?t[d+v][s+w]=!0:t[d+v][s+w]=!1}},P=function(l){let u=N.getBCHTypeNumber(a);for(let n=0;n<18;n+=1){let d=!l&&(u>>n&1)==1;t[Math.floor(n/3)][n%3+e-8-3]=d}for(let n=0;n<18;n+=1){let d=!l&&(u>>n&1)==1;t[n%3+e-8-3][Math.floor(n/3)]=d}},E=function(l,u){let n=r<<3|u,d=N.getBCHTypeInfo(n);for(let s=0;s<15;s+=1){let v=!l&&(d>>s&1)==1;s<6?t[s][8]=v:s<8?t[s+1][8]=v:t[e-15+s][8]=v}for(let s=0;s<15;s+=1){let v=!l&&(d>>s&1)==1;s<8?t[8][e-s-1]=v:s<9?t[8][15-s-1+1]=v:t[8][15-s-1]=v}t[e-8][8]=!l},S=function(l,u){let n=-1,d=e-1,s=7,v=0,w=N.getMaskFunction(u);for(let B=e-1;B>0;B-=2)for(B==6&&(B-=1);;){for(let T=0;T<2;T+=1)if(t[d][B-T]==null){let f=!1;v<l.length&&(f=(l[v]>>>s&1)==1),w(d,B-T)&&(f=!f),t[d][B-T]=f,s-=1,s==-1&&(v+=1,s=7)}if(d+=n,d<0||e<=d){d-=n,n=-n;break}}},J=function(l,u){let n=0,d=0,s=0,v=new Array(u.length),w=new Array(u.length);for(let p=0;p<u.length;p+=1){let k=u[p].dataCount,M=u[p].totalCount-k;d=Math.max(d,k),s=Math.max(s,M),v[p]=new Array(k);for(let $=0;$<v[p].length;$+=1)v[p][$]=255&l.getBuffer()[$+n];n+=k;let I=N.getErrorCorrectPolynomial(M),K=V(v[p],I.getLength()-1).mod(I);w[p]=new Array(I.getLength()-1);for(let $=0;$<w[p].length;$+=1){let X=$+K.getLength()-w[p].length;w[p][$]=X>=0?K.getAt(X):0}}let B=0;for(let p=0;p<u.length;p+=1)B+=u[p].totalCount;let T=new Array(B),f=0;for(let p=0;p<d;p+=1)for(let k=0;k<u.length;k+=1)p<v[k].length&&(T[f]=v[k][p],f+=1);for(let p=0;p<s;p+=1)for(let k=0;k<u.length;k+=1)p<w[k].length&&(T[f]=w[k][p],f+=1);return T},z=function(l,u,n){let d=ne.getRSBlocks(l,u),s=oe();for(let w=0;w<n.length;w+=1){let B=n[w];s.put(B.getMode(),4),s.put(B.getLength(),N.getLengthInBits(B.getMode(),l)),B.write(s)}let v=0;for(let w=0;w<d.length;w+=1)v+=d[w].dataCount;if(s.getLengthInBits()>v*8)throw"code length overflow. ("+s.getLengthInBits()+">"+v*8+")";for(s.getLengthInBits()+4<=v*8&&s.put(0,4);s.getLengthInBits()%8!=0;)s.putBit(!1);for(;!(s.getLengthInBits()>=v*8||(s.put(236,8),s.getLengthInBits()>=v*8));)s.put(17,8);return J(s,d)};b.addData=function(l,u){u=u||"Byte";let n=null;switch(u){case"Numeric":n=we(l);break;case"Alphanumeric":n=ke(l);break;case"Byte":n=_e(l);break;case"Kanji":n=Me(l);break;default:throw"mode:"+u}m.push(n),h=null},b.isDark=function(l,u){if(l<0||e<=l||u<0||e<=u)throw l+","+u;return t[l][u]},b.getModuleCount=function(){return e},b.make=function(){if(a<1){let l=1;for(;l<40;l++){let u=ne.getRSBlocks(l,r),n=oe();for(let s=0;s<m.length;s++){let v=m[s];n.put(v.getMode(),4),n.put(v.getLength(),N.getLengthInBits(v.getMode(),l)),v.write(n)}let d=0;for(let s=0;s<u.length;s++)d+=u[s].dataCount;if(n.getLengthInBits()<=d*8)break}a=l}x(!1,_())},b.createTableTag=function(l,u){l=l||2,u=typeof u=="undefined"?l*4:u;let n="";n+='<table style="',n+=" border-width: 0px; border-style: none;",n+=" border-collapse: collapse;",n+=" padding: 0px; margin: "+u+"px;",n+='">',n+="<tbody>";for(let d=0;d<b.getModuleCount();d+=1){n+="<tr>";for(let s=0;s<b.getModuleCount();s+=1)n+='<td style="',n+=" border-width: 0px; border-style: none;",n+=" border-collapse: collapse;",n+=" padding: 0px; margin: 0px;",n+=" width: "+l+"px;",n+=" height: "+l+"px;",n+=" background-color: ",n+=b.isDark(d,s)?"#000000":"#ffffff",n+=";",n+='"/>';n+="</tr>"}return n+="</tbody>",n+="</table>",n},b.createSvgTag=function(l,u,n,d){let s={};typeof arguments[0]=="object"&&(s=arguments[0],l=s.cellSize,u=s.margin,n=s.alt,d=s.title),l=l||2,u=typeof u=="undefined"?l*4:u,n=typeof n=="string"?{text:n}:n||{},n.text=n.text||null,n.id=n.text?n.id||"qrcode-description":null,d=typeof d=="string"?{text:d}:d||{},d.text=d.text||null,d.id=d.text?d.id||"qrcode-title":null;let v=b.getModuleCount()*l+u*2,w,B,T,f,p="",k;for(k="l"+l+",0 0,"+l+" -"+l+",0 0,-"+l+"z ",p+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',p+=s.scalable?"":' width="'+v+'px" height="'+v+'px"',p+=' viewBox="0 0 '+v+" "+v+'" ',p+=' preserveAspectRatio="xMinYMin meet"',p+=d.text||n.text?' role="img" aria-labelledby="'+R([d.id,n.id].join(" ").trim())+'"':"",p+=">",p+=d.text?'<title id="'+R(d.id)+'">'+R(d.text)+"</title>":"",p+=n.text?'<description id="'+R(n.id)+'">'+R(n.text)+"</description>":"",p+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',p+='<path d="',T=0;T<b.getModuleCount();T+=1)for(f=T*l+u,w=0;w<b.getModuleCount();w+=1)b.isDark(T,w)&&(B=w*l+u,p+="M"+B+","+f+k);return p+='" stroke="transparent" fill="black"/>',p+="</svg>",p},b.createDataURL=function(l,u){l=l||2,u=typeof u=="undefined"?l*4:u;let n=b.getModuleCount()*l+u*2,d=u,s=n-u;return Te(n,n,function(v,w){if(d<=v&&v<s&&d<=w&&w<s){let B=Math.floor((v-d)/l),T=Math.floor((w-d)/l);return b.isDark(T,B)?0:1}else return 1})},b.createImgTag=function(l,u,n){l=l||2,u=typeof u=="undefined"?l*4:u;let d=b.getModuleCount()*l+u*2,s="";return s+="<img",s+=' src="',s+=b.createDataURL(l,u),s+='"',s+=' width="',s+=d,s+='"',s+=' height="',s+=d,s+='"',n&&(s+=' alt="',s+=R(n),s+='"'),s+="/>",s};let R=function(l){let u="";for(let n=0;n<l.length;n+=1){let d=l.charAt(n);switch(d){case"<":u+="&lt;";break;case">":u+="&gt;";break;case"&":u+="&amp;";break;case'"':u+="&quot;";break;default:u+=d;break}}return u},G=function(l){l=typeof l=="undefined"?1*2:l;let n=b.getModuleCount()*1+l*2,d=l,s=n-l,v,w,B,T,f,p={"\u2588\u2588":"\u2588","\u2588 ":"\u2580"," \u2588":"\u2584"," ":" "},k={"\u2588\u2588":"\u2580","\u2588 ":"\u2580"," \u2588":" "," ":" "},M="";for(v=0;v<n;v+=2){for(B=Math.floor((v-d)/1),T=Math.floor((v+1-d)/1),w=0;w<n;w+=1)f="\u2588",d<=w&&w<s&&d<=v&&v<s&&b.isDark(B,Math.floor((w-d)/1))&&(f=" "),d<=w&&w<s&&d<=v+1&&v+1<s&&b.isDark(T,Math.floor((w-d)/1))?f+=" ":f+="\u2588",M+=l<1&&v+1>=s?k[f]:p[f];M+=`
339
+ `}return n%2&&l>0?M.substring(0,M.length-n-1)+Array(n+1).join("\u2580"):M.substring(0,M.length-1)};return b.createASCII=function(l,u){if(l=l||1,l<2)return G(u);l-=1,u=typeof u=="undefined"?l*2:u;let n=b.getModuleCount()*l+u*2,d=u,s=n-u,v,w,B,T,f=Array(l+1).join("\u2588\u2588"),p=Array(l+1).join(" "),k="",M="";for(v=0;v<n;v+=1){for(B=Math.floor((v-d)/l),M="",w=0;w<n;w+=1)T=1,d<=w&&w<s&&d<=v&&v<s&&b.isDark(B,Math.floor((w-d)/l))&&(T=0),M+=T?f:p;for(B=0;B<l;B+=1)k+=M+`
340
+ `}return k.substring(0,k.length-1)},b.renderTo2dContext=function(l,u){u=u||2;let n=b.getModuleCount();for(let d=0;d<n;d++)for(let s=0;s<n;s++)l.fillStyle=b.isDark(d,s)?"black":"white",l.fillRect(s*u,d*u,u,u)},b};Q.stringToBytes=function(o){let g=[];for(let c=0;c<o.length;c+=1){let i=o.charCodeAt(c);g.push(i&255)}return g};Q.createStringToBytes=function(o,g){let c=function(){let a=Be(o),r=function(){let h=a.read();if(h==-1)throw"eof";return h},t=0,e={};for(;;){let h=a.read();if(h==-1)break;let m=r(),b=r(),x=r(),y=String.fromCharCode(h<<8|m),_=b<<8|x;e[y]=_,t+=1}if(t!=g)throw t+" != "+g;return e}(),i=63;return function(a){let r=[];for(let t=0;t<a.length;t+=1){let e=a.charCodeAt(t);if(e<128)r.push(e);else{let h=c[a.charAt(t)];typeof h=="number"?(h&255)==h?r.push(h):(r.push(h>>>8),r.push(h&255)):r.push(i)}}return r}};var D={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},F={L:1,M:0,Q:3,H:2},q={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},N=function(){let o=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],g=1335,c=7973,i=21522,a={},r=function(t){let e=0;for(;t!=0;)e+=1,t>>>=1;return e};return a.getBCHTypeInfo=function(t){let e=t<<10;for(;r(e)-r(g)>=0;)e^=g<<r(e)-r(g);return(t<<10|e)^i},a.getBCHTypeNumber=function(t){let e=t<<12;for(;r(e)-r(c)>=0;)e^=c<<r(e)-r(c);return t<<12|e},a.getPatternPosition=function(t){return o[t-1]},a.getMaskFunction=function(t){switch(t){case q.PATTERN000:return function(e,h){return(e+h)%2==0};case q.PATTERN001:return function(e,h){return e%2==0};case q.PATTERN010:return function(e,h){return h%3==0};case q.PATTERN011:return function(e,h){return(e+h)%3==0};case q.PATTERN100:return function(e,h){return(Math.floor(e/2)+Math.floor(h/3))%2==0};case q.PATTERN101:return function(e,h){return e*h%2+e*h%3==0};case q.PATTERN110:return function(e,h){return(e*h%2+e*h%3)%2==0};case q.PATTERN111:return function(e,h){return(e*h%3+(e+h)%2)%2==0};default:throw"bad maskPattern:"+t}},a.getErrorCorrectPolynomial=function(t){let e=V([1],0);for(let h=0;h<t;h+=1)e=e.multiply(V([1,j.gexp(h)],0));return e},a.getLengthInBits=function(t,e){if(1<=e&&e<10)switch(t){case D.MODE_NUMBER:return 10;case D.MODE_ALPHA_NUM:return 9;case D.MODE_8BIT_BYTE:return 8;case D.MODE_KANJI:return 8;default:throw"mode:"+t}else if(e<27)switch(t){case D.MODE_NUMBER:return 12;case D.MODE_ALPHA_NUM:return 11;case D.MODE_8BIT_BYTE:return 16;case D.MODE_KANJI:return 10;default:throw"mode:"+t}else if(e<41)switch(t){case D.MODE_NUMBER:return 14;case D.MODE_ALPHA_NUM:return 13;case D.MODE_8BIT_BYTE:return 16;case D.MODE_KANJI:return 12;default:throw"mode:"+t}else throw"type:"+e},a.getLostPoint=function(t){let e=t.getModuleCount(),h=0;for(let x=0;x<e;x+=1)for(let y=0;y<e;y+=1){let _=0,C=t.isDark(x,y);for(let A=-1;A<=1;A+=1)if(!(x+A<0||e<=x+A))for(let P=-1;P<=1;P+=1)y+P<0||e<=y+P||A==0&&P==0||C==t.isDark(x+A,y+P)&&(_+=1);_>5&&(h+=3+_-5)}for(let x=0;x<e-1;x+=1)for(let y=0;y<e-1;y+=1){let _=0;t.isDark(x,y)&&(_+=1),t.isDark(x+1,y)&&(_+=1),t.isDark(x,y+1)&&(_+=1),t.isDark(x+1,y+1)&&(_+=1),(_==0||_==4)&&(h+=3)}for(let x=0;x<e;x+=1)for(let y=0;y<e-6;y+=1)t.isDark(x,y)&&!t.isDark(x,y+1)&&t.isDark(x,y+2)&&t.isDark(x,y+3)&&t.isDark(x,y+4)&&!t.isDark(x,y+5)&&t.isDark(x,y+6)&&(h+=40);for(let x=0;x<e;x+=1)for(let y=0;y<e-6;y+=1)t.isDark(y,x)&&!t.isDark(y+1,x)&&t.isDark(y+2,x)&&t.isDark(y+3,x)&&t.isDark(y+4,x)&&!t.isDark(y+5,x)&&t.isDark(y+6,x)&&(h+=40);let m=0;for(let x=0;x<e;x+=1)for(let y=0;y<e;y+=1)t.isDark(y,x)&&(m+=1);let b=Math.abs(100*m/e/e-50)/5;return h+=b*10,h},a}(),j=function(){let o=new Array(256),g=new Array(256);for(let i=0;i<8;i+=1)o[i]=1<<i;for(let i=8;i<256;i+=1)o[i]=o[i-4]^o[i-5]^o[i-6]^o[i-8];for(let i=0;i<255;i+=1)g[o[i]]=i;let c={};return c.glog=function(i){if(i<1)throw"glog("+i+")";return g[i]},c.gexp=function(i){for(;i<0;)i+=255;for(;i>=256;)i-=255;return o[i]},c}(),V=function(o,g){if(typeof o.length=="undefined")throw o.length+"/"+g;let c=function(){let a=0;for(;a<o.length&&o[a]==0;)a+=1;let r=new Array(o.length-a+g);for(let t=0;t<o.length-a;t+=1)r[t]=o[t+a];return r}(),i={};return i.getAt=function(a){return c[a]},i.getLength=function(){return c.length},i.multiply=function(a){let r=new Array(i.getLength()+a.getLength()-1);for(let t=0;t<i.getLength();t+=1)for(let e=0;e<a.getLength();e+=1)r[t+e]^=j.gexp(j.glog(i.getAt(t))+j.glog(a.getAt(e)));return V(r,0)},i.mod=function(a){if(i.getLength()-a.getLength()<0)return i;let r=j.glog(i.getAt(0))-j.glog(a.getAt(0)),t=new Array(i.getLength());for(let e=0;e<i.getLength();e+=1)t[e]=i.getAt(e);for(let e=0;e<a.getLength();e+=1)t[e]^=j.gexp(j.glog(a.getAt(e))+r);return V(t,0).mod(a)},i},ne=function(){let o=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],g=function(a,r){let t={};return t.totalCount=a,t.dataCount=r,t},c={},i=function(a,r){switch(r){case F.L:return o[(a-1)*4+0];case F.M:return o[(a-1)*4+1];case F.Q:return o[(a-1)*4+2];case F.H:return o[(a-1)*4+3];default:return}};return c.getRSBlocks=function(a,r){let t=i(a,r);if(typeof t=="undefined")throw"bad rs block @ typeNumber:"+a+"/errorCorrectionLevel:"+r;let e=t.length/3,h=[];for(let m=0;m<e;m+=1){let b=t[m*3+0],x=t[m*3+1],y=t[m*3+2];for(let _=0;_<b;_+=1)h.push(g(x,y))}return h},c}(),oe=function(){let o=[],g=0,c={};return c.getBuffer=function(){return o},c.getAt=function(i){let a=Math.floor(i/8);return(o[a]>>>7-i%8&1)==1},c.put=function(i,a){for(let r=0;r<a;r+=1)c.putBit((i>>>a-r-1&1)==1)},c.getLengthInBits=function(){return g},c.putBit=function(i){let a=Math.floor(g/8);o.length<=a&&o.push(0),i&&(o[a]|=128>>>g%8),g+=1},c},we=function(o){let g=D.MODE_NUMBER,c=o,i={};i.getMode=function(){return g},i.getLength=function(t){return c.length},i.write=function(t){let e=c,h=0;for(;h+2<e.length;)t.put(a(e.substring(h,h+3)),10),h+=3;h<e.length&&(e.length-h==1?t.put(a(e.substring(h,h+1)),4):e.length-h==2&&t.put(a(e.substring(h,h+2)),7))};let a=function(t){let e=0;for(let h=0;h<t.length;h+=1)e=e*10+r(t.charAt(h));return e},r=function(t){if("0"<=t&&t<="9")return t.charCodeAt(0)-48;throw"illegal char :"+t};return i},ke=function(o){let g=D.MODE_ALPHA_NUM,c=o,i={};i.getMode=function(){return g},i.getLength=function(r){return c.length},i.write=function(r){let t=c,e=0;for(;e+1<t.length;)r.put(a(t.charAt(e))*45+a(t.charAt(e+1)),11),e+=2;e<t.length&&r.put(a(t.charAt(e)),6)};let a=function(r){if("0"<=r&&r<="9")return r.charCodeAt(0)-48;if("A"<=r&&r<="Z")return r.charCodeAt(0)-65+10;switch(r){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+r}};return i},_e=function(o){let g=D.MODE_8BIT_BYTE,c=o,i=Q.stringToBytes(o),a={};return a.getMode=function(){return g},a.getLength=function(r){return i.length},a.write=function(r){for(let t=0;t<i.length;t+=1)r.put(i[t],8)},a},Me=function(o){let g=D.MODE_KANJI,c=o,i=Q.stringToBytes;(function(t,e){let h=i(t);if(h.length!=2||(h[0]<<8|h[1])!=e)throw"sjis not supported."})("\u53CB",38726);let a=i(o),r={};return r.getMode=function(){return g},r.getLength=function(t){return~~(a.length/2)},r.write=function(t){let e=a,h=0;for(;h+1<e.length;){let m=(255&e[h])<<8|255&e[h+1];if(33088<=m&&m<=40956)m-=33088;else if(57408<=m&&m<=60351)m-=49472;else throw"illegal char at "+(h+1)+"/"+m;m=(m>>>8&255)*192+(m&255),t.put(m,13),h+=2}if(h<e.length)throw"illegal char at "+(h+1)},r},le=function(){let o=[],g={};return g.writeByte=function(c){o.push(c&255)},g.writeShort=function(c){g.writeByte(c),g.writeByte(c>>>8)},g.writeBytes=function(c,i,a){i=i||0,a=a||c.length;for(let r=0;r<a;r+=1)g.writeByte(c[r+i])},g.writeString=function(c){for(let i=0;i<c.length;i+=1)g.writeByte(c.charCodeAt(i))},g.toByteArray=function(){return o},g.toString=function(){let c="";c+="[";for(let i=0;i<o.length;i+=1)i>0&&(c+=","),c+=o[i];return c+="]",c},g},Ce=function(){let o=0,g=0,c=0,i="",a={},r=function(e){i+=String.fromCharCode(t(e&63))},t=function(e){if(e<0)throw"n:"+e;if(e<26)return 65+e;if(e<52)return 97+(e-26);if(e<62)return 48+(e-52);if(e==62)return 43;if(e==63)return 47;throw"n:"+e};return a.writeByte=function(e){for(o=o<<8|e&255,g+=8,c+=1;g>=6;)r(o>>>g-6),g-=6},a.flush=function(){if(g>0&&(r(o<<6-g),o=0,g=0),c%3!=0){let e=3-c%3;for(let h=0;h<e;h+=1)i+="="}},a.toString=function(){return i},a},Be=function(o){let g=o,c=0,i=0,a=0,r={};r.read=function(){for(;a<8;){if(c>=g.length){if(a==0)return-1;throw"unexpected end of file./"+a}let h=g.charAt(c);if(c+=1,h=="=")return a=0,-1;if(h.match(/^\s$/))continue;i=i<<6|t(h.charCodeAt(0)),a+=6}let e=i>>>a-8&255;return a-=8,e};let t=function(e){if(65<=e&&e<=90)return e-65;if(97<=e&&e<=122)return e-97+26;if(48<=e&&e<=57)return e-48+52;if(e==43)return 62;if(e==47)return 63;throw"c:"+e};return r},Ae=function(o,g){let c=o,i=g,a=new Array(o*g),r={};r.setPixel=function(m,b,x){a[b*c+m]=x},r.write=function(m){m.writeString("GIF87a"),m.writeShort(c),m.writeShort(i),m.writeByte(128),m.writeByte(0),m.writeByte(0),m.writeByte(0),m.writeByte(0),m.writeByte(0),m.writeByte(255),m.writeByte(255),m.writeByte(255),m.writeString(","),m.writeShort(0),m.writeShort(0),m.writeShort(c),m.writeShort(i),m.writeByte(0);let b=2,x=e(b);m.writeByte(b);let y=0;for(;x.length-y>255;)m.writeByte(255),m.writeBytes(x,y,255),y+=255;m.writeByte(x.length-y),m.writeBytes(x,y,x.length-y),m.writeByte(0),m.writeString(";")};let t=function(m){let b=m,x=0,y=0,_={};return _.write=function(C,A){if(C>>>A)throw"length over";for(;x+A>=8;)b.writeByte(255&(C<<x|y)),A-=8-x,C>>>=8-x,y=0,x=0;y=C<<x|y,x=x+A},_.flush=function(){x>0&&b.writeByte(y)},_},e=function(m){let b=1<<m,x=(1<<m)+1,y=m+1,_=h();for(let S=0;S<b;S+=1)_.add(String.fromCharCode(S));_.add(String.fromCharCode(b)),_.add(String.fromCharCode(x));let C=le(),A=t(C);A.write(b,y);let P=0,E=String.fromCharCode(a[P]);for(P+=1;P<a.length;){let S=String.fromCharCode(a[P]);P+=1,_.contains(E+S)?E=E+S:(A.write(_.indexOf(E),y),_.size()<4095&&(_.size()==1<<y&&(y+=1),_.add(E+S)),E=S)}return A.write(_.indexOf(E),y),A.write(x,y),A.flush(),C.toByteArray()},h=function(){let m={},b=0,x={};return x.add=function(y){if(x.contains(y))throw"dup key:"+y;m[y]=b,b+=1},x.size=function(){return b},x.indexOf=function(y){return m[y]},x.contains=function(y){return typeof m[y]!="undefined"},x};return r},Te=function(o,g,c){let i=Ae(o,g);for(let e=0;e<g;e+=1)for(let h=0;h<o;h+=1)i.setPixel(h,e,c(h,e));let a=le();i.write(a);let r=Ce(),t=a.toByteArray();for(let e=0;e<t.length;e+=1)r.writeByte(t[e]);return r.flush(),"data:image/gif;base64,"+r},ie=Q,$e=Q.stringToBytes;var ae={apiBase:"https://payulink.io/api",assetBase:"https://assetcdn.payulink.io/checkout/v1/assets",name:null,logo:null,brandColor:null,pollMs:2500};function Ee(o){if(!o)return null;try{let g=ie(0,"M");return g.addData(String(o)),g.make(),g.createDataURL(6,2)}catch{return null}}var Y=class o{constructor(g={}){if(typeof window=="undefined"||typeof document=="undefined")throw new Error("PayuLink checkout runs in the browser only. On React Native use @thepayulink/checkout-react-native; on a server use @thepayulink/server.");let c=g.key||g.keyId||g.key_id;if(!c)throw new Error("PayuLink: `key` (your publishable pl_live_\u2026 / pl_test_\u2026 key) is required");if(/^pl_(live|test)_/.test(c)||console.warn("PayuLink: `key` should look like pl_live_\u2026 or pl_test_\u2026"),g.keySecret||g.key_secret)throw new Error("PayuLink: never pass a key_secret to the browser SDK. It belongs on your server only.");this.options=Object.assign({},ae,g,{key:c})}open(g={}){let c=Object.assign({},this.options,g),i=String(c.apiBase||"").replace(/\/$/,""),a=String(c.assetBase||`${i}/assets`).replace(/\/$/,""),r=c.order_id||c.orderId;if(!r)throw new Error("PayuLink: `order_id` is required. Create it on your server with POST /v1/orders.");let t=y=>{typeof c.onError=="function"?c.onError(y):console.error("PayuLink:",y.message||y)},e=null,h=null,m=async y=>{var A;let _=await fetch(`${i}/v1/checkout/session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key_id:c.key,order_id:r,customer:y?{name:y.name,contact:y.mobile||y.contact,email:y.email}:void 0})}),C=await _.json().catch(()=>({}));if(!_.ok)throw new Error(((A=C==null?void 0:C.error)==null?void 0:A.description)||`Could not start payment (HTTP ${_.status})`);return e=C,{merchant_order_no:C.order_id,amount:C.amount/100,upi_intent_url:C.upi_intent_url,payment_link:C.payment_link,qr_data_url:Ee(C.upi_intent_url),expires_at:C.expires_at?C.expires_at*1e3:null,server_now:Date.now()}},b=(y,_)=>{let C=async()=>{if(e!=null&&e.session_token)try{let E=await(await fetch(`${i}/v1/checkout/session/${encodeURIComponent(e.session_token)}`)).json().catch(()=>({}));E.status==="paid"&&E.payulink_signature&&(h={payulink_order_id:E.payulink_order_id,payulink_payment_id:E.payulink_payment_id,payulink_signature:E.payulink_signature,utr:E.utr||null,amount:E.amount}),_({status:E.status==="paid"?0:E.status==="failed"?1:E.status==="expired"?3:2,status_label:String(E.status||"pending").toUpperCase(),utr:E.utr||null})}catch{}},A=setInterval(C,c.pollMs||ae.pollMs);return C(),()=>clearInterval(A)},x={_inner:null,close(){var y;(y=this._inner)==null||y.close()}};return fetch(`${i}/v1/checkout/order/${encodeURIComponent(r)}?key_id=${encodeURIComponent(c.key)}`).then(async y=>{var C;let _=await y.json().catch(()=>({}));if(!y.ok)throw new Error(((C=_==null?void 0:_.error)==null?void 0:C.description)||"Unknown or expired order");x._inner=re(Object.assign({},{apiBase:i,assetBase:a,name:c.name||_.merchant_name,logo:c.logo||`${a}/payulink-logo.png`,brandColor:c.brandColor,note:c.note,prefill:c.prefill||{},amount:_.amount/100,description:c.description||c.item||_.merchant_name,createOrder:m,watchOrder:b,onSuccess:()=>{let A=h||{payulink_order_id:(e==null?void 0:e.order_id)||r,payulink_payment_id:null,payulink_signature:null};typeof c.handler=="function"&&c.handler(A),typeof c.onSuccess=="function"&&c.onSuccess(A)},onDismiss:()=>{typeof c.onDismiss=="function"&&c.onDismiss()},onError:t}))}).catch(t),x}static open(g={}){return new o(g).open(g)}};typeof window!="undefined"&&(window.PayuLink=Y,window.PayulinkCheckout=Y);return ye(Pe);})();
47
341
  window.PayulinkCheckout=PayulinkCheckoutNS.default||PayulinkCheckoutNS;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thepayulink/checkout",
3
- "version": "2.0.1",
3
+ "version": "2.1.1",
4
4
  "description": "PayuLink Checkout — open a server-created order in the browser with your publishable key.",
5
5
  "type": "module",
6
6
  "main": "./dist/payulink-checkout.cjs",
@@ -38,5 +38,8 @@
38
38
  "devDependencies": {
39
39
  "esbuild": "^0.23.0"
40
40
  },
41
- "homepage": "https://payulink.io"
41
+ "homepage": "https://payulink.io",
42
+ "dependencies": {
43
+ "qrcode-generator": "^1.4.4"
44
+ }
42
45
  }