livecode-static/livecodes/deploy.fb344a204b7df850b7dc81ad0008f498.js
2025-06-12 10:18:49 +08:00

49 lines
23 KiB
JavaScript

var D={title:"Untitled Project",description:"",head:`<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />`,htmlAttrs:'lang="en" class=""',tags:[],autoupdate:!0,autosave:!1,autotest:!1,delay:1500,formatOnsave:!1,view:"split",mode:"full",theme:"dark",themeColor:void 0,layout:"responsive",editorTheme:void 0,appLanguage:void 0,recoverUnsaved:!0,showSpacing:!1,welcome:!0,readonly:!1,allowLangChange:!0,activeEditor:void 0,languages:void 0,markup:{language:"html",content:""},style:{language:"css",content:""},script:{language:"javascript",content:""},stylesheets:[],scripts:[],cssPreset:"",imports:{},types:{},tests:{language:"typescript",content:""},tools:{enabled:"all",active:"",status:""},zoom:1,processors:[],customSettings:{},editor:void 0,fontFamily:void 0,fontSize:void 0,useTabs:!1,tabSize:2,lineNumbers:!0,wordWrap:!1,closeBrackets:!0,foldRegions:!1,semicolons:!0,singleQuote:!1,trailingComma:!0,emmet:!0,enableAI:!1,editorMode:void 0,version:"46"};var N=["esm.sh","skypack","esm.run","jsdelivr.esm","fastly.jsdelivr.esm","gcore.jsdelivr.esm","testingcf.jsdelivr.esm","jsdelivr.b-cdn.esm","jspm"],W=["jsdelivr","fastly.jsdelivr","unpkg","gcore.jsdelivr","testingcf.jsdelivr","jsdelivr.b-cdn","npmcdn"],_=["jsdelivr.gh","fastly.jsdelivr.gh","statically","gcore.jsdelivr.gh","testingcf.jsdelivr.gh","jsdelivr.b-cdn.gh"],b={getModuleUrl:(e,{isModule:t=!0,defaultCDN:o="esm.sh",external:n}={})=>{e=e.replace(/#nobundle/g,"");let i=s=>!n||!s.includes("https://esm.sh")?s:s.includes("?")?`${s}&external=${n}`:`${s}?external=${n}`,r=P(e,t,o);return r?i(r):t?i("https://esm.sh/"+e):"https://cdn.jsdelivr.net/npm/"+e},getUrl:(e,t)=>e.startsWith("http")||e.startsWith("data:")?e:P(e,!1,t||qe())||e,cdnLists:{npm:W,module:N,gh:_},checkCDNs:async(e,t)=>{let o=[t,...b.cdnLists.npm].filter(Boolean);for(let n of o)try{if((await fetch(b.getUrl(e,n),{method:"HEAD"})).ok)return n}catch{}return b.cdnLists.npm[0]}},qe=()=>{if(globalThis.appCDN)return globalThis.appCDN;try{return new URL(location.href).searchParams.get("appCDN")||b.cdnLists.npm[0]}catch{return b.cdnLists.npm[0]}},P=(e,t,o)=>{let n=t&&e.startsWith("unpkg:")?"?module":"";e.startsWith("gh:")?e=e.replace("gh",_[0]):e.includes(":")||(e=(o||(t?N[0]:W[0]))+":"+e);for(let i of ke){let[r,s]=i;if(r.test(e))return e.replace(r,s)+n}return null},ke=[[/^(esm\.sh:)(.+)/i,"https://esm.sh/$2"],[/^(npm:)(.+)/i,"https://esm.sh/$2"],[/^(node:)(.+)/i,"https://esm.sh/$2"],[/^(jsr:)(.+)/i,"https://esm.sh/jsr/$2"],[/^(skypack:)(.+)/i,"https://cdn.skypack.dev/$2"],[/^(jsdelivr:)(.+)/i,"https://cdn.jsdelivr.net/npm/$2"],[/^(fastly\.jsdelivr:)(.+)/i,"https://fastly.jsdelivr.net/npm/$2"],[/^(gcore\.jsdelivr:)(.+)/i,"https://gcore.jsdelivr.net/npm/$2"],[/^(testingcf\.jsdelivr:)(.+)/i,"https://testingcf.jsdelivr.net/npm/$2"],[/^(jsdelivr\.b-cdn:)(.+)/i,"https://jsdelivr.b-cdn.net/npm/$2"],[/^(jsdelivr\.gh:)(.+)/i,"https://cdn.jsdelivr.net/gh/$2"],[/^(fastly\.jsdelivr\.gh:)(.+)/i,"https://fastly.jsdelivr.net/gh/$2"],[/^(gcore\.jsdelivr\.gh:)(.+)/i,"https://gcore.jsdelivr.net/gh/$2"],[/^(testingcf\.jsdelivr\.gh:)(.+)/i,"https://testingcf.jsdelivr.net/gh/$2"],[/^(jsdelivr\.b-cdn\.gh:)(.+)/i,"https://jsdelivr.b-cdn.net/gh/$2"],[/^(statically:)(.+)/i,"https://cdn.statically.io/gh/$2"],[/^(esm\.run:)(.+)/i,"https://esm.run/$2"],[/^(jsdelivr\.esm:)(.+)/i,"https://cdn.jsdelivr.net/npm/$2/+esm"],[/^(fastly\.jsdelivr\.esm:)(.+)/i,"https://fastly.jsdelivr.net/npm/$2/+esm"],[/^(gcore\.jsdelivr\.esm:)(.+)/i,"https://gcore.jsdelivr.net/npm/$2/+esm"],[/^(testingcf\.jsdelivr\.esm:)(.+)/i,"https://testingcf.jsdelivr.net/npm/$2/+esm"],[/^(jsdelivr\.b-cdn\.esm:)(.+)/i,"https://jsdelivr.b-cdn.net/npm/$2/+esm"],[/^(jspm:)(.+)/i,"https://jspm.dev/$2"],[/^(esbuild:)(.+)/i,"https://esbuild.vercel.app/$2"],[/^(bundle\.run:)(.+)/i,"https://bundle.run/$2"],[/^(unpkg:)(.+)/i,"https://unpkg.com/$2"],[/^(npmcdn:)(.+)/i,"https://npmcdn.com/$2"],[/^(bundlejs:)(.+)/i,"https://deno.bundlejs.com/?file&q=$2"],[/^(bundle:)(.+)/i,"https://deno.bundlejs.com/?file&q=$2"],[/^(deno:)(.+)/i,"https://deno.bundlejs.com/?file&q=https://deno.land/x/$2/mod.ts"],[/^(https:\/\/deno\.land\/.+)/i,"https://deno.bundlejs.com/?file&q=$1"],[/^(github:|https:\/\/github\.com\/)(.[^\/]+?)\/(.[^\/]+?)\/(?!releases\/)(?:(?:blob|raw)\/)?(.+?\/.+)/i,"https://deno.bundlejs.com/?file&q=https://cdn.jsdelivr.net/gh/$2/$3@$4"],[/^(gist\.github:)(.+?\/[0-9a-f]+\/raw\/(?:[0-9a-f]+\/)?.+)$/i,"https://gist.githack.com/$2"],[/^(gitlab:|https:\/\/gitlab\.com\/)([^\/]+.*\/[^\/]+)\/(?:raw|blob)\/(.+?)(?:\?.*)?$/i,"https://deno.bundlejs.com/?file&q=https://gl.githack.com/$2/raw/$3"],[/^(bitbucket:|https:\/\/bitbucket\.org\/)([^\/]+\/[^\/]+)\/(?:raw|src)\/(.+?)(?:\?.*)?$/i,"https://deno.bundlejs.com/?file&q=https://bb.githack.com/$2/raw/$3"],[/^(bitbucket:)snippets\/([^\/]+\/[^\/]+)\/revisions\/([^\/\#\?]+)(?:\?[^#]*)?(?:\#file-(.+?))$/i,"https://bb.githack.com/!api/2.0/snippets/$2/$3/files/$4"],[/^(bitbucket:)snippets\/([^\/]+\/[^\/\#\?]+)(?:\?[^#]*)?(?:\#file-(.+?))$/i,"https://bb.githack.com/!api/2.0/snippets/$2/HEAD/files/$3"],[/^(bitbucket:)\!api\/2.0\/snippets\/([^\/]+\/[^\/]+\/[^\/]+)\/files\/(.+?)(?:\?.*)?$/i,"https://bb.githack.com/!api/2.0/snippets/$2/files/$3"],[/^(api\.bitbucket:)2.0\/snippets\/([^\/]+\/[^\/]+\/[^\/]+)\/files\/(.+?)(?:\?.*)?$/i,"https://bb.githack.com/!api/2.0/snippets/$2/files/$3"],[/^(rawgit:)(.+?\/[0-9a-f]+\/raw\/(?:[0-9a-f]+\/)?.+)$/i,"https://gist.githack.com/$2"],[/^(rawgit:|https:\/\/raw\.githubusercontent\.com)(\/[^\/]+\/[^\/]+|[0-9A-Za-z-]+\/[0-9a-f]+\/raw)\/(.+)/i,"https://deno.bundlejs.com/?file&q=https://raw.githack.com/$2/$3"]];var je=typeof btoa=="function",U=typeof Buffer=="function",Ye=typeof TextDecoder=="function"?new TextDecoder:void 0,O=typeof TextEncoder=="function"?new TextEncoder:void 0,Re="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",M=Array.prototype.slice.call(Re),et=(e=>{let t={};return e.forEach((o,n)=>t[o]=n),t})(M);var f=String.fromCharCode.bind(String),tt=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):e=>new Uint8Array(Array.prototype.slice.call(e,0)),Ae=e=>e.replace(/=/g,"").replace(/[+\/]/g,t=>t=="+"?"-":"_");var Ie=e=>{let t,o,n,i,r="",s=e.length%3;for(let a=0;a<e.length;){if((o=e.charCodeAt(a++))>255||(n=e.charCodeAt(a++))>255||(i=e.charCodeAt(a++))>255)throw new TypeError("invalid character found");t=o<<16|n<<8|i,r+=M[t>>18&63]+M[t>>12&63]+M[t>>6&63]+M[t&63]}return s?r.slice(0,s-3)+"===".substring(s):r},G=je?e=>btoa(e):U?e=>Buffer.from(e,"binary").toString("base64"):Ie,Be=U?e=>Buffer.from(e).toString("base64"):e=>{let o=[];for(let n=0,i=e.length;n<i;n+=4096)o.push(f.apply(null,e.subarray(n,n+4096)));return G(o.join(""))};var $e=e=>{if(e.length<2){var t=e.charCodeAt(0);return t<128?e:t<2048?f(192|t>>>6)+f(128|t&63):f(224|t>>>12&15)+f(128|t>>>6&63)+f(128|t&63)}else{var t=65536+(e.charCodeAt(0)-55296)*1024+(e.charCodeAt(1)-56320);return f(240|t>>>18&7)+f(128|t>>>12&63)+f(128|t>>>6&63)+f(128|t&63)}},Fe=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,De=e=>e.replace(Fe,$e),z=U?e=>Buffer.from(e,"utf8").toString("base64"):O?e=>Be(O.encode(e)):e=>G(De(e)),V=(e,t=!1)=>t?Ae(z(e)):z(e);var h=(e,t="_")=>e.replace(/[\W]+/g,t);var q=(e,t)=>new Promise((o,n)=>{if(t&&globalThis[t])return o(globalThis[t]);if(typeof globalThis.importScripts=="function")return globalThis.importScripts(e),t&&globalThis[t]?o(globalThis[t]):o(globalThis);let i=document.createElement("script");i.src=e,i.async=!0;let r=()=>{i.removeEventListener("load",s),i.removeEventListener("error",a)},s=()=>{if(r(),!t)return o("loaded: "+e);let c=setInterval(()=>{if(window[t])return clearInterval(c),o(window[t])},5)},a=()=>{r(),n("failed to load: "+e)};i.addEventListener("load",s),i.addEventListener("error",a),document.head.appendChild(i)});var J={APP_VERSION:"46",SDK_VERSION:"0.11.1",COMMIT_SHA:"43f0982",REPO_URL:"https://github.com/live-codes/livecodes",DOCS_BASE_URL:"/docs/"};var K=(e,{getLanguageExtension:t})=>{let o={markup:"index",style:"style",script:"script"},n=Object.keys(o).reduce((a,c)=>{let p=o[c],l=e[c].language,m=t?.(l)||"md",u=e[c].content||"";return{...a,...u?{[p+"."+m]:{content:u}}:{}}},{}),i=e.stylesheets.length>0?{styles:{content:e.stylesheets.map(a=>`<link rel="stylesheet" href="${a}" />`).join(`
`)}}:void 0,r=e.scripts.length>0?{scripts:{content:e.scripts.map(a=>`<script src="${a}"><\/script>`).join(`
`)}}:void 0,s=e.tests?.content?{["script.spec."+t?.(e.tests?.language)||"ts"]:{content:e.tests?.content}}:void 0;return{...n,...i,...r,...s}},Z=(e,t,o,n=!0)=>{let i=n?"https://gist.github.com/":"https://github.com/",r=t?.displayName||t?.username,s=r?t.username?"by ["+r+"]("+i+t.username+")":"by "+r:"",a=o?`[project](https://livecodes.io/?x=${o})`:"project";return{[h(e.title)+".md"]:{content:`# ${e.title}
A ${a} created ${s} on [LiveCodes](https://livecodes.io).`}}};var g=(e,t)=>({Accept:`application/vnd.github.v3${t?"."+t:""}+json`,"Content-Type":"application/json",Authorization:"token "+e.token}),Q=async(e,t)=>{try{return(await fetch(`https://api.github.com/repos/${e.username}/${t}`,{method:"GET",cache:"no-store",headers:g(e)})).ok}catch{return!1}},X=async(e,t,o=!1,n)=>{let i=await fetch("https://api.github.com/user/repos",{method:"POST",cache:"no-store",headers:g(e),body:JSON.stringify({name:t,private:o,...o?{}:{homepage:`https://${e.username}.github.io/${t}/`},...n?{description:n}:{}})});if(!i.ok)throw await i.json().then(s=>s.errors[0]?.message)==="name already exists on this account"?new Error("Repo name already exists"):new Error("Error creating repo");return i.json().then(r=>r.name)},Y=async({user:e,repo:t,branch:o,file:n,message:i,initialize:r=!1,encoded:s=!1})=>{let a=`https://api.github.com/repos/${e.username}/${t}/contents/`,c=n.path.split("/").slice(0,-1).join("/"),p;if(!r){let m=await fetch(a+c,{method:"GET",cache:"no-store",headers:g(e)});m.ok&&(p=(await m.json()).find(x=>x.path===n.path)?.sha)}let l=await fetch(a+n.path,{method:"PUT",cache:"no-store",headers:g(e),body:JSON.stringify({message:i||"deploy",content:s?n.content:V(n.content),branch:o,...p?{sha:p}:{}})});if(!l.ok)throw new Error("Error creating file");return l.json()};var k=async(e,t,o="main",n)=>(await Y({user:e,repo:t,branch:o,file:{path:"README.md",content:`${n||"# "+t+`
`}`},message:"initial commit",initialize:!0,encoded:!1}))?.commit.sha,Pe=async(e,t,o)=>{let n=await fetch(`https://api.github.com/repos/${e.username}/${t}/git/matching-refs/heads/${o}?per_page=100`,{method:"GET",cache:"no-store",headers:g(e)}),i=await n.json();if(i.message==="Git Repository is empty."){let s=await k(e,t,"main");return o==="main"?s:null}if(!n.ok)throw new Error("Error getting last commit");let r=i.find(s=>s.ref===`refs/heads/${o}`);return r?r.object.sha:null},Ne=async(e,t,o)=>{let n=await fetch(`https://api.github.com/repos/${e.username}/${t}/commits/${o}`,{method:"GET",cache:"no-store",headers:g(e)});if(!n.ok)throw new Error("Error getting commit tree");let r=(await n.json())?.commit?.tree?.sha;return r||null},We=async(e,t,o,n)=>{let i=o.map(s=>({path:s.path,mode:"100644",type:"blob",content:s.content})),r=await fetch(`https://api.github.com/repos/${e.username}/${t}/git/trees`,{method:"POST",cache:"no-store",headers:g(e),body:JSON.stringify({...n?{base_tree:n}:{},tree:i})});if(!r.ok)throw new Error("Error creating tree");return r.json().then(s=>s.sha)},_e=async(e,t,o,n,i)=>{let r=await fetch(`https://api.github.com/repos/${e.username}/${t}/git/commits`,{method:"POST",cache:"no-store",headers:g(e),body:JSON.stringify({tree:n,message:o||"deploy",...i?{parents:[i]}:{}})});if(!r.ok)throw new Error("Error creating commit");return r.json().then(s=>s.sha)},Oe=async(e,t,o,n)=>{if(!(await fetch(`https://api.github.com/repos/${e.username}/${t}/git/refs`,{method:"POST",cache:"no-store",headers:g(e),body:JSON.stringify({ref:`refs/heads/${o}`,sha:n})})).ok)throw new Error("Error creating branch");return!0},ze=async(e,t,o,n)=>{if(!(await fetch(`https://api.github.com/repos/${e.username}/${t}/git/refs/heads/${o}`,{method:"PATCH",cache:"no-store",headers:g(e),body:JSON.stringify({sha:n})})).ok)throw new Error("Error updating branch");return!0},ee=async({files:e,user:t,repo:o,branch:n,message:i,newRepo:r,privateRepo:s,description:a,readmeContent:c,clearPrevious:p=!0})=>{let l,m,u,x=!1;r&&(o=h(o,"-").toLowerCase());try{if(r||!await Q(t,o)){r=!0,await X(t,o,s,a);let L=await k(t,o,"main",c);l=n==="main"?L:null}else l=await Pe(t,o,n);let y=l&&!p?await Ne(t,o,l):null;return m=await We(t,o,e,y),u=await _e(t,o,i,m,l),l?x=await ze(t,o,n,u):x=await Oe(t,o,n,u),x?{tree:m,commit:u}:null}catch{return null}},te=async({file:e,user:t,repo:o,branch:n,message:i,newRepo:r,privateRepo:s,description:a,readmeContent:c})=>{try{(r||!await Q(t,o))&&(r=!0,o=h(o,"-").toLowerCase(),await X(t,o,s,a),await k(t,o,n,c));let p=await Y({user:t,repo:o,branch:n,file:e,message:i,initialize:r||!1,encoded:!0});return{tree:p?.commit?.tree?.sha,commit:p?.commit?.sha}}catch{return null}},oe=async(e,t="public")=>{let o=1,n=100,i=5,r=[];for(;o<=i;){let s=await fetch(`https://api.github.com/user/repos?type=${t}&per_page=${n}&page=${o}`,{method:"GET",cache:"no-store",headers:g(e)});if(o+=1,!s.ok)continue;let a=await s.json();r.push(...a.map(c=>c.name)),a.length<n&&(o=i+1)}return r};var{getUrl:ne,getModuleUrl:Pt}=b;var re=ne("@tarekraafat/autocomplete.js@10.2.7/dist/autoComplete.min.js");var se=ne("easyqrcodejs@4.6.1/dist/easy.qrcode.min.js");var ie=()=>(Date.now()+""+Math.floor(Math.floor(Math.random()*Date.now()))).substring(0,24);var Ge=({config:e,content:t,commitSource:o,singleFile:n,deps:i})=>{let r=[{path:"index.html",content:t.resultPage}];if(n||r.push({path:"style.css",content:t.style||""},{path:"script.js",content:t.script||""}),o){let s=K(e,i);r.push(...Object.keys(s).map(a=>({path:"src/"+a,content:s[a].content})),{path:"src/livecodes.json",content:JSON.stringify(e,null,2)})}return r},ae=async({user:e,repo:t,config:o,content:n,message:i,commitSource:r=!0,singleFile:s,newRepo:a=!0,deps:c})=>{a&&(t=h(t,"-").toLowerCase());let p=Ge({config:o,content:n,commitSource:r,singleFile:s,deps:c}),l="gh-pages",m=r?`https://github.com/${e.username}/${t}/tree/gh-pages/src`:void 0,u=o.title!==D.title?o.title:"",x=Object.values(Z(o,e,m,!1))[0].content,y=await ee({files:p,user:e,repo:t,branch:l,message:i,newRepo:a,privateRepo:!1,description:u,readmeContent:x,clearPrevious:!0});return y?{url:`https://${e.username}.github.io/${t}/`,username:e.username,repo:t,tree:y.tree,commit:y.commit}:null},Ve=async({file:e,user:t,repo:o,branch:n,message:i,description:r,readmeContent:s})=>{let a={path:`assets/${ie()}/${e.path}`,content:e.content},c=await te({file:a,user:t,repo:o,branch:n,message:i,privateRepo:!1,description:r,readmeContent:s});return c?{url:`https://${t.username}.github.io/${o}/${a.path}`,username:t.username,repo:o,tree:c?.tree,commit:c?.commit}:null},ce=(e,t)=>{let{url:o,username:n,repo:i,commit:r}=e,s=t?`
<div class="description">
<p>
The source code is
<a
href="https://github.com/${n}/${i}/tree/${r}/src"
target="_blank"
>
publicly available
</a>
</p>
<p>
Permanent link:
<a
href="https://livecodes.io/?config=https://raw.githubusercontent.com/${n}/${i}/${r}/src/livecodes.json"
target="_blank"
>
Edit in LiveCodes
</a>
</p>
<p>
Check
<a
href="https://github.com/${n}/${i}/actions"
target="_blank"
>
deployment status
</a>
</p>
</div>
`:"",a=`
<div id="deploy-container" class="modal-container">
<div class="modal-title">Deployed Successfully!</div>
<div class="modal-screen-container">
<div class="description success">
Your project has been deployed successfully to GitHub Pages, and will shortly be available (~1&nbsp;min) on: <br />
<a href="${o}" target="_blank">${o}</a>
</div>
<div id="deploy-qrcode" class="qrcode-container">Generating...</div>
${s}
</div>
</div>
`,c=document.createElement("div");return c.innerHTML=a,c};var le='<!doctype html><html><head><script id="message-script" data-env="development">window.addEventListener("message",(function(e){var t=e.data.result||e.data.html;t&&(document.write(t),document.close())}))<\/script></head><body></body></html>';var pe='<div id="deploy-container" class="modal-container"><div class="modal-title" data-i18n="deploy.heading">Deploy to GitHub Pages</div><div id="deploy-screens" class="modal-screen-container"><ul id="deploy-tabs" class="modal-tabs"><li class="active"><a href="#" data-target="new-repo" data-i18n="deploy.create.heading">Create New Repo</a></li><li><a href="#" data-target="existing-repo" data-i18n="deploy.existing.heading">Existing Repo</a></li></ul><div id="new-repo" class="tab-content active"><div class="modal-screen"><form id="new-repo-form"><div><label for="new-repo-name" data-i18n="deploy.create.repoName" data-i18n-prop="innerHTML">Repo Name <span id="new-repo-name-error" class="error"></span></label> <input type="text" id="new-repo-name" placeholder="Required" data-i18n="generic.required" data-i18n-prop="placeholder"></div><div><label for="new-repo-message" data-i18n="deploy.generic.commitMessage">Commit Message</label> <input type="text" id="new-repo-message" placeholder="Optional" data-i18n="generic.optional" data-i18n-prop="placeholder"></div><div class="padded"><input type="checkbox" id="new-repo-source"> <label for="new-repo-source" data-i18n="deploy.generic.commitSourceCodePublic">Commit source code (public)</label></div><button id="new-repo-btn" class="wide-button" type="submit" data-i18n="deploy.generic.deployBtn">Deploy</button></form><div class="description help" data-i18n="deploy.create.desc" data-i18n-prop="innerHTML">A new <strong>public</strong> repo will be created. The result page will be pushed to <span class="code">gh-pages</span> branch.</div></div></div><div id="existing-repo" class="tab-content"><div class="modal-screen"><form id="existing-repo-form"><div><label for="existing-repo-name" data-i18n="deploy.existing.repoName">Repo Name</label> <input type="text" id="existing-repo-name" autocomplete="off" placeholder="Loading..." data-i18n="generic.loading" data-i18n-prop="placeholder"></div><div><label for="existing-repo-message" data-i18n="deploy.generic.commitMessage">Commit Message</label> <input type="text" id="existing-repo-message" placeholder="Optional" data-i18n="generic.optional" data-i18n-prop="placeholder"></div><div class="padded"><input type="checkbox" id="existing-repo-source"> <label for="existing-repo-source" data-i18n="deploy.generic.commitSourceCodePublic">Commit source code (public)</label></div><button id="existing-repo-btn" class="wide-button" type="submit" data-i18n="deploy.generic.deployBtn">Deploy</button></form><div class="description help" data-i18n="deploy.existing.desc" data-i18n-prop="innerHTML">A new commit will be added to <span class="code">gh-pages</span> branch.</div></div></div></div></div>';var me=e=>Object.entries(J).reduce((t,[o,n])=>t.replace(new RegExp(`{{${o}}}`,"g"),n),e),ue=me(le);var de=me(pe);var ge=async({container:e,url:t,title:o,logo:n})=>{let i=await q(se,"QRCode");e.style.visibility="hidden";let r=new i(e,{text:t,logo:n,width:200,height:200,drawer:"canvas",onRenderingEnd:(s,a)=>{e.innerHTML="";let c=document.createElement("img");c.src=a,c.style.cursor="pointer",c.title=window.deps.translateString("share.qrcode.clickToDownload","Click to download"),c.onclick=()=>r.download(h(o||"LiveCodes","-")),e.appendChild(c),e.style.visibility="visible"}})};var fe=e=>e.querySelector("#new-repo-form"),xe=e=>e.querySelector("#new-repo-btn"),ye=e=>e.querySelector("#new-repo-name"),he=e=>e.querySelector("#new-repo-name-error"),be=e=>e.querySelector("#new-repo-message"),Ee=e=>e.querySelector("#new-repo-source");var Te=e=>e.querySelector("#existing-repo-form"),Le=e=>e.querySelector("#existing-repo-btn"),j=e=>e.querySelector("#existing-repo-name"),R=e=>e.querySelector("#existing-repo-message"),Se=e=>e.querySelector("#existing-repo-source");var Ze=(e,t)=>{let o=document.createElement("div");o.innerHTML=de;let n=o.firstChild,i=n.querySelectorAll("#deploy-tabs li");return i.forEach(r=>{let s=r.querySelector("a");s&&e.addEventListener(r,"click",()=>{i.forEach(c=>c.classList.remove("active")),r.classList.add("active"),document.querySelectorAll("#deploy-screens > div").forEach(c=>{c.classList.remove("active")});let a=n.querySelector("#"+s.dataset.target);a?.classList.add("active"),a?.querySelector("input")?.focus()})}),t&&setTimeout(()=>{i[1].click();let r=j(n),s=R(n);r.value=t,s.focus()}),n},Eo=async({modal:e,notifications:t,eventsManager:o,user:n,deployRepo:i,deps:r})=>{let s=Ze(o,i),a=fe(s),c=xe(s),p=ye(s),l=he(s),m=be(s),u=Ee(s),x=Te(s),y=Le(s),L=j(s),we=R(s),Me=Se(s),A=async(E,d,T,S,w)=>{let B=r.getLanguageCompiler(r.getConfig().script.language)?.scriptType,$=B!=null&&B!=="module";l.innerHTML="";let Ue=await r.getResultPage({forExport:!0,template:ue,singleFile:$}),F=r.getCache(),C=await ae({user:E,repo:d,config:r.getContentConfig(r.getConfig()),content:{resultPage:Ue,style:F.style.compiled||"",script:F.script.compiled||""},message:T,commitSource:S,singleFile:$,newRepo:w,deps:{getLanguageExtension:r.getLanguageExtension}}).catch(v=>{v.message==="Repo name already exists"&&(l.innerHTML=window.deps.translateString("deploy.error.repoNameExists","Repo name already exists"))});if(l.innerHTML!=="")return!1;if(C){await r.setProjectDeployRepo(d);let v=ce(C,S);return e.show(v,{size:"small"}),await ge({container:v.querySelector("#deploy-qrcode"),url:C.url,title:d}),!0}else return e.close(),t.error(window.deps.translateString("deploy.error.generic","Deployment failed!")),!0};if(o.addEventListener(a,"submit",async E=>{if(E.preventDefault(),!n)return;let d=p.value.replace(/[^A-Za-z0-9_.-]/g,"-"),T=m.value,S=u.checked,w=!0;if(!d){t.error(window.deps.translateString("deploy.error.repoNameRequired","Repo name is required"));return}c.innerHTML=window.deps.translateString("deploy.generic.deploying","Deploying..."),c.disabled=!0,await A(n,d,T,S,w)||(c.innerHTML=window.deps.translateString("deploy.generic.deployBtn","Deploy"),c.disabled=!1)}),o.addEventListener(x,"submit",async E=>{if(E.preventDefault(),!n)return;let d=L.value,T=we.value,S=Me.checked,w=!1;if(!d){t.error(window.deps.translateString("deploy.error.repoNameRequired","Repo name is required"));return}y.innerHTML=window.deps.translateString("deploy.generic.deploying","Deploying..."),y.disabled=!0,await A(n,d,T,S,w)}),e.show(s,{isAsync:!0,autoFocus:!1}),p.focus(),!n)return;globalThis.autoComplete||await import(re);let ve=globalThis.autoComplete,He=await oe(n);o.addEventListener(L,"init",()=>{i||L.focus()});let I="#"+L.id;if(!document.querySelector(I))return;let H=new ve({selector:I,placeHolder:window.deps.translateString("deploy.searchRepo","Search your public repos..."),data:{src:He},resultItem:{highlight:{render:!0}}});o.addEventListener(H.input,"selection",function(E){let d=E.detail;H.input.blur();let T=d.selection.value;H.input.value=T})};export{Eo as createDeployUI,Ve as deployFile};