1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/gif-KSSVKEVe.js","assets/app-RsKea8o5.js","assets/app-R9khmWK5.css"])))=>i.map(i=>d[i]); 2import{u as Ee,r as m,g as B,A as Fe,av as _e,d as je,E as Oe,p as he,c as b,o as p,b as d,a as s,w as W,t as u,e,ar as de,h as Ae,j as G,F as Y,i as I,f as S,ac as be,aq as xe,J as we,l as ke,G as De,n as ye}from"./app-RsKea8o5.js";import{_ as x}from"./HugeiconsIcon.vue_vue_type_script_setup_true_lang-D36_Is65.js";import{_ as ee}from"./index-BmOTFpO0.js";import{_ as Ce}from"./index-Djm_wzqU.js";import{f as j,_ as Ve,p as Le}from"./useVideoTrimmer-DTJZy5nh.js";import{_ as ze}from"./LandingLayout.vue_vue_type_script_setup_true_lang-0zOGT4pF.js";import{u as Be,_ as Ge,a as Ne,b as He,c as Ke,d as Xe,e as Ze,f as Je}from"./ToolUpgradeModal.vue_vue_type_script_setup_true_lang-DDZThVnh.js";import{_ as Qe}from"./FileDropZone.vue_vue_type_script_setup_true_lang-YVKfwl1W.js";import{W as Ye,_ as et}from"./ProcessingProgress.vue_vue_type_script_setup_true_lang-BYmL7o5J.js";import{_ as tt}from"./HowItWorksSection.vue_vue_type_script_setup_true_lang-BfsTQhwS.js";import{_ as ot}from"./CanonicalLink.vue_vue_type_script_setup_true_lang-BeYc7yu1.js";import{d as Te}from"./utils-Cq45lf33.js";import{S as st}from"./Shield01Icon-CKvIlKQn.js";import{F as lt}from"./FlashIcon-CqVHkz1P.js";import{L as Me}from"./LockIcon-DHdaZzKS.js";import{F as at}from"./FileVideoIcon-CctcsyeR.js";import{C as nt}from"./Cancel01Icon-DGojgfc9.js";import{C as it}from"./Clock01Icon-CC13fDrI.js";import{P as rt}from"./PauseIcon-C97MJQFj.js";import{P as dt}from"./PlayIcon-eNaA-8sj.js";import{D as ut}from"./DashboardSpeed01Icon-B5nlm4SL.js";import{L as ct}from"./Loading03Icon-CHeztXX0.js";import{I as mt}from"./AppNavbar.vue_vue_type_script_setup_true_lang-CTOJA9U3.js";import{C as ft}from"./CheckmarkCircle02Icon-D-PTcbNP.js";import{A as pt}from"./ArrowDataTransferHorizontalIcon-CRPQqiN_.js";import{D as vt}from"./Download01Icon-DWP7rFug.js";import"./RovingFocusGroup-D3QouwLK.js";import"./useForwardExpose-DXi0eF_E.js";import"./clamp-BstbYvQo.js";import"./useFormControl-BRvJDsT8.js";import"./VisuallyHiddenInput-CdGkIGTW.js";import"./VisuallyHidden-Gnp4jwIA.js";import"./DropdownMenuTrigger.vue_vue_type_script_setup_true_lang-DqLmnnaC.js";import"./Teleport-CpnQCY9y.js";import"./index-B_siYGUE.js";import"./LandingFooter.vue_vue_type_script_setup_true_lang-DmJkehx-.js";import"./AppLogoIcon.vue_vue_type_script_setup_true_lang-Cgx8zpHc.js";import"./useLocaleSwitcher-DjLXDJUg.js";import"./Tick01Icon-CMS0_aRT.js";import"./Sonner.vue_vue_type_style_index_0_lang-VAYwp5ry.js";import"./useFlashToasts-50RPs8wm.js";import"./useAnalytics-Bxkp3130.js";import"./useBrowserDetect-U22uqA7C.js";import"./ArrowRight01Icon-D04wg_Dq.js";import"./DialogTitle.vue_vue_type_script_setup_true_lang-Dp74P03s.js";import"./DialogDescription-DZJI7Kf4.js";import"./DialogTitle-CmvgSLDH.js";import"./TabsTrigger.vue_vue_type_script_setup_true_lang-CEuQ2lZj.js";import"./RovingFocusItem-OppQ6H3F.js";import"./TabsContent.vue_vue_type_script_setup_true_lang-D9VN7BO2.js";import"./Input.vue_vue_type_script_setup_true_lang-D1HhNgzQ.js";import"./index-Z30Umu-o.js";import"./Label.vue_vue_type_script_setup_true_lang-CySY6CII.js";import"./index-ww_ZSx8X.js";import"./AlertCircleIcon-B85MyTNx.js";import"./InformationCircleIcon-CUKxAkIj.js";import"./Alert01Icon-fSMjLWdw.js";import"./CrownIcon-CLp08jGR.js";import"./DialogFooter.vue_vue_type_script_setup_true_lang-BSky3GSp.js";import"./Upload01Icon-C5fhFoE5.js";import"./Progress.vue_vue_type_script_setup_true_lang-D7UVyZyZ.js";import"./isValueEqualOrExist-BirkS3uf.js";import"./ohash.D__AXeF1-C-E83dC9.js";import"./CollapsibleTrigger-BkolMn4l.js";import"./ArrowDown01Icon-DJ3rel_9.js";import"./DialogTrigger-Cd5Ui6Ea.js";import"./index-vmwrf4-U.js";import"./Mail01Icon-BnQa5Zt3.js";import"./NewsIcon-CRzk0O48.js";import"./WorkHistoryIcon-DyTXomyg.js";import"./PlayCircleIcon-BtdLi83T.js";const gt=[["path",{d:"M7.86292 12.6614L9.99786 14.4926L12.6639 4.26536C12.8615 3.5074 13.5456 2.97852 14.3283 2.97852C15.4379 2.97852 16.2572 4.01415 16.0026 5.09485L14.801 10.1953L16.489 10.4653C18.4186 10.755 19.3835 10.8997 20.063 11.3072C2
21.1856 11.9802 21.9988 12.9908 21.9988 14.4662C21.9988 15.4938 21.745 16.1833 21.128 18.0356C20.7365 19.211 20.5407 19.7988 20.2215 20.2639C19.6959 21.0299 18.9205 21.589 18.0283 21.8459C17.4863 22.0017 16.8673 22.0017 15.6292 22.0017H14.5798C12.9337 22.0017 12.1107 22.0017 11.3781 21.6995C11.2467 21.6453 11.1182 21.5841 10.9934 21.5163C10.2969 21.1378 9.77798 20.4986 8.74003 19.2203L5.37984 15.0816C4.86348 14.4458 4.86004 13.5355 5.37157 12.8957C5.98639 12.1266 7.11568 12.0204 7.86292 12.6614Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M7.33204 2.10402C7.33204 2.10402 9.55241 1.83972 9.87097 2.1537C10.1165 2.39578 9.87097 4.61648 9.87097 4.61648M9.87097 2.1537L6.90055 5.09574M4.64903 9.85845C4.64903 9.85845 2.42866 10.1227 2.11011 9.80877C1.86456 9.56668 2.11011 7.34599 2.11011 7.34599M2.11011 9.80877L5.08053 6.86673",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],_t={mp4:"MP4",m4v:"MP4",webm:"WebM",mkv:"MKV",mov:"MOV",avi:"AVI",ogg:"OGG"},ht=".mp4,.m4v,.webm,.mkv,.mov,.avi,.ogg,video/mp4,video/webm,video/x-matroska,video/quicktime,video/ogg,video/avi",bt=2*1024*1024*1024;function xt(i){return{5:{label:"5 FPS",description:i("tools.gif.frame_rate_desc.fps_5"),fps:5},10:{label:"10 FPS",description:i("tools.gif.frame_rate_desc.fps_10"),fps:10},15:{label:"15 FPS",description:i("tools.gif.frame_rate_desc.fps_15"),fps:15},20:{label:"20 FPS",description:i("tools.gif.frame_rate_desc.fps_20"),fps:20}}}function wt(i){return{original:{label:i("tools.shared.original"),description:i("tools.gif.width_desc.original"),maxWidth:null},640:{label:"640px",description:i("tools.gif.width_desc.w640"),maxWidth:640},480:{label:"480px",description:i("tools.gif.width_desc.w480"),maxWidth:480},320:{label:"320px",description:i("tools.gif.width_desc.w320"),maxWidth:320}}}function kt(i){const o=i.name.split(".").pop()?.toLowerCase();return _t[o??""]??null}function yt(i,o,$){return new Promise((t,f)=>{if(Math.abs(i.currentTime-o)<.01){t();return}const c=()=>{i.removeEventListener("seeked",v),i.removeEventListener("error",g)},v=()=>{c(),t()},g=()=>{c(),f(new Error($("tools.gif.error.seek_failed")))};i.addEventListener("seeked",v),i.addEventListener("error",g),i.currentTime=o})}function Ct(){const{__:i}=Ee(),o=xt(i),$=wt(i),t=m(null),f=m(null),c=m(null),v=m(null),g=m(!1),_=m(!1),h=m(0),U=m(null),y=m(null),O=m(10),T=m("480"),P=m(0),C=m(0),L=m(0);let q=!1,w=null,R=null;const N=B(()=>t.value?Te(t.value.size):""),H=B(()=>c.value?Te(c.value.size):""),te=B(()=>c.value!==null),K=B(()=>Math.max(0,Math.round((L.value-C.value)*10)/10)),oe=B(()=>t.value!==null&&!_.value&&!g.value&&P.value>0&&K.value>0);function se(r){const k=kt(r);return k?r.size>bt?(U.value=i("tools.shared.engine.error_too_large"),!1):(Z(),c.value=null,U.value=null,t.value=r,f.value=k,!0):(U.value=i("tools.shared.engine.error_unsupported_avi"),!1)}function le(r){O.value=r}function l(r){T.value=r}function a(r){P.value=r,C.value=0,L.value=r}function n(r){const k=Math.max(0,Math.min(r,L.value-.1));C.value=Math.round(k*10)/10}function M(r){const k=Math.max(C.value+.1,Math.min(r,P.value));L.value=Math.round(k*10)/10}async function ae(){if(!t.value)return!1;q=!1,U.value=null,h.value=0,Z(),c.value=null;let r=null;try{g.value=!0,y.value=i("tools.gif.status.loading_encoder");const[{default:k},{default:J}]=await Promise.all([_e(()=>import("./gif-KSSVKEVe.js").then(F=>F.g),__vite__mapDeps([0,1,2])),_e(()=>import("./gif.worker-CpJ3XJax.js"),[])]),Ie=new Blob([J],{type:"application/javascript"});r=URL.createObjectURL(Ie),g.value=!1,_.value=!0,y.value=i("tools.gif.status.loading_video"),w=URL.createObjectURL(t.value);const E=document.createElement("video");if(E.muted=!0,E.playsInline=!0,E.preload="auto",E.src=w,await new Promise((F,z)=>{E.onloadeddata=()=>F(),E.onerror=()=>z(new Error(i("tools.gif.error.load_video_failed")))}),q)throw new Error("Cancelled");const ne=E.videoWidth,ue=E.videoHeight,Q=$[T.value];let A=ne,D=ue;Q.maxWidth!==null&&ne>Q.maxWidth&&(A=Q.maxWidth,D=Math.round(ue*(Q.maxWidth/ne))),A=Math.round(A/2)*2,D=Math.round(D/2)*2;
2const ie=document.createElement("canvas");ie.width=A,ie.height=D;const ce=ie.getContext("2d"),V=new k({workers:Math.min(navigator.hardwareConcurrency||4,8),quality:10,width:A,height:D,workerScript:r,dither:"FloydSteinberg"});R=V,y.value=i("tools.gif.status.extracting_frames");const re=O.value,qe=Math.round(1e3/re),Se=1/re,me=C.value,fe=L.value,pe=Math.ceil((fe-me)*re);for(let F=0;F<pe;F++){if(q)throw new Error("Cancelled");const z=Math.min(me+F*Se,fe);await yt(E,z,i),ce.drawImage(E,0,0,A,D),V.addFrame(ce,{delay:qe,copy:!0}),h.value=Math.round((F+1)/pe*60)}if(q)throw new Error("Cancelled");y.value=i("tools.gif.status.encoding");const $e=await new Promise((F,z)=>{V.on("progress",We=>{const ge=60+Math.round(We*39);h.value=Math.min(ge,99),ge>=90&&(y.value=i("tools.shared.engine.finishing"))}),V.on("finished",F),V.on("error",z),V.render()});R=null,URL.revokeObjectURL(w),URL.revokeObjectURL(r),w=null,r=null;const Pe=t.value.name.replace(/\.[^.]+$/,""),ve=new File([$e],`${Pe}.gif`,{type:"image/gif"});return c.value=ve,v.value=URL.createObjectURL(ve),h.value=100,y.value=null,_.value=!1,!0}catch(k){const J=k instanceof Error?k.message:i("tools.gif.error.conversion_failed");return J!=="Cancelled"&&(console.error("GIF conversion error:",k),U.value=J),y.value=null,g.value=!1,_.value=!1,R=null,w&&(URL.revokeObjectURL(w),w=null),r&&URL.revokeObjectURL(r),!1}}function X(){q=!0,R&&(R.abort(),R=null),w&&(URL.revokeObjectURL(w),w=null),g.value=!1,_.value=!1,h.value=0,y.value=null}function Ue(){if(!v.value||!c.value)return;const r=document.createElement("a");r.href=v.value,r.download=c.value.name,document.body.appendChild(r),r.click(),document.body.removeChild(r)}function Z(){v.value&&(URL.revokeObjectURL(v.value),v.value=null)}function Re(){X(),Z(),t.value=null,f.value=null,c.value=null,U.value=null,O.value=10,T.value="480",P.value=0,C.value=0,L.value=0}return Fe(()=>{Z()}),{selectedFile:t,inputFormat:f,inputFileSize:N,outputFile:c,outputFileSize:H,downloadUrl:v,isComplete:te,isLoading:g,isConverting:_,progress:h,error:U,status:y,duration:P,startTime:C,endTime:L,clipDuration:K,frameRate:O,gifWidth:T,canConvert:oe,selectFile:se,setDuration:a,setStartTime:n,setEndTime:M,setFrameRate:le,setWidth:l,startConversion:ae,cancelConversion:X,downloadOutput:Ue,reset:Re,frameRateConfigs:o,widthConfigs:$}}const Lt=["content"],Tt=["content"],Mt=["content"],Et=["content"],Ft=["content"],Ut=["content"],Rt={id:"converter",class:"border-b py-16 lg:py-24"},It={class:"container mx-auto px-4 sm:px-6 lg:px-8"},qt={class:"mx-auto max-w-2xl"},St={key:0,class:"flex h-80 items-center justify-center rounded-2xl border border-dashed border-border/50 bg-muted/20"},$t={class:"text-muted-foreground"},Pt={key:1,class:"space-y-6"}
2,Wt={class:"flex items-center gap-4 rounded-xl border bg-card p-4"},jt={class:"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-emerald-500/10"},Ot={class:"min-w-0 flex-1"},At={class:"truncate text-sm font-semibold text-foreground"},Dt={class:"flex items-center gap-2 text-xs text-muted-foreground"},Vt={key:0,class:"overflow-hidden rounded-xl border bg-black"},zt={key:1,class:"space-y-3"},Bt={class:"flex items-center justify-between"},Gt={class:"flex items-center gap-2 text-sm font-medium text-foreground"},Nt={class:"flex items-center gap-3"},Ht={class:"sr-only"},Kt={class:"flex items-center gap-3"},Xt={class:"flex-1"},Zt={class:"mb-1 block text-xs text-muted-foreground"},Jt={class:"flex-1"},Qt={class:"mb-1 block text-xs text-muted-foreground"},Yt={key:2,class:"space-y-5"},eo={class:"space-y-3"},to={class:"flex items-center gap-2 text-sm font-medium text-foreground"},oo={class:"grid grid-cols-4 gap-2"},so=["onClick"],lo={class:"text-sm font-semibold text-foreground"},ao={class:"text-[10px] leading-tight text-muted-foreground"},no={class:"space-y-3"},io={class:"flex items-center gap-2 text-sm font-medium text-foreground"},ro={class:"grid grid-cols-4 gap-2"},uo=["onClick"],co={class:"text-sm font-semibold text-foreground"},mo={class:"text-[10px] leading-tight text-muted-foreground"},fo={key:3,class:"flex flex-col items-center gap-3 rounded-xl border bg-muted/30 px-8 py-10"},po={class:"text-sm font-medium text-foreground"},vo={class:"text-xs text-muted-foreground"},go={key:6,class:"space-y-4 rounded-xl border border-emerald-200/50 bg-emerald-50/50 p-5 dark:border-emerald-800/30 dark:bg-emerald-900/10"},_o={class:"flex items-center gap-3"},ho={class:"text-sm font-semibold text-foreground"},bo={class:"flex items-center gap-3 text-sm text-muted-foreground"},xo={class:"font-medium text-foreground"},wo={key:0,class:"overflow-hidden rounded-lg border bg-black/5 dark:bg-white/5"},ko=["src","alt"],yo={class:"flex gap-3"},Co={key:7,class:"rounded-lg border border-destructive/30 bg-destructive/5 px-4 py-3 text-sm text-destructive"},Lo={class:"flex items-center justify-center gap-2 text-xs text-muted-foreground"},zs=je({layout:ze,__name:"VideoToGif",setup(i){const{__:o}=Ee(),$=m(!1);Oe(()=>{$.value=!0});const t=Ct(),f=Be("video_to_gif");he(()=>t.isComplete.value,l=>{l&&f.recordUsage()});const c=m(null),v=m(null),g=m(!1),_=m(""),h=m(""),U=async l=>{l[0]&&await y(l[0])};async function y(l){if(!t.selectFile(l))return;L(),v.value=URL.createObjectURL(l),await De();const n=c.value;if(!n)return;n.src=v.value;const M=()=>{t.setDuration(n.duration),_.value=j(0),h.value=j(n.duration),P(n)};n.duration&&Number.isFinite(n.duration)?M():n.addEventListener("loadedmetadata",M,{once:!0}),n.addEventListener("play",()=>{g.value=!0}),n.addEventListener("pause",()=>{g.value=!1})}function O(){const l=c.value;l&&(l.paused?(l.currentTime>=t.endTime.value&&(l.currentTime=t.startTime.value),l.play()):l.pause())}let T=null;function P(l){C(),T=()=>{t.isConverting.value||t.isComplete.value||l.currentTime>=t.endTime.value&&(l.currentTime=t.startTime.value)},l.addEventListener("timeupdate",T)}function C(){T&&c.value&&c.value.removeEventListener("timeupdate",T),T=null}function L(){v.value&&(URL.revokeObjectURL(v.value),v.value=null)}Fe(()=>{C(),L()});const q=m([0,0]);he([()=>t.startTime.value,()=>t.endTime.value],([l,a])=>{q.value=[l,a],_.value=j(l),h.value=j(a)});function w(l){if(!l||l.length<2)return;const a=t.startTime.value,n=t.endTime.value;t.setStartTime(l[0]),t.setEndTime(l[1]);const M=c.value;if(M){const ae=Math.abs(l[0]-a)>.01,X=Math.abs(l[1]-n)>.01;ae?M.currentTime=t.startTime.value:X&&(M.currentTime=t.endTime.value)}}function R(){const l=Le(_.value);l!==null&&(t.setStartTime(l),c.value&&(c.value.currentTime=t.startTime.value)),_.value=j(t.startTime.value)}function N(){const l=Le(h.value);l!==null&&(t.setEndTime(l),c.value&&(c.value.currentTime=t.endTime.value)),h.value=j(t.endTime.value)}function H(){C();const l=c.value;l&&(l.pause(),l.removeAttribute("src"),l.load()),g.value=!1,L(),t.reset(),_.value="",h.value=""}const te=[5,10,15,20],K=["original","640","480","320"],oe=[{num:"01",title:o("tools.gif.step.s1_title"),description:o("tools.gif.step.s1_desc")},{num:"02",title:o("tools.gif.step.s2_title"),description:o("tools.gif.step.s2_desc")},{num:"03",title:o("tools.gif.step.s3_title"),description:o("tools.gif.step.s3_desc")}],se=[{icon:st,title:o("tools.shared.benefit.no_upload_title"),description:o("tools.gif.benefit.no_upload_desc")},{icon:lt,title:o("tools.shared.benefit.hardware_accelerated_title"),description:o("tools.gif.benefit.hardware_desc")},{icon:Me,title:o("tools.shared.benefit.private_title"),description:o("tools.gif.benefit.private_desc")},{icon:Ye,title:o("tools.shared.benefit.works_offline_title"),description:o("tools.gif.benefit.works_offline_desc")}],le=[{question:o("tools.gif.faq.q1"),answer:o("tools.gif.faq.a1")},{question:o("tools.gif.faq.q2"),answer:o("tools.gif.faq.a2")},{question:o("tools.gif.faq.q3"),answer:o("tools.gif.faq.a3")},{question:o("tools.gif.faq.q4"),answer:o("tools.gif.faq.a4")},{question:o("tools.gif.faq.q5"),answer:o("tools.gif.faq.a5")},{question:o("tools.gif.faq.q6"),answer:o("tools.gif.faq.a6")},{question:o("tools.gif.faq.q7"),answer:o("tools.gif.faq.a7")}];return(l,a)=>(p(),b(Y,null,[d(e(Ae),null,{default:W(()=>[s("title",null,` 3 `+u(e(o)("tools.gif.meta.title",{app_name:e(de)}))+` 4 `,1),s("meta",{name:"description",content:e(o)("tools.gif.meta.description")},null,8,Lt),s("meta",{name:"keywords",content:e(o)("tools.gif.meta.keywords")},null,8,Tt),a[10]||(a[10]=s("meta",{property:"og:type",content:"website"},null,-1)),a[11]||(a[11]=s("meta",{property:"og:url",content:"https://vidow.io/tools/video-to-gif"},null,-1)),s("meta",{property:"og:title",content:e(o)("tools.gif.meta.og_title",{app_name:e(de)})},null,8,Mt),s("meta",{property:"og:description",content:e(o)("tools.gif.meta.og_description")},null,8,Et),a[12]||(a[12]=s("meta",{property:"og:image",content:"https://vidow.io/images/og-video-to-gif.png"},null,-1)),a[13]||(a[13]=s("meta",{property:"twitter:card",content:"summary_large_image"},null,-1)),a[14]||(a[14]=s("meta",{property:"twitter:url",content:"https://vidow.io/tools/video-to-gif"},null,-1)),s("meta",{property:"twitter:title",content:e(o)("tools.gif.meta.twitter_title",{app_name:e(de)})},null,8,Ft),s("meta",{property:"twitter:description",content:e(o)("tools.gif.meta.twitter_description")},null,8,Ut),a[15]||(a[15]=s("meta",{property:"twitter:image",content:"https://vidow.io/images/og-video-to-gif.png"},null,-1))]),_:1}),d(ot),d(Ge,{title:e(o)("tools.gif.hero.title"),subtitle:e(o)("tools.gif.hero.subtitle"),"anchor-id":"converter","anchor-label":e(o)("tools.gif.hero.anchor_label")},null,8,["title","subtitle","anchor-label"]),s("section",Rt,[s("div",It,[s("div",qt,[d(Ne,{remaining:e(f).remaining.value,limit:e(f).limit.value,"access-mode":e(f).accessMode.value,"trial-enabled":e(f).trialEnabled.value,tool:"video_to_gif"},null,8,["remaining","limit","access-mode","trial-enabled"]),$.value?(p(),b("div",Pt,[e(t).selectedFile.value?(p(),b(Y,{key:1},[s("div",Wt,[s("div",jt,[d(x,{icon:e(at),class:"h-5 w-5 text-emerald-600 dark:text-emerald-400"},null,8,["icon"])]),s("div",Ot,[s("p",At,u(e(t).selectedFile.value.name),1),s("div",Dt,[d(e(Ce),{variant:"secondary",class:"text-[10px] uppercase"},{default:W(()=>[S(u(e(t).inputFormat.value),1)]),_:1}),s("span",null,u(e(t).inputFileSize.value),1)])]),d(e(ee),{variant:"ghost",size:"icon",class:"shrink-0",disabled:e(t).isConverting.value||e(t).isLoading.value,onClick:a[0]||(a[0]=n=>H())},{default:W(()=>[d(x,{icon:e(nt),class:"h-4 w-4"},null,8,["icon"])]),_:1},8,["disabled"])]),!e(t).isComplete.value&&v.value?(p(),b("div",Vt,[s("video",{ref_key:"videoRef",ref:c,playsinline:"",class:"w-full"},null,512)])):I("",!0),!e(t).isConverting.value&&!e(t).isLoading.value&&!e(t).isComplete.value&&e(t).duration.value>0?(p(),b("div",zt,[s("div",Bt,[s("label",Gt,[d(x,{icon:e(it),class:"h-4 w-4 text-muted-foreground"},null,8,["icon"]),S(" "+u(e(o)("tools.gif.select_clip_range")),1)]),d(e(Ce),{variant:"secondary",class:"text-xs tabular-nums"},{default:W(()=>[S(u(e(j)(e(t).clipDuration.value)),1)]),_:1})]),s("div",Nt,[s("button",{class:"flex h-9 w-9 shrink-0 items-center justify-center rounded-full border bg-card text-foreground transition-colors hover:bg-muted",onClick:O},[g.value?(p(),G(x,{key:0,icon:e(rt),class:"h-4 w-4"},null,8,["icon"])):(p(),G(x,{key:1,icon:e(dt),class:"ms-0.5 h-4 w-4"},null,8,["icon"])),s("span",Ht,u(g.value?e(o)("tools.shared.pause"):e(o)("tools.shared.play")),1)]),d(e(Ve),{"model-value":q.value,min:0,max:e(t).duration.value,step:.1,"min-steps-between-thumbs":1,class:"flex-1 py-2","onUpdate:modelValue":w},null,8,["model-value","max"])]),s("div",Kt,[s("div",Xt,[s("label",Zt,u(e(o)("tools.shared.start")),1),be(s("input",{"onUpdate:modelValue":a[1]||(a[1]=n=>_.value=n),type:"text",class:"h-9 w-full rounded-md border bg-background px-3 text-sm tabular-nums focus:outline-none focus:ring-2 focus:ring-emerald-500/40",placeholder:"0:00.0",onBlur:R,onKeydown:we(R,["enter"])},null,544),[[xe,_.value]])]),s("div",Jt,[s("label",Qt,u(e(o)("tools.shared.end")),1),be(s("input",{"onUpdate:modelValue":a[2]||(a[2]=n=>h.value=n),type:"text",class:"h-9 w-full rounded-md border bg-background px-3 text-sm tabular-nums focus:outline-none focus:ring-2 focus:ring-emerald-500/40",placeholder:"0:00.0",onBlur:N,onKeydown:we(N,["enter"])},null,544),[[xe,h.value]])])])])):I("",!0),!e(t).isConverting.value&&!e(t).isLoading.value&&!e(t).isComplete.value?(p(),b("div",Yt,[s("div",eo,[s("label",to,[d(x,{icon:e(ut),class:"h-4 w-4 text-muted-foreground"},null,8,["icon"]),S(" "+u(e(o)("tools.gif.frame_rate_label")),1)]),s("div",oo,[(p(),b(Y,null,ke(te,n=>s("button",{key:n,class:ye(["flex flex-col items-center gap-1.5 rounded-xl border-2 px-2 py-3.5 text-center transition-all duration-200",e(t).frameRate.value===n?"border-emerald-500 bg-emerald-500/5 shadow-sm shadow-emerald-500/10 dark:border-emerald-400 dark:bg-emerald-400/5":"border-border/60 hover:border-border hover:bg-muted/30"]),onClick:M=>e(t).setFrameRate(n)},[s("span",lo,u(e(t).frameRateConfigs[n].label),1),s("span",ao,u(e(t).frameRateConfigs[n].description),1)],10,so)),64))])]),s("div",no,[s("label",io,[d(x,{icon:e(gt),class:"h-4 w-4 text-muted-foreground"},null,8,["icon"]),S(" "+u(e(o)("tools.gif.output_width_label")),1)]),s("div",ro,[(p(),b(Y,null,ke(K,n=>s("button",{key:n,class:ye(["flex flex-col items-center gap-1.5 rounded-xl border-2 px-2 py-3.5 text-center transition-all duration-200",e(t).gifWidth.value===n?"border-emerald-500 bg-emerald-500/5 shadow-sm shadow-emerald-500/10 dark:border-emerald-400 dark:bg-emerald-400/5":"border-border/60 hover:border-border hover:bg-muted/30"]),onClick:M=>e(t).setWidth(n)},[s("span",co,u(e(t).widthConfigs[n].label),1),s("span",mo,u(e(t).widthConfigs[n].description),1)],10,uo)),64))])])])):I("",!0),e(t).isLoading.value?(p(),b("div",fo,[d(x,{icon:e(ct),class:"h-8 w-8 animate-spin text-emerald-500"},null,8,["icon"]),s("p",po,u(e(t).status.value),1),s("p",vo,u(e(o)("tools.shared.first_use_hint")),1)])):I("",!0),e(t).isConverting.value?(p(),G(et,{key:4,progress:e(t).progress.value,status:e(t).status.value,onCancel:a[3]||(a[3]=n=>e(t).cancelConversion())},null,8,["progress","status"])):I("",!0),!e(t).isConverting.value&&!e(t).isLoading.value&&!e(t).isComplete.value?(p(),G(e(ee),{key:5,class:"h-12 w-full text-base",disabled:!e(t).canConvert.value,onClick:a[4]||(a[4]=n=>
4e(f).checkAndProcess(()=>e(t).startConversion()))},{default:W(()=>[d(x,{icon:e(mt),class:"me-2 h-4 w-4"},null,8,["icon"]),S(" "+u(e(o)("tools.gif.convert_button")),1)]),_:1},8,["disabled"])):I("",!0),e(t).isComplete.value?(p(),b("div",go,[s("div",_o,[d(x,{icon:e(ft),class:"h-5 w-5 text-emerald-600 dark:text-emerald-400"},null,8,["icon"]),s("span",ho,u(e(o)("tools.gif.conversion_complete")),1)]),s("div",bo,[s("span",null,u(e(t).inputFileSize.value),1),d(x,{icon:e(pt),class:"h-3.5 w-3.5"},null,8,["icon"]),s("span",xo,u(e(t).outputFileSize.value),1)]),e(t).downloadUrl.value?(p(),b("div",wo,[s("img",{src:e(t).downloadUrl.value,alt:e(o)("tools.gif.preview_alt"),class:"mx-auto max-h-80 object-contain"},null,8,ko)])):I("",!0),s("div",yo,[d(e(ee),{class:"flex-1",onClick:a[5]||(a[5]=n=>e(t).downloadOutput())},{default:W(()=>[d(x,{icon:e(vt),class:"me-2 h-4 w-4"},null,8,["icon"]),S(" "+u(e(o)("tools.gif.download_gif")),1)]),_:1}),d(e(ee),{variant:"outline",onClick:a[6]||(a[6]=n=>H())},{default:W(()=>[S(u(e(o)("tools.gif.convert_another")),1)]),_:1})])])):I("",!0),e(t).error.value?(p(),b("div",Co,u(e(t).error.value),1)):I("",!0)],64)):(p(),G(Qe,{key:0,accept:e(ht),subtitle:e(o)("tools.shared.browse_subtitle.mp4_webm_mkv_mov_avi_ogg"),onFilesSelected:U},null,8,["accept","subtitle"])),s("div",Lo,[d(x,{icon:e(Me),class:"h-3 w-3"},null,8,["icon"]),s("span",null,u(e(o)("tools.shared.privacy_note")),1)])])):(p(),b("div",St,[s("p",$t,u(e(o)("tools.gif.loading")),1)]))])])]),d(tt,{steps:oe}),d(He,{title:e(o)("tools.gif.why.title"),subtitle:e(o)("tools.shared.why_in_browser_subtitle"),features:se},null,8,["title","subtitle"]),d(Ke,{faqs:le}),d(Xe,{title:e(o)("tools.gif.cta.title"),description:e(o)("tools.gif.cta.description"),"primary-link":{label:e(o)("tools.gif.cta.primary_label"),href:"/tools/trim"},"secondary-link":{label:e(o)("tools.gif.cta.secondary_label"),href:"/tools/compress"}},null,8,["title","description","primary-link","secondary-link"]),d(Ze,{open:e(f).showAuthModal.value,onClose:a[7]||(a[7]=n=>e(f).showAuthModal.value=!1),onAuthenticated:a[8]||(a[8]=n=>e(f).onAuthenticated())},null,8,["open"]),d(Je,{open:e(f).showUpgradeModal.value,"trial-enabled":e(f).trialEnabled.value,tool:"video_to_gif","access-mode":e(f).accessMode.value,onClose:a[9]||(a[9]=n=>e(f).showUpgradeModal.value=!1)},null,8,["open","trial-enabled","access-mode"])],64))}});export{zs as default};
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.