https://www.ls.graphics/_next/static/chunks/4a35f63a652e40e2.js?dpl=dpl_81NVd5rQzFehDtyWKUG9hc7joGpH
1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18566,(e,t,i)=>{t.exports=e.r(76562)},82039,e=>{"use strict";var t=e.i(71645),i=e.i(13375),a=e.i(37345);function o(){let{data:e,isLoading:o,isFetching:s,isUninitialized:r}=(0,i.useGetSaleSystemDataQuery)(),{user:l,hasActiveSubscriptions:n}=(0,a.useMembership)(),c=!!l;return{saleSystem:(0,t.useMemo)(()=>{if(!e||"published"!==e.status)return null;let t=e.deal_end?new Date(e.deal_end):null;return t&&Number.isNaN(t.getTime())||t&&new Date>t||c&&n?null:{...e,dealEndDate:t}},[e]),isLoading:o,isFetching:s,isUninitialized:r}}e.s(["useSaleSystem",()=>o])},94164,e=>{"use strict";let t=[{id:0,title:"Assets"},{id:1,title:"Products"}],i=[{id:0,title:"Assets"},{id:1,title:"Overview"}],a=[{id:0,title:"Edit Online"},{id:1,title:"Download Assets"}],o=[{id:0,title:"Free"},{id:1,title:"Edit Online"}],s=[{id:0,title:"Edit Online"}],r=[{id:0,title:"Free"}],l=[{category:"Devices Mockups",icon:"devices",title:"All",arrayPoints:432,link:"#"},{category:"Devices Mockups",icon:"iphone",title:"iPhone",arrayPoints:432,link:"#"},{category:"Devices Mockups",icon:"macbook",title:"MacBook",arrayPoints:32,link:"#"},{category:"Devices Mockups",icon:"imac",title:"iMac",arrayPoints:24,link:"#"},{category:"Devices Mockups",icon:"ipad",title:"iPad",arrayPoints:212,link:"#"},{category:"Devices Mockups",icon:"android",title:"Android",arrayPoints:16,link:"#"},{category:"Devices Mockups",icon:"macbook",title:"Laptop",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"book",title:"Apparel",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"hoodie",title:"Hoodie",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"tshirt",title:"T-Shirts",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"sticker",title:"Sticker",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"magazine",title:"Poster",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"box",title:"Packaging",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"box",title:"Packaging",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"box",title:"Packaging",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"box",title:"Packaging",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"box",title:"Packaging",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"box",title:"Packaging",arrayPoints:24,link:"#"},{category:"Branding Mockups",icon:"box",title:"Packaging",arrayPoints:24,link:"#"},{category:"Other products",icon:"book",title:"Magazine",arrayPoints:24,link:"#"},{category:"Other products",icon:"book",title:"Magazine",arrayPoints:24,link:"#"},{category:"Other products",icon:"book",title:"Magazine",arrayPoints:24,link:"#"},{category:"Other products",icon:"book",title:"Magazine",arrayPoints:24,link:"#"},{category:"Other products",icon:"book",title:"Magazine",arrayPoints:24,link:"#"}],n=[{image:"",video:"/mckplive.webm",link:"https://mckp.live/",title:"mckp.live",paragraph:"Embedeable and video mockups",icon:"mckpLiveLogo.svg"},{image:"https://ls-graphics-directus-direct.b-cdn.net/assets/2d5b9fd9-af80-458c-b164-32ac830b1cff?width=1200&format=webp&quality=70",link:"https://www.figma.com/community/plugin/817043359134136295/mockup-plugin-devices-mockups-print-mockups-warp-and-distort-transformation",title:"Mockup Plugin for Figma",paragraph:"Huge collection of devices mockup in Figma",icon:"preview_icon_1.png"},{image:"https://ls-graphics-directus-direct.b-cdn.net/assets/f8164e13-3b9e-4830-bee3-3b715b7a5b6b?width=1200&format=webp&quality=70",link:"https://colorflow.ls.graphics/",title:"ColorFlow",paragraph:"Free powerful gradient mesh generator",icon:"colorFlowIconNew.png"}];[...l];let c={title:"High-end mockups for serious design work",stats:[{value:"5,000+",label:"active subscribers"},{value:"1.2M+",label:"Figma plugin installs"},{value:"1M+",label:"newsletter subscribers"}],footerBenefits:["14-day money-back guarantee","Instant access after payment","Cancel anytime"],comparisonTable:{closedLabel:"Compare plans in detail â",openLabel:"Hide comparison â",columns:["Start","Pro"],rows:[{label:"Online editor",start:!0,pro:!0},{label:"Mockup Plugin for Figma",icon:"/forFigmaIcon.png",link:"https://www.figma.com/community/plugin/817043359134136295",start:!1,pro:!0},{label:"mckp.live access",icon:"/forMckpIcon.png",link:"https://mckp.live/",start:!1,pro:!0},{label:"PNG/JPG export",start:!0,pro:!0},{label:"Download PSD files",start:!1,pro:!0},{label:"Download Figma files",start:!1,pro:!0},{label:"Download Sketch files",start:!1,pro:!0},{label:"Devices Mockups ($3 000 value)",start:!1,pro:!0},{label:"Branding Mockups ($1 500 value)",start:!1,pro:!0},{label:"Illustrations ($1 500 value)",start:!1,pro:!0},{label:"Commercial license",start:!0,pro:!0},{label:"New resources weekly",start:!0,pro:!0}],priceRow:{label:"Price",start:"$9/month",pro:"$12/month"}},designerReviews:{title:"What designers say",items:[{text:"Clean, minimal, professional. Exactly what I need for UI portfolios",author:"Omar H.",location:"Dubai"},{text:"Finally consistent mockups for brand guidelines. Huge time saver",author:"Lucas M.",location:"Amsterdam"}]},tabs:[{title:"Monthly",subTitle:"",cards:{start:{title:"Start",description:"Edit mockups online â in browser",currentPrice:15,totalPrice:15,billingPeriod:"/mo",discountBadge:"$14 discount sale",features:[{label:"Online Mockup Editor",included:!0},{label:"PNG/JPG Export",included:!0}],showAssets:!1,showOnlineTools:!0,buttonText:"Subscribe for $15/mo",buttonType:"ghost",paddleId:"pri_01ky2b5fzrv5axpmfh5jrqesvw"},pro:{title:"Pro",description:"Full access to all resources\nand tools",currentPrice:59,totalPrice:59,billingPeriod:"/mo",features:[{label:"Everything in start",included:!0},{label:"Download PSD, Sketch, Figma Files",included:!0},{label:"Mockup Plugin for Figma Access *",linkLabel:"Mockup Plugin for Figma",footnote:!0,icon:"/forFigmaIcon.png",link:"https://www.figma.com/community/plugin/817043359134136295"},{label:"mckp.live Access *",linkLabel:"mckp.live",footnote:!0,icon:"/forMckpIcon.png",link:"https://mckp.live/"}],showAssets:!0,showOnlineTools:!0,buttonText:"Subscribe for $59/mo",buttonType:"accent",paddleId:"pri_01ky2bccqyq0m2w8mxtv9mc9kp"}}},{title:"Yearly",subTitle:"",cards:{start:{title:"Start",description:"Edit mockups online â in browser",currentPrice:9,totalPrice:99,billingPeriod:"/mo",features:[{label:"Online Mockup Editor",included:!0},{label:"PNG/JPG Export",included:!0}],showAssets:!1,showOnlineTools:!0,buttonText:"Subscribe for $99/y",buttonType:"ghost",paddleId:"pri_01ky2b7dhr0jn84d0kt5s9qez1"},pro:{title:"Pro",description:"Full access to all resources\nand tools",currentPrice:12,totalPrice:144,billingPeriod:"/mo",features:[{label:"Everything in start",included:!0},{label:"Download PSD, Sketch, Figma Files",included:!0},{label:"Mockup Plugin for Figma Access *",linkLabel:"Mockup Plugin for Figma",footnote:!0,icon:"/forFigmaIcon.png",link:"https://www.figma.com/community/plugin/817043359134136295"},{label:"mckp.live Access *",linkLabel:"mckp.live",footnote:!0,icon:"/forMckpIcon.png",link:"https://mckp.live/"}],showAssets:!0,showOnlineTools:!0,buttonText:"Subscribe for $144/y",buttonType:"accent",paddleId:"pri_01ky2bczg3
1chz49rtvc2j2n6me"}}}]};e.s(["catalogMenuProducts",()=>l,"dropdownOptionsFilter",()=>o,"dropdownOptionsFilterEditOnline",()=>r,"dropdownOptionsFilterFree",()=>s,"mockOnlineToolsData",()=>n,"subscriptionData",()=>c,"tabsMenu",()=>t,"tabsMenuAssets",()=>a,"tabsMenuTwo",()=>i])},54338,23741,e=>{"use strict";var t=e.i(75786),i=e.i(67825);e.i(47167);let a={};function o(e,t,i,o){let s=Date.now();if(s-(a[e]||0)<2e3)return;a[e]=s;let r=`${e}_${Date.now()}_${Math.random().toString(36).slice(2,9)}`,l=function(){if("undefined"==typeof document)return null;let e=document.cookie.match(/(?:^|; )_epik=([^;]+)/);return e?decodeURIComponent(e[1]):null}();if(window.pintrk){let a={};i&&(a.em=i),o&&(a.external_id=o),l&&(a.click_id=l),Object.keys(a).length>0&&window.pintrk("set",a),window.pintrk("track",e,{...t,event_id:r})}fetch("/api/pinterest-track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event_name:e,event_id:r,event_data:t,user_email:i,click_id:l,external_id:o})}).catch(()=>{})}var s=e.i(85430),r=e.i(71645);e.i(51718);var l=e.i(18357),n=e.i(14985),c=e.i(53436);let d=new Set;class u{dispatch;constructor(e){this.dispatch=e}initAuthWindow(){this.dispatch((0,i.resetAuthForm)())}handleNextButton=e=>{let{authWindowFormState:t}=e;switch(t){case"email":this.handleEmailNext(e);break;case"enterPassword":this.handleEnterPasswordNext(e);break;case"createPassword":this.handleCreatePasswordNext(e);break;case"subscribe":this.handleSubscribeNext(e);break;
1case"receiveEmail":this.handleReceiveEmailNext(e);break;case"checkInbox":this.handleCheckInboxNext();break;case"createNewPassword":this.handleCreateNewPasswordNext(e)}};handleBackButton=e=>{let{authWindowFormState:t}=e;switch(t){case"enterPassword":case"createPassword":case"receiveEmail":this.dispatch((0,i.setAuthWindowFormState)("email"));break;case"subscribe":this.dispatch((0,i.setAuthWindowFormState)("createPassword"));break;case"checkInbox":this.dispatch((0,i.setAuthWindowFormState)("receiveEmail"))}};async handleEmailNext(e){let{authEmail:t}=e;!t||""===t.trim()||(this.dispatch((0,i.setEmailValidationAttempted)(!0)),this.isValidEmail(t.trim())&&(this.dispatch((0,i.setEmailValidationAttempted)(!1)),await this.checkUserExists(t.trim())))}async checkUserExists(e){try{let t=await (0,l.fetchSignInMethodsForEmail)(n.auth,e),a=t.includes("password"),o=t.includes("google.com");this.dispatch((0,i.setAuthHasGoogleProvider)(o)),a?this.dispatch((0,i.setAuthWindowFormState)("enterPassword")):o?this.dispatch((0,i.setAuthWindowFormState)("googleOnly")):this.dispatch((0,i.setAuthWindowFormState)("createPassword"))}catch(e){console.error("Error checking user existence:",e),this.dispatch((0,i.setAuthHasGoogleProvider)(!1)),this.dispatch((0,i.setAuthWindowFormState)("createPassword"))}}handleResetPasswordLink=()=>{this.dispatch((0,i.setAuthWindowFormState)("receiveEmail"))};async handleEnterPasswordNext(e){let{authEmail:t,authPassword:a,authWindowType:o}=e;if(a&&""!==a.trim())try{let e=await this.dispatch((0,i.signInWithEmail)({email:t,password:a}));i.signInWithEmail.fulfilled.match(e)&&("buy"===o||"subscribe"===o?await this.checkBuyFlowAfterAuth(t):await this.checkSubscriptionAndProceed(t))}catch(e){console.error("ÐÑибка авÑоÑизаÑии:",e)}}async handleCreatePasswordNext(e){let{authPassword:t,authRepeatPassword:i}=e;t&&i&&t===i&&await this.handleSignUp(e)}async handleGoogleNext(e){let{authWindowType:t}=e;try{let a=await this.dispatch((0,i.signInWithGoogle)());if(i.signInWithGoogle.fulfilled.match(a)){let s=a.payload.email||e.authEmail;s&&this.dispatch((0,i.setAuthEmail)(s)),o("signup",void 0,s,a.payload.uid),"buy"===t||"subscribe"===t?await this.checkBuyFlowAfterAuth(s||""):await this.checkSubscriptionAndProceed(s||"")}}catch(e){console.error("Error during Google sign-in:",e)}}async handleSignUp(e){let{authEmail:t,authPassword:a,authWindowType:s}=e;try{let e=await this.dispatch((0,i.signUpWithEmail)({email:t,password:a}));i.signUpWithEmail.fulfilled.match(e)?(o("signup",void 0,t,e.payload.uid),"buy"===s||"subscribe"===s?await this.checkBuyFlowAfterAuth(t):await this.checkSubscriptionAndProceed(t)):i.signUpWithEmail.rejected.match(e)&&console.error("Sign up rejected:",e.payload)}catch(e){console.error("Error during sign up:",e)}}async checkBuyFlowAfterAuth(e){try{let t=await this.dispatch((0,i.checkUserSubscription)(e));i.checkUserSubscription.fulfilled.match(t)?t.payload?this.dispatch((0,i.setShouldOpenCheckoutAfterAuth)(!0)):this.dispatch((0,i.setAuthWindowFormState)("subscribe")):this.dispatch((0,i.setShouldOpenCheckoutAfterAuth)(!0))}catch(e){console.error("Error checking subscription (buy flow):",e),this.dispatch((0,i.setShouldOpenCheckoutAfterAuth)(!0))}}async checkSubscriptionAndProceed(e){try{let t=await this.dispatch((0,i.checkUserSubscription)(e));i.checkUserSubscription.fulfilled.match(t)?t.payload?this.dispatch((0,i.closeAuthModal)()):this.dispatch((0,i.setAuthWindowFormState)("subscribe")):this.dispatch((0,i.closeAuthModal)())}catch(e){console.error("Error checking subscription:",e),this.dispatch((0,i.closeAuthModal)())}}async handleSubscribeNext(e){let{authEmail:t,authSubscribeChecked:a,postAuthDownloadUrl:o,user:r,authWindowType:l}=e,n=(t&&""!==t.trim()?t.trim():r?.email)??null,c=null;if(n)try{let e=await this.dispatch((0,i.checkUserSubscription)(n));i.checkUserSubscription.fulfilled.match(e)&&(c=e.payload)}catch(e){console.error("Error checking subscription before subscribe:",e)}if(n&&a&&!1===c)try{let e=await this.dispatch((0,i.subscribeUser)(n));i.subscribeUser.fulfilled.match(e)&&console.log("User subscribed successfully")}catch(e){console.error("Error subscribing user:",e)}"buy"===l||"subscribe"===l?this.dispatch((0,i.setShouldOpenCheckoutAfterAuth)(!0)):(o&&((0,s.trackGoal)("freebie_download"),window.open(o,"_blank")),this.dispatch((0,i.closeAuthModal)()))}
1async handleReceiveEmailNext(e){let{authEmail:t}=e;try{let e=await this.dispatch((0,i.resetPassword)(t));i.resetPassword.fulfilled.match(e)&&(localStorage.setItem("resetPasswordEmail",t),this.dispatch((0,i.setAuthWindowFormState)("checkInbox")))}catch(e){console.error("Error sending reset password:",e)}}handleCheckInboxNext(){this.dispatch((0,i.closeAuthModal)())}updateEmail=e=>{this.dispatch((0,i.setAuthEmail)(e))};updatePassword=e=>{this.dispatch((0,i.setAuthPassword)(e))};updateRepeatPassword=e=>{this.dispatch((0,i.setAuthRepeatPassword)(e))};updateSubscribeChecked=e=>{this.dispatch((0,i.setAuthSubscribeChecked)(e))};isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}isValidPassword(e){return e.length>=6}isNextButtonDisabled=e=>{let{authWindowFormState:t,authEmail:i,authPassword:a,authRepeatPassword:o}=e;switch(t){case"email":return!i||""===i.trim();case"enterPassword":return!a||""===a.trim();case"createPassword":return!a||!o||a!==o||!this.isValidPassword(a);default:return!1}};isPasswordValid=e=>{let{authPassword:t}=e;return!t||this.isValidPassword(t)};isPasswordMatch=e=>{let{authPassword:t,authRepeatPassword:i}=e;return!i||t===i};shouldShowEmailError=e=>{let{authEmail:t,emailValidationAttempted:i}=e;return i&&!!t&&!this.isValidEmail(t.trim())};isEmailValid=e=>{let{authEmail:t}=e;return!t||""===t.trim()||this.isValidEmail(t.trim())};startLoginScenario(){this.dispatch((0,i.resetAuthForm)()),this.dispatch((0,i.setAuthWindowType)("default")),this.dispatch((0,i.setAuthWindowFormState)("email")),this.dispatch((0,i.setAuthWindowProductId)(null)),this.dispatch((0,i.openAuthModal)())}startFreeEditOnlineScenario(e,t,a,o){this.dispatch((0,i.resetAuthForm)()),this.dispatch((0,i.setAuthWindowType)("freeEditOnline")),this.dispatch((0,i.setAuthWindowFormState)("email")),this.dispatch((0,i.setAuthWindowProductId)(e)),this.dispatch((0,i.setAuthWindowProduct)({name:t??null,img:a??null,price:o??null})),this.dispatch((0,i.openAuthModal)())}startNewsLetterCheckScenario(e,t,a,o,s){this.dispatch((0,i.resetAuthForm)()),this.dispatch((0,i.setAuthWindowType)("download")),this.dispatch((0,i.setAuthWindowFormState)("subscribe")),this.dispatch((0,i.setAuthWindowProductId)(e)),this.dispatch((0,i.setAuthWindowProduct)({name:a??null,img:o??null,price:s??null})),t&&this.dispatch((0,i.setPostAuthDownloadUrl)(t)),this.dispatch((0,i.openAuthModal)())}startDownloadScenario(e,t,a,o,s){this.dispatch((0,i.resetAuthForm)()),this.dispatch((0,i.setAuthWindowType)("download")),this.dispatch((0,i.setAuthWindowFormState)("email")),this.dispatch((0,i.setAuthWindowProductId)(e)),this.dispatch((0,i.setAuthWindowProduct)({name:a??null,img:o??null,price:s??null})),t&&this.dispatch((0,i.setPostAuthDownloadUrl)(t)),this.dispatch((0,i.openAuthModal)())}startBuyScenario(e,t,a,o){this.dispatch((0,i.resetAuthForm)()),this.dispatch((0,i.setAuthWindowType)("buy")),this.dispatch((0,i.setAuthWindowFormState)("email")),this.dispatch((0,i.setAuthWindowProductId)(e)),this.dispatch((0,i.setAuthWindowProduct)({name:t??null,img:a??null,price:o??null})),this.dispatch((0,i.openAuthModal)())}startAuthSubscriptionScenario(e,t,a){this.dispatch((0,i.resetAuthForm)()),this.dispatch((0,i.setAuthWindowType)("subscribe")),this.dispatch((0,i.setAuthWindowFormState)("email")),this.dispatch((0,i.setAuthWindowProductId)(e||null)),this.dispatch((0,i.setAuthWindowProduct)({name:t??null,img:null,price:a??null})),this.dispatch((0,i.openAuthModal)())}async startVerifyEmailChangeScenario(e){let t;if(!e)return;if(d.has(e))return void console.log("[email-change] oobCode already processed, skipping");d.add(e),console.log("[email-change] waiting for Firebase auth to initialize");let i=await new Promise(e=>{let t=(0,l.onAuthStateChanged)(n.auth,i=>{t(),e(i)})});if(console.log("[email-change] auth ready, currentUser:",i?.uid??null),!i){console.warn("[email-change] no user session â applying code without sync");try{await (0,l.applyActionCode)(n.auth,e)}catch(e){console.error("[email-change] applyActionCode failed:",e)}window.location.href="/profile";return}try{t=await i.getIdToken(!0),console.log("[email-change] got fresh ID token")}catch(e){console.error("[email-change] failed to get ID token before applyActionCode",e),window.location.href="/profile";return}
1try{await (0,l.applyActionCode)(n.auth,e),console.log("[email-change] applyActionCode succeeded")}catch(e){console.error("[email-change] applyActionCode failed:",e),window.location.href="/profile";return}let a={};try{let e=await fetch("https://test-profile.ls.graphics/email/sync",{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"}}),i=await e.text();if(console.log("[email-change] /email/sync status:",e.status,"body:",i),!e.ok){window.location.href="/profile";return}a=i?JSON.parse(i):{}}catch(e){console.error("[email-change] /email/sync request failed:",e),window.location.href="/profile";return}let{oldEmail:o,newEmail:s,customToken:r}=a;if(o&&s)try{await c.default.checkIsSubscribed(o)&&(await c.default.unsubscribe(o),await c.default.subscribe(s))}catch(e){console.error("[email-change] Sendy sync failed",e)}if(r)try{await (0,l.signInWithCustomToken)(n.auth,r),console.log("[email-change] signed in with custom token")}catch(e){console.error("[email-change] signInWithCustomToken failed",e)}window.history.replaceState({},"","/profile"),window.location.href="/profile"}startChangePasswordScenario(){let e=n.auth.currentUser;e&&e.email&&(this.dispatch((0,i.resetAuthForm)()),this.dispatch((0,i.setAuthWindowType)("default")),this.dispatch((0,i.setAuthWindowFormState)("receiveEmail")),this.dispatch((0,i.setAuthEmail)(e.email)),this.dispatch((0,i.openAuthModal)()))}async linkGoogleAccount(){let e=n.auth.currentUser;if(!e)return{ok:!1,code:"no-user"};try{let t=new l.GoogleAuthProvider,a=await (0,l.linkWithPopup)(e,t);return this.dispatch((0,i.setUser)((0,i.serializeUser)(a.user))),{ok:!0}}catch(t){let e=t?.code;
1return console.error("[link-google] failed:",e,t),{ok:!1,code:e}}}async unlinkGoogleAccount(){let e=n.auth.currentUser;if(!e)return{ok:!1,code:"no-user"};try{let t=await (0,l.unlink)(e,l.GoogleAuthProvider.PROVIDER_ID);return this.dispatch((0,i.setUser)((0,i.serializeUser)(t))),{ok:!0}}catch(t){let e=t?.code;return console.error("[unlink-google] failed:",e,t),{ok:!1,code:e}}}startResetPasswordScenario(e,t,a,o){let s=localStorage.getItem("resetPasswordEmail");s&&(this.dispatch((0,i.resetAuthForm)()),this.dispatch((0,i.setAuthWindowType)("default")),this.dispatch((0,i.setAuthWindowFormState)("createNewPassword")),this.dispatch((0,i.setResetPasswordParams)({mode:e??null,oobCode:t??null,apiKey:a??null,lang:o??null})),this.dispatch((0,i.setAuthEmail)(s)),this.dispatch((0,i.openAuthModal)()))}async handleCreateNewPasswordNext(e){let{authPassword:t,resetPasswordParams:a}=e;if(!t||!this.isPasswordMatch(e)||!a||!a.oobCode)return;let o=a.oobCode;try{let e=await (0,l.verifyPasswordResetCode)(n.auth,o);e&&this.dispatch((0,i.setAuthEmail)(e)),await (0,l.confirmPasswordReset)(n.auth,o,t),e&&await this.dispatch((0,i.signInWithEmail)({email:e,password:t})),window.history.replaceState({},"","/"),this.dispatch((0,i.setResetPasswordParams)(null)),this.dispatch((0,i.closeAuthModal)())}catch(e){console.error("Error confirming password reset:",e)}}}let h=()=>{let e=(0,t.useAppDispatch)(),i=(0,t.useAppSelector)(e=>e.auth),a=(0,r.useMemo)(()=>new u(e),[e]);return{startLoginScenario:(0,r.useCallback)(()=>a.startLoginScenario(),[a]),startDownloadScenario:(0,r.useCallback)((e,t,i,o,s)=>a.startDownloadScenario(e,t,i,o,s),[a]),startAuthSubscriptionScenario:(0,r.useCallback)((e,t,i)=>a.startAuthSubscriptionScenario(e,t,i),[a]),startNewsLetterCheckScenario:(0,r.useCallback)((e,t,i,o,s)=>a.startNewsLetterCheckScenario(e,t,i,o,s),[a]),startBuyScenario:(0,r.useCallback)((e,t,i,o)=>a.startBuyScenario(e,t,i,o),[a]),startFreeEditOnlineScenario:(0,r.useCallback)((e,t,i,o)=>a.startFreeEditOnlineScenario(e,t,i,o),[a]),startResetPasswordScenario:(0,r.useCallback)((e,t,i,o)=>a.startResetPasswordScenario(e,t,i,o),[a]),startVerifyEmailChangeScenario:(0,r.useCallback)(e=>a.startVerifyEmailChangeScenario(e),[a]),startChangePasswordScenario:(0,r.useCallback)(()=>a.startChangePasswordScenario(),[a]),linkGoogleAccount:(0,r.useCallback)(()=>a.linkGoogleAccount(),[a]),unlinkGoogleAccount:(0,r.useCallback)(()=>a.unlinkGoogleAccount(),[a]),updateEmail:(0,r.useCallback)(e=>a.updateEmail(e),[a]),updatePassword:(0,r.useCallback)(e=>a.updatePassword(e),[a]),updateRepeatPassword:(0,r.useCallback)(e=>a.updateRepeatPassword(e),[a]),updateSubscribeChecked:(0,r.useCallback)(e=>a.updateSubscribeChecked(e),[a]),handleNextButton:(0,r.useCallback)(()=>a.handleNextButton(i),[a,i]),handleBackButton:(0,r.useCallback)(()=>a.handleBackButton(i),[a,i]),handleGoogleButton:(0,r.useCallback)(()=>a.handleGoogleNext(i),[a,i]),handleResetPasswordLink:(0,r.useCallback)(()=>a.handleResetPasswordLink(),[a]),isNextButtonDisabled:(0,r.useCallback)(()=>a.isNextButtonDisabled(i),[a,i]),shouldShowEmailError:(0,r.useCallback)(()=>a.shouldShowEmailError(i),[a,i]),isPasswordValid:(0,r.useCallback)(()=>a.isPasswordValid(i),[a,i]),isPasswordMatch:(0,r.useCallback)(()=>a.isPasswordMatch(i),[a,i])}};e.s(["useAuthFlow",0,h],23741);var p=e.i(90963);class m{dispatch;constructor(e){this.dispatch=e}startSubscriptionScenario(){this.dispatch((0,p.openSubscriptionModal)())}}e.s(["useAuth",0,()=>{let e=(0,t.useAppDispatch)(),a=h(),o=new m((0,t.useAppDispatch)()),{user:s,isLoading:r,error:l,isInitialized:n,isAuthModalOpen:c,authWindowType:d,authWindowProductId:u,authWindowFormState:p,authEmail:g,authPassword:w,authRepeatPassword:b,authSubscribeChecked:f,isSubscribed:k,subscriptionLoading:y}=(0,t.useAppSelector)(e=>e.auth),P=async t=>{let a=t||s?.email;if(!a)return console.warn("No email provided for subscription check"),!1;try{let t=await e((0,i.checkUserSubscription)(a));if(i.checkUserSubscription.fulfilled.match(t))return t.payload;return!1}catch(e){return console.error("Error checking subscription:",e),!1}},A=async(t,a)=>{let o=t||s?.email;if(!o)return!1;try{if(a){let t=await e((0,i.subscribeUser)(o));return i.subscribeUser.fulfilled.match(t)}{let t=await e((0,i.unsubscribeUser)(o));return i.unsubscribeUser.fulfilled.match(t)}}catch(t){console.error("Error toggling subscription:",t);let e=t instanceof Error?t.message:String(t);return(e.includes("deadline-exceeded")||e.includes("SENDY_ERROR"))&&console.warn("Subscription operation may have timed out, but might still be processed"),!1}};return{user:s,isAuthenticated:!!s,isLoading:r,error:l,isInitialized:n,isAuthModalOpen:c,authWindowType:d,authWindowProductId:u,authWindowFormState:p,authEmail
1:g,authPassword:w,authRepeatPassword:b,authSubscribeChecked:f,isSubscribed:k,subscriptionLoading:y,authFlow:a,subscriptionFlow:o,setAuthFormEmail:a.updateEmail,setAuthFormPassword:a.updatePassword,setAuthFormRepeatPassword:a.updateRepeatPassword,setAuthFormSubscribeChecked:a.updateSubscribeChecked,signIn:(t,a)=>e((0,i.signInWithEmail)({email:t,password:a})),signUp:(t,a)=>e((0,i.signUpWithEmail)({email:t,password:a})),resetUserPassword:t=>e((0,i.resetPassword)(t)),logout:()=>e((0,i.logOut)()),openModal:()=>{e((0,i.openAuthModal)())},closeModal:()=>{e((0,i.closeAuthModal)())},setWindowType:t=>{e((0,i.setAuthWindowType)(t))},setProductId:t=>{e((0,i.setAuthWindowProductId)(t))},setFormState:t=>{e((0,i.setAuthWindowFormState)(t))},setDownloadUrl:t=>{e((0,i.setPostAuthDownloadUrl)(t))},clearAuthError:()=>{e((0,i.clearError)())},checkSubscription:P,toggleSubscription:A}}],54338)},41166,e=>{e.v({collapsed:"productMenuCatalog-module__OTzEpq__collapsed",columnFadeIn:"productMenuCatalog-module__OTzEpq__columnFadeIn",expandButton:"productMenuCatalog-module__OTzEpq__expandButton",expanded:"productMenuCatalog-module__OTzEpq__expanded",itemSlideIn:"productMenuCatalog-module__OTzEpq__itemSlideIn",menuColumn:"productMenuCatalog-module__OTzEpq__menuColumn",menuColumnItems:"productMenuCatalog-module__OTzEpq__menuColumnItems",menuColumnTitle:"productMenuCatalog-module__OTzEpq__menuColumnTitle",menuItem:"productMenuCatalog-module__OTzEpq__menuItem",menuRow:"productMenuCatalog-module__OTzEpq__menuRow",scrollable:"productMenuCatalog-module__OTzEpq__scrollable",titleFadeIn:"productMenuCatalog-module__OTzEpq__titleFadeIn"})},55063,e=>{e.v({active:"catalogMenuItem-module__KtYxQG__active",arrayPoints:"catalogMenuItem-module__KtYxQG__arrayPoints",catalogMenuLink:"catalogMenuItem-module__KtYxQG__catalogMenuLink",catalogMenuRow:"catalogMenuItem-module__KtYxQG__catalogMenuRow",fullWidth:"catalogMenuItem-module__KtYxQG__fullWidth",newBadge:"catalogMenuItem-module__KtYxQG__newBadge",rightSide:"catalogMenuItem-module__KtYxQG__rightSide"})},27736,e=>{e.v({"error-fallback":"online-icon-module__8EJUoG__error-fallback","icon-wrapper":"online-icon-module__8EJUoG__icon-wrapper"})},1954,16923,46281,e=>{"use strict";var t=e.i(43476),i=e.i(41166),a=e.i(43794);e.i(47167);var o=e.i(55063),s=e.i(22016),r=e.i(71645),l=e.i(27736);let n=new Map,c=e=>{let{src:i,alt:o,size:s,width:c,height:d,color:u,className:h,style:p,...m}=e,[g,w]=(0,r.useState)(n.get(i)||null),[b,f]=(0,r.useState)(null),[k,y]=(0,r.useState)(!g);(0,r.useEffect)(()=>{if(!i){f("Source URL is not provided."),y(!1);return}if(w(n.get(i)||null),f(null),y(!n.has(i)),n.has(i))return;let e=!0;return(async()=>{try{let t=await fetch(i);if(!t.ok)throw Error(`Request failed: ${t.status}`);let a=await t.text();if(!a.includes("<svg"))throw Error("Invalid SVG content");e&&(n.set(i,a),w(a))}catch(t){e&&(t instanceof Error?f(t.message):f("An unknown error occurred"))}finally{e&&y(!1)}})(),()=>{e=!1}},[i]);let P={width:s??c??"1em",height:s??d??"1em",...p};return(u&&(P.color=u),k)?(0,t.jsx)("span",{style:P,className:l.default["icon-wrapper"]}):b?(0,t.jsx)("span",{className:(0,a.default)(l.default["icon-wrapper"],l.default["error-fallback"],h),style:P,title:`Failed to load icon: ${b}`,"aria-label":"Error loading icon",...m,children:"â "}):g?(0,t.jsx)("span",{className:(0,a.default)(l.default["icon-wrapper"],h),style:P,dangerouslySetInnerHTML:{__html:g},role:"img","aria-label":o,...m}):null};e.s(["default",0,c],16923);var d=e.i(92983);let u=e=>{let{icon:i,localIcon:r,title:l,arrayPoints:n,link:u,fullWidth:h,isActive:p,onClick:m,hideIcon:g=!1,badge:w}=e;return(0,t.jsxs)(s.default,{href:u,className:(0,a.default)(o.default.catalogMenuLink,{[o.default.fullWidth]:h,[o.default.active]:p}),onClick:m,children:[(0,t.jsxs)("div",{className:(0,a.default)(o.default.catalogMenuRow),children:[!g&&r&&(0,t.jsx)(d.default,{icon:r,size:24,color:"var(--contrastColor)"}),!g&&!r&&i&&(0,t.jsx)(c,{src:`https://directus.ls.graphics/assets/${i}`,size:24,color:"var(--contrastColor)"}),l]}),(0,t.jsxs)("div",{className:o.default.rightSide,children:[w&&(0,t.jsx)("span",{className:o.default.newBadge,children:w}),0!==n&&(0,t.jsx)("p",{className:(0,a.default)(o.default.arrayPoints),children:n})]})]})};e.s(["default",0,u],46281),e.s(["default",0,e=>{let{menuItems:o,enableExpand:s=!0}=e,[l,n]=(0,r.useState)(!1);if(!o||!Array.isArray(o))return null;
1let c=o.filter(e=>e.category&&""!==e.category.trim()).reduce((e,t)=>(e[t.category]||(e[t.category]=[]),e[t.category].push(t),e),{});return(0,t.jsx)("div",{className:(0,a.default)(i.default.menuRow,{[i.default.expanded]:l}),children:Object.entries(c).map((e,o)=>{let[r,c]=e,d=s?l?c:c.slice(0,6):c,h=s&&!l&&c.length>6;return(0,t.jsxs)("div",{className:(0,a.default)(i.default.menuColumn),children:[(0,t.jsx)("div",{className:(0,a.default)(i.default.menuColumnTitle),children:r}),(0,t.jsxs)("div",{className:(0,a.default)(i.default.menuColumnItems,{[i.default.collapsed]:h,[i.default.scrollable]:!s}),children:[d.map((e,s)=>(0,t.jsx)("div",{className:(0,a.default)(i.default.menuItem),style:{animationDelay:`${.15+.1*o+.05*s}s`},children:(0,t.jsx)(u,{icon:e.icon,localIcon:e.localIcon,title:e.title,arrayPoints:e.arrayPoints,link:e.link,fullWidth:!0,hideIcon:e.hideIcon,badge:e.badge})},s)),h&&(0,t.jsx)("button",{className:(0,a.default)(i.default.expandButton),onClick:()=>n(!0),children:"expand"})]})]},r)})})}],1954)},2686,e=>{e.v({logo:"logo-module__i4YuWG__logo"})},39211,e=>{"use strict";var t=e.i(43476),i=e.i(2686),a=e.i(43794);e.s(["default",0,e=>{let{size:o,width:s,height:r,className:l,bgColor:n="var(--primaryColor)",contentColor:c="white",style:d,...u}=e,h={...d,"--logo-bg":n,"--logo-content":c};return(0,t.jsxs)("svg",{className:(0,a.default)(i.default.logo,l),style:h,width:o||s||32,height:o||r||32,viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",...u,children:[(0,t.jsxs)("g",{clipPath:"url(#clip0_8597_6176)",children:[(0,t.jsx)("path",{d:"M16 32C24.8366 32 32 24.8366 32 16C32 7.16344 24.8366 0 16 0C7.16344 0 0 7.16344 0 16C0 24.8366 7.16344 32 16 32Z",fill:"var(--logo-content)"}),(0,t.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16C0 7.16344 7.16344 0 16 0ZM18.7866 10.9789C18.1016 10.9284 17.383 11.1252 16.8163 11.5899C16.236 12.0659 15.8608 12.786 15.8205 13.6798C15.7763 14.6612 16.2144 15.3599 16.7997 15.8646C17.3332 16.3246 18.0446 16.6664 18.6 16.9543C19.2081 17.2695 19.6954 17.5486 20.0385 17.9051C20.3467 18.2252 20.5472 18.6175 20.5356 19.2284C20.5214 19.9765 20.2437 20.4848 19.877 20.8132C19.4974 21.1532 18.9762 21.3404 18.4318 21.3434C17.8877 21.3464 17.3643 21.1652 16.9792 20.8257C16.6066 20.4972 16.3168 19.9803 16.2902 19.2061L14.6465 19.2625C14.6876 20.4602 15.1586 21.413 15.8915 22.0593C16.6119 22.6944 17.5386 22.9931 18.4408 22.9881C19.3427 22.9831 20.2639 22.6746 20.9743 22.0383C21.6976 21.3905 22.1575 20.4419 22.18 19.2597C22.2005 18.1825 21.8124 17.3764 21.2235 16.7645C20.6694 16.1889 19.9511 15.8021 19.357 15.4942C18.7102 15.1589 18.2231 14.9203 17.8737 14.619C17.5762 14.3624 17.4471 14.119 17.4635 13.7538C17.4839 13.3013 17.6588 13.0261 17.8593 12.8616C18.0736 12.6859 18.3667 12.5971 18.6657 12.6191C18.9621 12.641 19.2261 12.7684 19.4031 12.9778C19.5719 13.1774 19.7201 13.5214 19.6593 14.0929L21.2948 14.2667C21.3955 13.3189 21.1602 12.5088 20.6592 11.916C20.1663 11.3329 19.4741 11.0296 18.7866 10.9789ZM12.5024 9.65872V17.9777H16.0294V16.333H14.1471V9.65872H12.5024ZM9.55837 13.6933C9.013 13.6933 8.57087 14.1354 8.57087 14.6808C8.57088 15.2262 9.013 15.6683 9.55837 15.6683C10.1037 15.6683 10.5458 15.2262 10.5458 14.6808C10.5458 14.1354 10.1037 13.6933 9.55837 13.6933Z",fill:"var(--logo-bg)"})]}),(0,t.jsx)("defs",{children:(0,t.jsx)("clipPath",{id:"clip0_8597_6176",children:(0,t.jsx)("rect",{width:"32",height:"32",fill:"var(--logo-content)"})})})]})}])},28480,e=>{"use strict";let t=null;function i(){if(window.chaportConfig||(window.chaportConfig={appId:"61f7f72aa429617e9e00a893"}),!window.chaport){let e=window.chaport={_q:[],_l:{},q:function(){for(var t=arguments.length,i=Array(t),a=0;a<t;a++)i[a]=arguments[a];e._q.push(i)},on:(t,i)=>{e._l[t]||(e._l[t]=[]),e._l[t].push(i)}}}}async function a(){i(),function(){let e=window.chaport;if(e)try{let t=e.q;if("function"==typeof t)return void t("open");let i=e.open;if("function"==typeof i)return void i();if("function"==typeof e)return void e("open");let a=e.show;if("function"==typeof a)a();else{let t=e.q;"function"==typeof t&&t("show")}}catch{}}(),await ((i(),window.chaport&&"function"==typeof window.chaport.open)?Promise.resolve():t||(t=(i(),new Promise((e,t)=>
1{let i=document.createElement("script");i.type="text/javascript",i.async=!0,i.src="https://app.chaport.com/javascripts/insert.js",i.onload=()=>e(),i.onerror=()=>t(Error("Failed to load Chaport script"));let a=document.getElementsByTagName("script")[0];a&&a.parentNode?a.parentNode.insertBefore(i,a):document.head.appendChild(i)})).finally(()=>{t=null})))}e.s(["openChaportChat",()=>a])}]);
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.