PageSourceSearch

https://www.upma.cn/_next/static/chunks/0dc97eab4bbef92a.js

js upma.cn collected 2026-10-06 13:15:25 UTC 46,771 bytes, 3 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,685474,e=>{"use strict";var t=e.i(548590),s=e.i(814347);e.s(["filesApi",0,{list:e=>(0,s.get)(`/projects/${e}/files`),create:(e,t,r)=>(0,s.post)(`/projects/${e}/files/create`,{path:t,content:r}),createFolder:(e,t)=>(0,s.post)(`/projects/${e}/files/folder`,{path:t}),delete:(e,t)=>(0,s.post)(`/projects/${e}/files/delete`,{path:t}),rename:(e,t,r)=>(0,s.post)(`/projects/${e}/files/rename`,{oldName:t,newName:r}),deleteAll:e=>(0,s.del)(`/projects/${e}/files/all`),exportUrl:e=>`${t.API_BASE}/projects/${e}/export`},"projectApi",0,{list:()=>(0,s.get)("/projects"),get:e=>(0,s.get)(`/projects/${e}`),update:(e,t)=>(0,s.patch)(`/projects/${e}`,t),updateShowcaseCover:(e,t)=>(0,s.patch)(`/projects/${e}/showcase/cover`,{coverUrl:t}),getSecurity:e=>(0,s.get)(`/projects/${e}/security`),setPassword:(e,t)=>(0,s.patch)(`/projects/${e}/security/password`,t),delete:e=>(0,s.del)(`/projects/${e}`),deleteDeployment:(e,t)=>(0,s.del)(`/projects/${e}/deployments/${t}`),claim:e=>(0,s.post)(`/projects/${e}/claim`),listTrash:()=>(0,s.get)("/projects/trash"),restore:e=>(0,s.post)(`/projects/${e}/restore`),hardDelete:e=>(0,s.del)(`/projects/trash/${e}`)}])},966536,e=>{e.v("/_next/static/media/worker-bundle.4db60db7.js")},236606,e=>{e.v("/_next/static/media/scan.worker.aff63a27.ts")},81460,e=>{e.v(e.b(["static/chunks/544235cff161f725.js","static/chunks/turbopack-e69d3e48431cdcd9.js"]))},619258,571433,313143,e=>{"use strict";var t=e.i(900778),s=e.i(754219),r=e.i(814347);let l={getUploadUrl:(e,t)=>(0,r.post)("/upload",{fileName:e,fileType:t}),uploadToS3:async(e,t="upload.zip")=>{let{url:s,fields:r}=await l.getUploadUrl(t,"application/zip");if(!(await fetch(s,{method:"PUT",body:e,headers:{"Content-Type":"application/zip"}})).ok)throw Error("Upload failed");return{key:r.key,url:s}},trigger:(e,t)=>(0,r.post)(`/deploy/${e}`,t?{key:t}:void 0),create:e=>(0,r.post)("/deploy/new",{key:e}),rollback:(e,t)=>(0,r.post)(`/projects/${e}/rollback`,{deploymentId:t}),safeStringifyManifest:e=>{let t=JSON.stringify(e);try{let s=JSON.parse(t),r=Object.keys(e)[0];if(r){let t=s[r];if(!t||"string"!=typeof t.hash||"number"!=typeof t.size)return l.manualStringifyManifest(e)}return t}catch{return l.manualStringifyManifest(e)}},manualStringifyManifest:e=>{let t=Object.entries(e).map(([e,t])=>{let s=JSON.stringify(e),r=JSON.stringify(t);return`${s}:${r}`});return`{${t.join(",")}}`},prepare:e=>{let t=new FormData;return t.append("manifest",l.safeStringifyManifest(e.manifest)),e.projectId&&t.append("projectId",e.projectId),e.projectName&&t.append("projectName",e.projectName),e.mode&&t.append("mode",e.mode),(0,r.upload)("/deploy/prepare",t)},confirm:e=>(0,r.post)("/deploy/confirm",e)};e.s(["deployApi",0,l],571433);var a=e.i(376193),n=e.i(293264),i=e.i(976418);async function o(e){let t=await e.arrayBuffer(),s=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",t))).map(e=>e.toString(16).padStart(2,"0")).join("");return`sha256-${s}`}function d(){let[d,c]=(0,t.useState)("idle"),[x,h]=(0,t.useState)(""),[m,u]=(0,t.useState)(0),[p,g]=(0,t.useState)({current:0,total:0}),{userPlan:b,plan:f,user:j}=(0,a.useUser)(),{plansConfig:w}=(0,n.usePlansConfig)();return{state:d,statusMsg:x,progress:m,hashProgress:p,deploy:(0,t.useCallback)(async({files:t,targetProjectId:a,projectName:n,projectSettings:d,mode:x,basePath:m,bypassExtensionCheck:p=!1,onSuccess:v,onError:y})=>{if(0===t.length)return;let N=Date.now();try{let s,r;if(!p){let{getDeployFileViolation:s}=await e.A(894769),r=[];for(let e of t){let t=e.webkitRelativePath||e.name,l=s(t);l&&r.push(`${t} (${l})`)}if(r.length>0)throw Error(`包含禁止上传的文件:${r.slice(0,3).join(", ")}${r.length>3?"...":""}`)}let y=[];for(let e of t)if(e.size>524288e3){y.push(e.name);continue}if(y.length>0)throw Error(`以下文件超过 500MB 限制:${y.slice(0,3).join(", ")}${y.length>3?"...":""}`);c("scanning"),h("正在进行安全扫描..."),u(2),g({current:0,total:t.length});let k=t.map(e=>e.webkitRelativePath||e.name),C=await new Promise((s,r)=>{let l=new Worker(e.r(81460));l.onmessage=e=>{let a=e.data;if("progress"===a.type){let{current:e,total:t,currentFile:s}=a.data;g({current:e,total:t}),h(`正在安全扫描 (${e}/${t}): ${s}`);let r=t>0?e/t*28:0;u(2+r);return}if("success"!==a.type)return;l.terminate();let{sensitiveFiles:n,hashedFiles:i}=a.data;if(n&&n.length>0)r(Error(`文件 "${n.slice(0,3).join('", "')}"${n.length>3?" 等":""} 包含违规内容,已被系统拦截,多次恶意上传违规内容将被封禁`));else{let e={},r=new Map;for(let s of i.sort((e,t)=>
1e.fileIndex-t.fileIndex)){e[s.path]={hash:s.hash,size:s.size};let l=t[s.fileIndex];l&&r.set(s.hash,l)}s({manifest:e,fileByHash:r})}},l.onerror=e=>{console.warn("Scan worker error:",e),l.terminate(),s(null)},l.postMessage({files:t,basePath:m,filePaths:k})});if(C)s=C.manifest,r=C.fileByHash,u(30);else{c("hashing"),u(5),g({current:0,total:t.length}),s={},r=new Map;for(let e=0;e<t.length;e++){let l=t[e],a=k[e]||l.webkitRelativePath||l.name;m&&(a=(m.endsWith("/")?m:m+"/")+l.name),h(`正在计算文件哈希 (${e+1}/${t.length}): ${a}`),g({current:e+1,total:t.length});let n=await o(l);s[a]={hash:n,size:l.size},r.set(n,l);let i=(e+1)/t.length*25;u(5+i)}}let $=Object.values(s).reduce((e,t)=>e+t.size,0),L=(0,i.getEffectivePlanIdForResourceLimits)({plan:f,subscriptionEndsAt:j?.subscriptionEndsAt}),M=w?.plans?.[L]??b,S=0xa00000,P=M?.limits?.maxUploadSize;if("number"==typeof P&&P>0&&(S=P),$>S){let e=($/1048576).toFixed(2),t=(S/1048576).toFixed(2);throw Error(`文件总大小 (${e}MB) 超过当前套餐单次上传限制 (${t}MB)。`)}c("preparing"),h("正在准备上传..."),u(35);let{uploads:z,sessionId:A,deduplicatedCount:F}=await l.prepare({manifest:s,projectId:a,projectName:n,mode:x});if(F>0&&h(`已去重 ${F} 个文件,需上传 ${z.length} 个新文件`),c("uploading"),u(40),z.length>0){let t=0;await Promise.all(z.map(async({hash:s})=>{let l=r.get(s);if(!l)throw Error(`找不到文件: ${s}`);let{uploadApi:a}=await e.A(594849);await a.uploadDeployFile(l,s,A);let n=++t/z.length*40;u(40+n),h(`正在上传文件 (${t}/${z.length})...`)}))}else h("所有文件已存在,跳过上传"),u(80);c("confirming"),h("正在确认部署..."),u(85);let E=await l.confirm({sessionId:A});if((n||d)&&E.projectId){h("更新项目信息...");let{projectApi:t}=await e.A(693575);await t.update(E.projectId,{name:n,...d})}u(100),c("success");let B=E.deploymentUrl.replace(/^https?:\/\//,""),I=(Date.now()-N)/1e3;v&&v(B,E.projectId,E.homepage,I)}catch(t){console.error("Direct CAS deployment failed:",t),c("error"),h("部署失败");let e=t instanceof Error?t.message:String(t);(0,r.isApiError)(t)?s.toast.error("操作被限制",{description:t.message||e}):s.toast.error("部署失败",{description:e}),y&&y(t),setTimeout(()=>{c("idle")},1e3)}},[f,j,b,w]),reset:(0,t.useCallback)(()=>{c("idle"),h(""),u(0),g({current:0,total:0})},[])}}e.s(["useDirectCasDeploy",()=>d],619258);var c=e.i(980506);function x({isOpen:e,onClose:s,onConfirmUploadSource:r,framework:l,canContinueUpload:a=!0,unsupportedFiles:n=[]}){let[i,o]=(0,t.useState)(!1);return e?(0,c.jsxs)("div",{className:"fixed inset-0 z-99 flex items-center justify-center p-4",children:[(0,c.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm transition-opacity",onClick:s}),(0,c.jsxs)("div",{className:"relative bg-white dark:bg-[#0F1115] border border-slate-200 dark:border-white/10 rounded-2xl shadow-2xl w-full max-w-lg overflow-hidden transform transition-all",onClick:e=>e.stopPropagation(),children:[(0,c.jsx)("div",{className:"h-1.5 w-full bg-linear-to-r from-blue-500 via-purple-500 to-pink-500"}),(0,c.jsxs)("div",{className:"p-6 sm:p-8",children:[(0,c.jsx)("div",{className:"mx-auto flex items-center justify-center h-16 w-16 rounded-full bg-blue-100 dark:bg-blue-500/10 mb-6 relative",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-blue-600 dark:text-blue-400",children:[(0,c.jsx)("path",{d:"m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z"}),(0,c.jsx)("path",{d:"m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z"}),(0,c.jsx)("path",{d:"M7 21h10"}),(0,c.jsx)("path",{d:"M12 3v18"}),(0,c.jsx)("path",{d:"M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2"})]})}),(0,c.jsxs)("div",{className:"text-center mb-8",children:[(0,c.jsx)("h3",{className:"text-xl font-bold text-slate-900 dark:text-white mb-3",children:l?`检测到当前是源码项目 ✨`:"检测到前端工程源码 📦"}),(0,c.jsxs)("p",{className:"text-sm text-slate-500 dark:text-gray-400 leading-relaxed mb-4",children:[l?(0,c.jsxs)(c.Fragment,{children:["系统检测到该项目为 ",(0,c.jsx)("strong",{className:"text-slate-700 dark:text-gray-200 font-semibold",children:l})," 工程源码。"]}):"系统检测到该项目为前端工程源码。","当前 UPMA 暂时仅支持部署",(0,c.jsx)("strong",{className:"text-slate-700 dark:text-slate-300",children:"已构建好的静态页面"}
1),"  (如 ",(0,c.jsx)("code",{className:"bg-slate-100 dark:bg-white/10 px-1.5 py-0.5 rounded text-slate-700 dark:text-gray-300 font-mono text-xs",children:"dist"})," 或 ",(0,c.jsx)("code",{className:"bg-slate-100 dark:bg-white/10 px-1.5 py-0.5 rounded text-slate-700 dark:text-gray-300 font-mono text-xs",children:"out"})," 文件夹)。"]}),(0,c.jsxs)("div",{className:"bg-blue-50 dark:bg-blue-900/10 border border-blue-100 dark:border-blue-500/20 rounded-lg p-4 text-left",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,c.jsx)("h4",{className:"text-sm font-semibold text-blue-900 dark:text-blue-400",children:"如何正确部署?"}),(0,c.jsxs)("a",{href:"/docs#frameworks",target:"_blank",rel:"noopener noreferrer",className:"text-xs text-blue-600 dark:text-blue-500 hover:text-blue-700 hover:underline flex items-center gap-1",children:["查看教程",(0,c.jsx)("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]}),(0,c.jsxs)("ol",{className:"text-xs text-blue-800 dark:text-blue-300 space-y-2 list-decimal list-inside",children:[(0,c.jsxs)("li",{children:["在本地终端运行 ",(0,c.jsx)("code",{className:"font-mono bg-white/50 dark:bg-black/30 px-1 rounded",children:"npm run build"})," 获取打包产物。"]}),(0,c.jsxs)("li",{children:["选中打包后生成的 ",(0,c.jsx)("code",{className:"font-mono bg-white/50 dark:bg-black/30 px-1 rounded",children:"dist"})," (或 build) 目录。"]}),(0,c.jsx)("li",{children:"将该目录拖拽至此页面重新上传。"})]})]})]}),(0,c.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,c.jsx)("button",{onClick:s,className:"w-full inline-flex justify-center items-center py-2.5 px-4 border border-transparent rounded-xl shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-colors",children:"我知道了,我去本地打包"}),(0,c.jsxs)("div",{className:`w-full relative group ${!a?"opacity-50 cursor-not-allowed":""}`,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:[(0,c.jsx)("button",{onClick:()=>{a&&r&&r()},disabled:!a,className:`w-full inline-flex justify-center items-center py-2 px-4 rounded-xl text-sm font-medium transition-colors ${!a?"text-red-400 bg-red-50/50 dark:bg-red-500/5":i?"text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-500/10":"text-slate-500 dark:text-gray-400 hover:text-slate-700 dark:hover:text-gray-300"}`,children:"忽略提示,执意上传未编译的源码"}),i&&(0,c.jsx)("div",{className:"absolute -top-8 left-1/2 -translate-x-1/2 whitespace-nowrap bg-gray-900 text-white text-[10px] py-1 px-2 rounded tracking-wide shadow-lg z-10 w-max max-w-[280px]",children:a?"源码部署后可能无法在浏览器中正常运行":`包含不支持的文件:${n.join(", ")},无法部署`})]})]})]})]})]}):null}e.s(["default",()=>x],313143)},275060,e=>{"use strict";var t=e.i(980506),s=e.i(900778),r=e.i(754219),l=e.i(619258),a=e.i(158294),n=e.i(376193),i=e.i(685474),o=e.i(790882),d=e.i(250919);function c({isOpen:e,onClose:s,deployUrl:l,projectId:a,deployTime:n,isAnonymous:i,onLoginAndClaim:o,userPlan:c}){if(!e)return null;let x=()=>{window.location.href=`/project/${a}/settings`},h=()=>{window.location.href=i?"/pricing":"/dashboard/subscription"};return(0,d.createPortal)((0,t.jsx)(t.Fragment,{children:(0,t.jsx)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4 bg-black/80 backdrop-blur-md animate-in fade-in duration-200",children:(0,t.jsxs)("div",{className:"relative w-full max-w-2xl bg-[#0F1115] border border-white/10 rounded-2xl shadow-2xl overflow-hidden animate-in zoom-in-95 duration-200 flex flex-col max-h-[90vh]",children:[(0,t.jsxs)("div",{className:"relative h-16 bg-gradient-to-r from-green-500/10 via-emerald-500/10 to-teal-500/10 flex items-center justify-between px-6 border-b border-white/5 shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-9 h-9 bg-green-500 rounded-xl flex items-center justify-center shadow-[0_0_20px_rgba(34,197,94,0.3)]",children:(0,t.jsx)("svg",{className:"w-4.5 h-4.5 text-black",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"3",d:"M5 13l4 4L19 7"})})}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("h2",{className:"text-lg font-bold text-white tracking-tight",children:"部署成功!"}),(0,t.jsxs)("span",{className:"text-[10px] text-gray-500 font-mono bg-white/5 px-2 py-0.5 rounded",children:["耗时:",n?n<1?`${Math.round(1e3*n)}ms`:`${n.toFixed(1)}s`:"< 1s"]})]})]}),(0,t.jsx)("div",{className:"flex items-center",children:i?(0,t.jsx)("button",{onClick:s,className:"text-xs text-gray-500 hover:text-gray-300 transition-colors",children:"放弃认领"}):(0,t.jsx)("button",{onClick:s,className:"w-8 h-8 flex items-center justify-center rounded-lg bg-white/5 hover:bg-white/10 text-gray-400 hover:text-white transition-colors","aria-label":"关闭",children:(0,t.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})})})}),(0,t.jsx)("div",{className:"absolute right-0 top-0 h-full w-1/3 bg-gradient-to-l from-green-500/5 to-transparent pointer-events-none"})]}),(0,t.jsxs)("div",{className:"px-8 pt-6 overflow-y-auto custom-scrollbar",children:[(0,t.jsxs)("div",{className:"mb-6",children:[(0,t.jsx)("div",{className:"flex items-center justify-between mb-3",children:(0,t.jsx)("label",{className:"text-xs text-gray-400 font-bold uppercase tracking-wider",children:"访问地址 (Public URL)"})}),(0,t.jsxs)("div",{className:"flex items-center gap-3 bg-black/40 border border-white/10 rounded-xl p-2 pl-4 group hover:border-white/20 transition-all shadow-inner",children:[(0,t.jsxs)("span",{className:"flex-1 text-base text-gray-200 truncate font-mono tracking-tight",children:["https://",l]}),(0,t.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(`http://${l}`),r.toast.success("链接已复制")},className:"px-4 py-2 bg-gray-800 hover:bg-gray-700 text-white text-xs rounded-lg transition-colors font-medium shadow-sm",children:"复制链接"}),(0,t.jsx)("a",{href:`http://${l}`,target:"_blank",rel:"noreferrer",className:"px-4 py-2 bg-blue-600 hover:bg-blue-500 text-white text-xs rounded-lg transition-colors font-medium shadow-lg shadow-blue-500/20",children:"立即访问"})]})]}),!i&&(0,t.jsx)("div",{className:"mb-6",children:(0,t.jsxs)("button",{onClick:x,className:"w-full py-3 bg-white/5 hover:bg-white/10 border border-white/10 hover:border-white/20 text-white text-sm font-medium rounded-xl transition-all flex items-center justify-center gap-2",children:[(0,t.jsxs)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:[(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})]}),"管理项目设置"]})}),i&&(0,t.jsxs)("div",{className:"mb-6 p-4 rounded-xl bg-yellow-500/10 border border-yellow-500/20 flex items-start gap-3",children:[(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-5 h-5 text-yellow-500 shrink-0 mt-0.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"}),(0,t.jsx)("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),(0,t.jsx)("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-bold text-yellow-500 mb-1",children:"临时项目警告"}),(0,t.jsxs)("p",{className:"text-xs text-yellow-200/80",children:["您当前未登录,此项目为临时项目。系统将在"," ",(0,t.jsx)("span",{className:"text-yellow-400 font-bold",children:"24小时后自动删除"})," ","该项目及其所有文件。"]}
1)]})]}),(0,t.jsx)("div",{className:"mb-6",children:(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:["PRO"===c||"TEAM"===c?(0,t.jsxs)("div",{className:"p-4 rounded-xl bg-white/5 border border-white/5 hover:border-purple-500/30 transition-colors group flex flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-purple-500/10 flex items-center justify-center text-purple-400 group-hover:scale-110 transition-transform shrink-0",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-gray-200",children:"统计分析"}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mt-0.5",children:"实时 PV/UV 监控"})]})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold text-purple-400 bg-purple-500/10 px-2 py-1 rounded",children:"已启用"})]}),(0,t.jsx)("button",{onClick:x,className:"w-full py-2 bg-purple-600/10 hover:bg-purple-600/20 text-purple-400 text-xs font-medium rounded-lg border border-purple-500/20 transition-colors whitespace-nowrap",children:"查看数据"})]}):(0,t.jsxs)("div",{className:"p-4 rounded-xl bg-white/5 border border-white/5 hover:border-purple-500/30 transition-colors group flex flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-purple-500/10 flex items-center justify-center text-purple-400/50 group-hover:scale-110 transition-transform shrink-0",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-gray-200",children:"统计分析"}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mt-0.5",children:"查看访客来源与设备分布"})]})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold text-purple-400 bg-purple-500/10 px-2 py-1 rounded",children:"Pro"})]}),(0,t.jsx)("button",{onClick:h,className:"w-full py-2 bg-purple-600/10 hover:bg-purple-600/20 text-purple-400 text-xs font-medium rounded-lg border border-purple-500/20 transition-colors whitespace-nowrap",children:"升级解锁"})]}),"PRO"===c||"TEAM"===c?(0,t.jsxs)("div",{className:"p-4 rounded-xl bg-white/5 border border-white/5 hover:border-green-500/30 transition-colors group flex flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-green-500/10 flex items-center justify-center text-green-400 group-hover:scale-110 transition-transform shrink-0",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-gray-200",children:"全球 CDN 加速"}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mt-0.5",children:"香港/日本 CN2 线路"})]})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold text-green-400 bg-green-500/10 px-2 py-1 rounded",children:"已启用"})]}),(0,t.jsx)("button",{onClick:x,className:"w-full py-2 bg-green-600/10 hover:bg-green-600/20 text-green-400 text-xs font-medium rounded-lg border border-green-500/20 transition-colors whitespace-nowrap",children:"查看配置"})]}):(0,t.jsxs)("div",{className:"p-4 rounded-xl bg-white/5 border border-white/5 hover:border-green-500/30 transition-colors group flex flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-green-500/10 flex items-center justify-center text-green-400/50 group-hover:scale-110 transition-transform shrink-0",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-gray-200",children:"全球 CDN 加速"}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mt-0.5",children:"香港/日本 CN2ï¼
1Œè®¿é—®æé€Ÿ 3x"})]})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold text-green-400 bg-green-500/10 px-2 py-1 rounded",children:"Pro"})]}),(0,t.jsx)("button",{onClick:h,className:"w-full py-2 bg-green-600/10 hover:bg-green-600/20 text-green-400 text-xs font-medium rounded-lg border border-green-500/20 transition-colors whitespace-nowrap",children:"升级解锁"})]}),"PRO"===c||"TEAM"===c?(0,t.jsxs)("div",{className:"p-4 rounded-xl bg-white/5 border border-white/5 hover:border-blue-500/30 transition-colors group flex flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-blue-500/10 flex items-center justify-center text-blue-400 group-hover:scale-110 transition-transform shrink-0",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-gray-200",children:"自定义域名"}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mt-0.5",children:"绑定品牌域名 + SSL"})]})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold text-blue-400 bg-blue-500/10 px-2 py-1 rounded",children:"已启用"})]}),(0,t.jsx)("button",{onClick:x,className:"w-full py-2 bg-blue-600/10 hover:bg-blue-600/20 text-blue-400 text-xs font-medium rounded-lg border border-blue-500/20 transition-colors whitespace-nowrap",children:"前往配置"})]}):(0,t.jsxs)("div",{className:"p-4 rounded-xl bg-white/5 border border-white/5 hover:border-blue-500/30 transition-colors group flex flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-blue-500/10 flex items-center justify-center text-blue-400/50 group-hover:scale-110 transition-transform shrink-0",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-gray-200",children:"自定义域名"}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mt-0.5",children:"绑定你的品牌域名"})]})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold text-blue-400 bg-blue-500/10 px-2 py-1 rounded",children:"Pro"})]}),(0,t.jsx)("button",{onClick:h,className:"w-full py-2 bg-blue-600/10 hover:bg-blue-600/20 text-blue-400 text-xs font-medium rounded-lg border border-blue-500/20 transition-colors whitespace-nowrap",children:"升级解锁"})]}),"PRO"===c||"TEAM"===c?(0,t.jsxs)("div",{className:"p-4 rounded-xl bg-white/5 border border-white/5 hover:border-amber-500/30 transition-colors group flex flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-amber-500/10 flex items-center justify-center text-amber-400 group-hover:scale-110 transition-transform shrink-0",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-gray-200",children:"去品牌化"}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mt-0.5",children:"移除底部 Logo"})]})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold text-amber-400 bg-amber-500/10 px-2 py-1 rounded",children:"已启用"})]}),(0,t.jsx)("button",{onClick:x,className:"w-full py-2 bg-amber-600/10 hover:bg-amber-600/20 text-amber-400 text-xs font-medium rounded-lg border border-amber-500/20 transition-colors whitespace-nowrap",children:"查看配置"})]}):(0,t.jsxs)("div",{className:"p-4 rounded-xl bg-white/5 border border-white/5 hover:border-amber-500/30 transition-colors group flex flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-amber-500/10 flex items-center justify-center text-amber-400/50 group-hover:scale-110 transition-transform shrink-0",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-gray-200",children:"去品牌化"}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mt-0.5",children:'移除 "Powered by" 标识'})]})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold text-amber-400 bg-amber-500/10 px-2 py-1 rounded",children:"Pro"})]}),(0,t.jsx)("button",{onClick:h,className:"w-full py-2 bg-amber-600/10 hover:bg-amber-600/20 text-amber-400 text-xs font-medium rounded-lg border border-amber-500/20 transition-colors whitespace-nowrap",children:"升级解锁"})]})]})})]}),(0,t.jsxs)("div",{className:"p-8 pt-0 mt-auto shrink-0",children:[i?(0,t.jsxs)("div",{className:"relative overflow-hidden rounded-xl bg-gradient-to-r from-yellow-600 to-orange-600 p-1",children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-[url('/noise.svg')] opacity-20"}),(0,t.jsxs)("div",{className:"relative bg-[#0F1115]/90 backdrop-blur-sm rounded-lg p-4 flex items-center justify-between gap-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,t.jsx)("span",{className:"text-sm font-bold text-white",children:"认领此项目"}),(0,t.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-gradient-to-r from-yellow-500 to-orange-500 text-[10px] text-white font-bold",children:"IMPORTANT"})]}),(0,t.jsx)("p",{className:"text-xs text-gray-400",children:"登录后即可永久保存此项目,并解锁所有高级功能。"})]}),(0,t.jsx)("div",{className:"flex items-center gap-4 shrink-0",children:(0,t.jsx)("button",{onClick:()=>{o?.()},className:"px-5 py-2.5 bg-white text-black hover:bg-gray-100 rounded-lg font-bold text-sm transition-all shadow-lg shadow-white/10 whitespace-nowrap",children:"登录并认领"})})]})]}):"PRO"===c||"TEAM"===c?(0,t.jsxs)("div",{className:"relative overflow-hidden rounded-xl bg-gradient-to-r from-emerald-600 to-teal-600 p-1",children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-[url('/noise.svg')] opacity-20"}),(0,t.jsxs)("div",{className:"relative bg-[#0F1115]/90 backdrop-blur-sm rounded-lg p-4 flex items-center justify-between gap-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,t.jsxs)("span",{className:"text-sm font-bold text-white",children:["TEAM"===c?"Team":"Pro"," 会员"]}),(0,t.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-gradient-to-r from-emerald-500 to-teal-500 text-[10px] text-white font-bold",children:"✓ ACTIVE"})]}),(0,t.jsx)("p",{className:"text-xs text-gray-400",children:"已解锁全部高级功能:统计分析、密码保护、自定义域名等。"})]}),(0,t.jsx)("div",{className:"flex items-center gap-4 shrink-0",children:(0,t.jsx)("button",{onClick:x,className:"px-5 py-2.5 bg-white text-black hover:bg-gray-100 rounded-lg font-bold text-sm transition-all shadow-lg shadow-white/10 whitespace-nowrap",children:"管理项目"})})]})]}):(0,t.jsxs)("div",{className:"relative overflow-hidden rounded-xl bg-gradient-to-r from-blue-600 to-purple-600 p-1",children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-[url('/noise.svg')] opacity-20"}),(0,t.jsxs)("div",{className:"relative bg-[#0F1115]/90 backdrop-blur-sm rounded-lg p-4 flex items-center justify-between gap-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,t.jsx)("span",{className:"text-sm font-bold text-white",children:"升级到 Pro"}),(0,t.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-gradient-to-r from-blue-500 to-purple-500 text-[10px] text-white font-bold",children:"RECOMMENDED"})]}),(0,t.jsx)("p",{className:"text-xs text-gray-400",children:"解锁统计分析、密码保护、自定义域名绑定等 10+ 项特权。"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-4 shrink-0",children:[(0,t.jsxs)("div",{className:"text-right hidden sm:block",children:[(0,t.jsx)("div",{className:"text-xs text-gray-400 line-through",children:"Â¥29.9"}),(0,t.jsxs)("div",{className:"text-xl font-bold text-white",children:["Â¥19.9",(0,t.jsx)("span",{className:"text-xs font-normal text-gray-400",children:"/月"})]})]}),(0,t.jsx)("button",{onClick:()=>window.location.href="/dashboard/subscription",className:"px-5 py-2.5 bg-white text-black hover:bg-gray-100 rounded-lg font-bold text-sm transition-all shadow-lg shadow-white/10 whitespace-nowrap",children:"立即升级"})]})]})]}),(0,t.jsx)("div",{className:"mt-4 text-center",children:(0,t.jsx)("button",{onClick:s,className:"text-gray-500 hover:text-gray-300 text-xs font-medium transition-colors",children:i?"稍后认领,仅访问网站":"PRO"===c||"TEAM"===c?"关闭":"暂不升级,仅访问网站"})})]})]})})}),document.body)}var x=e.i(569254),h=e.i(313143);function m(){let e=(0,a.useRouter)(),{isLoggedIn:d,effectivePlan:m}=(0,n.useUser)(),{state:u,statusMsg:p,progress:g,hashProgress:b,deploy:f,reset:j}
1=(0,l.useDirectCasDeploy)(),[w,v]=(0,s.useState)(!1),[y,N]=(0,s.useState)([]),[k,C]=(0,s.useState)(""),[$,L]=(0,s.useState)(""),[M,S]=(0,s.useState)(void 0),[P,z]=(0,s.useState)(!1),[A,F]=(0,s.useState)(!1),[E,B]=(0,s.useState)(null),[I,T]=(0,s.useState)(!1),[U,O]=(0,s.useState)(null),D=(0,s.useRef)(null),W=(0,s.useRef)(null),[R,_]=(0,s.useState)("file"),H=async e=>{let t=e.target.files;if(!t||0===t.length)return;let s=(0,o.stripCommonPrefix)(Array.from(t)),{files:r,error:l}=await (0,o.processSelectedFiles)(s,R);if(l){W.current&&(W.current.value="");return}s=r;let a=await (0,o.analyzeFilesForUpload)(s);if(a.shouldPromptForSource){N(s),O(a),T(!0);return}!(0,o.hasIndexHtml)(s)&&s.length>1?d?B({title:"检测到缺少 index.html",desc:'建议将主页重命名为 index.html,或者在部署完成后前往"设置"手动指定首页。'}):B({title:"检测到缺少 index.html",desc:"部署后您将无法直接通过域名访问首页,需在 URL 后加上具体文件名(如 /game.html)才能访问。"}):B(null),N(s)},V=async e=>{if(e.preventDefault(),e.stopPropagation(),v(!1),"idle"!==u)return;let t=e.dataTransfer.items;if(!t||0===t.length)return;let s=[],r=await (0,o.readDroppedItems)(t),{files:l,error:a}=await (0,o.processSelectedFiles)(r,R);if(!a&&(s=l).length>0){let e=await (0,o.analyzeFilesForUpload)(s);if(e.shouldPromptForSource){N(s),O(e),T(!0);return}!(0,o.hasIndexHtml)(s)&&s.length>1?d?B({title:"检测到缺少 index.html",desc:"建议将主页重命名为 index.html,或者在部署后前往设置手动指定首页。"}):B({title:"检测到缺少 index.html",desc:"部署后您将无法直接通过域名访问首页。"}):B(null),N(s)}},J=async()=>{await f({files:y,bypassExtensionCheck:!0,onSuccess:(t,s,l,a)=>{if(C(t),L(s),S(a),z(!0),!d)try{let e=JSON.parse(localStorage.getItem("anonymous_projects")||"[]");e.push({id:s,url:t,createdAt:Date.now(),expiresAt:Date.now()+864e5}),localStorage.setItem("anonymous_projects",JSON.stringify(e)),window.dispatchEvent(new Event("anonymous_project_added"))}catch(e){console.error("Failed to save history",e)}l?r.toast.success("部署成功!",{description:"您的网站已上线"}):r.toast.success("部署成功",{description:"未检测到首页,请前往设置指定",action:{label:"去设置",onClick:()=>e.push(`/project/${s}/settings?tab=pages`)},duration:8e3})}})},K=async()=>{let t=r.toast.loading("正在认领项目...");try{await i.projectApi.claim($),r.toast.dismiss(t),r.toast.success("认领成功!",{description:"项目已永久保存"});try{let e=JSON.parse(localStorage.getItem("anonymous_projects")||"[]").filter(e=>e.id!==$);localStorage.setItem("anonymous_projects",JSON.stringify(e)),window.dispatchEvent(new Event("anonymous_project_removed"))}catch(e){console.error("Failed to update history",e)}e.push(`/project/${$}/settings`)}catch(e){console.error("Claim failed:",e),r.toast.dismiss(t),r.toast.error("认领失败",{description:e.message||"请稍后重试"})}};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c,{isOpen:P,onClose:()=>z(!1),deployUrl:k,projectId:$,deployTime:M,isAnonymous:!d,onLoginAndClaim:()=>{z(!1),F(!0)},userPlan:d?m:void 0}),(0,t.jsx)(x.default,{isOpen:A,onClose:()=>F(!1),onLoginSuccess:K,claimProjectId:$}),(0,t.jsx)(h.default,{isOpen:I,onClose:()=>{T(!1),O(null),D.current&&(D.current.value=""),W.current&&(W.current.value=""),N([])},onConfirmUploadSource:U?.canContinueUpload?()=>{T(!1),O(null),!(0,o.hasIndexHtml)(y)&&y.length>1?d?B({title:"检测到缺少 index.html",desc:"建议将主页重命名为 index.html,或者在部署后前往设置手动指定首页。"}):B({title:"检测到缺少 index.html",desc:"部署后您将无法直接通过域名访问首页。"}):B(null),setTimeout(()=>{J()},100)}:void 0,framework:U?.framework,canContinueUpload:U?.canContinueUpload,unsupportedFiles:U?.unsupportedFiles}),(0,t.jsxs)("div",{className:"relative group",children:[(0,t.jsx)("input",{type:"file",ref:D,className:"hidden",webkitdirectory:"",directory:"",multiple:!0,onChange:H}),(0,t.jsx)("input",{type:"file",ref:W,className:"hidden",multiple:!0,accept:o.FILE_INPUT_ACCEPT,onChange:H}),(0,t.jsx)("div",{className:"absolute -inset-1 bg-linear-to-r from-blue-600 to-purple-600 rounded-2xl blur opacity-30 group-hover:opacity-70 transition duration-1000"}),(0,t.jsxs)("div",{className:"relative bg-[#0F1115] border border-white/10 rounded-xl p-4 sm:p-6 shadow-2xl overflow-hidden",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4 sm:mb-6 border-b border-white/5 pb-3 sm:pb-4",children:[(0,t.jsxs)("div",{className:"flex gap-1.5",children:[(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500/20"}),(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-yellow-500/20"}),(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-green-500/20"})]}),(0,t.jsxs)("div",{className:"flex bg-gray-800/50 rounded-lg p-0.5 
1sm:p-1 border border-white/5",children:[(0,t.jsx)("button",{className:`px-2 sm:px-3 py-1 text-[10px] sm:text-xs rounded-md transition-all font-medium ${"file"===R?"bg-gray-700 text-white shadow-sm":"text-gray-400 hover:text-gray-300"}`,onClick:()=>_("file"),disabled:"idle"!==u,children:"文件 / Zip"}),(0,t.jsx)("button",{className:`px-2 sm:px-3 py-1 text-[10px] sm:text-xs rounded-md transition-all font-medium ${"folder"===R?"bg-gray-700 text-white shadow-sm":"text-gray-400 hover:text-gray-300"}`,onClick:()=>_("folder"),disabled:"idle"!==u,children:"文件夹"})]})]}),(0,t.jsxs)("div",{className:"min-h-[220px] sm:min-h-[300px] flex flex-col items-center justify-center",children:["idle"===u&&(0,t.jsxs)("div",{className:`w-full h-[220px] sm:h-[300px] flex flex-col items-center justify-center border-2 border-dashed rounded-lg transition-all cursor-pointer group/drop
2                  ${w?"border-blue-500 bg-blue-500/10 scale-[1.02]":"border-gray-700 hover:border-blue-500/50 hover:bg-blue-500/5"}
3                `,onClick:()=>{"idle"===u&&("folder"===R?D.current?.click():W.current?.click())},onDragOver:e=>{e.preventDefault(),e.stopPropagation(),"idle"===u&&v(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),v(!1)},onDrop:V,children:[(0,t.jsx)("div",{className:"w-12 h-12 sm:w-16 sm:h-16 rounded-xl sm:rounded-2xl bg-linear-to-br from-blue-500/20 to-purple-500/20 flex items-center justify-center mx-auto mb-3 sm:mb-4 group-hover/drop:scale-110 transition duration-300",children:(0,t.jsx)("svg",{className:"w-6 h-6 sm:w-8 sm:h-8 text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})})}),(0,t.jsx)("p",{className:"text-gray-300 font-medium text-sm sm:text-base text-center px-2",children:"folder"===R?"点击选择代码文件夹":"点击选择文件或 Zip 包"}),(0,t.jsx)("p",{className:"text-gray-500 text-xs sm:text-sm mt-1.5 sm:mt-2 text-center px-2",children:"folder"===R?"支持静态网站项目":"支持 .html, .zip, .pdf, .png, .jpg"})]}),("scanning"===u||"hashing"===u||"preparing"===u||"uploading"===u||"confirming"===u)&&(0,t.jsx)("div",{className:"absolute inset-0 bg-[#0F1115]/90 backdrop-blur-sm flex flex-col items-center justify-center z-20",children:(0,t.jsxs)("div",{className:"w-48 sm:w-64 px-4",children:[(0,t.jsxs)("div",{className:"flex justify-between text-xs sm:text-sm text-gray-400 mb-2",children:[(0,t.jsx)("span",{children:p}),(0,t.jsx)("span",{children:("scanning"===u||"hashing"===u)&&b.total>0?`${b.current}/${b.total}`:`${Math.round(g)}%`})]}),(0,t.jsx)("div",{className:"h-2 bg-gray-800 rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:"h-full bg-linear-to-r from-blue-500 to-purple-500 transition-all duration-300 ease-out",style:{width:`${g}%`}})})]})}),"success"===u&&(0,t.jsxs)("div",{className:"absolute inset-0 bg-[#0F1115] flex flex-col items-center justify-center z-20",children:[(0,t.jsx)("div",{className:"w-16 h-16 bg-green-500/10 rounded-full flex items-center justify-center mb-4",children:(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-green-500",children:(0,t.jsx)("polyline",{points:"20 6 9 17 4 12"})})}),(0,t.jsx)("h3",{className:"text-lg sm:text-xl font-bold text-white mb-2",children:"部署成功!"}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 sm:gap-3 mt-4 w-full px-4 sm:w-auto sm:px-0",children:[(0,t.jsx)("a",{href:`https://${k}`,target:"_blank",className:"px-4 py-2 bg-white text-black rounded-lg font-medium hover:bg-gray-200 transition text-center text-sm sm:text-base",children:"访问网站"}),(0,t.jsx)("button",{onClick:()=>z(!0),className:"px-4 py-2 bg-white/10 text-white rounded-lg font-medium hover:bg-white/20 transition text-sm sm:text-base",children:"查看详情"}),(0,t.jsx)("button",{onClick:()=>{j(),N([]),C(""),B(null),z(!1),T(!1),O(null),D.current&&(D.current.value=""),W.current&&(W.current.value="")},className:"px-4 py-2 bg-white/10 text-white rounded-lg font-medium hover:bg-white/20 transition text-sm sm:text-base",children:"部署新项目"})]})]}),y.length>0&&"idle"===u&&(0,t.jsxs)("div",{className:"absolute inset-0 bg-[#0F1115] flex flex-col z-20 p-4 sm:p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3 sm:mb-4",children:[(0,t.jsxs)("h3",{className:"text-base sm:text-lg font-bold text-white",children:[y.length," 个文件已就绪"]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"text-xs text-gray-500 font-mono",children:y.reduce((e,t)=>
3e+t.size,0)>1048576?`${(y.reduce((e,t)=>e+t.size,0)/1048576).toFixed(2)} MB`:`${(y.reduce((e,t)=>e+t.size,0)/1024).toFixed(2)} KB`}),(0,t.jsx)("button",{onClick:()=>{N([]),B(null),D.current&&(D.current.value=""),W.current&&(W.current.value="")},className:"text-xs text-red-400 hover:text-red-300 hover:underline",children:"清空选择"})]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar mb-4 bg-black/20 rounded-xl border border-white/5 p-2",children:(0,t.jsxs)("div",{className:"space-y-2",children:[y.slice(0,10).map((e,s)=>(0,t.jsxs)("div",{className:"flex items-center gap-3 bg-white/5 rounded-lg p-2 text-sm text-gray-300 hover:bg-white/10 transition-colors",children:[(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-blue-400 shrink-0",children:[(0,t.jsx)("path",{d:"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"}),(0,t.jsx)("polyline",{points:"13 2 13 9 20 9"})]}),(0,t.jsx)("span",{className:"truncate flex-1 font-mono text-xs",children:e.webkitRelativePath||e.name}),(0,t.jsxs)("span",{className:"text-xs text-gray-500 shrink-0",children:[(e.size/1024).toFixed(1)," KB"]})]},s)),y.length>10&&(0,t.jsxs)("div",{className:"text-center text-xs text-gray-500 py-2",children:["+ ",y.length-10," more files"]})]})}),E&&(0,t.jsx)("div",{className:"mb-4 bg-yellow-500/10 border border-yellow-500/20 rounded-lg p-3 text-left shrink-0",children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-yellow-500 mt-0.5 shrink-0",children:[(0,t.jsx)("path",{d:"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"}),(0,t.jsx)("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),(0,t.jsx)("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-medium text-yellow-500 mb-1",children:E.title}),(0,t.jsx)("p",{className:"text-xs text-yellow-500/80 leading-relaxed",children:E.desc})]})]})}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 sm:gap-3 shrink-0",children:[(0,t.jsxs)("button",{onClick:J,className:"flex-1 px-4 py-2.5 sm:py-2 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-500 transition shadow-lg shadow-blue-500/20 flex items-center justify-center gap-2 text-sm sm:text-base",children:[(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,t.jsx)("polyline",{points:"17 8 12 3 7 8"}),(0,t.jsx)("line",{x1:"12",y1:"3",x2:"12",y2:"15"})]}),"立即部署"]}),(0,t.jsx)("button",{onClick:()=>{N([]),B(null),D.current&&(D.current.value=""),W.current&&(W.current.value="")},className:"px-6 py-2.5 sm:py-2 bg-white/5 text-gray-400 rounded-lg font-medium hover:bg-white/10 transition text-sm sm:text-base",children:"取消"})]})]})]})," "]})," "]})," "]})}e.s(["default",()=>m],275060)}]);

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.