PageSourceSearch

https://cdn.mindmapai.app/static/js/subscription/price-359ee40f2e6a6be76eb7eb840cf4e7ec.js

js mindmapai.app collected 2026-09-24 10:11:14 UTC 17,182 bytes, 128 lines download raw bytes

1function S(){return window.dataLayer=window.dataLayer||[],window.dataLayer}function U(e,t={}){let r=S(),o={event:e,...t,timestamp:new Date().toISOString()};r.push(o)}function R(){S().push({ecommerce:null})}function C(e){R(),U("begin_checkout",{ecommerce:{currency:e.currency||"USD",value:parseFloat(e.price.toFixed(2)),items:[j(e)]}})}function j(e){let t="Subscription";return e.type==="basic"?t="Basic Plan":e.type==="pro"?t="Pro Plan":e.cycle==="once"&&e.type!=="addon"&&(t="Lifetime Plan"),{item_id:e.code,item_name:e.name,price:parseFloat(e.price.toFixed(2)),quantity:1,item_category:t,item_category2:e.cycle,credits:e.credits}}function F(){let e="",t;for(let r=0;r<32;r++)t=Math.random()*16|0,r>4&&r<21&&!(r%4)&&(e+="-"),e+=(r===12?4:r===16?t&3|8:t).toString(16);return e}var A={success:{borderColor:"border-green-100 dark:border-green-800",iconBg:"bg-green-100 dark:bg-green-800/40",iconColor:"text-green-600 dark:text-green-300",progressColor:"bg-green-600 dark:bg-green-400",linkColor:"text-green-700 hover:text-green-800 active:text-green-900 dark:text-green-300 dark:hover:text-green-200 dark:active:text-green-100",icon:`<svg class="w-5 h-5 sm:w-6 sm:h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
2                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
3            </svg>`},error:{borderColor:"border-red-100 dark:border-red-800",iconBg:"bg-red-100 dark:bg-red-800/40",iconColor:"text-red-600 dark:text-red-300",progressColor:"bg-red-600 dark:bg-red-400",linkColor:"text-red-700 hover:text-red-800 active:text-red-900 dark:text-red-300 dark:hover:text-red-200 dark:active:text-red-100",icon:`<svg class="w-5 h-5 sm:w-6 sm:h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
4                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
5            </svg>`},warning:{borderColor:"border-yellow-100 dark:border-yellow-800",iconBg:"bg-yellow-100 dark:bg-yellow-800/40",iconColor:"text-yellow-600 dark:text-yellow-300",progressColor:"bg-yellow-600 dark:bg-yellow-400",linkColor:"text-yellow-700 hover:text-yellow-800 active:text-yellow-900 dark:text-yellow-300 dark:hover:text-yellow-200 dark:active:text-yellow-100",icon:`<svg class="w-5 h-5 sm:w-6 sm:h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
6                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
7            </svg>`},info:{borderColor:"border-blue-100 dark:border-blue-800",iconBg:"bg-blue-100 dark:bg-blue-800/40",iconColor:"text-blue-600 dark:text-blue-300",progressColor:"bg-blue-600 dark:bg-blue-400",linkColor:"text-blue-700 hover:text-blue-800 active:text-blue-900 dark:text-blue-300 dark:hover:text-blue-200 dark:active:text-blue-100",icon:`<svg class="w-5 h-5 sm:w-6 sm:h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
8                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
9            </svg>`}};function $(){if(!document.getElementById("toast-styles")){let e=document.createElement("style");e.id="toast-styles",e.textContent=`
10            @keyframes slide-in-down {
11                0% {
12                    transform: translate(-50%, -100%);
13                    opacity: 0;
14                }
15                100% {
16                    transform: translate(-50%, 0);
17                    opacity: 1;
18                }
19            }
20            .animate-slide-in-down {
21                animation: slide-in-down 0.3s ease-out forwards;
22            }
23            @keyframes progress-bar {
24                from {
25                    width: 100%;
26                }
27                to {
28                    width: 0%;
29                }
30            }
31            @keyframes infinite-loader {
32                0% {
33                    transform: translateX(-100%);
34                }
35                100% {
36                    transform: translateX(100%);
37                }
38            }
39            .infinite-progress {
40                animation: infinite-loader 1.5s ease-in-out infinite;
41            }
42            .message-content a {
43                text-decoration: underline;
44                transition-property: all;
45                transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
46                transition-duration: 150ms;
47            }
48        `,document.head.appendChild(e)}}function k({type:e="info",title:t="",message:r="",timeout:o=5e3}){$(),x();let n=A[e]||A.info,c=o<0,i=document.createElement("div");i.id="mm-toast-container",i.className="fixed top-16 left-1/2 -translate-x-1/2 z-50 animate-slide-in-down w-full max-w-[calc(100%-2rem)] sm:max-w-md px-4",i.style.position="fixed",i.innerHTML=`
49        <div class="
50            relative
51            bg-white dark:bg-gray-900
52            rounded-lg
53            shadow-lg dark:shadow-gray-900/30
54            border ${n.borderColor}
55            p-4
56            w-full
57            overflow-hidden
58        ">
59            <div class="flex items-center gap-3">
60                <div class="
61                    flex-shrink-0 
62                    w-12 h-12
63                    ${n.iconBg} 
64                    rounded-full 
65                    inline-flex 
66                    items-center 
67                    justify-center
68                    ${n.iconColor}
69                    shadow-sm
70                ">
71                    ${n.icon}
72                </div>
73                <div class="flex-1 min-w-0">
74                    <h3 class="font-semibold text-base text-gray-900 dark:text-white leading-5">${t}</h3>
75                    <div class="text-sm text-gray-600 dark:text-gray-300 message-content leading-5 mt-0.5">${r}</div>
76                </div>
77                <button class="
78                    flex-shrink-0 
79                    ml-2 
80                    text-gray-400 
81                    hover:text-gray-600 
82                    active:text-gray-800
83                    dark:text-gray-500 
84                    dark:hover:text-gray-300 
85                    dark:active:text-gray-100
86                    transition-colors 
87                    duration-150
88                    outline-none
89                    rounded-full
90                    p-1
91                    focus-visible:ring-2 
92                    focus-visible:ring-offset-2 
93                    focus-visible:ring-offset-white
94                    dark:focus-visible:ring-offset-gray-900 
95                    focus-visible:ring-gray-400
96                    dark:focus-visible:ring-gray-500
97                ">
98                    <svg viewBox="0 0 24 24" fill="currentColor" class="w-5 h-5">
99                        <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/>
100                    </svg>
101                </button>
102            </div>
103            <div class="absolute bottom-0 left-0 right-0 h-1 bg-gray-100 dark:bg-gray-800">
104                ${c?`
105                    <div class="h-full ${n.progressColor} infinite-progress" style="width: 50%"></div>
106                `:o?`
107                    <div class="h-full ${n.progressColor}"
108                         style="width: 100%; animation: progress-bar ${o}ms linear forwards;">
109                    </div>
110                `:""}
111            </div>
112        </div>
113    `;let a=i.querySelector(".message-content");
113if(a){let s=a.getElementsByTagName("a");Array.from(s).forEach(u=>{u.className=`
114                font-medium 
115                ${n.linkColor}
116                transition-colors
117                duration-150
118                hover:underline
119                outline-none
120                rounded
121                px-0.5
122                -mx-0.5
123                focus-visible:ring-2 
124                focus-visible:ring-offset-1
125                focus-visible:ring-offset-white
126                dark:focus-visible:ring-offset-gray-900
127                focus-visible:ring-current
128            `.trim()})}document.body.appendChild(i);let l=i.querySelector("button");l.addEventListener("click",()=>{l.blur(),x()}),o>0&&setTimeout(()=>{i&&i.parentNode&&(i.style.opacity="0",i.style.transform="translate(-50%, -100%)",i.style.transition="all 0.3s ease-out",setTimeout(()=>x(),300))},o)}function x(){let e=document.getElementById("mm-toast-container");e&&e.remove();let t=document.getElementsByClassName("mm-banner");if(t){for(let r of t)r.classList.add("hidden");document.dispatchEvent(new CustomEvent("banners-hidden-by-toast"))}}function w(e,t,r){let o=String(t).toLowerCase(),n=String(r).toLowerCase(),c=n==="lite"||n==="plus"||n==="ultimate"?`lifetime-${n}`:n;for(let i of e)if(!(!i||!i.cycle||!i.code)&&i.cycle.toLowerCase()===o&&i.code.toLowerCase().startsWith(c))return i.code;return null}var D=!1,L="en",z=null,g=null;var E=new Map;function H(e){return String(e||"").trim().replace(/_/g,"-")}function J(e){let t=[];if(e){t.push(e);let r=e.split("-")[0];r&&r!==e&&t.push(r)}t.push(L);for(let r of t)try{if(Intl.DateTimeFormat.supportedLocalesOf(r).length>0)return r}catch{}return L}function T(){if(g)return g;let e=z||V();return g=J(H(e)),g}function V(){return typeof window=="undefined"?null:window.userFormatLocale||window.userLocale||null}function G(e,t,r){let o=e+"|"+T()+"|"+JSON.stringify(t||{}),n=E.get(o);if(n===void 0){try{n=r(T(),t)}catch{n=null}E.set(o,n)}return n}function N(e){return G("n",e,(t,r)=>new Intl.NumberFormat(t,r))}function q(e){return D?Object.assign({numberingSystem:"latn"},e):e}function W(e,t){let r=typeof e=="number"?e:Number(e);if(!Number.isFinite(r))return"";let o=q(Number.isFinite(t)?{minimumFractionDigits:t,maximumFractionDigits:t}:{}),n=N(o);return n?n.format(r):String(r)}function y(e,t,r){let o=typeof e=="number"?e:Number(e);if(!Number.isFinite(o))return"";let n=Number.isFinite(r)?r:Number.isInteger(o)?0:2,c=N(q({style:"currency",currency:t||"USD",minimumFractionDigits:n,maximumFractionDigits:n}));if(c)return c.format(o);let i=W(o,n);return t&&t!=="USD"?i+" "+t:"$"+i}var se=[{limit:1024,divisor:1,unit:"byte",display:"narrow",symbol:"B",digits:0},{limit:1024*1024,divisor:1024,unit:"kilobyte",display:"short",symbol:"kB",digits:1},{limit:1/0,divisor:1024*1024,unit:"megabyte",display:"short",symbol:"MB",digits:1}];var le=[{unit:"year",ms:365*24*36e5},{unit:"month",ms:720*36e5},{unit:"week",ms:168*36e5},{unit:"day",ms:24*36e5},{unit:"hour",ms:36e5},{unit:"minute",ms:6e4}];var v=typeof upgradePlanDetails!="undefined"?JSON.parse(upgradePlanDetails):[];function p(e,t,r,o){let n=Number.parseInt(e,10);return Number.isNaN(n)?o:Math.min(r,Math.max(t,n))}function h(e,t){e.disabled=t;let r=e.querySelector(".button-loading"),o=e.querySelector(".button-text");r&&r.classList.toggle("hidden",!t),o&&o.classList.toggle("hidden",t)}var f="me",m="yearly";function b(){f==="team"&&m==="lifetime"&&(m="yearly"),document.querySelectorAll("[data-audience]").forEach(a=>{let l=a.dataset.audience===f;a.classList.toggle("is-active",l),a.setAttribute("aria-selected",l?"true":"false")}),document.querySelectorAll("[data-billing-tab]").forEach(a=>{let l=a.dataset.billingTab===m;a.classList.toggle("is-active",l),a.setAttribute("aria-selected",l?"true":"false")});let e=document.getElementById("pp-lifetime-tab");e&&e.classList.toggle("hidden",f==="team");let t=f+"-"+m;document.querySelectorAll("[data-plan-group]").forEach(a=>{a.classList.toggle("hidden",a.dataset.planGroup!==t)});let r=document.getElementById("pp-compare-wrap");r&&r.classList.toggle("hidden",f!=="me"||m==="lifetime");let o=m==="monthly"?"monthly":"yearly";document.querySelectorAll("[data-cmp-price]").forEach(a=>{let l=a.getAttribute("data-"+o),s=l?y(Number(l),"USD",2):"";s&&(a.textContent=s)}),document.querySelectorAll("[data-cmp-sub]").forEach(a=>{let l=a.getAttribute("data-"+o);l&&(a.textContent=l)}),document.querySelectorAll("[data-cmp-cta]").forEach(a=>{a.dataset.billing=o});let n=document.querySelector("[data-credits-strip]");if(n){let a=m==="lifetime"?n.getAttribute("data-lifetime"):n.getAttribute("data-default");a&&(n.innerHTML=a)}let c=document.getElementById("pp-extra-individual"),i=document.getElementById("pp-extra-team");c&&c.classList.toggle("hidden",f!=="me"),i&&i.classList.toggle("hidden",f!=="team")}function X(){document.querySelectorAll("[data-audience]").forEach(e
128=>{e.addEventListener("click",()=>{f=e.dataset.audience,b()})}),document.querySelectorAll("[data-billing-tab]").forEach(e=>{e.addEventListener("click",()=>{m=e.dataset.billingTab;try{history.replaceState(null,"","#"+m)}catch{}b()})}),document.querySelectorAll("[data-goto-team]").forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),f="team",b(),requestAnimationFrame(()=>{let r=document.getElementById("paid-plans");if(r){let o=r.getBoundingClientRect().top+window.scrollY-24;window.scrollTo({top:o,behavior:"smooth"})}})})})}function K(){document.querySelectorAll("[data-seat-card]").forEach(e=>{let t=e.querySelector("[data-seat-input]"),r=e.querySelector("[data-seat-dec]"),o=e.querySelector("[data-seat-inc]"),n=e.querySelector("[data-seat-total]"),c=e.querySelector(".subscribe-button");if(!t||!c)return;let i=p(t.getAttribute("min"),1,1e3,2),a=p(t.getAttribute("max"),1,1e3,100),l=parseFloat(t.dataset.unitPrice||"0"),s=e.dataset.billingCycle||"monthly";function u(){let d=p(t.value,i,a,i);if(t.value=String(d),c.dataset.seats=String(d),c.dataset.seatsResolved=String(d),n){let I=s==="yearly"?12:1,M=y(l*d*I,"USD",2),B=y(l*d,"USD",2),P=n.dataset.billedLabel||"Billed",O=n.dataset.moLabel||"/mo equivalent",_=P+" <strong>"+M+"</strong>";s==="yearly"&&(_+=' <span class="text-slate-400">\xB7 '+B+" "+O+"</span>"),n.innerHTML=_}}r&&r.addEventListener("click",d=>{d.preventDefault(),t.value=String(Math.max(i,p(t.value,i,a,i)-1)),u()}),o&&o.addEventListener("click",d=>{d.preventDefault(),t.value=String(Math.min(a,p(t.value,i,a,i)+1)),u()}),t.addEventListener("input",()=>{t.value!==""&&(t.value=t.value.replace(/[^0-9]/g,""))}),t.addEventListener("change",u),t.addEventListener("blur",u),u()})}function Y(e){if(e.dataset.seatsResolved)return p(e.dataset.seatsResolved,1,1e3,2);if(e.dataset.seats)return p(e.dataset.seats,1,1e3,2);let t=e.closest("[data-seat-card]"),r=t?t.querySelector("[data-seat-input]"):null;return r?p(r.value,1,1e3,2):1}function Z(){let e=document.getElementById("pp-compare-toggle"),t=document.getElementById("pp-compare-panel");!e||!t||e.addEventListener("click",()=>{let r=t.classList.toggle("hidden")===!1;e.classList.toggle("is-open",r),e.setAttribute("aria-expanded",r?"true":"false");let o=e.dataset.labelShow,n=e.dataset.labelHide,c=e.querySelector("[data-compare-label]");c&&o&&n&&(c.textContent=r?n:o)})}function Q(){let e=document.querySelectorAll(".pp-faq-item");e.forEach((t,r)=>{let o=t.querySelector(".pp-faq-q"),n=t.querySelector(".pp-faq-a");!o||!n||(r===0&&(t.classList.add("is-open"),o.setAttribute("aria-expanded","true"),n.style.maxHeight=n.scrollHeight+"px"),o.addEventListener("click",()=>{let c=!t.classList.contains("is-open");e.forEach(i=>{if(i===t)return;i.classList.remove("is-open");let a=i.querySelector(".pp-faq-q"),l=i.querySelector(".pp-faq-a");a&&a.setAttribute("aria-expanded","false"),l&&(l.style.maxHeight="0px")}),t.classList.toggle("is-open",c),o.setAttribute("aria-expanded",c?"true":"false"),n.style.maxHeight=c?n.scrollHeight+"px":"0px"}))})}function ee(){document.querySelectorAll(".subscribe-button").forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation(),t.preventDefault();let r=e.dataset.billing||"yearly",o=e.dataset.plan||"basic",n=e.dataset.trial==="true",c=e.dataset.team==="true",i=c?Y(e):1;if(!(userIdHash!=="-1")){let s=w(v,r,o),u=`/upgrade?billing=${r}&plan=${s}&trial=${n}&team=${c}&quantity=${i}`,d=encodeURIComponent(u);window.location.href=`/login?rt=${d}`;return}h(e,!0);let l=v.find(s=>s.code.toLowerCase().includes(o.toLowerCase())&&s.cycle===r);l&&C({...l,quantity:i}),fetch("/subscription/create-link",{method:"POST",credentials:"same-origin",headers:{"X-Correlation-ID":F(),"Content-Type":"application/json"},body:JSON.stringify({billing:r,plan:w(v,r,o),trial:n,quantity:i,teamPlan:c})}).then(s=>{if(s.redirected)throw new Error("Redirect");if(!s.ok)throw new Error("ServerError");return s.json()}).then(s=>{s.code==="S1000"?setTimeout(()=>{window.location.href=s.result},250):(h(e,!1),k({type:"error",title:"Upgrade Error",message:s.description}))}).catch(s=>{if(h(e,!1),console.error("Error while creating subscription link:",s),s.message==="Redirect")window.location.reload();else{let u=s.message==="ServerError"?"The server encountered an error. Please try again later.":"Something went wrong while processing your request.";k({type:"error",title:"Upgrade Error",message:u})}})})})}document.addEventListener("DOMContentLoaded",()=>{let e=window.location.hash.replace("#","");["monthly","yearly","lifetime"].includes(e)&&(m=e),X(),K(),Z(),Q(),ee(),b()});window.addEventListener("pageshow",()=>
128{document.querySelectorAll(".subscribe-button").forEach(e=>{h(e,!1)})});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.