2025-06-11 22:23:49 +08:00

2 lines
13 KiB
JavaScript

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