@monetize.software/sdk-extension 3.0.0-alpha.2 → 3.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/dist/chunks/{chrome-port-DPFUj1MP.js → chrome-port-BAMwPMV0.js} +127 -113
- package/dist/chunks/chrome-port-BAMwPMV0.js.map +1 -0
- package/dist/chunks/chrome-port-CdxuZ1ND.js +2 -0
- package/dist/chunks/chrome-port-CdxuZ1ND.js.map +1 -0
- package/dist/content/RemoteAuthClient.d.ts +2 -2
- package/dist/content/RemoteAuthClient.d.ts.map +1 -1
- package/dist/content.cjs +3 -3
- package/dist/content.cjs.map +1 -1
- package/dist/content.js +312 -307
- package/dist/content.js.map +1 -1
- package/dist/offscreen/server.d.ts.map +1 -1
- package/dist/offscreen.cjs +1 -1
- package/dist/offscreen.cjs.map +1 -1
- package/dist/offscreen.js +6 -6
- package/dist/offscreen.js.map +1 -1
- package/dist/shared/messages.d.ts +5 -2
- package/dist/shared/messages.d.ts.map +1 -1
- package/package.json +35 -18
- package/dist/chunks/chrome-port-DPFUj1MP.js.map +0 -1
- package/dist/chunks/chrome-port-MoMohiHB.js +0 -2
- package/dist/chunks/chrome-port-MoMohiHB.js.map +0 -1
package/dist/content.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { P as
|
|
1
|
+
import { P as E, B as ae, E as ce, c as ue, A as H, w as he, a as q, r as de, b as pe } from "./chunks/chrome-port-BAMwPMV0.js";
|
|
2
2
|
import { render as z, h as G } from "preact";
|
|
3
3
|
import { jsxs as u, jsx as o, Fragment as ne } from "preact/jsx-runtime";
|
|
4
|
-
import { useRef as
|
|
4
|
+
import { useRef as P, useEffect as M, useState as y, useMemo as ie } from "preact/hooks";
|
|
5
5
|
import { P as fe } from "./chunks/port-name-BPfQKtdb.js";
|
|
6
6
|
const oe = '@layer theme,base,components,utilities;@layer theme{@theme default{ --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --color-red-50: oklch(97.1% .013 17.38); --color-red-100: oklch(93.6% .032 17.717); --color-red-200: oklch(88.5% .062 18.334); --color-red-300: oklch(80.8% .114 19.571); --color-red-400: oklch(70.4% .191 22.216); --color-red-500: oklch(63.7% .237 25.331); --color-red-600: oklch(57.7% .245 27.325); --color-red-700: oklch(50.5% .213 27.518); --color-red-800: oklch(44.4% .177 26.899); --color-red-900: oklch(39.6% .141 25.723); --color-red-950: oklch(25.8% .092 26.042); --color-orange-50: oklch(98% .016 73.684); --color-orange-100: oklch(95.4% .038 75.164); --color-orange-200: oklch(90.1% .076 70.697); --color-orange-300: oklch(83.7% .128 66.29); --color-orange-400: oklch(75% .183 55.934); --color-orange-500: oklch(70.5% .213 47.604); --color-orange-600: oklch(64.6% .222 41.116); --color-orange-700: oklch(55.3% .195 38.402); --color-orange-800: oklch(47% .157 37.304); --color-orange-900: oklch(40.8% .123 38.172); --color-orange-950: oklch(26.6% .079 36.259); --color-amber-50: oklch(98.7% .022 95.277); --color-amber-100: oklch(96.2% .059 95.617); --color-amber-200: oklch(92.4% .12 95.746); --color-amber-300: oklch(87.9% .169 91.605); --color-amber-400: oklch(82.8% .189 84.429); --color-amber-500: oklch(76.9% .188 70.08); --color-amber-600: oklch(66.6% .179 58.318); --color-amber-700: oklch(55.5% .163 48.998); --color-amber-800: oklch(47.3% .137 46.201); --color-amber-900: oklch(41.4% .112 45.904); --color-amber-950: oklch(27.9% .077 45.635); --color-yellow-50: oklch(98.7% .026 102.212); --color-yellow-100: oklch(97.3% .071 103.193); --color-yellow-200: oklch(94.5% .129 101.54); --color-yellow-300: oklch(90.5% .182 98.111); --color-yellow-400: oklch(85.2% .199 91.936); --color-yellow-500: oklch(79.5% .184 86.047); --color-yellow-600: oklch(68.1% .162 75.834); --color-yellow-700: oklch(55.4% .135 66.442); --color-yellow-800: oklch(47.6% .114 61.907); --color-yellow-900: oklch(42.1% .095 57.708); --color-yellow-950: oklch(28.6% .066 53.813); --color-lime-50: oklch(98.6% .031 120.757); --color-lime-100: oklch(96.7% .067 122.328); --color-lime-200: oklch(93.8% .127 124.321); --color-lime-300: oklch(89.7% .196 126.665); --color-lime-400: oklch(84.1% .238 128.85); --color-lime-500: oklch(76.8% .233 130.85); --color-lime-600: oklch(64.8% .2 131.684); --color-lime-700: oklch(53.2% .157 131.589); --color-lime-800: oklch(45.3% .124 130.933); --color-lime-900: oklch(40.5% .101 131.063); --color-lime-950: oklch(27.4% .072 132.109); --color-green-50: oklch(98.2% .018 155.826); --color-green-100: oklch(96.2% .044 156.743); --color-green-200: oklch(92.5% .084 155.995); --color-green-300: oklch(87.1% .15 154.449); --color-green-400: oklch(79.2% .209 151.711); --color-green-500: oklch(72.3% .219 149.579); --color-green-600: oklch(62.7% .194 149.214); --color-green-700: oklch(52.7% .154 150.069); --color-green-800: oklch(44.8% .119 151.328); --color-green-900: oklch(39.3% .095 152.535); --color-green-950: oklch(26.6% .065 152.934); --color-emerald-50: oklch(97.9% .021 166.113); --color-emerald-100: oklch(95% .052 163.051); --color-emerald-200: oklch(90.5% .093 164.15); --color-emerald-300: oklch(84.5% .143 164.978); --color-emerald-400: oklch(76.5% .177 163.223); --color-emerald-500: oklch(69.6% .17 162.48); --color-emerald-600: oklch(59.6% .145 163.225); --color-emerald-700: oklch(50.8% .118 165.612); --color-emerald-800: oklch(43.2% .095 166.913); --color-emerald-900: oklch(37.8% .077 168.94); --color-emerald-950: oklch(26.2% .051 172.552); --color-teal-50: oklch(98.4% .014 180.72); --color-teal-100: oklch(95.3% .051 180.801); --color-teal-200: oklch(91% .096 180.426); --color-teal-300: oklch(85.5% .138 181.071); --color-teal-400: oklch(77.7% .152 181.912); --color-teal-500: oklch(70.4% .14 182.503); --color-teal-600: oklch(60% .118 184.704); --color-teal-700: oklch(51.1% .096 186.391); --color-teal-800: oklch(43.7% .078 188.216); --color-teal-900: oklch(38.6% .063 188.416); --color-teal-950: oklch(27.7% .046 192.524); --color-cyan-50: oklch(98.4% .019 200.873); --color-cyan-100: oklch(95.6% .045 203.388); --color-cyan-200: oklch(91.7% .08 205.041); --color-cyan-300: oklch(86.5% .127 207.078); --color-cyan-400: oklch(78.9% .154 211.53); --color-cyan-500: oklch(71.5% .143 215.221); --color-cyan-600: oklch(60.9% .126 221.723); --color-cyan-700: oklch(52% .105 223.128); --color-cyan-800: oklch(45% .085 224.283); --color-cyan-900: oklch(39.8% .07 227.392); --color-cyan-950: oklch(30.2% .056 229.695); --color-sky-50: oklch(97.7% .013 236.62); --color-sky-100: oklch(95.1% .026 236.824); --color-sky-200: oklch(90.1% .058 230.902); --color-sky-300: oklch(82.8% .111 230.318); --color-sky-400: oklch(74.6% .16 232.661); --color-sky-500: oklch(68.5% .169 237.323); --color-sky-600: oklch(58.8% .158 241.966); --color-sky-700: oklch(50% .134 242.749); --color-sky-800: oklch(44.3% .11 240.79); --color-sky-900: oklch(39.1% .09 240.876); --color-sky-950: oklch(29.3% .066 243.157); --color-blue-50: oklch(97% .014 254.604); --color-blue-100: oklch(93.2% .032 255.585); --color-blue-200: oklch(88.2% .059 254.128); --color-blue-300: oklch(80.9% .105 251.813); --color-blue-400: oklch(70.7% .165 254.624); --color-blue-500: oklch(62.3% .214 259.815); --color-blue-600: oklch(54.6% .245 262.881); --color-blue-700: oklch(48.8% .243 264.376); --color-blue-800: oklch(42.4% .199 265.638); --color-blue-900: oklch(37.9% .146 265.522); --color-blue-950: oklch(28.2% .091 267.935); --color-indigo-50: oklch(96.2% .018 272.314); --color-indigo-100: oklch(93% .034 272.788); --color-indigo-200: oklch(87% .065 274.039); --color-indigo-300: oklch(78.5% .115 274.713); --color-indigo-400: oklch(67.3% .182 276.935); --color-indigo-500: oklch(58.5% .233 277.117); --color-indigo-600: oklch(51.1% .262 276.966); --color-indigo-700: oklch(45.7% .24 277.023); --color-indigo-800: oklch(39.8% .195 277.366); --color-indigo-900: oklch(35.9% .144 278.697); --color-indigo-950: oklch(25.7% .09 281.288); --color-violet-50: oklch(96.9% .016 293.756); --color-violet-100: oklch(94.3% .029 294.588); --color-violet-200: oklch(89.4% .057 293.283); --color-violet-300: oklch(81.1% .111 293.571); --color-violet-400: oklch(70.2% .183 293.541); --color-violet-500: oklch(60.6% .25 292.717); --color-violet-600: oklch(54.1% .281 293.009); --color-violet-700: oklch(49.1% .27 292.581); --color-violet-800: oklch(43.2% .232 292.759); --color-violet-900: oklch(38% .189 293.745); --color-violet-950: oklch(28.3% .141 291.089); --color-purple-50: oklch(97.7% .014 308.299); --color-purple-100: oklch(94.6% .033 307.174); --color-purple-200: oklch(90.2% .063 306.703); --color-purple-300: oklch(82.7% .119 306.383); --color-purple-400: oklch(71.4% .203 305.504); --color-purple-500: oklch(62.7% .265 303.9); --color-purple-600: oklch(55.8% .288 302.321); --color-purple-700: oklch(49.6% .265 301.924); --color-purple-800: oklch(43.8% .218 303.724); --color-purple-900: oklch(38.1% .176 304.987); --color-purple-950: oklch(29.1% .149 302.717); --color-fuchsia-50: oklch(97.7% .017 320.058); --color-fuchsia-100: oklch(95.2% .037 318.852); --color-fuchsia-200: oklch(90.3% .076 319.62); --color-fuchsia-300: oklch(83.3% .145 321.434); --color-fuchsia-400: oklch(74% .238 322.16); --color-fuchsia-500: oklch(66.7% .295 322.15); --color-fuchsia-600: oklch(59.1% .293 322.896); --color-fuchsia-700: oklch(51.8% .253 323.949); --color-fuchsia-800: oklch(45.2% .211 324.591); --color-fuchsia-900: oklch(40.1% .17 325.612); --color-fuchsia-950: oklch(29.3% .136 325.661); --color-pink-50: oklch(97.1% .014 343.198); --color-pink-100: oklch(94.8% .028 342.258); --color-pink-200: oklch(89.9% .061 343.231); --color-pink-300: oklch(82.3% .12 346.018); --color-pink-400: oklch(71.8% .202 349.761); --color-pink-500: oklch(65.6% .241 354.308); --color-pink-600: oklch(59.2% .249 .584); --color-pink-700: oklch(52.5% .223 3.958); --color-pink-800: oklch(45.9% .187 3.815); --color-pink-900: oklch(40.8% .153 2.432); --color-pink-950: oklch(28.4% .109 3.907); --color-rose-50: oklch(96.9% .015 12.422); --color-rose-100: oklch(94.1% .03 12.58); --color-rose-200: oklch(89.2% .058 10.001); --color-rose-300: oklch(81% .117 11.638); --color-rose-400: oklch(71.2% .194 13.428); --color-rose-500: oklch(64.5% .246 16.439); --color-rose-600: oklch(58.6% .253 17.585); --color-rose-700: oklch(51.4% .222 16.935); --color-rose-800: oklch(45.5% .188 13.697); --color-rose-900: oklch(41% .159 10.272); --color-rose-950: oklch(27.1% .105 12.094); --color-slate-50: oklch(98.4% .003 247.858); --color-slate-100: oklch(96.8% .007 247.896); --color-slate-200: oklch(92.9% .013 255.508); --color-slate-300: oklch(86.9% .022 252.894); --color-slate-400: oklch(70.4% .04 256.788); --color-slate-500: oklch(55.4% .046 257.417); --color-slate-600: oklch(44.6% .043 257.281); --color-slate-700: oklch(37.2% .044 257.287); --color-slate-800: oklch(27.9% .041 260.031); --color-slate-900: oklch(20.8% .042 265.755); --color-slate-950: oklch(12.9% .042 264.695); --color-gray-50: oklch(98.5% .002 247.839); --color-gray-100: oklch(96.7% .003 264.542); --color-gray-200: oklch(92.8% .006 264.531); --color-gray-300: oklch(87.2% .01 258.338); --color-gray-400: oklch(70.7% .022 261.325); --color-gray-500: oklch(55.1% .027 264.364); --color-gray-600: oklch(44.6% .03 256.802); --color-gray-700: oklch(37.3% .034 259.733); --color-gray-800: oklch(27.8% .033 256.848); --color-gray-900: oklch(21% .034 264.665); --color-gray-950: oklch(13% .028 261.692); --color-zinc-50: oklch(98.5% 0 0); --color-zinc-100: oklch(96.7% .001 286.375); --color-zinc-200: oklch(92% .004 286.32); --color-zinc-300: oklch(87.1% .006 286.286); --color-zinc-400: oklch(70.5% .015 286.067); --color-zinc-500: oklch(55.2% .016 285.938); --color-zinc-600: oklch(44.2% .017 285.786); --color-zinc-700: oklch(37% .013 285.805); --color-zinc-800: oklch(27.4% .006 286.033); --color-zinc-900: oklch(21% .006 285.885); --color-zinc-950: oklch(14.1% .005 285.823); --color-neutral-50: oklch(98.5% 0 0); --color-neutral-100: oklch(97% 0 0); --color-neutral-200: oklch(92.2% 0 0); --color-neutral-300: oklch(87% 0 0); --color-neutral-400: oklch(70.8% 0 0); --color-neutral-500: oklch(55.6% 0 0); --color-neutral-600: oklch(43.9% 0 0); --color-neutral-700: oklch(37.1% 0 0); --color-neutral-800: oklch(26.9% 0 0); --color-neutral-900: oklch(20.5% 0 0); --color-neutral-950: oklch(14.5% 0 0); --color-stone-50: oklch(98.5% .001 106.423); --color-stone-100: oklch(97% .001 106.424); --color-stone-200: oklch(92.3% .003 48.717); --color-stone-300: oklch(86.9% .005 56.366); --color-stone-400: oklch(70.9% .01 56.259); --color-stone-500: oklch(55.3% .013 58.071); --color-stone-600: oklch(44.4% .011 73.639); --color-stone-700: oklch(37.4% .01 67.558); --color-stone-800: oklch(26.8% .007 34.298); --color-stone-900: oklch(21.6% .006 56.043); --color-stone-950: oklch(14.7% .004 49.25); --color-mauve-50: oklch(98.5% 0 0); --color-mauve-100: oklch(96% .003 325.6); --color-mauve-200: oklch(92.2% .005 325.62); --color-mauve-300: oklch(86.5% .012 325.68); --color-mauve-400: oklch(71.1% .019 323.02); --color-mauve-500: oklch(54.2% .034 322.5); --color-mauve-600: oklch(43.5% .029 321.78); --color-mauve-700: oklch(36.4% .029 323.89); --color-mauve-800: oklch(26.3% .024 320.12); --color-mauve-900: oklch(21.2% .019 322.12); --color-mauve-950: oklch(14.5% .008 326); --color-olive-50: oklch(98.8% .003 106.5); --color-olive-100: oklch(96.6% .005 106.5); --color-olive-200: oklch(93% .007 106.5); --color-olive-300: oklch(88% .011 106.6); --color-olive-400: oklch(73.7% .021 106.9); --color-olive-500: oklch(58% .031 107.3); --color-olive-600: oklch(46.6% .025 107.3); --color-olive-700: oklch(39.4% .023 107.4); --color-olive-800: oklch(28.6% .016 107.4); --color-olive-900: oklch(22.8% .013 107.4); --color-olive-950: oklch(15.3% .006 107.1); --color-mist-50: oklch(98.7% .002 197.1); --color-mist-100: oklch(96.3% .002 197.1); --color-mist-200: oklch(92.5% .005 214.3); --color-mist-300: oklch(87.2% .007 219.6); --color-mist-400: oklch(72.3% .014 214.4); --color-mist-500: oklch(56% .021 213.5); --color-mist-600: oklch(45% .017 213.2); --color-mist-700: oklch(37.8% .015 216); --color-mist-800: oklch(27.5% .011 216.9); --color-mist-900: oklch(21.8% .008 223.9); --color-mist-950: oklch(14.8% .004 228.8); --color-taupe-50: oklch(98.6% .002 67.8); --color-taupe-100: oklch(96% .002 17.2); --color-taupe-200: oklch(92.2% .005 34.3); --color-taupe-300: oklch(86.8% .007 39.5); --color-taupe-400: oklch(71.4% .014 41.2); --color-taupe-500: oklch(54.7% .021 43.1); --color-taupe-600: oklch(43.8% .017 39.3); --color-taupe-700: oklch(36.7% .016 35.7); --color-taupe-800: oklch(26.8% .011 36.5); --color-taupe-900: oklch(21.4% .009 43.1); --color-taupe-950: oklch(14.7% .004 49.3); --color-black: #000; --color-white: #fff; --spacing: .25rem; --breakpoint-sm: 40rem; --breakpoint-md: 48rem; --breakpoint-lg: 64rem; --breakpoint-xl: 80rem; --breakpoint-2xl: 96rem; --container-3xs: 16rem; --container-2xs: 18rem; --container-xs: 20rem; --container-sm: 24rem; --container-md: 28rem; --container-lg: 32rem; --container-xl: 36rem; --container-2xl: 42rem; --container-3xl: 48rem; --container-4xl: 56rem; --container-5xl: 64rem; --container-6xl: 72rem; --container-7xl: 80rem; --text-xs: .75rem; --text-xs--line-height: calc(1 / .75); --text-sm: .875rem; --text-sm--line-height: calc(1.25 / .875); --text-base: 1rem; --text-base--line-height: 1.5 ; --text-lg: 1.125rem; --text-lg--line-height: calc(1.75 / 1.125); --text-xl: 1.25rem; --text-xl--line-height: calc(1.75 / 1.25); --text-2xl: 1.5rem; --text-2xl--line-height: calc(2 / 1.5); --text-3xl: 1.875rem; --text-3xl--line-height: 1.2 ; --text-4xl: 2.25rem; --text-4xl--line-height: calc(2.5 / 2.25); --text-5xl: 3rem; --text-5xl--line-height: 1; --text-6xl: 3.75rem; --text-6xl--line-height: 1; --text-7xl: 4.5rem; --text-7xl--line-height: 1; --text-8xl: 6rem; --text-8xl--line-height: 1; --text-9xl: 8rem; --text-9xl--line-height: 1; --font-weight-thin: 100; --font-weight-extralight: 200; --font-weight-light: 300; --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-extrabold: 800; --font-weight-black: 900; --tracking-tighter: -.05em; --tracking-tight: -.025em; --tracking-normal: 0em; --tracking-wide: .025em; --tracking-wider: .05em; --tracking-widest: .1em; --leading-tight: 1.25; --leading-snug: 1.375; --leading-normal: 1.5; --leading-relaxed: 1.625; --leading-loose: 2; --radius-xs: .125rem; --radius-sm: .25rem; --radius-md: .375rem; --radius-lg: .5rem; --radius-xl: .75rem; --radius-2xl: 1rem; --radius-3xl: 1.5rem; --radius-4xl: 2rem; --shadow-2xs: 0 1px rgb(0 0 0 / .05); --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .05); --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1); --shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1); --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1); --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1); --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .25); --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / .05); --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / .05); --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / .05); --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / .05); --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / .15); --drop-shadow-md: 0 3px 3px rgb(0 0 0 / .12); --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / .15); --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / .1); --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / .15); --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / .15); --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / .2); --text-shadow-sm: 0px 1px 0px rgb(0 0 0 / .075), 0px 1px 1px rgb(0 0 0 / .075), 0px 2px 2px rgb(0 0 0 / .075); --text-shadow-md: 0px 1px 1px rgb(0 0 0 / .1), 0px 1px 2px rgb(0 0 0 / .1), 0px 2px 4px rgb(0 0 0 / .1); --text-shadow-lg: 0px 1px 2px rgb(0 0 0 / .1), 0px 3px 2px rgb(0 0 0 / .1), 0px 4px 8px rgb(0 0 0 / .1); --ease-in: cubic-bezier(.4, 0, 1, 1); --ease-out: cubic-bezier(0, 0, .2, 1); --ease-in-out: cubic-bezier(.4, 0, .2, 1); --animate-spin: spin 1s linear infinite; --animate-ping: ping 1s cubic-bezier(0, 0, .2, 1) infinite; --animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; --animate-bounce: bounce 1s infinite; @keyframes spin { to { transform: rotate(360deg); } } @keyframes ping { 75%, 100% { transform: scale(2); opacity: 0; } } @keyframes pulse { 50% { opacity: .5; } } @keyframes bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(.8, 0, 1, 1); } 50% { transform: none; animation-timing-function: cubic-bezier(0, 0, .2, 1); } } --blur-xs: 4px; --blur-sm: 8px; --blur-md: 12px; --blur-lg: 16px; --blur-xl: 24px; --blur-2xl: 40px; --blur-3xl: 64px; --perspective-dramatic: 100px; --perspective-near: 300px; --perspective-normal: 500px; --perspective-midrange: 800px; --perspective-distant: 1200px; --aspect-video: 16 / 9; --default-transition-duration: .15s; --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); --default-font-family: --theme(--font-sans, initial); --default-font-feature-settings: --theme( --font-sans--font-feature-settings, initial ); --default-font-variation-settings: --theme( --font-sans--font-variation-settings, initial ); --default-mono-font-family: --theme(--font-mono, initial); --default-mono-font-feature-settings: --theme( --font-mono--font-feature-settings, initial ); --default-mono-font-variation-settings: --theme( --font-mono--font-variation-settings, initial ); }@theme default inline reference{ --blur: 8px; --shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1); --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / .05); --drop-shadow: 0 1px 2px rgb(0 0 0 / .1), 0 1px 1px rgb(0 0 0 / .06); --radius: .25rem; --max-width-prose: 65ch; }}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:--theme(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:--theme(--default-font-feature-settings,normal);font-variation-settings:--theme(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:--theme(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:--theme(--default-mono-font-feature-settings,normal);font-variation-settings:--theme(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{@tailwind utilities;}@source "../**/*.{ts,tsx,js,jsx}";@layer base{:host{all:initial;color-scheme:light;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*,*:before,*:after{box-sizing:border-box}button{font-family:inherit;cursor:pointer}button:disabled{cursor:not-allowed}[role=button],[role=radio]{cursor:pointer}}';
|
|
7
7
|
let W = !1;
|
|
@@ -33,7 +33,7 @@ function me(r, e, t = {}) {
|
|
|
33
33
|
throw new Error("mountShadow called in non-DOM environment");
|
|
34
34
|
ge();
|
|
35
35
|
const n = t.host ?? document.createElement("div");
|
|
36
|
-
n.setAttribute("data-paywall-host", ""), n.style.cssText = "all: initial; position: fixed; inset: 0; z-index: 2147483647; pointer-events: none;", n.isConnected
|
|
36
|
+
n.setAttribute("data-paywall-host", ""), n.style.cssText = t.inline ? "all: initial; position: absolute; inset: 0; z-index: 1; pointer-events: none;" : "all: initial; position: fixed; inset: 0; z-index: 2147483647; pointer-events: none;", !n.isConnected && !t.inline && document.body.appendChild(n);
|
|
37
37
|
const i = n.attachShadow({ mode: t.shadowMode ?? "closed" }), s = `
|
|
38
38
|
:host {
|
|
39
39
|
all: initial !important;
|
|
@@ -56,11 +56,11 @@ function me(r, e, t = {}) {
|
|
|
56
56
|
l.textContent = s + oe + (t.injectCss ?? ""), i.appendChild(l);
|
|
57
57
|
const a = document.createElement("div");
|
|
58
58
|
a.style.pointerEvents = "auto", i.appendChild(a);
|
|
59
|
-
let
|
|
60
|
-
return z(G(r,
|
|
59
|
+
let h = e;
|
|
60
|
+
return z(G(r, h), a), {
|
|
61
61
|
shadowRoot: i,
|
|
62
|
-
update(
|
|
63
|
-
|
|
62
|
+
update(c) {
|
|
63
|
+
h = { ...h, ...c }, z(G(r, h), a);
|
|
64
64
|
},
|
|
65
65
|
unmount() {
|
|
66
66
|
z(null, a), n.remove();
|
|
@@ -75,49 +75,50 @@ function ye({
|
|
|
75
75
|
brandColor: n,
|
|
76
76
|
testMode: i,
|
|
77
77
|
allowClose: s = !0,
|
|
78
|
-
|
|
78
|
+
inline: l = !1,
|
|
79
|
+
children: a
|
|
79
80
|
}) {
|
|
80
|
-
const
|
|
81
|
+
const h = P(null), c = P(null);
|
|
81
82
|
return M(() => {
|
|
82
83
|
if (!r) return;
|
|
83
84
|
c.current = document.activeElement ?? null;
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
if (
|
|
85
|
+
const f = h.current;
|
|
86
|
+
f && (f.querySelector(Z) ?? f).focus({ preventScroll: !0 });
|
|
87
|
+
const g = (v) => {
|
|
88
|
+
if (v.key === "Escape") {
|
|
88
89
|
if (!s) return;
|
|
89
|
-
|
|
90
|
+
v.stopPropagation(), e();
|
|
90
91
|
return;
|
|
91
92
|
}
|
|
92
|
-
if (
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
).filter((
|
|
96
|
-
if (
|
|
97
|
-
|
|
93
|
+
if (v.key !== "Tab" || !h.current) return;
|
|
94
|
+
const x = Array.from(
|
|
95
|
+
h.current.querySelectorAll(Z)
|
|
96
|
+
).filter((L) => !L.hasAttribute("disabled") && L.tabIndex !== -1);
|
|
97
|
+
if (x.length === 0) {
|
|
98
|
+
v.preventDefault();
|
|
98
99
|
return;
|
|
99
100
|
}
|
|
100
|
-
const
|
|
101
|
-
|
|
101
|
+
const S = x[0], w = x[x.length - 1], B = document.activeElement;
|
|
102
|
+
v.shiftKey && B === S ? (v.preventDefault(), w.focus()) : !v.shiftKey && B === w && (v.preventDefault(), S.focus());
|
|
102
103
|
};
|
|
103
|
-
document.addEventListener("keydown",
|
|
104
|
-
const
|
|
105
|
-
return document.body.style.overflow = "hidden", () => {
|
|
106
|
-
document.removeEventListener("keydown",
|
|
104
|
+
document.addEventListener("keydown", g, !0);
|
|
105
|
+
const _ = document.body.style.overflow;
|
|
106
|
+
return l || (document.body.style.overflow = "hidden"), () => {
|
|
107
|
+
document.removeEventListener("keydown", g, !0), l || (document.body.style.overflow = _), c.current?.focus?.({ preventScroll: !0 });
|
|
107
108
|
};
|
|
108
|
-
}, [r, e, s]), r ? /* @__PURE__ */ u(
|
|
109
|
+
}, [r, e, s, l]), r ? /* @__PURE__ */ u(
|
|
109
110
|
"div",
|
|
110
111
|
{
|
|
111
|
-
class: "
|
|
112
|
-
onClick: (
|
|
113
|
-
s &&
|
|
112
|
+
class: `${l ? "absolute z-[1]" : "fixed z-[2147483647]"} inset-0 flex items-center justify-center bg-slate-950/50 p-2 sm:p-4 backdrop-blur-md animate-[pw-fade-in_180ms_ease-out]`,
|
|
113
|
+
onClick: (f) => {
|
|
114
|
+
s && f.target === f.currentTarget && e();
|
|
114
115
|
},
|
|
115
116
|
"data-pw-root": !0,
|
|
116
117
|
children: [
|
|
117
118
|
/* @__PURE__ */ u(
|
|
118
119
|
"div",
|
|
119
120
|
{
|
|
120
|
-
ref:
|
|
121
|
+
ref: h,
|
|
121
122
|
role: "dialog",
|
|
122
123
|
"aria-modal": "true",
|
|
123
124
|
"aria-labelledby": t,
|
|
@@ -151,7 +152,7 @@ function ye({
|
|
|
151
152
|
]
|
|
152
153
|
}
|
|
153
154
|
),
|
|
154
|
-
/* @__PURE__ */ o("div", { class: "flex-1 overflow-y-auto p-7", children:
|
|
155
|
+
/* @__PURE__ */ o("div", { class: "flex-1 overflow-y-auto p-7", children: a }),
|
|
155
156
|
s ? /* @__PURE__ */ o(
|
|
156
157
|
"button",
|
|
157
158
|
{
|
|
@@ -184,7 +185,7 @@ function ye({
|
|
|
184
185
|
}
|
|
185
186
|
) : null;
|
|
186
187
|
}
|
|
187
|
-
const
|
|
188
|
+
const be = {
|
|
188
189
|
google: "Continue with Google",
|
|
189
190
|
apple: "Continue with Apple",
|
|
190
191
|
github: "Continue with GitHub",
|
|
@@ -195,7 +196,7 @@ function se({ block: r, ctx: e }) {
|
|
|
195
196
|
if (!t)
|
|
196
197
|
return typeof console < "u" && console.warn("[paywall] auth_panel rendered without AuthClient — pass `auth: true` to PaywallUI"), null;
|
|
197
198
|
const a = n && !n.user.is_anonymous ? n : null;
|
|
198
|
-
return a && l ? null : a ? /* @__PURE__ */ o(
|
|
199
|
+
return a && l ? null : a ? /* @__PURE__ */ o(xe, { email: a.user.email ?? "", onSignOut: () => t.signOut().catch(() => {
|
|
199
200
|
}) }) : /* @__PURE__ */ o(
|
|
200
201
|
ke,
|
|
201
202
|
{
|
|
@@ -206,7 +207,7 @@ function se({ block: r, ctx: e }) {
|
|
|
206
207
|
}
|
|
207
208
|
);
|
|
208
209
|
}
|
|
209
|
-
function
|
|
210
|
+
function xe({ email: r, onSignOut: e }) {
|
|
210
211
|
return /* @__PURE__ */ u("div", { class: "flex items-center justify-between gap-3 rounded-2xl border border-gray-200 bg-gray-50/60 px-4 py-3", children: [
|
|
211
212
|
/* @__PURE__ */ u("div", { class: "flex flex-col", children: [
|
|
212
213
|
/* @__PURE__ */ o("span", { class: "text-[10px] font-semibold uppercase tracking-wider text-gray-500", children: "Signed in" }),
|
|
@@ -224,36 +225,36 @@ function be({ email: r, onSignOut: e }) {
|
|
|
224
225
|
] });
|
|
225
226
|
}
|
|
226
227
|
function ke({ block: r, allowSignup: e, allowReset: t, ctx: n }) {
|
|
227
|
-
const i = n.auth, s = r.providers ?? [], [l, a] =
|
|
228
|
-
if (
|
|
229
|
-
_("email"),
|
|
228
|
+
const i = n.auth, s = r.providers ?? [], [l, a] = y("signin"), [h, c] = y(""), [m, b] = y(""), [A, f] = y(""), [g, _] = y(null), [v, x] = y(null), [S, w] = y(null), B = async (I) => {
|
|
229
|
+
if (I.preventDefault(), !g) {
|
|
230
|
+
_("email"), x(null), w(null);
|
|
230
231
|
try {
|
|
231
|
-
l === "signin" ? await i.signInWithEmail({ email:
|
|
232
|
-
email:
|
|
233
|
-
token:
|
|
234
|
-
type:
|
|
235
|
-
}),
|
|
236
|
-
} catch (
|
|
237
|
-
const
|
|
238
|
-
|
|
232
|
+
l === "signin" ? await i.signInWithEmail({ email: h, password: m }) : l === "signup" ? (await i.signUp({ email: h, password: m })).kind === "confirmation_required" && (a("reset_verify"), w("Check your email for a confirmation code.")) : l === "forgot" ? (await i.requestPasswordReset({ email: h }), a("reset_sent"), w("If that email exists, a reset code has been sent.")) : l === "reset_verify" && (await i.verifyOtp({
|
|
233
|
+
email: h,
|
|
234
|
+
token: A,
|
|
235
|
+
type: m ? "recovery" : "email"
|
|
236
|
+
}), m && await i.updatePassword({ password: m }));
|
|
237
|
+
} catch (T) {
|
|
238
|
+
const C = T instanceof E ? T.message : "Something went wrong";
|
|
239
|
+
x(C);
|
|
239
240
|
} finally {
|
|
240
241
|
_(null);
|
|
241
242
|
}
|
|
242
243
|
}
|
|
243
|
-
}, L = async (
|
|
244
|
-
if (!
|
|
245
|
-
_(
|
|
244
|
+
}, L = async (I) => {
|
|
245
|
+
if (!g) {
|
|
246
|
+
_(I), x(null), w(null);
|
|
246
247
|
try {
|
|
247
248
|
await i.signInWithOAuth({
|
|
248
|
-
provider:
|
|
249
|
+
provider: I,
|
|
249
250
|
onPopupOpened: () => _(null)
|
|
250
251
|
});
|
|
251
|
-
} catch (
|
|
252
|
-
if (
|
|
253
|
-
if (
|
|
254
|
-
|
|
252
|
+
} catch (T) {
|
|
253
|
+
if (T instanceof E) {
|
|
254
|
+
if (T.code === "oauth_cancelled" || T.code === "oauth_timeout") return;
|
|
255
|
+
x(T.message);
|
|
255
256
|
} else
|
|
256
|
-
|
|
257
|
+
x("Sign-in failed");
|
|
257
258
|
} finally {
|
|
258
259
|
_(null);
|
|
259
260
|
}
|
|
@@ -262,30 +263,30 @@ function ke({ block: r, allowSignup: e, allowReset: t, ctx: n }) {
|
|
|
262
263
|
return /* @__PURE__ */ u("div", { class: "flex flex-col gap-3", children: [
|
|
263
264
|
r.heading ? /* @__PURE__ */ o("h2", { class: "text-lg font-semibold tracking-tight text-gray-900", children: r.heading }) : null,
|
|
264
265
|
s.length > 0 && (l === "signin" || l === "signup") ? /* @__PURE__ */ u("div", { class: "flex flex-col gap-2", children: [
|
|
265
|
-
s.map((
|
|
266
|
+
s.map((I) => /* @__PURE__ */ u(
|
|
266
267
|
"button",
|
|
267
268
|
{
|
|
268
269
|
type: "button",
|
|
269
|
-
onClick: () => L(
|
|
270
|
-
disabled:
|
|
270
|
+
onClick: () => L(I),
|
|
271
|
+
disabled: g !== null,
|
|
271
272
|
class: "flex h-11 w-full items-center justify-center gap-2 rounded-xl border border-gray-200 bg-white px-4 text-sm font-medium text-gray-900 shadow-[0_1px_0_rgba(15,23,42,0.04)] transition-all hover:-translate-y-px hover:border-gray-300 hover:bg-gray-50 hover:shadow-sm disabled:cursor-not-allowed disabled:opacity-60 disabled:hover:translate-y-0 disabled:hover:shadow-[0_1px_0_rgba(15,23,42,0.04)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
|
|
272
273
|
children: [
|
|
273
|
-
|
|
274
|
-
/* @__PURE__ */ o("span", { children:
|
|
274
|
+
g === I ? /* @__PURE__ */ o("span", { class: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-gray-300 border-t-gray-700" }) : /* @__PURE__ */ o(_e, { provider: I }),
|
|
275
|
+
/* @__PURE__ */ o("span", { children: be[I] })
|
|
275
276
|
]
|
|
276
277
|
},
|
|
277
|
-
|
|
278
|
+
I
|
|
278
279
|
)),
|
|
279
280
|
/* @__PURE__ */ o(ve, {})
|
|
280
281
|
] }) : null,
|
|
281
|
-
/* @__PURE__ */ u("form", { onSubmit:
|
|
282
|
+
/* @__PURE__ */ u("form", { onSubmit: B, class: "flex flex-col gap-2", children: [
|
|
282
283
|
(l === "signin" || l === "signup" || l === "forgot") && /* @__PURE__ */ o(
|
|
283
284
|
j,
|
|
284
285
|
{
|
|
285
286
|
type: "email",
|
|
286
287
|
label: "Email",
|
|
287
|
-
value:
|
|
288
|
-
onInput:
|
|
288
|
+
value: h,
|
|
289
|
+
onInput: c,
|
|
289
290
|
autocomplete: "email",
|
|
290
291
|
required: !0
|
|
291
292
|
}
|
|
@@ -295,7 +296,7 @@ function ke({ block: r, allowSignup: e, allowReset: t, ctx: n }) {
|
|
|
295
296
|
{
|
|
296
297
|
type: "password",
|
|
297
298
|
label: "Password",
|
|
298
|
-
value:
|
|
299
|
+
value: m,
|
|
299
300
|
onInput: b,
|
|
300
301
|
autocomplete: l === "signin" ? "current-password" : "new-password",
|
|
301
302
|
required: !0
|
|
@@ -307,8 +308,8 @@ function ke({ block: r, allowSignup: e, allowReset: t, ctx: n }) {
|
|
|
307
308
|
{
|
|
308
309
|
type: "text",
|
|
309
310
|
label: "Confirmation code",
|
|
310
|
-
value:
|
|
311
|
-
onInput:
|
|
311
|
+
value: A,
|
|
312
|
+
onInput: f,
|
|
312
313
|
autocomplete: "one-time-code",
|
|
313
314
|
inputMode: "numeric",
|
|
314
315
|
required: !0
|
|
@@ -319,35 +320,35 @@ function ke({ block: r, allowSignup: e, allowReset: t, ctx: n }) {
|
|
|
319
320
|
{
|
|
320
321
|
type: "password",
|
|
321
322
|
label: "New password (optional — only for password reset)",
|
|
322
|
-
value:
|
|
323
|
+
value: m,
|
|
323
324
|
onInput: b,
|
|
324
325
|
autocomplete: "new-password"
|
|
325
326
|
}
|
|
326
327
|
)
|
|
327
328
|
] }),
|
|
328
329
|
l === "reset_sent" && S && /* @__PURE__ */ o("p", { class: "rounded-lg bg-gray-50 px-3 py-2 text-xs text-gray-600", children: S }),
|
|
329
|
-
|
|
330
|
+
v && /* @__PURE__ */ o("p", { class: "text-xs text-red-600", children: v }),
|
|
330
331
|
S && l !== "reset_sent" && /* @__PURE__ */ o("p", { class: "text-xs text-gray-500", children: S }),
|
|
331
332
|
l !== "reset_sent" && /* @__PURE__ */ o(
|
|
332
333
|
"button",
|
|
333
334
|
{
|
|
334
335
|
type: "submit",
|
|
335
|
-
disabled:
|
|
336
|
+
disabled: g !== null,
|
|
336
337
|
class: "flex h-11 w-full items-center justify-center rounded-xl px-4 text-sm font-semibold tracking-tight text-white transition-all hover:-translate-y-px hover:brightness-105 disabled:cursor-not-allowed disabled:opacity-60 disabled:hover:translate-y-0 disabled:hover:brightness-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
|
|
337
338
|
style: {
|
|
338
339
|
background: "linear-gradient(180deg, color-mix(in srgb, var(--pw-accent) 92%, white), var(--pw-accent))",
|
|
339
340
|
boxShadow: "0 1px 2px rgba(15,23,42,0.08), 0 6px 14px -4px color-mix(in srgb, var(--pw-accent) 50%, transparent)"
|
|
340
341
|
},
|
|
341
|
-
children:
|
|
342
|
+
children: g === "email" ? /* @__PURE__ */ o("span", { class: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : we(l)
|
|
342
343
|
}
|
|
343
344
|
)
|
|
344
345
|
] }),
|
|
345
346
|
/* @__PURE__ */ u("div", { class: "flex flex-wrap items-center justify-between gap-x-3 gap-y-1 text-xs text-gray-500", children: [
|
|
346
|
-
l === "signin" && e && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a,
|
|
347
|
-
l === "signup" && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a,
|
|
348
|
-
l === "signin" && t && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a,
|
|
349
|
-
(l === "forgot" || l === "reset_sent" || l === "reset_verify") && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a,
|
|
350
|
-
l === "reset_sent" && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a,
|
|
347
|
+
l === "signin" && e && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a, x, w, "signup"), class: "font-medium text-gray-700 hover:underline", children: "Create account" }),
|
|
348
|
+
l === "signup" && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a, x, w, "signin"), class: "font-medium text-gray-700 hover:underline", children: "I already have an account" }),
|
|
349
|
+
l === "signin" && t && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a, x, w, "forgot"), class: "hover:underline", children: "Forgot password?" }),
|
|
350
|
+
(l === "forgot" || l === "reset_sent" || l === "reset_verify") && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a, x, w, "signin"), class: "hover:underline", children: "Back to sign in" }),
|
|
351
|
+
l === "reset_sent" && /* @__PURE__ */ o("button", { type: "button", onClick: () => O(a, x, w, "reset_verify"), class: "font-medium text-gray-700 hover:underline", children: "I have a code" })
|
|
351
352
|
] })
|
|
352
353
|
] });
|
|
353
354
|
}
|
|
@@ -437,27 +438,27 @@ function Ce({
|
|
|
437
438
|
heading: n = "Continue as guest",
|
|
438
439
|
description: i = "Setting up your guest session…"
|
|
439
440
|
}) {
|
|
440
|
-
const [s, l] =
|
|
441
|
+
const [s, l] = y({ kind: "signing-in" }), a = P(!0);
|
|
441
442
|
M(() => () => {
|
|
442
443
|
a.current = !1;
|
|
443
444
|
}, []);
|
|
444
|
-
const
|
|
445
|
+
const h = () => {
|
|
445
446
|
l({ kind: "signing-in" }), (async () => {
|
|
446
447
|
try {
|
|
447
|
-
const
|
|
448
|
+
const c = await r.signInAnonymously();
|
|
448
449
|
if (!a.current) return;
|
|
449
|
-
e(
|
|
450
|
-
} catch (
|
|
450
|
+
e(c);
|
|
451
|
+
} catch (c) {
|
|
451
452
|
if (!a.current) return;
|
|
452
453
|
l({
|
|
453
454
|
kind: "error",
|
|
454
|
-
message:
|
|
455
|
+
message: c instanceof Error ? c.message : "Anonymous sign-in failed"
|
|
455
456
|
});
|
|
456
457
|
}
|
|
457
458
|
})();
|
|
458
459
|
};
|
|
459
460
|
return M(() => {
|
|
460
|
-
|
|
461
|
+
h();
|
|
461
462
|
}, []), /* @__PURE__ */ u("div", { class: "flex flex-col gap-3", children: [
|
|
462
463
|
t ? /* @__PURE__ */ o(
|
|
463
464
|
"button",
|
|
@@ -479,7 +480,7 @@ function Ce({
|
|
|
479
480
|
"button",
|
|
480
481
|
{
|
|
481
482
|
type: "button",
|
|
482
|
-
onClick:
|
|
483
|
+
onClick: h,
|
|
483
484
|
class: "self-start rounded-md bg-[var(--pw-accent)] px-3 py-1.5 text-sm font-medium text-white hover:opacity-90 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)] focus-visible:ring-offset-2",
|
|
484
485
|
children: "Try again"
|
|
485
486
|
}
|
|
@@ -493,36 +494,36 @@ function Ie() {
|
|
|
493
494
|
/* @__PURE__ */ o("path", { d: "M22 12a10 10 0 0 0-10-10", stroke: "currentColor", "stroke-width": "3", "stroke-linecap": "round" })
|
|
494
495
|
] });
|
|
495
496
|
}
|
|
496
|
-
const D = 3,
|
|
497
|
+
const D = 3, N = 200, F = 5e3, V = 5, Ae = 10 * 1024 * 1024, X = ["image/jpeg", "image/png", "image/webp"], Y = /.+@.+\..+/;
|
|
497
498
|
function Te({ client: r, authSession: e, origin: t, onBack: n }) {
|
|
498
|
-
const i = e?.user.email ?? "", s = i || null, [l, a] =
|
|
499
|
-
const
|
|
500
|
-
return Y.test(
|
|
501
|
-
}, [s, l,
|
|
502
|
-
const
|
|
503
|
-
return
|
|
504
|
-
},
|
|
505
|
-
if (
|
|
506
|
-
_(!0), w((
|
|
499
|
+
const i = e?.user.email ?? "", s = i || null, [l, a] = y(i), [h, c] = y(""), [m, b] = y(""), [A, f] = y([]), [g, _] = y(!1), [v, x] = y(null), [S, w] = y({}), B = ie(() => {
|
|
500
|
+
const C = (s ?? l).trim().toLowerCase(), d = h.trim(), p = m.trim();
|
|
501
|
+
return Y.test(C) && d.length >= D && d.length <= N && p.length >= 1 && p.length <= F;
|
|
502
|
+
}, [s, l, h, m]), L = () => {
|
|
503
|
+
const C = {}, d = (s ?? l).trim(), p = h.trim(), k = m.trim();
|
|
504
|
+
return d ? Y.test(d.toLowerCase()) || (C.email = "Invalid email") : C.email = "Required", (p.length < D || p.length > N) && (C.subject = `${D}–${N} characters`), (k.length < 1 || k.length > F) && (C.message = `1–${F} characters`), w(C), Object.keys(C).length === 0;
|
|
505
|
+
}, I = async (C) => {
|
|
506
|
+
if (C.preventDefault(), !g && L()) {
|
|
507
|
+
_(!0), w((d) => ({ ...d, submit: void 0 }));
|
|
507
508
|
try {
|
|
508
|
-
const
|
|
509
|
+
const d = (s ?? l).trim();
|
|
509
510
|
await r.createSupportTicket({
|
|
510
|
-
subject:
|
|
511
|
-
content:
|
|
512
|
-
email:
|
|
513
|
-
files:
|
|
514
|
-
}),
|
|
515
|
-
} catch (
|
|
516
|
-
const
|
|
517
|
-
w((
|
|
511
|
+
subject: h.trim(),
|
|
512
|
+
content: m.trim(),
|
|
513
|
+
email: d || void 0,
|
|
514
|
+
files: A.length > 0 ? A : void 0
|
|
515
|
+
}), x(d);
|
|
516
|
+
} catch (d) {
|
|
517
|
+
const p = d instanceof E && d.message || "Failed to send. Please try again.";
|
|
518
|
+
w((k) => ({ ...k, submit: p }));
|
|
518
519
|
} finally {
|
|
519
520
|
_(!1);
|
|
520
521
|
}
|
|
521
522
|
}
|
|
522
|
-
},
|
|
523
|
-
|
|
523
|
+
}, T = () => {
|
|
524
|
+
c(""), b(""), f([]), w({}), x(null);
|
|
524
525
|
};
|
|
525
|
-
return
|
|
526
|
+
return v ? /* @__PURE__ */ u("div", { class: "flex flex-col items-center gap-4 py-2 text-center", children: [
|
|
526
527
|
/* @__PURE__ */ o(
|
|
527
528
|
"div",
|
|
528
529
|
{
|
|
@@ -546,7 +547,7 @@ function Te({ client: r, authSession: e, origin: t, onBack: n }) {
|
|
|
546
547
|
/* @__PURE__ */ u("div", { class: "max-w-[320px] text-sm leading-relaxed text-gray-500", children: [
|
|
547
548
|
"We've received your message and will respond to",
|
|
548
549
|
" ",
|
|
549
|
-
/* @__PURE__ */ o("b", { class: "text-gray-700", children:
|
|
550
|
+
/* @__PURE__ */ o("b", { class: "text-gray-700", children: v }),
|
|
550
551
|
"."
|
|
551
552
|
] }),
|
|
552
553
|
/* @__PURE__ */ u("div", { class: "mt-2 flex items-center justify-center gap-3", children: [
|
|
@@ -563,7 +564,7 @@ function Te({ client: r, authSession: e, origin: t, onBack: n }) {
|
|
|
563
564
|
"button",
|
|
564
565
|
{
|
|
565
566
|
type: "button",
|
|
566
|
-
onClick:
|
|
567
|
+
onClick: T,
|
|
567
568
|
class: "flex h-10 items-center justify-center rounded-xl px-4 text-sm font-semibold text-white transition-all hover:-translate-y-px hover:brightness-105 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
|
|
568
569
|
style: {
|
|
569
570
|
background: "linear-gradient(180deg, color-mix(in srgb, var(--pw-accent) 92%, white), var(--pw-accent))",
|
|
@@ -588,12 +589,12 @@ function Te({ client: r, authSession: e, origin: t, onBack: n }) {
|
|
|
588
589
|
) }),
|
|
589
590
|
/* @__PURE__ */ o("h2", { class: "text-lg font-semibold tracking-tight text-gray-900", children: "Contact Support" }),
|
|
590
591
|
/* @__PURE__ */ o("p", { class: "text-xs leading-relaxed text-gray-500", children: "Fill out the form below and we'll get back to you." }),
|
|
591
|
-
/* @__PURE__ */ u("form", { onSubmit:
|
|
592
|
+
/* @__PURE__ */ u("form", { onSubmit: I, class: "flex flex-col gap-3", children: [
|
|
592
593
|
s ? /* @__PURE__ */ u("div", { class: "rounded-xl border border-gray-200 bg-gray-50/60 px-3 py-2 text-xs text-gray-500", children: [
|
|
593
594
|
"Sending as ",
|
|
594
595
|
/* @__PURE__ */ o("b", { class: "font-medium text-gray-700", children: s })
|
|
595
596
|
] }) : /* @__PURE__ */ o(
|
|
596
|
-
|
|
597
|
+
K,
|
|
597
598
|
{
|
|
598
599
|
type: "email",
|
|
599
600
|
label: "Your email",
|
|
@@ -605,27 +606,27 @@ function Te({ client: r, authSession: e, origin: t, onBack: n }) {
|
|
|
605
606
|
}
|
|
606
607
|
),
|
|
607
608
|
/* @__PURE__ */ o(
|
|
608
|
-
|
|
609
|
+
K,
|
|
609
610
|
{
|
|
610
611
|
type: "text",
|
|
611
612
|
label: "Subject",
|
|
612
|
-
value:
|
|
613
|
-
onInput:
|
|
613
|
+
value: h,
|
|
614
|
+
onInput: c,
|
|
614
615
|
error: S.subject,
|
|
615
616
|
required: !0
|
|
616
617
|
}
|
|
617
618
|
),
|
|
618
619
|
/* @__PURE__ */ o(
|
|
619
|
-
|
|
620
|
+
Ee,
|
|
620
621
|
{
|
|
621
622
|
label: "Message",
|
|
622
|
-
value:
|
|
623
|
+
value: m,
|
|
623
624
|
onInput: b,
|
|
624
625
|
error: S.message,
|
|
625
626
|
required: !0
|
|
626
627
|
}
|
|
627
628
|
),
|
|
628
|
-
/* @__PURE__ */ o(
|
|
629
|
+
/* @__PURE__ */ o(Me, { files: A, onChange: f, disabled: g }),
|
|
629
630
|
S.submit && /* @__PURE__ */ o("p", { class: "text-xs text-red-600", children: S.submit }),
|
|
630
631
|
/* @__PURE__ */ u("div", { class: "mt-1 flex items-center justify-end gap-2", children: [
|
|
631
632
|
/* @__PURE__ */ o(
|
|
@@ -633,7 +634,7 @@ function Te({ client: r, authSession: e, origin: t, onBack: n }) {
|
|
|
633
634
|
{
|
|
634
635
|
type: "button",
|
|
635
636
|
onClick: n,
|
|
636
|
-
disabled:
|
|
637
|
+
disabled: g,
|
|
637
638
|
class: "rounded-xl px-3 py-2 text-sm font-medium text-gray-600 transition-colors hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-60 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
|
|
638
639
|
children: t === "standalone" ? "Close" : "Back"
|
|
639
640
|
}
|
|
@@ -642,20 +643,20 @@ function Te({ client: r, authSession: e, origin: t, onBack: n }) {
|
|
|
642
643
|
"button",
|
|
643
644
|
{
|
|
644
645
|
type: "submit",
|
|
645
|
-
disabled: !
|
|
646
|
+
disabled: !B || g,
|
|
646
647
|
class: "flex h-10 items-center justify-center rounded-xl px-4 text-sm font-semibold text-white transition-all hover:-translate-y-px hover:brightness-105 disabled:cursor-not-allowed disabled:opacity-60 disabled:hover:translate-y-0 disabled:hover:brightness-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
|
|
647
648
|
style: {
|
|
648
649
|
background: "linear-gradient(180deg, color-mix(in srgb, var(--pw-accent) 92%, white), var(--pw-accent))",
|
|
649
650
|
boxShadow: "0 1px 2px rgba(15,23,42,0.08), 0 6px 14px -4px color-mix(in srgb, var(--pw-accent) 50%, transparent)"
|
|
650
651
|
},
|
|
651
|
-
children:
|
|
652
|
+
children: g ? /* @__PURE__ */ o("span", { class: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : "Send"
|
|
652
653
|
}
|
|
653
654
|
)
|
|
654
655
|
] })
|
|
655
656
|
] })
|
|
656
657
|
] });
|
|
657
658
|
}
|
|
658
|
-
function
|
|
659
|
+
function K({ type: r, label: e, value: t, onInput: n, error: i, autocomplete: s, required: l }) {
|
|
659
660
|
return /* @__PURE__ */ u("label", { class: "flex flex-col gap-1.5", children: [
|
|
660
661
|
/* @__PURE__ */ o("span", { class: "text-xs font-medium text-gray-700", children: e }),
|
|
661
662
|
/* @__PURE__ */ o(
|
|
@@ -672,7 +673,7 @@ function J({ type: r, label: e, value: t, onInput: n, error: i, autocomplete: s,
|
|
|
672
673
|
i && /* @__PURE__ */ o("span", { class: "text-xs text-red-600", children: i })
|
|
673
674
|
] });
|
|
674
675
|
}
|
|
675
|
-
function
|
|
676
|
+
function Ee({ label: r, value: e, onInput: t, error: n, required: i }) {
|
|
676
677
|
return /* @__PURE__ */ u("label", { class: "flex flex-col gap-1.5", children: [
|
|
677
678
|
/* @__PURE__ */ o("span", { class: "text-xs font-medium text-gray-700", children: r }),
|
|
678
679
|
/* @__PURE__ */ o(
|
|
@@ -688,19 +689,19 @@ function Me({ label: r, value: e, onInput: t, error: n, required: i }) {
|
|
|
688
689
|
n && /* @__PURE__ */ o("span", { class: "text-xs text-red-600", children: n })
|
|
689
690
|
] });
|
|
690
691
|
}
|
|
691
|
-
function
|
|
692
|
-
const n =
|
|
693
|
-
if (!
|
|
692
|
+
function Me({ files: r, onChange: e, disabled: t }) {
|
|
693
|
+
const n = P(null), [i, s] = y(!1), [l, a] = y(null), h = (c) => {
|
|
694
|
+
if (!c || t) return;
|
|
694
695
|
a(null);
|
|
695
|
-
const
|
|
696
|
-
if (r.length +
|
|
697
|
-
a(`Up to ${
|
|
696
|
+
const m = Array.from(c);
|
|
697
|
+
if (r.length + m.length > V) {
|
|
698
|
+
a(`Up to ${V} files`);
|
|
698
699
|
return;
|
|
699
700
|
}
|
|
700
|
-
const b =
|
|
701
|
-
(
|
|
701
|
+
const b = m.filter(
|
|
702
|
+
(A) => X.includes(A.type) && A.size <= Ae
|
|
702
703
|
);
|
|
703
|
-
if (b.length !==
|
|
704
|
+
if (b.length !== m.length) {
|
|
704
705
|
a("Only JPEG/PNG/WebP, ≤ 10MB each");
|
|
705
706
|
return;
|
|
706
707
|
}
|
|
@@ -715,19 +716,19 @@ function Be({ files: r, onChange: e, disabled: t }) {
|
|
|
715
716
|
tabIndex: 0,
|
|
716
717
|
"aria-label": "Attachments upload",
|
|
717
718
|
onClick: () => !t && n.current?.click(),
|
|
718
|
-
onDragOver: (
|
|
719
|
-
|
|
719
|
+
onDragOver: (c) => {
|
|
720
|
+
c.preventDefault(), t || s(!0);
|
|
720
721
|
},
|
|
721
722
|
onDragLeave: () => s(!1),
|
|
722
|
-
onDrop: (
|
|
723
|
-
|
|
723
|
+
onDrop: (c) => {
|
|
724
|
+
c.preventDefault(), s(!1), h(c.dataTransfer?.files ?? null);
|
|
724
725
|
},
|
|
725
726
|
class: `mt-1.5 cursor-pointer rounded-2xl border border-dashed p-3.5 text-center transition-all ${i ? "border-[var(--pw-accent)] bg-[color-mix(in_srgb,var(--pw-accent)_6%,white)]" : "border-gray-300 hover:border-gray-400 hover:bg-gray-50/60"} ${t ? "cursor-not-allowed opacity-60" : ""}`,
|
|
726
727
|
children: [
|
|
727
728
|
/* @__PURE__ */ o("div", { class: "text-xs text-gray-500", children: "Drop images here or click to select" }),
|
|
728
729
|
/* @__PURE__ */ u("div", { class: "mt-0.5 text-[11px] text-gray-400", children: [
|
|
729
730
|
"JPEG/PNG/WebP, up to ",
|
|
730
|
-
|
|
731
|
+
V,
|
|
731
732
|
" files, ≤ 10MB each"
|
|
732
733
|
] })
|
|
733
734
|
]
|
|
@@ -741,40 +742,40 @@ function Be({ files: r, onChange: e, disabled: t }) {
|
|
|
741
742
|
multiple: !0,
|
|
742
743
|
accept: X.join(","),
|
|
743
744
|
class: "hidden",
|
|
744
|
-
onChange: (
|
|
745
|
-
c
|
|
745
|
+
onChange: (c) => {
|
|
746
|
+
h(c.target.files), c.currentTarget.value = "";
|
|
746
747
|
}
|
|
747
748
|
}
|
|
748
749
|
),
|
|
749
750
|
l && /* @__PURE__ */ o("p", { class: "mt-1 text-xs text-red-600", children: l }),
|
|
750
|
-
r.length > 0 && /* @__PURE__ */ o("ul", { class: "mt-2 flex flex-col gap-1", children: r.map((
|
|
751
|
+
r.length > 0 && /* @__PURE__ */ o("ul", { class: "mt-2 flex flex-col gap-1", children: r.map((c, m) => /* @__PURE__ */ u(
|
|
751
752
|
"li",
|
|
752
753
|
{
|
|
753
754
|
class: "flex items-center justify-between gap-2 rounded bg-gray-50 px-2 py-1 text-xs",
|
|
754
755
|
children: [
|
|
755
|
-
/* @__PURE__ */ o("span", { class: "truncate text-gray-700", children:
|
|
756
|
+
/* @__PURE__ */ o("span", { class: "truncate text-gray-700", children: c.name }),
|
|
756
757
|
/* @__PURE__ */ o(
|
|
757
758
|
"button",
|
|
758
759
|
{
|
|
759
760
|
type: "button",
|
|
760
761
|
onClick: () => {
|
|
761
762
|
const b = [...r];
|
|
762
|
-
b.splice(
|
|
763
|
+
b.splice(m, 1), e(b);
|
|
763
764
|
},
|
|
764
765
|
disabled: t,
|
|
765
766
|
class: "text-gray-500 hover:text-red-600 disabled:cursor-not-allowed disabled:opacity-60",
|
|
766
|
-
"aria-label": `Remove ${
|
|
767
|
+
"aria-label": `Remove ${c.name}`,
|
|
767
768
|
children: "✕"
|
|
768
769
|
}
|
|
769
770
|
)
|
|
770
771
|
]
|
|
771
772
|
},
|
|
772
|
-
`${
|
|
773
|
+
`${c.name}-${c.size}-${m}`
|
|
773
774
|
)) })
|
|
774
775
|
] });
|
|
775
776
|
}
|
|
776
|
-
function
|
|
777
|
-
const [t, n] =
|
|
777
|
+
function Be({ block: r, ctx: e }) {
|
|
778
|
+
const [t, n] = y(!1), i = r.priceId ?? e.selectedPriceId, s = t || r.action === "checkout" && !i;
|
|
778
779
|
return /* @__PURE__ */ o(
|
|
779
780
|
"button",
|
|
780
781
|
{
|
|
@@ -799,8 +800,8 @@ function Ee({ block: r, ctx: e }) {
|
|
|
799
800
|
}
|
|
800
801
|
);
|
|
801
802
|
}
|
|
802
|
-
function
|
|
803
|
-
const e = r.authSession, t = r.auth, [n, i] =
|
|
803
|
+
function Le({ ctx: r }) {
|
|
804
|
+
const e = r.authSession, t = r.auth, [n, i] = y(!1), s = () => r.onAction("support");
|
|
804
805
|
if (e && !e.user.is_anonymous) {
|
|
805
806
|
const l = async () => {
|
|
806
807
|
if (!(!t || n)) {
|
|
@@ -828,7 +829,7 @@ function Pe({ ctx: r }) {
|
|
|
828
829
|
}
|
|
829
830
|
),
|
|
830
831
|
/* @__PURE__ */ o(Q, {}),
|
|
831
|
-
/* @__PURE__ */ o(
|
|
832
|
+
/* @__PURE__ */ o(J, { onClick: s })
|
|
832
833
|
] })
|
|
833
834
|
] });
|
|
834
835
|
}
|
|
@@ -843,10 +844,10 @@ function Pe({ ctx: r }) {
|
|
|
843
844
|
}
|
|
844
845
|
),
|
|
845
846
|
/* @__PURE__ */ o(Q, {}),
|
|
846
|
-
/* @__PURE__ */ o(
|
|
847
|
+
/* @__PURE__ */ o(J, { onClick: s })
|
|
847
848
|
] });
|
|
848
849
|
}
|
|
849
|
-
function
|
|
850
|
+
function J({ onClick: r }) {
|
|
850
851
|
return /* @__PURE__ */ o(
|
|
851
852
|
"button",
|
|
852
853
|
{
|
|
@@ -860,7 +861,7 @@ function K({ onClick: r }) {
|
|
|
860
861
|
function Q() {
|
|
861
862
|
return /* @__PURE__ */ o("span", { class: "h-1 w-1 rounded-full bg-gray-300", "aria-hidden": "true" });
|
|
862
863
|
}
|
|
863
|
-
function
|
|
864
|
+
function Pe({ block: r }) {
|
|
864
865
|
return r.items.length ? /* @__PURE__ */ o("ul", { class: "flex flex-col gap-2.5", role: "list", children: r.items.map((e) => /* @__PURE__ */ u("li", { class: "flex items-start gap-3 text-sm text-gray-700", children: [
|
|
865
866
|
/* @__PURE__ */ o(
|
|
866
867
|
"span",
|
|
@@ -896,15 +897,15 @@ function je(r, e) {
|
|
|
896
897
|
for (r.style.fontSize = `${n}px`; r.scrollHeight > t && n > Ue; )
|
|
897
898
|
n -= 1, r.style.fontSize = `${n}px`;
|
|
898
899
|
}
|
|
899
|
-
function
|
|
900
|
-
const t = r.level ?? 1, n = `h${t}`, i = t === 1 ? "text-[1.625rem] font-semibold leading-tight text-gray-900 tracking-[-0.02em]" : t === 2 ? "text-xl font-semibold leading-snug text-gray-900 tracking-tight" : "text-base font-medium text-gray-900", s =
|
|
900
|
+
function Re({ block: r, ctx: e }) {
|
|
901
|
+
const t = r.level ?? 1, n = `h${t}`, i = t === 1 ? "text-[1.625rem] font-semibold leading-tight text-gray-900 tracking-[-0.02em]" : t === 2 ? "text-xl font-semibold leading-snug text-gray-900 tracking-tight" : "text-base font-medium text-gray-900", s = P(null), l = t === 1 && !!e.bootstrap.settings.title_auto_fit;
|
|
901
902
|
return M(() => {
|
|
902
903
|
if (!l || !s.current) return;
|
|
903
|
-
const a = getComputedStyle(s.current),
|
|
904
|
-
je(s.current,
|
|
904
|
+
const a = getComputedStyle(s.current), h = parseFloat(a.lineHeight) || le * 1.5;
|
|
905
|
+
je(s.current, h);
|
|
905
906
|
}, [l, r.text]), /* @__PURE__ */ o(n, { ref: s, class: i, children: r.text });
|
|
906
907
|
}
|
|
907
|
-
function
|
|
908
|
+
function qe(r) {
|
|
908
909
|
const e = r.local ?? { currency: r.currency, amount: r.amount };
|
|
909
910
|
try {
|
|
910
911
|
return new Intl.NumberFormat(void 0, {
|
|
@@ -934,24 +935,24 @@ function ze({ block: r, ctx: e }) {
|
|
|
934
935
|
role: "radiogroup",
|
|
935
936
|
"aria-label": "Plans",
|
|
936
937
|
children: n.map((a) => {
|
|
937
|
-
const
|
|
938
|
+
const h = e.selectedPriceId === a.id, c = r.popular_price_id === a.id;
|
|
938
939
|
return /* @__PURE__ */ u(
|
|
939
940
|
"button",
|
|
940
941
|
{
|
|
941
942
|
type: "button",
|
|
942
943
|
role: "radio",
|
|
943
|
-
"aria-checked":
|
|
944
|
+
"aria-checked": h,
|
|
944
945
|
onClick: () => {
|
|
945
946
|
e.setSelectedPriceId(a.id), e.onAction("price_selected", { priceId: a.id, price: a });
|
|
946
947
|
},
|
|
947
948
|
class: [
|
|
948
949
|
"group relative rounded-2xl border px-4 py-3.5 text-left transition-all duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
|
|
949
950
|
i ? "flex w-full flex-col items-start gap-1" : "flex w-full items-center justify-between gap-3",
|
|
950
|
-
|
|
951
|
-
|
|
951
|
+
h ? "border-[var(--pw-accent)] bg-[color-mix(in_srgb,var(--pw-accent)_6%,white)] shadow-[0_0_0_3px_color-mix(in_srgb,var(--pw-accent)_12%,transparent)]" : "border-gray-200 bg-white hover:border-gray-300 hover:shadow-sm",
|
|
952
|
+
c ? "mt-2.5" : ""
|
|
952
953
|
].join(" "),
|
|
953
954
|
children: [
|
|
954
|
-
|
|
955
|
+
c ? /* @__PURE__ */ o(
|
|
955
956
|
"span",
|
|
956
957
|
{
|
|
957
958
|
class: "absolute -top-2.5 left-4 rounded-full px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-white shadow-sm",
|
|
@@ -967,10 +968,10 @@ function ze({ block: r, ctx: e }) {
|
|
|
967
968
|
{
|
|
968
969
|
class: [
|
|
969
970
|
"mt-0.5 flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-full border transition-colors",
|
|
970
|
-
|
|
971
|
+
h ? "border-[var(--pw-accent)] bg-[var(--pw-accent)]" : "border-gray-300 bg-white group-hover:border-gray-400"
|
|
971
972
|
].join(" "),
|
|
972
973
|
"aria-hidden": "true",
|
|
973
|
-
children:
|
|
974
|
+
children: h ? /* @__PURE__ */ o("span", { class: "h-1.5 w-1.5 rounded-full bg-white" }) : null
|
|
974
975
|
}
|
|
975
976
|
),
|
|
976
977
|
/* @__PURE__ */ u("div", { class: "flex flex-col", children: [
|
|
@@ -983,7 +984,7 @@ function ze({ block: r, ctx: e }) {
|
|
|
983
984
|
] })
|
|
984
985
|
] }),
|
|
985
986
|
/* @__PURE__ */ u("div", { class: i ? "mt-1 flex flex-col items-start" : "flex flex-col items-end", children: [
|
|
986
|
-
/* @__PURE__ */ o("span", { class: "text-base font-semibold tracking-tight text-gray-900", children:
|
|
987
|
+
/* @__PURE__ */ o("span", { class: "text-base font-semibold tracking-tight text-gray-900", children: qe(a) }),
|
|
987
988
|
/* @__PURE__ */ o("span", { class: "text-[11px] text-gray-500", children: ee(a) })
|
|
988
989
|
] })
|
|
989
990
|
]
|
|
@@ -997,21 +998,21 @@ function ze({ block: r, ctx: e }) {
|
|
|
997
998
|
function De({ block: r }) {
|
|
998
999
|
return /* @__PURE__ */ o("p", { class: "text-[0.9375rem] leading-relaxed text-gray-600", children: r.text });
|
|
999
1000
|
}
|
|
1000
|
-
const
|
|
1001
|
+
const Ne = {
|
|
1001
1002
|
week: 0.25,
|
|
1002
1003
|
month: 1,
|
|
1003
1004
|
year: 12
|
|
1004
1005
|
};
|
|
1005
|
-
function
|
|
1006
|
+
function Fe(r) {
|
|
1006
1007
|
return r || "period";
|
|
1007
1008
|
}
|
|
1008
|
-
function
|
|
1009
|
+
function Ve({ block: r, ctx: e }) {
|
|
1009
1010
|
if (!r.queries.length) return null;
|
|
1010
|
-
const n = e.bootstrap.prices.find((s) => s.id === e.selectedPriceId)?.interval ?? null, i = n ?
|
|
1011
|
+
const n = e.bootstrap.prices.find((s) => s.id === e.selectedPriceId)?.interval ?? null, i = n ? Ne[n] : void 0;
|
|
1011
1012
|
return /* @__PURE__ */ u("div", { class: "flex flex-col gap-2", children: [
|
|
1012
1013
|
/* @__PURE__ */ u("div", { class: "text-sm font-semibold text-gray-800", children: [
|
|
1013
1014
|
"Included per ",
|
|
1014
|
-
/* @__PURE__ */ o("span", { children:
|
|
1015
|
+
/* @__PURE__ */ o("span", { children: Fe(n) }),
|
|
1015
1016
|
":"
|
|
1016
1017
|
] }),
|
|
1017
1018
|
/* @__PURE__ */ o("ul", { class: "flex flex-col gap-2", role: "list", children: r.queries.map((s) => {
|
|
@@ -1051,18 +1052,18 @@ function $e({ block: r, ctx: e }) {
|
|
|
1051
1052
|
}) })
|
|
1052
1053
|
] });
|
|
1053
1054
|
}
|
|
1054
|
-
const
|
|
1055
|
-
heading:
|
|
1055
|
+
const $e = {
|
|
1056
|
+
heading: Re,
|
|
1056
1057
|
text: De,
|
|
1057
1058
|
price_grid: ze,
|
|
1058
|
-
cta_button:
|
|
1059
|
+
cta_button: Be,
|
|
1059
1060
|
auth_panel: se,
|
|
1060
|
-
current_session:
|
|
1061
|
-
features_list:
|
|
1062
|
-
tokenization_gate:
|
|
1061
|
+
current_session: Le,
|
|
1062
|
+
features_list: Pe,
|
|
1063
|
+
tokenization_gate: Ve
|
|
1063
1064
|
};
|
|
1064
1065
|
function He({ layout: r, bootstrap: e, onAction: t, auth: n, authSession: i }) {
|
|
1065
|
-
const s = ie(() => e.prices[0]?.id ?? null, [e.prices]), [l, a] =
|
|
1066
|
+
const s = ie(() => e.prices[0]?.id ?? null, [e.prices]), [l, a] = y(s), h = {
|
|
1066
1067
|
bootstrap: e,
|
|
1067
1068
|
selectedPriceId: l,
|
|
1068
1069
|
setSelectedPriceId: a,
|
|
@@ -1070,9 +1071,9 @@ function He({ layout: r, bootstrap: e, onAction: t, auth: n, authSession: i }) {
|
|
|
1070
1071
|
auth: n,
|
|
1071
1072
|
authSession: i
|
|
1072
1073
|
};
|
|
1073
|
-
return /* @__PURE__ */ o("div", { class: "flex flex-col gap-4", children: r.blocks.map((
|
|
1074
|
-
const b =
|
|
1075
|
-
return b ? /* @__PURE__ */ o(b, { block:
|
|
1074
|
+
return /* @__PURE__ */ o("div", { class: "flex flex-col gap-4", children: r.blocks.map((c, m) => {
|
|
1075
|
+
const b = $e[c.type];
|
|
1076
|
+
return b ? /* @__PURE__ */ o(b, { block: c, ctx: h }, m) : (typeof console < "u" && console.warn(`[paywall] unknown block type: ${c.type}`), null);
|
|
1076
1077
|
}) });
|
|
1077
1078
|
}
|
|
1078
1079
|
function Ge(r, e, t, n) {
|
|
@@ -1089,92 +1090,93 @@ function Ze({
|
|
|
1089
1090
|
initialView: i,
|
|
1090
1091
|
purchased: s,
|
|
1091
1092
|
renew: l,
|
|
1092
|
-
onState: a
|
|
1093
|
+
onState: a,
|
|
1094
|
+
inline: h
|
|
1093
1095
|
}) {
|
|
1094
|
-
const [c,
|
|
1096
|
+
const [c, m] = y({ status: "idle" }), [b, A] = y(
|
|
1095
1097
|
() => r.auth?.getCachedSession() ?? null
|
|
1096
|
-
), [f,
|
|
1098
|
+
), [f, g] = y(() => i === "support" ? { kind: "support", origin: "standalone" } : i === "auth" ? { kind: "auth_gate", origin: "standalone" } : i === "anon" ? { kind: "anon_gate", origin: "standalone" } : { kind: "layout" }), _ = P(!1), v = P(null);
|
|
1097
1099
|
M(() => {
|
|
1098
1100
|
if (!a) return;
|
|
1099
|
-
const d = Ge(e, c, f, s),
|
|
1100
|
-
|
|
1101
|
+
const d = Ge(e, c, f, s), p = v.current;
|
|
1102
|
+
p && We(p, d) || (v.current = d, a(d));
|
|
1101
1103
|
}, [e, c, f, s, a]), M(() => {
|
|
1102
1104
|
if (r.auth)
|
|
1103
|
-
return r.auth.onAuthChange((d) =>
|
|
1105
|
+
return r.auth.onAuthChange((d, p) => A(p));
|
|
1104
1106
|
}, [r.auth]), M(() => {
|
|
1105
1107
|
if (typeof r.onBootstrapChange == "function")
|
|
1106
1108
|
return r.onBootstrapChange((d) => {
|
|
1107
|
-
|
|
1108
|
-
(
|
|
1109
|
+
m(
|
|
1110
|
+
(p) => p.status === "ready" ? { status: "ready", data: d } : p
|
|
1109
1111
|
);
|
|
1110
1112
|
});
|
|
1111
1113
|
}, [r]), M(() => {
|
|
1112
1114
|
if (!e || c.status === "ready" || c.status === "loading") return;
|
|
1113
1115
|
let d = !1;
|
|
1114
|
-
return
|
|
1115
|
-
d || (
|
|
1116
|
+
return m({ status: "loading" }), r.bootstrap().then((p) => {
|
|
1117
|
+
d || (m({ status: "ready", data: p }), n("ready", p), p.user?.has_active_subscription && !l && (n("purchase_completed", {
|
|
1116
1118
|
priceId: null,
|
|
1117
1119
|
sessionId: null,
|
|
1118
1120
|
restored: !0
|
|
1119
|
-
}),
|
|
1120
|
-
}).catch((
|
|
1121
|
+
}), g({ kind: "purchase_success", restored: !0 })));
|
|
1122
|
+
}).catch((p) => {
|
|
1121
1123
|
if (d) return;
|
|
1122
|
-
const k =
|
|
1123
|
-
|
|
1124
|
+
const k = p instanceof E ? p : new E("unknown", "Failed to load paywall", { cause: p });
|
|
1125
|
+
m({ status: "error", error: k }), n("error", k);
|
|
1124
1126
|
}), () => {
|
|
1125
1127
|
d = !0;
|
|
1126
1128
|
};
|
|
1127
1129
|
}, [e, r]), M(() => {
|
|
1128
1130
|
if (!e) {
|
|
1129
|
-
|
|
1131
|
+
g({ kind: "layout" }), _.current = !1;
|
|
1130
1132
|
return;
|
|
1131
1133
|
}
|
|
1132
|
-
i === "support" ?
|
|
1134
|
+
i === "support" ? g({ kind: "support", origin: "standalone" }) : i === "auth" ? g({ kind: "auth_gate", origin: "standalone" }) : i === "anon" && g({ kind: "anon_gate", origin: "standalone" });
|
|
1133
1135
|
}, [e, i]);
|
|
1134
|
-
const
|
|
1136
|
+
const x = async (d) => {
|
|
1135
1137
|
try {
|
|
1136
|
-
const
|
|
1138
|
+
const p = await r.createCheckout({
|
|
1137
1139
|
priceId: d,
|
|
1138
1140
|
ignoreActivePurchase: l === !0
|
|
1139
1141
|
});
|
|
1140
|
-
if (n("checkout_started", { priceId: d, url:
|
|
1141
|
-
const k = window.open(
|
|
1142
|
+
if (n("checkout_started", { priceId: d, url: p.url, acquiring: p.acquiring }), typeof window > "u" || !p.url) return;
|
|
1143
|
+
const k = window.open(p.url, "_blank");
|
|
1142
1144
|
if (k) {
|
|
1143
1145
|
try {
|
|
1144
1146
|
k.opener = null;
|
|
1145
1147
|
} catch {
|
|
1146
1148
|
}
|
|
1147
|
-
|
|
1149
|
+
g({ kind: "awaiting_payment", priceId: d, url: p.url });
|
|
1148
1150
|
} else
|
|
1149
|
-
|
|
1150
|
-
} catch (
|
|
1151
|
-
if (
|
|
1151
|
+
g({ kind: "popup_blocked", priceId: d, url: p.url });
|
|
1152
|
+
} catch (p) {
|
|
1153
|
+
if (p instanceof E && p.code === "already_purchased") {
|
|
1152
1154
|
try {
|
|
1153
1155
|
await r.getUser({ force: !0 });
|
|
1154
1156
|
} catch {
|
|
1155
1157
|
}
|
|
1156
|
-
n("purchase_completed", { priceId: d, sessionId: null, restored: !0 }),
|
|
1158
|
+
n("purchase_completed", { priceId: d, sessionId: null, restored: !0 }), g({ kind: "purchase_success", restored: !0 });
|
|
1157
1159
|
return;
|
|
1158
1160
|
}
|
|
1159
|
-
const k =
|
|
1160
|
-
n("error", k),
|
|
1161
|
+
const k = p instanceof E ? p : new E("checkout_failed", "Checkout failed", { cause: p });
|
|
1162
|
+
n("error", k), g({ kind: "layout" });
|
|
1161
1163
|
}
|
|
1162
|
-
},
|
|
1164
|
+
}, S = (d, p) => {
|
|
1163
1165
|
if (typeof window > "u") return;
|
|
1164
|
-
const k = window.open(
|
|
1166
|
+
const k = window.open(p, "_blank");
|
|
1165
1167
|
if (k) {
|
|
1166
1168
|
try {
|
|
1167
1169
|
k.opener = null;
|
|
1168
1170
|
} catch {
|
|
1169
1171
|
}
|
|
1170
|
-
|
|
1172
|
+
g({ kind: "awaiting_payment", priceId: d, url: p });
|
|
1171
1173
|
}
|
|
1172
1174
|
};
|
|
1173
1175
|
M(() => {
|
|
1174
|
-
if (f.kind !== "auth_gate" || !
|
|
1175
|
-
|
|
1176
|
-
const d = f.pendingCheckout,
|
|
1177
|
-
|
|
1176
|
+
if (f.kind !== "auth_gate" || !b || b.user.is_anonymous || _.current) return;
|
|
1177
|
+
_.current = !0;
|
|
1178
|
+
const d = f.pendingCheckout, p = f.origin;
|
|
1179
|
+
g({ kind: "verifying" }), (async () => {
|
|
1178
1180
|
if (!l)
|
|
1179
1181
|
try {
|
|
1180
1182
|
if ((await r.getUser({ force: !0 })).has_active_subscription) {
|
|
@@ -1182,51 +1184,51 @@ function Ze({
|
|
|
1182
1184
|
priceId: d?.priceId ?? null,
|
|
1183
1185
|
sessionId: null,
|
|
1184
1186
|
restored: !0
|
|
1185
|
-
}),
|
|
1187
|
+
}), g({ kind: "purchase_success", restored: !0 });
|
|
1186
1188
|
return;
|
|
1187
1189
|
}
|
|
1188
1190
|
} catch {
|
|
1189
1191
|
}
|
|
1190
1192
|
if (!d) {
|
|
1191
|
-
|
|
1193
|
+
p === "standalone" ? t() : g({ kind: "layout" });
|
|
1192
1194
|
return;
|
|
1193
1195
|
}
|
|
1194
|
-
await
|
|
1196
|
+
await x(d.priceId);
|
|
1195
1197
|
})().finally(() => {
|
|
1196
|
-
|
|
1198
|
+
_.current = !1;
|
|
1197
1199
|
});
|
|
1198
|
-
}, [
|
|
1199
|
-
const
|
|
1200
|
+
}, [b, f]);
|
|
1201
|
+
const w = async (d, p) => {
|
|
1200
1202
|
if (d === "close") {
|
|
1201
1203
|
t();
|
|
1202
1204
|
return;
|
|
1203
1205
|
}
|
|
1204
1206
|
if (d === "price_selected") {
|
|
1205
|
-
n("price_selected",
|
|
1207
|
+
n("price_selected", p);
|
|
1206
1208
|
return;
|
|
1207
1209
|
}
|
|
1208
1210
|
if (d === "restore") {
|
|
1209
1211
|
if (!r.auth || r.auth.getCachedSession()) return;
|
|
1210
|
-
|
|
1212
|
+
g({ kind: "auth_gate" });
|
|
1211
1213
|
return;
|
|
1212
1214
|
}
|
|
1213
1215
|
if (d === "support") {
|
|
1214
|
-
|
|
1216
|
+
g({ kind: "support", origin: "layout" });
|
|
1215
1217
|
return;
|
|
1216
1218
|
}
|
|
1217
1219
|
if (d === "checkout" && c.status === "ready") {
|
|
1218
|
-
const k =
|
|
1220
|
+
const k = p?.priceId;
|
|
1219
1221
|
if (!k) {
|
|
1220
|
-
n("error", new
|
|
1222
|
+
n("error", new E("no_price", "No price selected"));
|
|
1221
1223
|
return;
|
|
1222
1224
|
}
|
|
1223
1225
|
if ((c.data.settings.checkout_mode ?? "guest") === "preauth" && !!r.auth && !r.auth.getCachedSession()) {
|
|
1224
|
-
|
|
1226
|
+
g({ kind: "auth_gate", pendingCheckout: { priceId: k } });
|
|
1225
1227
|
return;
|
|
1226
1228
|
}
|
|
1227
|
-
await
|
|
1229
|
+
await x(k);
|
|
1228
1230
|
}
|
|
1229
|
-
},
|
|
1231
|
+
}, B = c.status === "ready" ? c.data.settings.brand_color : null, L = c.status === "ready" ? !!c.data.settings.is_test_mode : !1, I = c.status === "ready" ? c.data.settings.allow_close !== !1 : !0, T = {
|
|
1230
1232
|
type: "auth_panel",
|
|
1231
1233
|
heading: "Sign in to continue",
|
|
1232
1234
|
allow_signup: !0,
|
|
@@ -1235,14 +1237,14 @@ function Ze({
|
|
|
1235
1237
|
// чем хотим показывать "Signed in as ..." промежуточным экраном.
|
|
1236
1238
|
hide_when_authenticated: !1,
|
|
1237
1239
|
providers: c.status === "ready" ? c.data.settings.auth_providers : void 0
|
|
1238
|
-
},
|
|
1240
|
+
}, C = f.kind === "support" ? /* @__PURE__ */ o(
|
|
1239
1241
|
Te,
|
|
1240
1242
|
{
|
|
1241
1243
|
client: r,
|
|
1242
|
-
authSession:
|
|
1244
|
+
authSession: b,
|
|
1243
1245
|
origin: f.origin,
|
|
1244
1246
|
onBack: () => {
|
|
1245
|
-
f.origin === "standalone" ? t() :
|
|
1247
|
+
f.origin === "standalone" ? t() : g({ kind: "layout" });
|
|
1246
1248
|
}
|
|
1247
1249
|
}
|
|
1248
1250
|
) : null;
|
|
@@ -1251,11 +1253,12 @@ function Ze({
|
|
|
1251
1253
|
{
|
|
1252
1254
|
open: e,
|
|
1253
1255
|
onClose: t,
|
|
1254
|
-
brandColor:
|
|
1255
|
-
testMode:
|
|
1256
|
-
allowClose:
|
|
1256
|
+
brandColor: B,
|
|
1257
|
+
testMode: L,
|
|
1258
|
+
allowClose: I,
|
|
1259
|
+
inline: h,
|
|
1257
1260
|
labelledBy: "pw-title",
|
|
1258
|
-
children: s ? /* @__PURE__ */ o(te, { onContinue: t }) : f.kind === "purchase_success" ? /* @__PURE__ */ o(te, { restored: f.restored, onContinue: t }) :
|
|
1261
|
+
children: s ? /* @__PURE__ */ o(te, { onContinue: t }) : f.kind === "purchase_success" ? /* @__PURE__ */ o(te, { restored: f.restored, onContinue: t }) : C || (c.status === "loading" || c.status === "idle" || f.kind === "verifying" ? /* @__PURE__ */ u("div", { class: "flex flex-col items-center justify-center gap-3 py-12", children: [
|
|
1259
1262
|
/* @__PURE__ */ o("span", { class: "inline-block h-7 w-7 animate-spin rounded-full border-[2.5px] border-gray-200 border-t-[var(--pw-accent)]" }),
|
|
1260
1263
|
/* @__PURE__ */ o("span", { class: "text-xs font-medium tracking-wide text-gray-500", children: f.kind === "verifying" ? "Checking your subscription…" : "Loading…" })
|
|
1261
1264
|
] }) : c.status === "error" ? /* @__PURE__ */ u("div", { class: "flex flex-col items-center gap-2 py-8 text-center", children: [
|
|
@@ -1276,13 +1279,13 @@ function Ze({
|
|
|
1276
1279
|
] }) : f.kind === "auth_gate" && r.auth ? /* @__PURE__ */ o(
|
|
1277
1280
|
Se,
|
|
1278
1281
|
{
|
|
1279
|
-
block:
|
|
1282
|
+
block: T,
|
|
1280
1283
|
bootstrap: c.data,
|
|
1281
1284
|
auth: r.auth,
|
|
1282
|
-
authSession:
|
|
1285
|
+
authSession: b,
|
|
1283
1286
|
showBack: f.origin !== "standalone",
|
|
1284
1287
|
onBack: () => {
|
|
1285
|
-
f.origin === "standalone" ? t() :
|
|
1288
|
+
f.origin === "standalone" ? t() : g({ kind: "layout" });
|
|
1286
1289
|
}
|
|
1287
1290
|
}
|
|
1288
1291
|
) : f.kind === "anon_gate" && r.auth ? /* @__PURE__ */ o(
|
|
@@ -1290,15 +1293,15 @@ function Ze({
|
|
|
1290
1293
|
{
|
|
1291
1294
|
auth: r.auth,
|
|
1292
1295
|
onSuccess: () => {
|
|
1293
|
-
f.origin === "standalone" ? t() :
|
|
1296
|
+
f.origin === "standalone" ? t() : g({ kind: "layout" });
|
|
1294
1297
|
},
|
|
1295
|
-
onBack: f.origin === "standalone" ? void 0 : () =>
|
|
1298
|
+
onBack: f.origin === "standalone" ? void 0 : () => g({ kind: "layout" })
|
|
1296
1299
|
}
|
|
1297
1300
|
) : f.kind === "awaiting_payment" ? /* @__PURE__ */ o(
|
|
1298
1301
|
Xe,
|
|
1299
1302
|
{
|
|
1300
1303
|
client: r,
|
|
1301
|
-
onBack: () =>
|
|
1304
|
+
onBack: () => g({ kind: "layout" }),
|
|
1302
1305
|
onReopen: () => {
|
|
1303
1306
|
if (typeof window > "u") return;
|
|
1304
1307
|
const d = window.open(f.url, "_blank");
|
|
@@ -1308,7 +1311,7 @@ function Ze({
|
|
|
1308
1311
|
} catch {
|
|
1309
1312
|
}
|
|
1310
1313
|
},
|
|
1311
|
-
onRetry: () =>
|
|
1314
|
+
onRetry: () => x(f.priceId)
|
|
1312
1315
|
}
|
|
1313
1316
|
) : f.kind === "popup_blocked" ? /* @__PURE__ */ u("div", { class: "flex flex-col items-center gap-3 py-8 text-center", children: [
|
|
1314
1317
|
/* @__PURE__ */ o(
|
|
@@ -1337,7 +1340,7 @@ function Ze({
|
|
|
1337
1340
|
"button",
|
|
1338
1341
|
{
|
|
1339
1342
|
type: "button",
|
|
1340
|
-
onClick: () =>
|
|
1343
|
+
onClick: () => S(f.priceId, f.url),
|
|
1341
1344
|
class: "mt-1 rounded-xl px-4 py-2 text-xs font-semibold text-white transition-all hover:-translate-y-px hover:brightness-105 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
|
|
1342
1345
|
style: {
|
|
1343
1346
|
background: "linear-gradient(180deg, color-mix(in srgb, var(--pw-accent) 92%, white), var(--pw-accent))",
|
|
@@ -1351,9 +1354,9 @@ function Ze({
|
|
|
1351
1354
|
{
|
|
1352
1355
|
layout: c.data.layout,
|
|
1353
1356
|
bootstrap: c.data,
|
|
1354
|
-
onAction:
|
|
1357
|
+
onAction: w,
|
|
1355
1358
|
auth: r.auth,
|
|
1356
|
-
authSession:
|
|
1359
|
+
authSession: b
|
|
1357
1360
|
}
|
|
1358
1361
|
))
|
|
1359
1362
|
}
|
|
@@ -1365,9 +1368,9 @@ function Xe({
|
|
|
1365
1368
|
onReopen: t,
|
|
1366
1369
|
onRetry: n
|
|
1367
1370
|
}) {
|
|
1368
|
-
const [i, s] =
|
|
1371
|
+
const [i, s] = y(!1), [l, a] = y(!1), h = P(null);
|
|
1369
1372
|
return M(() => () => {
|
|
1370
|
-
|
|
1373
|
+
h.current !== null && clearTimeout(h.current);
|
|
1371
1374
|
}, []), /* @__PURE__ */ u("div", { class: "flex flex-col gap-3", children: [
|
|
1372
1375
|
/* @__PURE__ */ o(
|
|
1373
1376
|
"button",
|
|
@@ -1404,8 +1407,8 @@ function Xe({
|
|
|
1404
1407
|
typeof window < "u" && window.postMessage({ type: "paywall_purchase" }, "*");
|
|
1405
1408
|
return;
|
|
1406
1409
|
}
|
|
1407
|
-
a(!0),
|
|
1408
|
-
a(!1),
|
|
1410
|
+
a(!0), h.current !== null && clearTimeout(h.current), h.current = setTimeout(() => {
|
|
1411
|
+
a(!1), h.current = null;
|
|
1409
1412
|
}, 5e3);
|
|
1410
1413
|
} catch {
|
|
1411
1414
|
a(!0);
|
|
@@ -1493,7 +1496,7 @@ function te({
|
|
|
1493
1496
|
)
|
|
1494
1497
|
] });
|
|
1495
1498
|
}
|
|
1496
|
-
const Ye = 10 * 6e4,
|
|
1499
|
+
const Ye = 10 * 6e4, Ke = 5e3, Je = 3e4;
|
|
1497
1500
|
class Qe {
|
|
1498
1501
|
constructor(e) {
|
|
1499
1502
|
this.timer = null, this.timeoutTimer = null, this.visibilityHandler = null, this.focusHandler = null, this.messageHandler = null, this.stopped = !1, this.checking = !1, this.opts = {
|
|
@@ -1502,8 +1505,8 @@ class Qe {
|
|
|
1502
1505
|
onTimeout: e.onTimeout ?? (() => {
|
|
1503
1506
|
}),
|
|
1504
1507
|
timeoutMs: e.timeoutMs ?? Ye,
|
|
1505
|
-
visibleIntervalMs: e.visibleIntervalMs ??
|
|
1506
|
-
hiddenIntervalMs: e.hiddenIntervalMs ??
|
|
1508
|
+
visibleIntervalMs: e.visibleIntervalMs ?? Ke,
|
|
1509
|
+
hiddenIntervalMs: e.hiddenIntervalMs ?? Je
|
|
1507
1510
|
};
|
|
1508
1511
|
}
|
|
1509
1512
|
start() {
|
|
@@ -1545,19 +1548,19 @@ class Qe {
|
|
|
1545
1548
|
function et() {
|
|
1546
1549
|
return !(typeof document > "u" || typeof window > "u" || typeof location < "u" && location.protocol === "chrome-extension:");
|
|
1547
1550
|
}
|
|
1548
|
-
const
|
|
1551
|
+
const $ = { open: !1, view: null, error: null }, U = {
|
|
1549
1552
|
status: "paywall_status",
|
|
1550
1553
|
priceId: "paywall_price_id",
|
|
1551
1554
|
sessionId: "paywall_session_id"
|
|
1552
1555
|
};
|
|
1553
1556
|
let tt = class {
|
|
1554
1557
|
constructor(e) {
|
|
1555
|
-
this.handle = null, this.isOpen = !1, this.listeners = /* @__PURE__ */ new Map(), this.userUnsub = null, this.authUnsub = null, this.watcher = null, this.tracker = null, this.purchased = !1, this.trialStore = null, this.trialStoreConfig = null, this.lastTrialStatus = null, this.trialExpiredFired = !1, this.lastVisibility = null, this.currentState =
|
|
1558
|
+
this.handle = null, this.isOpen = !1, this.listeners = /* @__PURE__ */ new Map(), this.userUnsub = null, this.authUnsub = null, this.watcher = null, this.tracker = null, this.purchased = !1, this.trialStore = null, this.trialStoreConfig = null, this.lastTrialStatus = null, this.trialExpiredFired = !1, this.lastVisibility = null, this.currentState = $, this.stateListeners = /* @__PURE__ */ new Set();
|
|
1556
1559
|
const { auth: t, ownsAuth: n } = rt(e);
|
|
1557
|
-
this.auth = t, this.ownsAuth = n, this.billing = e.client ?? new ae({ ...e, auth: this.auth }), this.host = e.host, this.shadowMode = e.shadowMode ?? "closed", this.mountThenLoad = e.mountThenLoad ?? !0, this.userUnsub = this.billing.onUserChange((i) => {
|
|
1560
|
+
this.auth = t, this.ownsAuth = n, this.billing = e.client ?? new ae({ ...e, auth: this.auth }), this.host = e.host, this.shadowMode = e.shadowMode ?? "closed", this.mountThenLoad = e.mountThenLoad ?? !0, this.inline = e.inline === !0, this.userUnsub = this.billing.onUserChange((i) => {
|
|
1558
1561
|
this.emit("userChange", i);
|
|
1559
|
-
}), this.auth && (this.authUnsub = this.auth.onAuthChange((i) => {
|
|
1560
|
-
this.emit("authChange", i);
|
|
1562
|
+
}), this.auth && (this.authUnsub = this.auth.onAuthChange((i, s) => {
|
|
1563
|
+
this.emit("authChange", { event: i, session: s });
|
|
1561
1564
|
})), this.initTracker(e.analytics), e.autoDetectReturn !== !1 && typeof window < "u" && queueMicrotask(() => this.checkReturn());
|
|
1562
1565
|
}
|
|
1563
1566
|
initTracker(e) {
|
|
@@ -1855,9 +1858,10 @@ let tt = class {
|
|
|
1855
1858
|
onEvent: (i, s) => {
|
|
1856
1859
|
this.emit(i, s), i === "checkout_started" && this.startUserWatcher();
|
|
1857
1860
|
},
|
|
1858
|
-
onState: (i) => this.applyState(i)
|
|
1861
|
+
onState: (i) => this.applyState(i),
|
|
1862
|
+
inline: this.inline
|
|
1859
1863
|
},
|
|
1860
|
-
{ host: this.host, shadowMode: this.shadowMode }
|
|
1864
|
+
{ host: this.host, shadowMode: this.shadowMode, inline: this.inline }
|
|
1861
1865
|
), this.emit("open");
|
|
1862
1866
|
}
|
|
1863
1867
|
applyState(e) {
|
|
@@ -2046,7 +2050,7 @@ let tt = class {
|
|
|
2046
2050
|
}), this.watcher.start());
|
|
2047
2051
|
}
|
|
2048
2052
|
close() {
|
|
2049
|
-
!this.isOpen || !this.handle || (this.isOpen = !1, this.purchased = !1, this.handle.update({ open: !1, purchased: !1 }), this.applyState(
|
|
2053
|
+
!this.isOpen || !this.handle || (this.isOpen = !1, this.purchased = !1, this.handle.update({ open: !1, purchased: !1 }), this.applyState($), this.emit("close"));
|
|
2050
2054
|
}
|
|
2051
2055
|
/**
|
|
2052
2056
|
* Сканирует текущий URL на маркеры возврата с checkout и эмитит
|
|
@@ -2063,7 +2067,7 @@ let tt = class {
|
|
|
2063
2067
|
}), st(i)) : (i.status === "failed" || i.status === "cancelled") && this.emit("purchase_failed", { reason: i.status }), lt(e));
|
|
2064
2068
|
}
|
|
2065
2069
|
destroy() {
|
|
2066
|
-
this.tracker?.destroy(), this.tracker = null, this.listeners.clear(), this.stateListeners.clear(), this.watcher?.stop(), this.watcher = null, this.userUnsub?.(), this.userUnsub = null, this.authUnsub?.(), this.authUnsub = null, this.ownsAuth && this.auth && this.auth.destroy?.(), this.ownsAuth = !1, this.billing.destroy?.(), this.handle?.unmount(), this.handle = null, this.isOpen = !1, this.currentState =
|
|
2070
|
+
this.tracker?.destroy(), this.tracker = null, this.listeners.clear(), this.stateListeners.clear(), this.watcher?.stop(), this.watcher = null, this.userUnsub?.(), this.userUnsub = null, this.authUnsub?.(), this.authUnsub = null, this.ownsAuth && this.auth && this.auth.destroy?.(), this.ownsAuth = !1, this.billing.destroy?.(), this.handle?.unmount(), this.handle = null, this.isOpen = !1, this.currentState = $;
|
|
2067
2071
|
}
|
|
2068
2072
|
};
|
|
2069
2073
|
function rt(r) {
|
|
@@ -2095,11 +2099,11 @@ function ot(r, e) {
|
|
|
2095
2099
|
}
|
|
2096
2100
|
function re(r) {
|
|
2097
2101
|
if (!r) return null;
|
|
2098
|
-
const e = new URLSearchParams(r), t = e.get(
|
|
2102
|
+
const e = new URLSearchParams(r), t = e.get(U.status);
|
|
2099
2103
|
return t ? {
|
|
2100
2104
|
status: t,
|
|
2101
|
-
priceId: e.get(
|
|
2102
|
-
sessionId: e.get(
|
|
2105
|
+
priceId: e.get(U.priceId),
|
|
2106
|
+
sessionId: e.get(U.sessionId)
|
|
2103
2107
|
} : null;
|
|
2104
2108
|
}
|
|
2105
2109
|
function st(r) {
|
|
@@ -2121,7 +2125,7 @@ function lt(r) {
|
|
|
2121
2125
|
const e = (n, i) => {
|
|
2122
2126
|
if (!n) return "";
|
|
2123
2127
|
const s = new URLSearchParams(n.replace(/^[?#]/, ""));
|
|
2124
|
-
s.delete(
|
|
2128
|
+
s.delete(U.status), s.delete(U.priceId), s.delete(U.sessionId);
|
|
2125
2129
|
const l = s.toString();
|
|
2126
2130
|
return l ? i + l : "";
|
|
2127
2131
|
}, t = r.pathname + e(r.search, "?") + e(r.hash, "#");
|
|
@@ -2354,10 +2358,10 @@ function ht(r, e) {
|
|
|
2354
2358
|
}
|
|
2355
2359
|
class dt {
|
|
2356
2360
|
constructor(e, t) {
|
|
2357
|
-
this.transport = e, this.session = null, this.listeners = /* @__PURE__ */ new Set(), this.unsubBroadcast = null, this.paywallId = t.paywallId, this.apiOrigin = t.apiOrigin, this.unsubBroadcast = this.transport.on("authChange", (n) => {
|
|
2358
|
-
this.applySession(n);
|
|
2361
|
+
this.transport = e, this.session = null, this.listeners = /* @__PURE__ */ new Set(), this.unsubBroadcast = null, this.paywallId = t.paywallId, this.apiOrigin = t.apiOrigin, this.unsubBroadcast = this.transport.on("authChange", ({ event: n, session: i }) => {
|
|
2362
|
+
this.applySession(n, i);
|
|
2359
2363
|
}), this.hydrated = this.transport.request("auth.getCachedSession", void 0).then((n) => {
|
|
2360
|
-
this.session === null && n !== null && this.
|
|
2364
|
+
this.session === null && n !== null && (this.session = n);
|
|
2361
2365
|
}).catch(() => {
|
|
2362
2366
|
});
|
|
2363
2367
|
}
|
|
@@ -2373,31 +2377,32 @@ class dt {
|
|
|
2373
2377
|
return this.session?.user ?? null;
|
|
2374
2378
|
}
|
|
2375
2379
|
onAuthChange(e) {
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2380
|
+
return this.listeners.add(e), this.hydrated.then(() => {
|
|
2381
|
+
if (this.listeners.has(e))
|
|
2382
|
+
try {
|
|
2383
|
+
e("INITIAL_SESSION", this.session);
|
|
2384
|
+
} catch (t) {
|
|
2385
|
+
console.warn("[paywall] onAuthChange INITIAL_SESSION threw", t);
|
|
2386
|
+
}
|
|
2387
|
+
}), () => {
|
|
2383
2388
|
this.listeners.delete(e);
|
|
2384
2389
|
};
|
|
2385
2390
|
}
|
|
2386
2391
|
// === Email/password ===
|
|
2387
2392
|
async signInWithEmail(e) {
|
|
2388
2393
|
const t = await this.transport.request("auth.signInWithEmail", e);
|
|
2389
|
-
return this.applySession(t), t;
|
|
2394
|
+
return this.applySession("SIGNED_IN", t), t;
|
|
2390
2395
|
}
|
|
2391
2396
|
async signUp(e) {
|
|
2392
2397
|
const t = await this.transport.request("auth.signUp", e);
|
|
2393
|
-
return t.kind === "signed_in" && this.applySession(t.session), t;
|
|
2398
|
+
return t.kind === "signed_in" && this.applySession("SIGNED_IN", t.session), t;
|
|
2394
2399
|
}
|
|
2395
2400
|
async signOut() {
|
|
2396
2401
|
await this.transport.request("auth.signOut", void 0);
|
|
2397
2402
|
}
|
|
2398
2403
|
async refresh() {
|
|
2399
2404
|
const e = await this.transport.request("auth.refresh", void 0);
|
|
2400
|
-
return this.applySession(e), e;
|
|
2405
|
+
return this.applySession(e ? "TOKEN_REFRESHED" : "SIGNED_OUT", e), e;
|
|
2401
2406
|
}
|
|
2402
2407
|
// === OTP / password reset / confirmation ===
|
|
2403
2408
|
async sendOtp(e) {
|
|
@@ -2405,7 +2410,7 @@ class dt {
|
|
|
2405
2410
|
}
|
|
2406
2411
|
async verifyOtp(e) {
|
|
2407
2412
|
const t = await this.transport.request("auth.verifyOtp", e);
|
|
2408
|
-
return this.applySession(t), t;
|
|
2413
|
+
return this.applySession(e.type === "recovery" ? "PASSWORD_RECOVERY" : "SIGNED_IN", t), t;
|
|
2409
2414
|
}
|
|
2410
2415
|
async resendConfirmation(e) {
|
|
2411
2416
|
await this.transport.request("auth.resendConfirmation", e);
|
|
@@ -2430,7 +2435,7 @@ class dt {
|
|
|
2430
2435
|
userMeta: e.userMeta,
|
|
2431
2436
|
forceCaptcha: e.forceCaptcha
|
|
2432
2437
|
});
|
|
2433
|
-
return this.applySession(t), t;
|
|
2438
|
+
return this.applySession("SIGNED_IN", t), t;
|
|
2434
2439
|
}
|
|
2435
2440
|
/** Текущий access token (lazy-refreshable в offscreen'е). content/popup
|
|
2436
2441
|
* использует для Bearer'а в внешние fetch'и — ApiGatewayClient в
|
|
@@ -2456,10 +2461,10 @@ class dt {
|
|
|
2456
2461
|
*/
|
|
2457
2462
|
async signInWithOAuth(e) {
|
|
2458
2463
|
if (typeof window > "u")
|
|
2459
|
-
throw new
|
|
2464
|
+
throw new E("oauth_unavailable", "window is required for OAuth");
|
|
2460
2465
|
const t = `pw-oauth-pending-${Math.random().toString(36).slice(2, 10)}`, n = window.open("about:blank", t, "width=480,height=640,popup=yes");
|
|
2461
2466
|
if (!n)
|
|
2462
|
-
throw new
|
|
2467
|
+
throw new E(
|
|
2463
2468
|
"popup_blocked",
|
|
2464
2469
|
"browser blocked auth popup — call from a user gesture"
|
|
2465
2470
|
);
|
|
@@ -2472,7 +2477,7 @@ class dt {
|
|
|
2472
2477
|
});
|
|
2473
2478
|
n.name = `pw-oauth-${s}`, n.location.replace(i), e.onPopupOpened?.();
|
|
2474
2479
|
const l = await he(n, s), a = await this.transport.request("auth.oauthExchange", { state: s, code: l });
|
|
2475
|
-
return this.applySession(a), a;
|
|
2480
|
+
return this.applySession("SIGNED_IN", a), a;
|
|
2476
2481
|
} catch (i) {
|
|
2477
2482
|
try {
|
|
2478
2483
|
n.close();
|
|
@@ -2484,14 +2489,14 @@ class dt {
|
|
|
2484
2489
|
destroy() {
|
|
2485
2490
|
this.unsubBroadcast?.(), this.unsubBroadcast = null, this.listeners.clear(), this.session = null;
|
|
2486
2491
|
}
|
|
2487
|
-
applySession(e) {
|
|
2488
|
-
if (!pt(this.session,
|
|
2489
|
-
this.session =
|
|
2490
|
-
for (const
|
|
2492
|
+
applySession(e, t) {
|
|
2493
|
+
if (!pt(this.session, t)) {
|
|
2494
|
+
this.session = t;
|
|
2495
|
+
for (const n of [...this.listeners])
|
|
2491
2496
|
try {
|
|
2492
|
-
|
|
2493
|
-
} catch (
|
|
2494
|
-
console.warn("[paywall] onAuthChange listener threw",
|
|
2497
|
+
n(e, t);
|
|
2498
|
+
} catch (i) {
|
|
2499
|
+
console.warn("[paywall] onAuthChange listener threw", i);
|
|
2495
2500
|
}
|
|
2496
2501
|
}
|
|
2497
2502
|
}
|
|
@@ -2547,17 +2552,17 @@ class yt {
|
|
|
2547
2552
|
this.channel = e;
|
|
2548
2553
|
const t = e.onMessage((i) => this.handleMessage(i)), n = e.onDisconnect(() => this.handleDisconnect());
|
|
2549
2554
|
return this.channelDisposers = [t, n], this.request("handshake", {
|
|
2550
|
-
protocolVersion:
|
|
2555
|
+
protocolVersion: q,
|
|
2551
2556
|
clientId: this.clientId
|
|
2552
2557
|
}).then((i) => {
|
|
2553
|
-
i.protocolVersion !==
|
|
2554
|
-
`[sdk-extension] protocol version mismatch: client=${
|
|
2558
|
+
i.protocolVersion !== q && console.warn(
|
|
2559
|
+
`[sdk-extension] protocol version mismatch: client=${q}, offscreen=${i.protocolVersion}. Update host's @monetize.software/sdk-extension.`
|
|
2555
2560
|
);
|
|
2556
2561
|
}).catch(() => {
|
|
2557
2562
|
}), e;
|
|
2558
2563
|
}
|
|
2559
2564
|
handleMessage(e) {
|
|
2560
|
-
if (
|
|
2565
|
+
if (xt(e)) {
|
|
2561
2566
|
if (e.type === "response") {
|
|
2562
2567
|
const t = this.pending.get(e.id);
|
|
2563
2568
|
if (!t) return;
|
|
@@ -2582,7 +2587,7 @@ class yt {
|
|
|
2582
2587
|
const e = Array.from(this.pending.values());
|
|
2583
2588
|
this.pending.clear();
|
|
2584
2589
|
for (const t of e)
|
|
2585
|
-
t.signal?.removeEventListener("abort", t.abortListener), t.reject(new
|
|
2590
|
+
t.signal?.removeEventListener("abort", t.abortListener), t.reject(new bt());
|
|
2586
2591
|
}
|
|
2587
2592
|
request(e, t, n = {}) {
|
|
2588
2593
|
if (this.destroyed)
|
|
@@ -2591,12 +2596,12 @@ class yt {
|
|
|
2591
2596
|
return Promise.reject(new DOMException("Aborted", "AbortError"));
|
|
2592
2597
|
const i = this.ensureChannel(), s = `r${++this.nextId}`;
|
|
2593
2598
|
return new Promise((l, a) => {
|
|
2594
|
-
const
|
|
2599
|
+
const h = {
|
|
2595
2600
|
resolve: l,
|
|
2596
2601
|
reject: a,
|
|
2597
2602
|
signal: n.signal
|
|
2598
2603
|
};
|
|
2599
|
-
n.signal && (
|
|
2604
|
+
n.signal && (h.abortListener = () => {
|
|
2600
2605
|
if (this.pending.delete(s)) {
|
|
2601
2606
|
a(new DOMException("Aborted", "AbortError"));
|
|
2602
2607
|
try {
|
|
@@ -2604,17 +2609,17 @@ class yt {
|
|
|
2604
2609
|
} catch {
|
|
2605
2610
|
}
|
|
2606
2611
|
}
|
|
2607
|
-
}, n.signal.addEventListener("abort",
|
|
2608
|
-
const
|
|
2612
|
+
}, n.signal.addEventListener("abort", h.abortListener)), this.pending.set(s, h);
|
|
2613
|
+
const c = {
|
|
2609
2614
|
type: "request",
|
|
2610
2615
|
id: s,
|
|
2611
2616
|
kind: e,
|
|
2612
2617
|
params: t
|
|
2613
2618
|
};
|
|
2614
2619
|
try {
|
|
2615
|
-
i.send(
|
|
2616
|
-
} catch (
|
|
2617
|
-
this.pending.delete(s), n.signal?.removeEventListener("abort",
|
|
2620
|
+
i.send(c);
|
|
2621
|
+
} catch (m) {
|
|
2622
|
+
this.pending.delete(s), n.signal?.removeEventListener("abort", h.abortListener), a(m);
|
|
2618
2623
|
}
|
|
2619
2624
|
});
|
|
2620
2625
|
}
|
|
@@ -2638,21 +2643,21 @@ class yt {
|
|
|
2638
2643
|
this.channel?.close(), this.channel = null;
|
|
2639
2644
|
}
|
|
2640
2645
|
}
|
|
2641
|
-
class
|
|
2646
|
+
class bt extends Error {
|
|
2642
2647
|
constructor() {
|
|
2643
2648
|
super("Transport channel disconnected mid-request"), this.code = "transport_disconnected", this.name = "TransportDisconnectedError";
|
|
2644
2649
|
}
|
|
2645
2650
|
}
|
|
2646
|
-
function
|
|
2651
|
+
function xt(r) {
|
|
2647
2652
|
if (typeof r != "object" || r === null) return !1;
|
|
2648
2653
|
const e = r.type;
|
|
2649
2654
|
return e === "request" || e === "response" || e === "event";
|
|
2650
2655
|
}
|
|
2651
|
-
let
|
|
2656
|
+
let R = null;
|
|
2652
2657
|
function kt() {
|
|
2653
|
-
return
|
|
2658
|
+
return R || (R = new yt(() => pe(fe)), R);
|
|
2654
2659
|
}
|
|
2655
|
-
class
|
|
2660
|
+
class Et extends tt {
|
|
2656
2661
|
constructor(e) {
|
|
2657
2662
|
const t = kt(), n = new ct(t, {
|
|
2658
2663
|
paywallId: e.paywallId,
|
|
@@ -2733,8 +2738,8 @@ class Tt extends tt {
|
|
|
2733
2738
|
}
|
|
2734
2739
|
}
|
|
2735
2740
|
export {
|
|
2736
|
-
|
|
2737
|
-
|
|
2741
|
+
q as PROTOCOL_VERSION,
|
|
2742
|
+
Et as PaywallUI,
|
|
2738
2743
|
dt as RemoteAuthClient,
|
|
2739
2744
|
ct as RemoteBillingClient,
|
|
2740
2745
|
mt as RemoteEventTracker,
|