1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[74645],{34663:(e,t,r)=>{r.d(t,{CreditsProvider:()=>d,useCredits:()=>o});var i=r(95155),n=r(12115),l=r(2749);let s=(0,n.createContext)({credits:null,loading:!0,error:null,refreshCredits:async()=>{},deductCredits:()=>{},fetchCredits:async()=>{}});function d(e){let{children:t}=e,{user:r,status:d,update:o}=(0,l.As)(),[u,a]=(0,n.useState)(null),[c,m]=(0,n.useState)(!0),[h,f]=(0,n.useState)(null),x=(0,n.useRef)(0),v=(0,n.useRef)(!1),p=(0,n.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if("loading"===d)return;if("unauthenticated"===d){a(null),m(!1),f(null);return}let t=Date.now();if(v.current)return void console.log("[CreditsProvider] Request already in progress, skipping");if(!e&&t-x.current<3e4)return void console.log("[CreditsProvider] Using cached credits:",u);if(t-x.current<5e3)return void console.log("[CreditsProvider] Request too frequent, skipping");v.current=!0,m(!0),f(null);try{var r,i,n;console.log("[CreditsProvi
1der] Fetching credits from API");let e=await o(),l=null!=(n=null!=(i=null==e||null==(r=e.user)?void 0:r.credits)?i:u)?n:null;a(l),x.current=t,console.log("[CreditsProvider] Credits updated:",l)}catch(e){f(e instanceof Error?e.message:"Failed to fetch credits"),console.error("[CreditsProvider] Error fetching credits:",e)}finally{m(!1),v.current=!1}},[u,d,o]),g=(0,n.useCallback)(async()=>{"authenticated"===d&&(console.log("[CreditsProvider] Force refreshing credits"),await p(!0))},[p,d]),b=(0,n.useCallback)(e=>{a(t=>{if(null===t)return null;let r=Math.max(0,t-e);return console.log("[CreditsProvider] Optimistically deducting",e,"credits:",t,"->",r),r})},[]);return(0,n.useEffect)(()=>{let e=!0;return(async()=>{if(e){if("loading"===d)return m(!0);if("unauthenticated"===d){a(null),m(!1),f(null);return}if(e&&(null==r?void 0:r.credits)!==void 0){var t;a(null!=(t=r.credits)?t:null),m(!1)}e&&"authenticated"===d&&await p()}})(),()=>{e=!1}},[p,d,null==r?void 0:r.credits]),(0,i.jsx)(s.Provider,{value:{credits:u,loading:c,error:h,refreshCredits:g,deductCredits:b,fetchCredits:p},children:t})}function o(){let e=(0,n.useContext)(s);if(!e)throw Error("useCredits must be used within a CreditsProvi
1der");return e}},39237:(e,t,r)=>{r.d(t,{SessionProvider:()=>s});var i=r(95155),n=r(2749),l=r(41830);function s(e){let{children:t}=e;return(0,i.jsx)(n.OJ,{children:(0,i.jsx)(l.SubscriptionProvider,{children:t})})}},41830:(e,t,r)=>{r.d(t,{SubscriptionProvider:()=>o,useSubscription:()=>u});var i=r(95155),n=r(12115),l=r(2749),s=r(73885);let d=(0,n.createContext)(null);function o(e){let{children:t}=e,{status:r}=(0,l.As)(),[o,u]=(0,n.useState)(null),[a,c]=(0,n.useState)(!1),[m,h]=(0,n.useState)(null),f=(0,n.useRef)(0),x=(0,n.useRef)(!1),v=(0,n.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if("authenticated"!==r){u(null),h(null);return}let t=Date.now();if(!x.current&&(e||!(t-f.current<3e4))&&(e||!(t-f.current<3e4))){x.current=!0,c(!0);try{var i,n,l,d;let e=await s.ok.get(s.pe.me.subscription,{credentials:"include"});u({subscribed:!!(null==e?void 0:e.subscribed),status:null!=(i=null==e?void 0:e.status)?i:null,plan:null!=(n=null==e?void 0:e.plan)?n:null,provider:null!=(l=null==e?void 0:e.provider)?l:null,renewDate:null!=(d=null==e?void 0:e.renewDate)?d:null,raw:null!=e?e:null}),h(null),f.current=t}catch(r){let e=r instanceof s.j$||r instanceof Error?r.message:"Subscription fetch failed";u(null),h(e),f.current=t}finally{c(!1),x.current=!1}}},[r]);(0,n.useEffect)(()=>{if("authenticated"!==r){u(null),h(null),c(!1);return}v()},[r,v]);let p=(0,n.useMemo)(()=>({info:o,loading:"authenticated"===r&&a,error:m,refresh:async()=>{await v(!0)}}),[m,v,o,a,r]);return(0,i.jsx)(d.Provider,{value:p,children:t})}function u(){let e=(0,n.useContext)(d);if(!e)throw Error("useSubscription must be used within SubscriptionProvider");return e}},70760:(e,t,r)=>{r.d(t,{I:()=>i.useCredits,Rs:()=>n.useSubscription}),r(39237);var i=r(34663),n=r(41830)},74645:(e,t,r)=>{r.d(t,{default:()=>g});var i=r(95155),n=r(2749),l=r(70760),s=r(35695),d=r(94361),o=r(2700),u=r(94479);r(20970);var a=r(52596);function c(e){let{stats:t}=e;return(null==t?void 0:t.length)?(0,i.jsx)("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-3",children:t.map((e,t)=>(0,i.jsx)(m,{...e},"".concat(e.title,"-").concat(t)))}):null}function m(e){let{title:t,value:r,description:n,loading:l,muted:s}=e;return(0,i.jsxs)("div",{className:(0,a.A)("rounded-xl border border-border bg-white p-5 transition",s&&"opacity-60"),children:[(0,i.jsx)("div",{className:"text-sm text-muted-foreground",children:t}),l?(0,i.jsx)("div",{className:"mt-2 h-8 w-24 animate-pulse rounded-md bg-muted"}):(0,i.jsx)("div",{className:"mt-2 text-3xl font-extrabold",children:r}),n&&(0,i.jsx)("div",{className:"mt-1 text-sm text-muted-foreground",children:n})]})}var h=r(6874),f=r.n(h);function x(e){let{items:t,isAuthed:r,startLabel:n,signInLabel:l,getHref:s,onSignIn:d}=e;return(null==t?void 0:t.length)?(0,i.jsx)("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-3",children:t.map(e=>(0,i.jsx)(v,{title:e.title,description:e.description,href:e.href,isAuthed:r,startLabel:n,signInLabel:l,getHref:s,onSignIn:()=>d(e.href)},e.href))}):null}function v(e){let{title:t,description:r,href:n,isAuthed:l,startLabel:s,signInLabel:d,getHref:o,onSignIn:u}=e;return(0,i.jsxs)("div",{className:"rounded-xl border border-border bg-white p-5",children:[(0,i.jsx)("div",{className:"font-semibold text-foreground",children:t}),(0,i.jsx)("div",{className:"mt-1 text-sm text-muted-foreground",children:r}),l?(0,i.jsx)(f(),{href:o(n),className:"mt-3 inline-block rounded-md bg-primary px-3 py-1.5 text-sm text-white hover:bg-primary/90",children:s}):(0,i.jsx)("button",{onClick:u,className:"mt-3 rounded-md bg-primary px-3 py-1.5 text-sm text-white hover:bg-primary/90",children:d})]})}function p(e){let{title:t,viewAllLabel:r,viewAllHref:n,isAuthed:l,emptyState:s,signInPrompt:d,signInButton:o,onSignIn:u}=e;return(0,i.jsxs)("div",{className:"rounded-xl border border-border bg-white p-5",children:[(0,i.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,i.jsx)("h2",{className:"text-lg font-semibold",children:t}),(0,i.jsx)(f(),{href:n,className:"text-sm text-primary hover:text-primary/80",children:r})]}),l?(0,i.jsx)("div",{className:"text-sm text-muted-foreground",children:s}):(0,i.jsxs)("div",{className:"flex flex-col gap-3 text-sm text-muted-foreground sm:flex-row sm:items-center sm:justify-between",children:[(0,i.jsx)("div",{children:d}),(0,i.jsx)("button",{onClick:u,className:"rounded-md bg-primary px-3 py-1.5 text-sm text-white hover:bg-primary/90",children:o})]})]})}function g(){var e,t;let{content:r,status:a}=(0,o.useLocaleContent)(),{status:m}=(0,n.As)(),h="authenticated"===m,{credits:f,loading:v}=(0,l.I)(),g=(0,s.usePathname)(),b=(0,d.lu)(g||""),y=e=>b===d.Xn?e:(0,d.vA)(e,b),j=null!=(e=r.app)?e:u;r.sidemenu;let C=null!=(t=j.dashboard)?t:u.dashboard,w=[{title:C.creditsCard.title,value:v?C.creditsCard.empty:String(null!=f?f:C.creditsCard.empty),loading:v},{title:C.jobsCard.title,value:C.creditsCard.empty,muted:!0}
1,{title:C.timeCard.title,value:C.creditsCard.empty,muted:!0}],S=[{title:C.quickStart.photoAnimate.title,description:C.quickStart.photoAnimate.description,href:"/tools/photo-animate"},{title:C.quickStart.photoRestoration.title,description:C.quickStart.photoRestoration.description,href:"/tools/photo-restoration"},{title:C.quickStart.keyframeAnimate.title,description:C.quickStart.keyframeAnimate.description,href:y("/tools/bulk-editor/editor?returnTo=".concat(encodeURIComponent(g||"/app")))}],k=e=>{(0,n.Rf)(void 0,{callbackUrl:y(e)})};return(0,i.jsx)(o.ContentProvider,{content:r,children:(0,i.jsx)("div",{className:"min-h-screen bg-[#f5f7fb]",children:(0,i.jsxs)("div",{className:"mx-auto w-full max-w-5xl px-4 py-12 md:px-8 lg:px-12 space-y-6",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("h1",{className:"text-2xl md:text-3xl font-bold",children:C.title}),(0,i.jsx)("p",{className:"text-muted-foreground",children:C.description})]}),(0,i.jsx)(c,{stats:w}),(0,i.jsx)(x,{items:S,isAuthed:h,startLabel:C.quickStart.startButton,signInLabel:C.quickStart.signInButton,getHref:y,onSignIn:k}),(0,i.jsx)(p,{title:C.recentActivity.title,viewAllLabel:C.recentActivity.viewAll,viewAllHref:y("/account/history"),isAuthed:h,emptyState:C.recentActivity.noActivity,signInPrompt:C.recentActivity.signInPrompt,signInButton:C.recentActivity.signInButton,onSignIn:()=>k("/app")})]})})})}}}]);
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.