asciify-engine 1.0.9 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/embed.js CHANGED
@@ -1 +1 @@
1
- (function(){'use strict';function et(e){let l=atob(e),t=new Uint8Array(l.length);for(let a=0;a<l.length;a++)t[a]=l.charCodeAt(a);return t}function dt(e){return Array.isArray(e)?e.map(et):[et(e)]}function Mt(e,l,t,a){let n=e[0],r=1+(t*a+l)*n;if(n===4){let d=Math.round(.299*e[r]+.587*e[r+1]+.114*e[r+2]);return {r:e[r],g:e[r+1],b:e[r+2],a:e[r+3],l:d}}return {r:e[r],g:e[r],b:e[r],l:e[r],a:e[r+1]}}function gt(e){return e*e*(3-2*e)}function bt(e,l){if(e==="fullcolor")return (t,a,n)=>`rgb(${t},${a},${n})`;if(e==="matrix")return (t,a,n)=>`rgb(0,${Math.floor(.299*t+.587*a+.114*n)},0)`;if(e==="accent"){let t=l.replace("#",""),a=parseInt(t.substring(0,2),16),n=parseInt(t.substring(2,4),16),r=parseInt(t.substring(4,6),16);return (d,y,i)=>{let s=(.299*d+.587*y+.114*i)/255;return `rgb(${Math.floor(a*s)},${Math.floor(n*s)},${Math.floor(r*s)})`}}return (t,a,n)=>{let r=Math.floor(.299*t+.587*a+.114*n);return `rgb(${r},${r},${r})`}}function pt(e,l,t,a,n,r,d){let y=l,i=d*y;switch(e){case "wave":{let s=Math.sin(t/n*Math.PI*4+i*3)*.5+.5,o=Math.sin(a/r*Math.PI*3+i*2)*.5+.5;return .3+.7*(s*.6+o*.4)}case "pulse":{let s=n/2,o=r/2,f=Math.sqrt((t-s)**2+(a-o)**2),h=Math.sqrt(s*s+o*o);return .2+.8*(Math.sin(f/h*Math.PI*6-i*4)*.5+.5)}case "rain":return .1+.9*(Math.sin(a/r*Math.PI*8-i*5+t*.3)*.5+.5)*(Math.sin(t/n*Math.PI*2+i)*.3+.7);case "breathe":return Math.max(.1,Math.min(1,Math.sin(i*2)*.3+.7+Math.sin((t+a)*.1+i)*.1));case "sparkle":{let s=Math.sin(t*127.1+a*311.7+Math.floor(i*8)*43758.5453)*43758.5453,o=s-Math.floor(s);return o>.7?1:.15+o*.4}case "glitch":{let s=Math.floor(a/(r*.05)),o=Math.sin(s*43.23+Math.floor(i*6)*17.89)*43758.5453;if(o-Math.floor(o)>.85){let h=Math.sin(i*30+s)*.5+.5;return h<.3?0:h}return 1}case "spiral":{let s=n/2,o=r/2,f=t-s,h=a-o,M=Math.atan2(h,f),I=Math.sqrt(f*f+h*h),F=Math.sqrt(s*s+o*o);return .15+.85*(Math.sin(M*3+I/F*Math.PI*8-i*3)*.5+.5)}case "typewriter":{let s=n*r,o=a*n+t,f=i*.5%1,h=f*s*1.3,M=o-h;return M>0?0:Math.min(1,Math.max(0,1+M/(s*.15)))}case "scatter":{let s=n/2,o=r/2,f=t-s,h=a-o,M=Math.sqrt(f*f+h*h)/Math.sqrt(s*s+o*o),I=Math.sin(i*1.5)*.5+.5;return M>I?Math.max(0,1-(M-I)*3):.7+.3*Math.sin(M*10-i*2)}default:return 1}}function at(e,l,t){let a=document.getElementById(e);if(!a){console.error(`Asciify: canvas #${e} not found`);return}let n=a.getContext("2d"),{r,c:d,w:y,h:i}=t,s=t.fps??10,o=t.cs??" .:-=+*#%@",f=t.cm??"grayscale",h=t.ac??"#ffffff",M=t.as??"none",I=t.sp??1,F=t.inv??false,m=t.hs??0,st=t.hr??.3,P=t.he??"spotlight",k=t.hc??"#ffffff",ot=t.dr??.7,it=t.dots??false,z=t.anim??false,ct=parseInt(k.slice(1,3),16)||255,lt=parseInt(k.slice(3,5),16)||255,ht=parseInt(k.slice(5,7),16)||255,$=y/d,E=i/r,K=dt(l),mt=bt(f,h),R=m>0,Q=M!=="none"||z,H=-1,U=-1,A=0,J=.5,W=.5,D=0,V=0;R&&(a.addEventListener("mousemove",S=>{let w=a.getBoundingClientRect();H=(S.clientX-w.left)/w.width,U=(S.clientY-w.top)/w.height;}),a.addEventListener("mouseleave",()=>{H=-1,U=-1;}));function N(S){let w=S/1e3;z&&S-V>=1e3/s&&(D=(D+1)%K.length,V=S);let ut=K[D];n.clearRect(0,0,y,i),n.fillStyle="#0a0a0a",n.fillRect(0,0,y,i),R&&(H>=0?(J+=(H-J)*.1,W+=(U-W)*.1,A+=(1-A)*.12):(A*=.96,A<.003&&(A=0)));for(let q=0;q<r;q++)for(let C=0;C<d;C++){let v=Mt(ut,C,q,d);if(v.a<10)continue;let X=pt(M,I,C,q,d,r,w);if(X<.05)continue;let O=1,Y=0,G=0,L=0,x=0;if(R&&A>.003){let u=C/d,g=q/r,b=u-J,p=g-W,tt=Math.sqrt(b*b+p*p),nt=.08+st*.35+m*.04;if(tt<nt){let ft=1-tt/nt,c=gt(ft)*A,T=Math.atan2(p,b);if(P==="spotlight"){O=1+c*m*1.8;let B=c*c*m*.6;Y=Math.cos(T)*B*$,G=Math.sin(T)*B*E,L=c*m*.4,x=c*c*m*.25;}else if(P==="magnify")O=1+c*m*2.5,L=c*m*.15;else if(P==="repel"){O=1+c*m*.3;let B=c*c*m*1.2;Y=Math.cos(T)*B*$,G=Math.sin(T)*B*E;}else P==="glow"?(L=c*m*.8,x=c*m*.4):P==="colorShift"&&(O=1+c*m*.4,L=c*m*.2,x=c*m*.7);}}let Z=C*$+$/2+Y,_=q*E+E/2+G,j=mt(v.r,v.g,v.b);if(x>0){let u=j.match(/rgb\((\d+),(\d+),(\d+)\)/);if(u){let g=+u[1],b=+u[2],p=+u[3];j=`rgb(${Math.min(255,Math.round(g+(ct-g)*x))},${Math.min(255,Math.round(b+(lt-b)*x))},${Math.min(255,Math.round(p+(ht-p)*x))})`;}}if(n.globalAlpha=Math.min(1,v.a/255*X*(1+L)),n.fillStyle=j,it){let u=v.l/255;if(F&&(u=1-u),u<.02)continue;let g=Math.min($,E)*.5*ot*u*X*O;if(g<.3)continue;n.beginPath(),n.arc(Z,_,g,0,Math.PI*2),n.fill();}else {let u=v.l/255;F&&(u=1-u);let g=Math.floor(u*(o.length-1)),b=o[Math.max(0,Math.min(o.length-1,g))];if(b===" ")continue;let p=Math.min($/.55,E)*.9*O;n.font=`${p}px "JetBrains Mono",monospace`,n.textAlign="center",n.textBaseline="middle",n.fillText(b,Z,_);}}n.globalAlpha=1,(Q||R)&&requestAnimationFrame(N);}Q||R?requestAnimationFrame(N):N(0);}window.Asciify=at;function rt(){document.querySelectorAll('canvas[id^="ar-"]').forEach(e=>{let l=e.id,t=document.getElementById(`${l}-d`),a=e.getAttribute("data-asciify-opts");if(!(!t||!a))try{let n=JSON.parse(a),r=JSON.parse(t.textContent||"");at(l,r,n);}catch(n){console.error("Asciify: failed to parse embed data for #"+l,n);}});}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",rt):rt();})();
1
+ (function(){'use strict';function et(t){let l=atob(t),e=new Uint8Array(l.length);for(let a=0;a<l.length;a++)e[a]=l.charCodeAt(a);return e}function dt(t){return Array.isArray(t)?t.map(et):[et(t)]}function Mt(t,l,e,a){let r=t[0],n=1+(e*a+l)*r;if(r===3){let f=Math.round(.299*t[n]+.587*t[n+1]+.114*t[n+2]);return {r:t[n],g:t[n+1],b:t[n+2],a:255,l:f}}if(r===4){let f=Math.round(.299*t[n]+.587*t[n+1]+.114*t[n+2]);return {r:t[n],g:t[n+1],b:t[n+2],a:t[n+3],l:f}}return r===1?{r:t[n],g:t[n],b:t[n],l:t[n],a:255}:{r:t[n],g:t[n],b:t[n],l:t[n],a:t[n+1]}}function gt(t){return t*t*(3-2*t)}function bt(t,l){if(t==="fullcolor")return (e,a,r)=>`rgb(${e},${a},${r})`;if(t==="matrix")return (e,a,r)=>`rgb(0,${Math.floor(.299*e+.587*a+.114*r)},0)`;if(t==="accent"){let e=l.replace("#",""),a=parseInt(e.substring(0,2),16),r=parseInt(e.substring(2,4),16),n=parseInt(e.substring(4,6),16);return (f,y,i)=>{let s=(.299*f+.587*y+.114*i)/255;return `rgb(${Math.floor(a*s)},${Math.floor(r*s)},${Math.floor(n*s)})`}}return (e,a,r)=>{let n=Math.floor(.299*e+.587*a+.114*r);return `rgb(${n},${n},${n})`}}function pt(t,l,e,a,r,n,f){let y=l,i=f*y;switch(t){case "wave":{let s=Math.sin(e/r*Math.PI*4+i*3)*.5+.5,o=Math.sin(a/n*Math.PI*3+i*2)*.5+.5;return .3+.7*(s*.6+o*.4)}case "pulse":{let s=r/2,o=n/2,d=Math.sqrt((e-s)**2+(a-o)**2),h=Math.sqrt(s*s+o*o);return .2+.8*(Math.sin(d/h*Math.PI*6-i*4)*.5+.5)}case "rain":return .1+.9*(Math.sin(a/n*Math.PI*8-i*5+e*.3)*.5+.5)*(Math.sin(e/r*Math.PI*2+i)*.3+.7);case "breathe":return Math.max(.1,Math.min(1,Math.sin(i*2)*.3+.7+Math.sin((e+a)*.1+i)*.1));case "sparkle":{let s=Math.sin(e*127.1+a*311.7+Math.floor(i*8)*43758.5453)*43758.5453,o=s-Math.floor(s);return o>.7?1:.15+o*.4}case "glitch":{let s=Math.floor(a/(n*.05)),o=Math.sin(s*43.23+Math.floor(i*6)*17.89)*43758.5453;if(o-Math.floor(o)>.85){let h=Math.sin(i*30+s)*.5+.5;return h<.3?0:h}return 1}case "spiral":{let s=r/2,o=n/2,d=e-s,h=a-o,M=Math.atan2(h,d),I=Math.sqrt(d*d+h*h),F=Math.sqrt(s*s+o*o);return .15+.85*(Math.sin(M*3+I/F*Math.PI*8-i*3)*.5+.5)}case "typewriter":{let s=r*n,o=a*r+e,d=i*.5%1,h=d*s*1.3,M=o-h;return M>0?0:Math.min(1,Math.max(0,1+M/(s*.15)))}case "scatter":{let s=r/2,o=n/2,d=e-s,h=a-o,M=Math.sqrt(d*d+h*h)/Math.sqrt(s*s+o*o),I=Math.sin(i*1.5)*.5+.5;return M>I?Math.max(0,1-(M-I)*3):.7+.3*Math.sin(M*10-i*2)}default:return 1}}function at(t,l,e){let a=document.getElementById(t);if(!a){console.error(`Asciify: canvas #${t} not found`);return}let r=a.getContext("2d"),{r:n,c:f,w:y,h:i}=e,s=e.fps??10,o=e.cs??" .:-=+*#%@",d=e.cm??"grayscale",h=e.ac??"#ffffff",M=e.as??"none",I=e.sp??1,F=e.inv??false,m=e.hs??0,st=e.hr??.3,P=e.he??"spotlight",k=e.hc??"#ffffff",ot=e.dr??.7,it=e.dots??false,z=e.anim??false,ct=parseInt(k.slice(1,3),16)||255,lt=parseInt(k.slice(3,5),16)||255,ht=parseInt(k.slice(5,7),16)||255,$=y/f,E=i/n,K=dt(l),mt=bt(d,h),R=m>0,Q=M!=="none"||z,H=-1,U=-1,A=0,J=.5,W=.5,D=0,V=0;R&&(a.addEventListener("mousemove",S=>{let w=a.getBoundingClientRect();H=(S.clientX-w.left)/w.width,U=(S.clientY-w.top)/w.height;}),a.addEventListener("mouseleave",()=>{H=-1,U=-1;}));function N(S){let w=S/1e3;z&&S-V>=1e3/s&&(D=(D+1)%K.length,V=S);let ut=K[D];r.clearRect(0,0,y,i),r.fillStyle="#0a0a0a",r.fillRect(0,0,y,i),R&&(H>=0?(J+=(H-J)*.1,W+=(U-W)*.1,A+=(1-A)*.12):(A*=.96,A<.003&&(A=0)));for(let q=0;q<n;q++)for(let C=0;C<f;C++){let v=Mt(ut,C,q,f);if(v.a<10)continue;let X=pt(M,I,C,q,f,n,w);if(X<.05)continue;let O=1,Y=0,G=0,L=0,x=0;if(R&&A>.003){let u=C/f,g=q/n,b=u-J,p=g-W,tt=Math.sqrt(b*b+p*p),nt=.08+st*.35+m*.04;if(tt<nt){let ft=1-tt/nt,c=gt(ft)*A,T=Math.atan2(p,b);if(P==="spotlight"){O=1+c*m*1.8;let B=c*c*m*.6;Y=Math.cos(T)*B*$,G=Math.sin(T)*B*E,L=c*m*.4,x=c*c*m*.25;}else if(P==="magnify")O=1+c*m*2.5,L=c*m*.15;else if(P==="repel"){O=1+c*m*.3;let B=c*c*m*1.2;Y=Math.cos(T)*B*$,G=Math.sin(T)*B*E;}else P==="glow"?(L=c*m*.8,x=c*m*.4):P==="colorShift"&&(O=1+c*m*.4,L=c*m*.2,x=c*m*.7);}}let Z=C*$+$/2+Y,_=q*E+E/2+G,j=mt(v.r,v.g,v.b);if(x>0){let u=j.match(/rgb\((\d+),(\d+),(\d+)\)/);if(u){let g=+u[1],b=+u[2],p=+u[3];j=`rgb(${Math.min(255,Math.round(g+(ct-g)*x))},${Math.min(255,Math.round(b+(lt-b)*x))},${Math.min(255,Math.round(p+(ht-p)*x))})`;}}if(r.globalAlpha=Math.min(1,v.a/255*X*(1+L)),r.fillStyle=j,it){let u=v.l/255;if(F&&(u=1-u),u<.02)continue;let g=Math.min($,E)*.5*ot*u*X*O;if(g<.3)continue;r.beginPath(),r.arc(Z,_,g,0,Math.PI*2),r.fill();}else {let u=v.l/255;F&&(u=1-u);let g=Math.floor(u*(o.length-1)),b=o[Math.max(0,Math.min(o.length-1,g))];if(b===" ")continue;let p=Math.min($/.55,E)*.9*O;r.font=`${p}px "JetBrains Mono",monospace`,r.textAlign="center",r.textBaseline="middle",r.fillText(b,Z,_);}}r.globalAlpha=1,(Q||R)&&requestAnimationFrame(N);}Q||R?requestAnimationFrame(N):N(0);}window.Asciify=at;function rt(){document.querySelectorAll('canvas[id^="ar-"]').forEach(t=>{let l=t.id,e=document.getElementById(`${l}-d`),a=t.getAttribute("data-asciify-opts");if(!(!e||!a))try{let r=JSON.parse(a),n=JSON.parse(e.textContent||"");at(l,n,r);}catch(r){console.error("Asciify: failed to parse embed data for #"+l,r);}});}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",rt):rt();})();
package/dist/index.cjs CHANGED
@@ -722,7 +722,7 @@ function renderFrameToCanvas(ctx, frame, options, canvasWidth, canvasHeight, tim
722
722
  function serializeFrame(frame, fullColor) {
723
723
  const rows = frame.length;
724
724
  const cols = rows > 0 ? frame[0].length : 0;
725
- const stride = fullColor ? 4 : 2;
725
+ const stride = fullColor ? 3 : 1;
726
726
  const buf = new Uint8Array(1 + rows * cols * stride);
727
727
  buf[0] = stride;
728
728
  let i = 1;
@@ -733,10 +733,8 @@ function serializeFrame(frame, fullColor) {
733
733
  buf[i++] = cell.r;
734
734
  buf[i++] = cell.g;
735
735
  buf[i++] = cell.b;
736
- buf[i++] = cell.a;
737
736
  } else {
738
737
  buf[i++] = Math.round(0.299 * cell.r + 0.587 * cell.g + 0.114 * cell.b);
739
- buf[i++] = cell.a;
740
738
  }
741
739
  }
742
740
  }
@@ -834,7 +832,7 @@ async function asciifyVideo(source, canvas, { fontSize = 10, style = "classic",
834
832
  cancelAnimationFrame(animId);
835
833
  };
836
834
  }
837
- var EMBED_CDN_VERSION = "1.0.9";
835
+ var EMBED_CDN_VERSION = "1.0.10";
838
836
  function buildEmbedOpts(options, rows, cols, width, height, fps, animated) {
839
837
  const o = {
840
838
  r: rows,