livecodes
Version:
A Code Playground That Just Works!
2 lines (1 loc) • 13.5 kB
JavaScript
;var oe=Object.create;var N=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ie=Object.getPrototypeOf,ae=Object.prototype.hasOwnProperty;var le=(c,p)=>()=>(p||c((p={exports:{}}).exports,p),p.exports),ce=(c,p)=>{for(var w in p)N(c,w,{get:p[w],enumerable:!0})},Z=(c,p,w,f)=>{if(p&&typeof p=="object"||typeof p=="function")for(let L of se(p))!ae.call(c,L)&&L!==w&&N(c,L,{get:()=>p[L],enumerable:!(f=re(p,L))||f.enumerable});return c};var de=(c,p,w)=>(w=c!=null?oe(ie(c)):{},Z(p||!c||!c.__esModule?N(w,"default",{value:c,enumerable:!0}):w,c)),fe=c=>Z(N({},"__esModule",{value:!0}),c);var G=le((Ee,W)=>{var ue=function(){var c=String.fromCharCode,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",w="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",f={};function L(s,r){if(!f[s]){f[s]={};for(var e=0;e<s.length;e++)f[s][s.charAt(e)]=e}return f[s][r]}var x={compressToBase64:function(s){if(s==null)return"";var r=x._compress(s,6,function(e){return p.charAt(e)});switch(r.length%4){default:case 0:return r;case 1:return r+"===";case 2:return r+"==";case 3:return r+"="}},decompressFromBase64:function(s){return s==null?"":s==""?null:x._decompress(s.length,32,function(r){return L(p,s.charAt(r))})},compressToUTF16:function(s){return s==null?"":x._compress(s,15,function(r){return c(r+32)})+" "},decompressFromUTF16:function(s){return s==null?"":s==""?null:x._decompress(s.length,16384,function(r){return s.charCodeAt(r)-32})},compressToUint8Array:function(s){for(var r=x.compress(s),e=new Uint8Array(r.length*2),n=0,l=r.length;n<l;n++){var m=r.charCodeAt(n);e[n*2]=m>>>8,e[n*2+1]=m%256}return e},decompressFromUint8Array:function(s){if(s==null)return x.decompress(s);for(var r=new Array(s.length/2),e=0,n=r.length;e<n;e++)r[e]=s[e*2]*256+s[e*2+1];var l=[];return r.forEach(function(m){l.push(c(m))}),x.decompress(l.join(""))},compressToEncodedURIComponent:function(s){return s==null?"":x._compress(s,6,function(r){return w.charAt(r)})},decompressFromEncodedURIComponent:function(s){return s==null?"":s==""?null:(s=s.replace(/ /g,"+"),x._decompress(s.length,32,function(r){return L(w,s.charAt(r))}))},compress:function(s){return x._compress(s,16,function(r){return c(r)})},_compress:function(s,r,e){if(s==null)return"";var n,l,m={},y={},E="",C="",v="",b=2,S=3,d=2,h=[],t=0,o=0,A;for(A=0;A<s.length;A+=1)if(E=s.charAt(A),Object.prototype.hasOwnProperty.call(m,E)||(m[E]=S++,y[E]=!0),C=v+E,Object.prototype.hasOwnProperty.call(m,C))v=C;else{if(Object.prototype.hasOwnProperty.call(y,v)){if(v.charCodeAt(0)<256){for(n=0;n<d;n++)t=t<<1,o==r-1?(o=0,h.push(e(t)),t=0):o++;for(l=v.charCodeAt(0),n=0;n<8;n++)t=t<<1|l&1,o==r-1?(o=0,h.push(e(t)),t=0):o++,l=l>>1}else{for(l=1,n=0;n<d;n++)t=t<<1|l,o==r-1?(o=0,h.push(e(t)),t=0):o++,l=0;for(l=v.charCodeAt(0),n=0;n<16;n++)t=t<<1|l&1,o==r-1?(o=0,h.push(e(t)),t=0):o++,l=l>>1}b--,b==0&&(b=Math.pow(2,d),d++),delete y[v]}else for(l=m[v],n=0;n<d;n++)t=t<<1|l&1,o==r-1?(o=0,h.push(e(t)),t=0):o++,l=l>>1;b--,b==0&&(b=Math.pow(2,d),d++),m[C]=S++,v=String(E)}if(v!==""){if(Object.prototype.hasOwnProperty.call(y,v)){if(v.charCodeAt(0)<256){for(n=0;n<d;n++)t=t<<1,o==r-1?(o=0,h.push(e(t)),t=0):o++;for(l=v.charCodeAt(0),n=0;n<8;n++)t=t<<1|l&1,o==r-1?(o=0,h.push(e(t)),t=0):o++,l=l>>1}else{for(l=1,n=0;n<d;n++)t=t<<1|l,o==r-1?(o=0,h.push(e(t)),t=0):o++,l=0;for(l=v.charCodeAt(0),n=0;n<16;n++)t=t<<1|l&1,o==r-1?(o=0,h.push(e(t)),t=0):o++,l=l>>1}b--,b==0&&(b=Math.pow(2,d),d++),delete y[v]}else for(l=m[v],n=0;n<d;n++)t=t<<1|l&1,o==r-1?(o=0,h.push(e(t)),t=0):o++,l=l>>1;b--,b==0&&(b=Math.pow(2,d),d++)}for(l=2,n=0;n<d;n++)t=t<<1|l&1,o==r-1?(o=0,h.push(e(t)),t=0):o++,l=l>>1;for(;;)if(t=t<<1,o==r-1){h.push(e(t));break}else o++;return h.join("")},decompress:function(s){return s==null?"":s==""?null:x._decompress(s.length,32768,function(r){return s.charCodeAt(r)})},_decompress:function(s,r,e){var n=[],l,m=4,y=4,E=3,C="",v=[],b,S,d,h,t,o,A,a={val:e(0),position:r,index:1};for(b=0;b<3;b+=1)n[b]=b;for(d=0,t=Math.pow(2,2),o=1;o!=t;)h=a.val&a.position,a.position>>=1,a.position==0&&(a.position=r,a.val=e(a.index++)),d|=(h>0?1:0)*o,o<<=1;switch(l=d){case 0:for(d=0,t=Math.pow(2,8),o=1;o!=t;)h=a.val&a.position,a.position>>=1,a.position==0&&(a.position=r,a.val=e(a.index++)),d|=(h>0?1:0)*o,o<<=1;A=c(d);break;case 1:for(d=0,t=Math.pow(2,16),o=1;o!=t;)h=a.val&a.position,a.position>>=1,a.position==0&&(a.position=r,a.val=e(a.index++)),d|=(h>0?1:0)*o,o<<=1;A=c(d);break;case 2:return""}for(n[3]=A,S=A,v.push(A);;){if(a.index>s)return"";for(d=0,t=Math.pow(2,E),o=1;o!=t;)h=a.val&a.position,a.position>>=1,a.position==0&&(a.position=r,a.val=e(a.index++)),d|=(h>0?1:0)*o,o<<=1;switch(A=d){case 0:for(d=0,t=Math.pow(2,8),o=1;o!=t;)h=a.val&a.position,a.position>>=1,a.position==0&&(a.position=r,a.val=e(a.index++)),d|=(h>0?1:0)*o,o<<=1;n[y++]=c(d),A=y-1,m--;break;case 1:for(d=0,t=Math.pow(2,16),o=1;o!=t;)h=a.val&a.position,a.position>>=1,a.position==0&&(a.position=r,a.val=e(a.index++)),d|=(h>0?1:0)*o,o<<=1;n[y++]=c(d),A=y-1,m--;break;case 2:return v.join("")}if(m==0&&(m=Math.pow(2,E),E++),n[A])C=n[A];else if(A===y)C=S+S.charAt(0);else return null;v.push(C),n[y++]=S+C.charAt(0),m--,S=C,m==0&&(m=Math.pow(2,E),E++)}}};return x}();typeof W!="undefined"&&W!=null&&(W.exports=ue)});var ve={};ce(ve,{compress:()=>he,createPlayground:()=>me,decompress:()=>ye,getPlaygroundUrl:()=>X});module.exports=fe(ve);var I=de(G());var pe={chrome:["accelerometer","bluetooth","camera","clipboard-read","clipboard-write","display-capture","encrypted-media","geolocation","gyroscope","language-detector","language-model","local-network-access","microphone","midi","proofreader","rewriter","serial","summarizer","translator","web-share","writer","window-placement","xr-spatial-tracking"],firefox:["camera","display-capture","geolocation","microphone","web-share"],default:["accelerometer","ambient-light-sensor","camera","display-capture","encrypted-media","geolocation","gyroscope","microphone","midi","payment","serial","vr","web-share","xr-spatial-tracking"]},ge=()=>{if(typeof navigator=="undefined")return"default";let c=navigator.userAgent;return/Firefox\//i.test(c)?"firefox":/Chrome\//i.test(c)?"chrome":"default"},Y=()=>pe[ge()].filter(c=>{var w,f,L;let p=(L=(f=(w=globalThis.document)==null?void 0:w.featurePolicy)==null?void 0:f.features)==null?void 0:L.call(f);return p?p.includes(c):!0}).join("; ");async function me(c,p={}){typeof c=="object"&&!(c instanceof HTMLElement)&&(c.headless||c.view==="headless")&&(p=c,c=null);let w=6e4,{config:f={},headless:L,loading:x="lazy",view:s}=p,r=L||s==="headless",e=null,n=null,l=i=>{i.style.position="absolute",i.style.top="0",i.style.visibility="hidden",i.style.opacity="0"};if(typeof c=="string")e=document.querySelector(c);else if(c instanceof HTMLElement)e=c;else if(!(r&&typeof c=="object"))throw new Error("A valid container element is required.");if(!e)if(r)e=document.createElement("div"),l(e),document.body.appendChild(e);else throw new Error(`Cannot find element: "${c}"`);let m=new URL(X(p)),y=m.origin;m.searchParams.set("embed","true"),m.searchParams.set("loading",r?"eager":x),m.searchParams.set("sdkVersion","0.14.1"),typeof f=="object"&&Object.keys(f).length>0&&m.searchParams.set("config","sdk");let E=p.params;typeof E=="object"&&Object.keys(E).length>0&&JSON.stringify(E).length<1800&&Object.keys(E).forEach(i=>{m.searchParams.set(i,encodeURIComponent(String(E[i])))});let C=!1,v="Cannot call API methods after calling `destroy()`.",b=[],S=(i,u="message")=>{addEventListener(u,i),b.push(i)},d=(i,u="message")=>{removeEventListener(u,i);let P=b.indexOf(i);P>-1&&b.splice(P,1)},t=await new Promise(i=>{var O,H,T,_,D,j,q,$,J;if(!e)return;let u=e.dataset.height||e.style.height;if(u&&!r){let F=isNaN(Number(u))?u:u+"px";e.style.height=F}e.dataset.defaultStyles!=="false"&&!r&&((O=e.style).backgroundColor||(O.backgroundColor="#fff"),(H=e.style).border||(H.border="1px solid black"),(T=e.style).borderRadius||(T.borderRadius="8px"),(_=e.style).boxSizing||(_.boxSizing="border-box"),(D=e.style).padding||(D.padding="0"),(j=e.style).width||(j.width="100%"),(q=e.style).height||(q.height=e.style.height||"300px"),e.style.minHeight="200px",e.style.flexGrow="1",($=e.style).overflow||($.overflow="hidden"),(J=e.style).resize||(J.resize="vertical"),getComputedStyle(e).getPropertyValue("display")==="inline"&&(e.style.display="block"));let P="livecodes",M=e.querySelector(`iframe.${P}`),g=M||document.createElement("iframe");g.classList.add(P),g.setAttribute("allow",Y()),g.setAttribute("allowtransparency","true"),g.setAttribute("allowpaymentrequest","true"),g.setAttribute("allowfullscreen","true"),g.setAttribute("sandbox","allow-same-origin allow-downloads allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-presentation allow-scripts");let U=x==="eager"?"eager":"lazy";g.setAttribute("loading",U),r?l(g):(g.style.height="100%",g.style.minHeight="200px",g.style.width="100%",g.style.margin="0",g.style.border="0",g.style.borderRadius=e.style.borderRadius),S(function F(R){var K;R.source!==g.contentWindow||R.origin!==y||((K=R.data)==null?void 0:K.type)!=="livecodes-init"||(d(F),n=Number(R.data.payload.appVersion.replace(/^v/,"")))}),(!n||n<46)&&S(function F(R){var K,Q;R.source!==g.contentWindow||R.origin!==y||((K=R.data)==null?void 0:K.type)!=="livecodes-get-config"||(d(F),(Q=g.contentWindow)==null||Q.postMessage({type:"livecodes-config",payload:f},y))}),g.onload=()=>{i(g)},g.src=m.href,M||e.appendChild(g)}),o=new Promise(i=>{S(function u(P){var M;P.source!==t.contentWindow||P.origin!==y||((M=P.data)==null?void 0:M.type)!=="livecodes-ready"||(d(u),i(),o.settled=!0)})}),A=()=>C?Promise.reject(v):new Promise(async i=>{var P;o.settled&&i();let u={type:"livecodes-load"};(P=t.contentWindow)==null||P.postMessage(u,y),await o,i()}),a=(i,u)=>new Promise(async(P,M)=>{var H;if(C)return M(v);await A();let g=ne(),U=setTimeout(()=>{d(O),M(new Error(`SDK call "${i}" timed out after ${w}ms.`))},w);function O(T){var _,D;if(!(T.source!==t.contentWindow||T.origin!==y||((_=T.data)==null?void 0:_.type)!=="livecodes-api-response"||((D=T.data)==null?void 0:D.id)!==g)&&T.data.method===i){clearTimeout(U),d(O);let j=T.data.payload;j!=null&&j.error?M(j.error):P(j)}}S(O),(H=t.contentWindow)==null||H.postMessage({method:i,id:g,args:u},y)}),k={},V=["load","ready","code","console","tests","destroy"],B=(i,u)=>{var P;if(C)throw new Error(v);return V.includes(i)?(a("watch",[i]),k[i]||(k[i]=[]),(P=k[i])==null||P.push(u),{remove:()=>{var M,g;k[i]=(M=k[i])==null?void 0:M.filter(U=>U!==u),((g=k[i])==null?void 0:g.length)===0&&a("watch",[i,"unsubscribe"])}}):{remove:()=>{}}},ee=i=>({"livecodes-app-loaded":"load","livecodes-ready":"ready","livecodes-change":"code","livecodes-console":"console","livecodes-test-results":"tests","livecodes-destroy":"destroy"})[i];S(async function(u){var g,U,O,H;let P=ee((U=(g=u.data)==null?void 0:g.type)!=null?U:"");if(u.source!==t.contentWindow||u.origin!==y||!P||!k[P])return;let M=(O=u.data)==null?void 0:O.payload;(H=k[P])==null||H.forEach(T=>{T(M)})});let te=()=>{var i;(i=t==null?void 0:t.remove)==null||i.call(t),Object.values(k).forEach(u=>{u.length=0}),b.forEach(u=>removeEventListener("message",u)),b.length=0,z&&e&&z.unobserve(e),C=!0},z;x==="lazy"&&"IntersectionObserver"in window&&(z=new IntersectionObserver((i,u)=>{i.forEach(async P=>{P.isIntersecting&&(await A(),u.unobserve(e))})},{rootMargin:"150px"}),z.observe(e));let ne=()=>(String(Math.random())+Date.now().toFixed()).replace("0.","");return{load:()=>A(),run:()=>a("run"),format:i=>a("format",[i]),getShareUrl:i=>a("getShareUrl",[i]),getConfig:i=>a("getConfig",[i]),setConfig:i=>a("setConfig",[i]),getCode:()=>a("getCode"),show:(i,u)=>a("show",[i,u]),runTests:()=>a("runTests"),onChange:i=>B("code",i),watch:B,exec:(i,...u)=>a("exec",[i,...u]),destroy:()=>C?Promise.reject(v):(te(),Promise.resolve())}}function X(c={}){let{appUrl:p="https://livecodes.io",params:w={},config:f={},headless:L,import:x,lite:s,view:r,...e}=c,n;try{n=new URL(p)}catch(y){throw new Error(`${p} is not a valid URL.`)}let l=new URLSearchParams;Object.entries(e).forEach(([y,E])=>{E!==void 0&&n.searchParams.set(y,String(E))});let m=c.view==="headless"||L;if(s&&(console.warn(`Deprecation notice: "lite" option is deprecated. Use "config: { mode: 'lite' }" instead.`),typeof f=="object"&&f.mode==null?f.mode="lite":n.searchParams.set("lite","true")),r&&(console.warn('Deprecation notice: The "view" option has been moved to "config.view". For headless mode use "headless: true".'),typeof f=="object"&&f.view==null&&r!=="headless"?f.view=r:n.searchParams.set("view",r)),typeof f=="string")try{new URL(f),n.searchParams.set("config",encodeURIComponent(f))}catch(y){throw new Error('"config" is not a valid URL or configuration object.')}else f&&typeof f=="object"&&Object.keys(f).length>0&&(f.title&&f.title!=="Untitled Project"&&n.searchParams.set("title",f.title),f.description&&f.description.length>0&&n.searchParams.set("description",f.description),l.set("config","code/"+(0,I.compressToEncodedURIComponent)(JSON.stringify(f))));if(w&&typeof w=="object"&&Object.keys(w).length>0)try{l.set("params",(0,I.compressToEncodedURIComponent)(JSON.stringify(w)))}catch(y){Object.keys(w).forEach(E=>{n.searchParams.set(E,encodeURIComponent(String(w[E])))})}return x&&n.searchParams.set("x",encodeURIComponent(x)),m&&n.searchParams.set("headless","true"),l.toString().length>0&&(n.hash=l.toString()),n.href}var he=I.compressToEncodedURIComponent,ye=I.decompressFromEncodedURIComponent;