var te=(e,t="_")=>e.replace(/[\W]+/g,t),C=()=>{let e=!1,t=navigator.userAgent.toLowerCase();return function(s){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(e=!0)}(t||navigator.vendor||window.opera),e};var oe=()=>String(Math.random())+"-"+Date.now().toFixed(),D=(e,t,s)=>{let a=document.createElement("a");a.style.display="none",a.href=s,a.download=te(e)+"."+t,a.click(),a.remove()},z=(e,t)=>new Promise((s,a)=>{if(t&&globalThis[t])return s(globalThis[t]);if(typeof globalThis.importScripts=="function")return globalThis.importScripts(e),t&&globalThis[t]?s(globalThis[t]):s(globalThis);let r=document.createElement("script");r.src=e,r.async=!0;let l=()=>{r.removeEventListener("load",c),r.removeEventListener("error",m)},c=()=>{if(l(),!t)return s("loaded: "+e);let f=setInterval(()=>{if(window[t])return clearInterval(f),s(window[t])},5)},m=()=>{l(),a("failed to load: "+e)};r.addEventListener("load",c),r.addEventListener("error",m),document.head.appendChild(r)}),B=(e,t,s)=>{if(t&&document.getElementById(t))return;let a=document.createElement("link");a.rel="stylesheet",a.href=e,a.id=t||"styles-"+oe(),a.crossOrigin="anonymous",document.head.insertBefore(a,s?document.querySelector(s):null)};var P=()=>{let e=new Date,t=e.getTimezoneOffset();return e=new Date(e.getTime()-t*60*1e3),e.toISOString().split("T")[0]};var $={APP_VERSION:"46",SDK_VERSION:"0.11.0",COMMIT_SHA:"7617d5c",REPO_URL:"https://github.com/live-codes/livecodes",DOCS_BASE_URL:"/docs/"};var O='';var se=e=>Object.entries($).reduce((t,[s,a])=>t.replace(new RegExp(`{{${s}}}`,"g"),a),e);var F=se(O);var W=["esm.sh","skypack","esm.run","jsdelivr.esm","fastly.jsdelivr.esm","gcore.jsdelivr.esm","testingcf.jsdelivr.esm","jsdelivr.b-cdn.esm","jspm"],_=["jsdelivr","fastly.jsdelivr","unpkg","gcore.jsdelivr","testingcf.jsdelivr","jsdelivr.b-cdn","npmcdn"],G=["jsdelivr.gh","fastly.jsdelivr.gh","statically","gcore.jsdelivr.gh","testingcf.jsdelivr.gh","jsdelivr.b-cdn.gh"],k={getModuleUrl:(e,{isModule:t=!0,defaultCDN:s="esm.sh",external:a}={})=>{e=e.replace(/#nobundle/g,"");let r=c=>!a||!c.includes("https://esm.sh")?c:c.includes("?")?`${c}&external=${a}`:`${c}?external=${a}`,l=N(e,t,s);return l?r(l):t?r("https://esm.sh/"+e):"https://cdn.jsdelivr.net/npm/"+e},getUrl:(e,t)=>e.startsWith("http")||e.startsWith("data:")?e:N(e,!1,t||re())||e,cdnLists:{npm:_,module:W,gh:G},checkCDNs:async(e,t)=>{let s=[t,...k.cdnLists.npm].filter(Boolean);for(let a of s)try{if((await fetch(k.getUrl(e,a),{method:"HEAD"})).ok)return a}catch{}return k.cdnLists.npm[0]}},re=()=>{if(globalThis.appCDN)return globalThis.appCDN;try{return new URL(location.href).searchParams.get("appCDN")||k.cdnLists.npm[0]}catch{return k.cdnLists.npm[0]}},N=(e,t,s)=>{let a=t&&e.startsWith("unpkg:")?"?module":"";e.startsWith("gh:")?e=e.replace("gh",G[0]):e.includes(":")||(e=(s||(t?W[0]:_[0]))+":"+e);for(let r of ae){let[l,c]=r;if(l.test(e))return e.replace(l,c)+a}return null},ae=[[/^(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{getUrl:V,getModuleUrl:Te}=k;var J=V("flexsearch@0.7.21/dist/flexsearch.bundle.js");var A=V("@yaireo/tagify@4.25.1/dist/");var K=e=>e.querySelector("#bulk-import-button"),Z=e=>e.querySelector("#export-all-button"),Y=e=>e.querySelector("#delete-all-button");var Q=typeof window<"u"?window:null,X=Q===null,le=X?void 0:Q.document;var Ae=X?"calc":["","-webkit-","-moz-","-o-"].filter(function(e){var t=le.createElement("div");return t.style.cssText="width:"+e+"calc(9px)",!!t.style.length}).shift()+"calc";var ee=e=>{try{return JSON.parse(e).map(t=>t.value)}catch{return e.split(",").map(t=>t.trim())}};var ie=(e,t,s,a,r=!1)=>{let l=document.createElement("li");t.appendChild(l);let c=document.createElement("a");c.href="#",c.dataset.id=e.id,c.classList.add("open-project-link");let m=document.createElement("div");m.classList.add("open-project-item"),c.appendChild(m);let f=C()?new Date(e.lastModified).toLocaleDateString():new Date(e.lastModified).toLocaleString(),w=[];C()||e.languages.forEach(p=>{let i=document.createElement("span");i.classList.add("language-tag"),i.dataset.lang=a(p),r?i.classList.add("template-tag"):i.title=window.deps.translateString("open.filter.language","filter by language"),i.textContent=s(p),w.push(i)});let E=[];e.tags=[...new Set(e.tags)].filter(Boolean),!C()&&e.tags.length>0&&e.tags.forEach(p=>{let i=document.createElement("span");i.classList.add("user-tag"),i.dataset.tag=p,r?i.classList.add("template-tag"):i.title=window.deps.translateString("open.filter.tag","filter by tag"),i.textContent=p,E.push(i)});let T=document.createElement("div");T.classList.add("open-title","overflow-text"),T.textContent=e.title,m.appendChild(T);let b=document.createElement("div");b.classList.add("light"),b.textContent=window.deps.translateString("open.lastModified","Last modified: {{modified}}",{modified:f}),m.appendChild(b);let d=document.createElement("div");d.classList.add("project-tags"),w.forEach(p=>d.append(p)),d.innerHTML+=E.length>0?' | ':"",E.forEach(p=>d.append(p)),m.appendChild(d);let y=document.createElement("div");y.classList.add("template-default");let S=document.createElement("i");S.classList.add("icon-file-template"),y.appendChild(S);let v=document.createElement("span");v.innerText=window.deps.translateString("open.setAsDefault","Set as default"),v.classList.add("template-default-link"),y.appendChild(v);let h=document.createElement("span");h.classList.add("default-template-label"),h.innerText=window.deps.translateString("open.defaultTemplate","Default template "),y.appendChild(h);let M=document.createElement("span");M.innerText=window.deps.translateString("open.removeDefault","(unset)"),M.classList.add("template-remove-default-link","delete"),h.appendChild(M),r&&c.appendChild(y),l.appendChild(c);let u=document.createElement("div");u.classList.add("actions"),l.appendChild(u);let g=document.createElement("button");g.classList.add("delete-button");let H='';return g.title=window.deps.translateString("open.action.delete","Delete"),g.innerHTML=`${H}`,u.appendChild(g),{link:c,deleteButton:g,setAsDefaultLink:v,removeDefaultLink:M}},pe=e=>{let t=document.createElement("div");return t.innerHTML=` `,t},de=(e,t,s,a)=>{let r="lastModified",l="desc",c,m=[],f,w=[],E=document.querySelector("#list-container #sort-by-last-modified"),T=document.querySelector("#list-container #sort-by-title"),b=document.querySelector("#list-container #sorted-asc"),d=document.querySelector("#list-container #sorted-desc"),y=document.querySelector("#list-container #language-filter"),S=document.querySelector("#list-container #filter-tags"),v=document.querySelector("#list-container #search-projects"),h=document.querySelector("#list-container #reset-filters");a.map(o=>({name:o.name,title:o.longTitle||o.title})).sort((o,n)=>o.title.toLowerCase()n.title.toLowerCase()?1:0).forEach(o=>{let n=document.createElement("option");n.text=o.title,n.value=o.name,y.appendChild(n)});let M=async()=>(await e()).filter(o=>c?o.languages.includes(c):!0).filter(o=>m.length>0?m.map(n=>o.tags.includes(n)).every(n=>n===!0):!0).filter(o=>v.value.trim()!==""?w.includes(o.id):!0).sort((o,n)=>r==="lastModified"&&l==="asc"?o.lastModified-n.lastModified:r==="lastModified"&&l==="desc"?n.lastModified-o.lastModified:r==="title"&&l==="asc"&&o.titlen.title||r==="title"&&l==="desc"&&o.titlen.title?-1:0),u=()=>{document.querySelectorAll(".project-tags span").forEach(n=>{n.dataset.lang?s.addEventListener(n,"click",async x=>{x.stopPropagation(),y.value=n.dataset.lang||"",await j()},!1):n.dataset.tag&&s.addEventListener(n,"click",async x=>{x.stopPropagation(),f&&(f.removeAllTags(),f.addTags(n.dataset.tag),await i())},!1)})},g=async()=>{t(await M()),u()},H=()=>{l="asc",b.style.display="unset",d.style.display="none"},p=()=>{l="desc",b.style.display="none",d.style.display="unset"},i=async(o=S.value)=>{m=ee(o).filter(n=>n!==""),await g()},j=async(o=y.value)=>{c=o,await g()};s.addEventListener(E,"click",async o=>{o.preventDefault(),r!=="lastModified"||l==="asc"?p():H(),r="lastModified",E.classList.add("active"),T.classList.remove("active"),await g()},!1),s.addEventListener(T,"click",async o=>{o.preventDefault(),r!=="title"?H():l==="asc"?p():H(),r="title",E.classList.remove("active"),T.classList.add("active"),await g()},!1),s.addEventListener(b,"click",async o=>{o.preventDefault(),p(),await g()},!1),s.addEventListener(d,"click",async o=>{o.preventDefault(),H(),await g()},!1),s.addEventListener(S,"keyup",()=>i(S.value),!1),s.addEventListener(y,"change",async()=>{await j()},!1),u(),B(A+"tagify.css","tagify-styles"),import(A+"tagify.esm.js").then(async o=>{let n=o.default;n&&(f=new n(S,{focusable:!1,whitelist:Array.from(new Set((await e()).map(x=>x.tags).flat())).sort((x,L)=>L>x?-1:1),dropdown:{maxItems:40,enabled:0,closeOnSelect:!1,highlightFirst:!0}}),f.on("change",()=>i(JSON.stringify(f?.value||""))))}),z(J,"FlexSearch").then(async o=>{let n=new o.Document({index:["title","description","tags","languages"],tokenize:"full",worker:!0});await Promise.all((await e()).map(x=>n.add(x))),s.addEventListener(v,"keyup",async()=>{w=(await n.searchAsync(v.value)).map(L=>L.result).flat(),await g()},!1)}),s.addEventListener(h,"click",async o=>{o.preventDefault(),r="lastModified",l="desc",c="",m=[],w=[],E.classList.add("active"),T.classList.remove("active"),p(),y.value="",f?.removeAllTags(),v.value="",await g()},!1)},St=async({projectStorage:e,eventsManager:t,showScreen:s,getContentConfig:a,notifications:r,modal:l,loadConfig:c,getProjectId:m,setProjectId:f,languages:w,getLanguageTitle:E,getLanguageByAlias:T})=>{let b=document.createElement("div");b.innerHTML=F;let d=b.firstChild,y=d.querySelector(".no-data"),S=d.querySelector("#no-match.no-data"),v=d.querySelector("#projects-container"),h=document.createElement("ul");h.classList.add("open-list");let M=await e.getList(),u=M,g=K(d),H=Z(d),p=Y(d);t.addEventListener(g,"click",()=>{s("import")},!1),t.addEventListener(H,"click",async()=>{let o=(await e.getAllData()).filter(L=>u.find(q=>q.id===L.id)).map(L=>({...L,config:a(L.config)})).sort((L,q)=>L.lastModified-q.lastModified),n="livecodes_export_"+P(),x="data:text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(o));D(n,"json",x)},!1),t.addEventListener(p,"click",async()=>{r.confirm(window.deps.translateString("open.delete.all","Delete {{projects}} projects?",{projects:u.length}),async()=>{r.info(window.deps.translateString("open.delete.deleting","Deleting projects...")),await Promise.all(u.map(o=>(m()===o.id&&f(""),e.deleteItem(o.id)))),u=[],M=await e.getList(),await i(u)})},!1),v.appendChild(h);let i=async o=>{u=o,h.innerHTML="",o.forEach(n=>{let{link:x,deleteButton:L}=ie(n,h,E,T);t.addEventListener(x,"click",async q=>{q.preventDefault();let U=pe(n);l.show(U,{size:"small"});let I=x.dataset.id||"",R=(await e.getItem(I))?.config;R&&(await c(R),f(I)),l.close(),U.remove()},!1),t.addEventListener(L,"click",()=>{r.confirm(window.deps.translateString("open.delete.one","Delete project: {{project}}?",{project:n.title}),async()=>{n.id===m()&&f(""),await e.deleteItem(n.id),u=u.filter(U=>U.id!==n.id),L.parentElement.classList.add("hidden"),setTimeout(()=>{i(u)},500)})},!1)}),o.length===0?(h.classList.add("hidden"),p.classList.add("hidden"),H.classList.add("hidden"),(await e.getList()).length===0?(y.classList.remove("hidden"),S.classList.add("hidden")):(y.classList.add("hidden"),S.classList.remove("hidden"))):(h.classList.remove("hidden"),p.classList.remove("hidden"),H.classList.remove("hidden"),y.classList.add("hidden"),S.classList.add("hidden"))};await i(M);let j=()=>e.getList();l.show(d,{isAsync:!0}),de(j,i,t,w)};export{ie as createOpenItem,St as createSavedProjectsList};