1import{p as E,_ as ae,i as oe,j as le,k as R,r as w,l as $,w as U,c as u,m as V,e as t,n as C,f as m,q,v as S,a as ie,x as g,y as h,z as L,A as x,B as F,t as B,F as re,C as ne,D as de,E as ue,G as _,H as O,o as n,I as pe}from"./_hdt44u-.js";import me from"./CZATXXps.js";import ce from"./CbEikIOY.js";import{u as fe}from"./gU2mQjUN.js";import{u as ve}from"./DYkvA0Hf.js";import{u as ge}from"./CpHrZt8g.js";import"./CM1uD49L.js";const he=E("/images/Frame1.png"),be=E("/images/Frame.png"),ye=E("/images/Frame.gif"),ke={class:"container-ud"},we={key:0,class:"success-page"},_e={class:"dramaTitle"},Te={key:1,class:"norem-page"},Ue={class:"dramaTitle"},Se={class:"middle"},xe={class:"text-wrapper"},Me={style:{margin:"40px 0"}},Ce={class:"form-section"},Le={class:"form-item"},Fe={class:"form-input-wrap"},ze={key:0,class:"error-tip"},Ee={class:"form-item"},Pe={class:"form-input-wrap"},Ae={key:0,class:"error-tip"},Ie={class:"form-item"},Ne={class:"form-input-wrap"},De={key:0,class:"error-tip"},Re={class:"form-item form-item-upload"},$e={class:"upload-area"},Ve={key:0,class:"file-list"},qe=["title"],Be=["onClick"],Oe={key:1,src:be,alt:"success",class:"video-icon"},je={key:2,src:ye,alt:"uploading",class:"video-icon"},We=["onClick"],Ge=["disabled"],He={key:1,class:"error-tip"},Xe={key:2,class:"error-tip"},Je={class:"form-item"},Ze={class:"agreement-wrap"},Ke={class:"agreement-label"},Qe={key:0,class:"error-tip"},Ye={class:"form-submit"},et=["disabled"],tt={key:0,class:"btn-loading"},st="https://shortweb.shorttv.live/app-api/app",at=500*1024*1024,z=10,ot={__name:"udrama",setup(lt){const{isMobile:P}=ve(),{request:j}=fe(),A=ge(),{locale:W}=oe(),G=le("lang"),H={"www.shorttv.live":"https://shortweb.shorttv.live/app-api/app","pre-www.shorttv.live":"https://shortweb-pre.shorttv.live/app-api/app","test-www.shorttv.live":"https://shortweb-test.shorttv.live/app-api/app"},X=window.location.hostname,I=H[X]||st,l=R({bookTitle:"",editor:"",email:"",agreement:!1}),a=R({bookTitle:!1,editor:!1,email:"",file:!1,fileSize:!1,fileType:!1,agreement:!1}),i=w([]),y=w([]),k=w(!1),f=w(null),M=w(!1),T=w(!1);$(()=>i.value.some(o=>o.status==="uploading"));const N=$(()=>i.value.length>=z),J=["mp4","mov"],Z=async o=>{const r={"Language-Code":W.value||G.value||"en"};console.log("ð å¼å§S3ä¸ä¼ æµç¨:",o.name);const c=await $fetch("/webUploadDrama/getUploadToken",{baseURL:I,method:"GET",headers:r}),s=O(c),p=s==null?void 0:s.data;if(!p)throw new Error("Failed to get upload token");console.log("� è·åuploadTokenæå");const b=await $fetch("/webUploadDrama/getS3PresignedUrl",{baseURL:I,method:"GET",params:{fileName:o.name,uploadToken:p},headers:r}),d=O(b),v=d==null?void 0:d.data;if(!v)throw new Error("Failed to get presigned URL");return console.log("ð è·åé¢ç¾åURLæå"),await fetch(v,{method:"PUT",body:o,headers:{"Content-Type":o.type||"video/mp4"}}),console.log("âï¸ æä»¶å·²ä¸ä¼ å°S3"),v.split("?")[0]},D=async(o,e)=>{var r,c,s,p,b;i.value[e].status="uploading",i.value[e].errorMessage="",i.value[e].uploadProgress=0;try{const d=await Z(o);if(!d)throw new Error("Upload failed: file URL is empty");i.value[e].fileUrl=d,i.value[e].filePath=d,i.value[e].fileSize=o.size,i.value[e].fileType=o.type,i.value[e].status="success",i.value[e].uploadProgress=100,console.log("â
æä»¶ä¸ä¼ æå:",d)}catch(d){let v="Unknown error";throw(r=d.message)!=null&&r.includes("upload token")?v="Failed to get upload token":(c=d.message)!=null&&c.includes("presigned")?v="Failed to get upload URL":(s=d.message)!=null&&s.includes("file URL is empty")?v="Upload failed: no file URL returned":(p=d.message)!=null&&p.includes("fetch")||(b=d.message)!=null&&b.includes("network")||d.name==="TypeError"||d.name==="AbortError"?v="Network error, please check your connection":v=d.message||"Upload failed",i.value[e].status="error",i.value[e].errorMessage=v,console.error("â æä»¶ä¸ä¼ 失败:",v,d),d}},K=o=>{i.value.splice(o,1),y.value.splice(o,1),i.value.length===0&&_(()=>{f.value&&(f.value.value="")}
1)},Q=o=>{const e=y.value[o];e&&(i.value[o].status="uploading",i.value[o].errorMessage="",D(e,o).catch(()=>{}))},Y=async o=>{const e=Array.from(o.target.files);if(!e.length)return;if(i.value.length+e.length>z){alert(`Maximum ${z} files allowed`),_(()=>{f.value&&(f.value.value="")});return}const r=y.value.reduce((s,p)=>s+p.size,0),c=e.reduce((s,p)=>s+p.size,0);if(r+c>at){a.fileSize=!0,_(()=>{f.value&&(f.value.value="")});return}a.fileSize=!1;for(const s of e){const p=s.name.split(".").pop().toLowerCase();if(!J.includes(p)){a.fileType=!0,a.fileSize=!1,_(()=>{f.value&&(f.value.value="")});return}a.fileType=!1;const b=y.value.length;y.value.push(s),i.value.push({name:s.name,ext:p,status:"uploading",fileUrl:"",fileSize:s.size,fileType:s.type,errorMessage:"",uploadProgress:0}),D(s,b).catch(()=>{})}a.file=!1,_(()=>{f.value&&(f.value.value="")})},ee=o=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o),te=async()=>{if(a.bookTitle=!l.bookTitle.trim(),a.editor=!l.editor.trim(),l.email.trim()&&ee(l.email)?a.email="":a.email="Please enter a valid email address",a.file=i.value.length===0,a.agreement=!l.agreement,a.bookTitle||a.editor||a.email||a.file||a.agreement||k.value)return;if(i.value.some(r=>r.status==="uploading")){alert("Please wait for all files to finish uploading");return}const e=i.value.filter(r=>r.status==="error");
1if(e.length>0){const r=e.map(c=>`${c.name}: ${c.errorMessage}`).join(` 2`);alert(`Upload failed for ${e.length} file(s): 3 4${r} 5 6Please remove and re-upload them.`);return}k.value=!0;try{const r=i.value.map(s=>({fileName:s.name,fileUrl:s.fileUrl,fileSize:s.fileSize,fileType:s.fileType.split("/").pop()||s.fileType})),c={dramaTitle:l.bookTitle,uploaderName:l.editor,email:l.email,dramaStyle:"",cooperationType:"",videos:r,agreementAccepted:l.agreement};console.log("ð¤ åå¤æäº¤çæ°æ®:",JSON.stringify(c,null,2)),await j("/webUploadDrama/submit",{method:"POST",body:c}),console.log("â æäº¤æå!"),M.value=!0}catch(r){console.error("â æäº¤å¤±è´¥:",r),alert("Submission failed, please try again")}finally{k.value=!1}};U(()=>l.bookTitle,o=>{o.trim()&&(a.bookTitle=!1)}),U(()=>l.editor,o=>{o.trim()&&(a.editor=!1)}),U(()=>l.email,o=>{o.trim()&&(a.email="")}),U(()=>l.agreement,o=>{o&&(a.agreement=!1)});const se=()=>{M.value=!1,l.bookTitle="",l.editor="",l.email="",l.agreement=!1,i.value=[],y.value=[]};return(o,e)=>{const r=ue,c=pe;return n(),u("div",ke,[M.value?(n(),u("div",we,[e[9]||(e[9]=t("div",{class:"logo"},[t("img",{src:"/images/web.png",alt:"ShortMax Logo"})],-1)),t("div",_e,[C(r,{to:S(A)("/")},{default:q(()=>e[5]||(e[5]=[m("Home",-1)])),_:1,__:[5]},8,["to"]),e[6]||(e[6]=m(" / ",-1)),e[7]||(e[7]=t("span",{class:"current-page"},"Upload Drama",-1))]),t("div",{class:"success-content"},[e[8]||(e[8]=ie('<div class="success-icon" data-v-08ba222b><svg width="120" height="120" viewBox="0 0 120 120" fill="none" data-v-08ba222b><circle cx="60" cy="60" r="60" fill="#00FF00" data-v-08ba222b></circle><path d="M35 60L52 77L85 44" stroke="#000" stroke-width="8" stroke-linecap="round" stroke-linejoin="round" data-v-08ba222b></path></svg></div><p class="success-title" data-v-08ba222b>Thank you for your submission.</p><p class="success-title" data-v-08ba222b>Our AI system will review your work shortly.</p>',3)),t("button",{class:"create-next-btn",onClick:se},"Create the next")])])):(n(),u("div",Te,[e[25]||(e[25]=t("div",{class:"logo"},[t("img",{src:"/images/web.png",alt:"ShortMax Logo"})],-1)),t("div",Ue,[C(r,{to:S(A)("/")},{default:q(()=>e[10]||(e[10]=[m("Home",-1)])),_:1,__:[10]},8,["to"]),e[11]||(e[11]=m(" / ",-1)),e[12]||(e[12]=t("span",{class:"current-page"},"Upload Drama",-1))]),t("div",Se,[t("div",{class:g(["text",{collapsed:!T.value}])},[e[15]||(e[15]=t("p",{class:"text-title"},"Creator Aggregation",-1)),t("div",xe,[e[14]||(e[14]=t("p",{class:"text-content"},[m("Join ShortMax and unlock global short drama opportunities for both exclusive and non-exclusive works!"),t("br"),m(" ShortMax is a leading global short drama platform dedicated to bringing captivating stories to audiences worldwide. We help creators showcase their work, monetize their content, and build a loyal fan base across borders."),t("br"),m(" Our team consists of experienced editors with deep expertise in the global short drama market. We have helped numerous creators turn their passion into a career, reaching millions of viewers around the world."),t("br"),m(" Start your short drama journey with ShortMax today â the next global hit could be yours!")],-1)),S(P)?(n(),u("button",{key:0,class:"toggle-btn",onClick:e[0]||(e[0]=s=>T.value=!T.value)},[(n(),u("svg",{class:g({rotated:T.value}),width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},e[13]||(e[13]=[t("path",{d:"M4 6L8 10L12 6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)]),2))])):h("",!0)])],2),t("div",Me,[C(c,{src:"/images/drama.png",alt:"",style:{width:"258px",height:"200px"}})])]),t("div",Ce,[e[24]||(e[24]=t("h2",{class:"form-title"},"Short Drama Information",-1)),t("form",{class:"form",onSubmit:L(te,["prevent"])},[t("div",Le,[e[16]||(e[16]=t("label",{class:"form-label"},[m("Drama Title"),t("span",{class:"required"},"*")],-1)),t("div",Fe,[x(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>l.bookTitle=s),class:g(["form-input",{error:a.bookTitle}]),type:"text",placeholder:"Within 30 Characters",maxlength:"30"},null,2),[[F,l.bookTitle]]),a.bookTitle?(n(),u("p",ze,"This field is required")):h("",!0)])]),t("div",Ee,[e[17]||(e[17]=t("label",{class:"form-label"},[m("Uploader Name"),t("span",{class:"required"},"*")],-1)),t("div",Pe,[x(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>l.editor=s),class:g(["form-input",{error:a.editor}]),type:"text",placeholder:"Within 30 Characters",maxlength:"30"},null,2),[[F,l.editor]]),a.editor?(n(),u("p",Ae,"This field is required")):h("",!0)])]),t("div",Ie,[e[18]||(e[18]=t("label",{class:"form-label"},[m("Email"),t("span",{class:"required"},"*")],-1)),t("div",Ne,[x(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>l.email=s),class:g(["form-input",{error:a.email}]),type:"text",placeholder:"Please enter your email",maxlength:"50"},null,2),[[F,l.email]]),a.email?(n(),u("p",De,B(a.email),1)):h("",!0)])]),t("div",Re,[e[21]||(e[21]=t("label",{class:"form-label"},[m("Upload Video"),t("span",{class:"required"},"*")],-1)),t("div",$e,[i.value.length?(n(),u("div",Ve,[(n(!0),u(re,null,ne(i.value,(s,p)=>(n(),u("div",{class:"file-item",key:p,title:s.status==="error"?s.errorMessage:""},[t("div",{class:g(["file-thumb",s.status])},[s.status==="error"?(n(),u("img",{key:0,src:he,alt:"error",class:"video-icon",onClick:L(b=>Q(p),["stop"]),style:{cursor:"pointer"}},null,8,Be)):s.status==="success"?(n(),u("img",Oe)):(n(),u("img",je)),t("div",{class:"delete-area",onClick:L(b=>K(p),["stop"]),title:"Remove file"},null,8,We)],2)],8,qe))),128))])):h("",!0),t("label",{class:g(["upload-btn",{error:a.file||a.fileSize||a.fileType,disabled:N.value}])},[t("input",{ref_key:"fileInput",ref:f,type:"file",accept:".mp4,.mov",multiple:"",onChange:Y,style:{display:"none"},disabled:N.value},null,40,Ge),e[19]||(e[19]=t("img",{class:"upload-icon",src:"/images/UploadIcon.png",alt:"upload"},null,-1)),e[20]||(e[20]=t("span",{class:"upload-text-error"},"Select Video",-1))],2),t("p",{class:g(["upload-tip",{"error-tip":a.fileType}])}," Support mp4, mov formats, total max 500MB ",2),a.fileSize?(n(),u("p",He,"Total file size exceeds 500MB")):h("",!0),a.file?(n(),u("p",Xe,"This field is required")):h("",!0)])]),t("div",Je,[e[23]||(e[23]=t("label",{class:"form-label"},[m("Upload Agreement"),t("span",{class:"required"},"*")],-1)),t("div",Ze,[t("label",Ke,[x(t("input",{type:"checkbox","onUpdate:modelValue":e[4]||(e[4]=s=>l.agreement=s)},null,512),[[de,l.agreement]]),t("span",{class:g(["checkbox-custom",{checked:l.agreement,error:a.agreement}])},null,2),e[22]||(e[22]=t("span",{class:"agreement-text"},[m("I have read and agree to the "),t("a",{href:"/upload",target:"_blank",class:"agreement-link"},"upload terms and conditions")],-1))]),a.agreement?(n(),u("p",Qe,"Please agree to the terms")):h("",!0)])]),t("div",Ye,[t("button",{class:"submit-btn",type:"submit",disabled:k.value},[k.value?(n(),u("span",tt)):h("",!0),m(" "+B(k.value?"Submitting...":"Submit"),1)],8,et)])],32)])])),S(P)?(n(),V(ce,{key:2})):(n(),V(me,{key:3}))])}}},ct=ae(ot,[["__scopeId","data-v-08ba222b"]]);export{ct as default}; 7//# sourceMappingURL=DiqasvWY.js.map
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.