@kecan0406/ttheme 1.2.25 → 1.2.27
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/README.md +6 -6
- package/bin/ttheme.js +211 -213
- package/bin/ttheme.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/package.json +7 -2
- package/shell/ttheme.zsh +7 -12
package/bin/ttheme.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as XP}from"node:module";var zP=Object.create;var{getPrototypeOf:DP,defineProperty:Db,getOwnPropertyNames:qP}=Object;var JP=Object.prototype.hasOwnProperty;function YP(t){return this[t]}var VP,ZP,hd=(t,e,n)=>{var r=t!=null&&typeof t==="object";if(r){var i=e?VP??=new WeakMap:ZP??=new WeakMap,s=i.get(t);if(s)return s}n=t!=null?zP(DP(t)):{};let o=e||!t||!t.__esModule?Db(n,"default",{value:t,enumerable:!0}):n;for(let a of qP(t))if(!JP.call(o,a))Db(o,a,{get:YP.bind(t,a),enumerable:!0});if(r)i.set(t,o);return o};var xt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Qt=XP(import.meta.url);var $d=xt((dB,aw)=>{var lI=Qt("util"),ow=Qt("stream"),cn=aw.exports=function(){ow.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};lI.inherits(cn,ow);cn.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e}),process.nextTick(function(){if(this._process(),this._paused&&this._reads&&this._reads.length>0)this._paused=!1,this.emit("drain")}.bind(this))};cn.prototype.write=function(t,e){if(!this.writable)return this.emit("error",Error("Stream not writable")),!1;let n;if(Buffer.isBuffer(t))n=t;else n=Buffer.from(t,e||this._encoding);if(this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0)this._paused=!0;return this.writable&&!this._paused};cn.prototype.end=function(t,e){if(t)this.write(t,e);if(this.writable=!1,!this._buffers)return;if(this._buffers.length===0)this._end();else this._buffers.push(null),this._process()};cn.prototype.destroySoon=cn.prototype.end;cn.prototype._end=function(){if(this._reads.length>0)this.emit("error",Error("Unexpected end of input"));this.destroy()};cn.prototype.destroy=function(){if(!this._buffers)return;this.writable=!1,this._reads=null,this._buffers=null,this.emit("close")};cn.prototype._processReadAllowingLess=function(t){this._reads.shift();let e=this._buffers[0];if(e.length>t.length)this._buffered-=t.length,this._buffers[0]=e.slice(t.length),t.func.call(this,e.slice(0,t.length));else this._buffered-=e.length,this._buffers.shift(),t.func.call(this,e)};cn.prototype._processRead=function(t){this._reads.shift();let e=0,n=0,r=Buffer.alloc(t.length);while(e<t.length){let i=this._buffers[n++],s=Math.min(i.length,t.length-e);if(i.copy(r,e,0,s),e+=s,s!==i.length)this._buffers[--n]=i.slice(s)}if(n>0)this._buffers.splice(0,n);this._buffered-=t.length,t.func.call(this,r)};cn.prototype._process=function(){try{while(this._buffered>0&&this._reads&&this._reads.length>0){let t=this._reads[0];if(t.allowLess)this._processReadAllowingLess(t);else if(this._buffered>=t.length)this._processRead(t);else break}if(this._buffers&&!this.writable)this._end()}catch(t){this.emit("error",t)}}});var kd=xt((fI)=>{var Fr=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];fI.getImagePasses=function(t,e){let n=[],r=t%8,i=e%8,s=(t-r)/8,o=(e-i)/8;for(let a=0;a<Fr.length;a++){let c=Fr[a],u=s*c.x.length,f=o*c.y.length;for(let l=0;l<c.x.length;l++)if(c.x[l]<r)u++;else break;for(let l=0;l<c.y.length;l++)if(c.y[l]<i)f++;else break;if(u>0&&f>0)n.push({width:u,height:f,index:a})}return n};fI.getInterlaceIterator=function(t){return function(e,n,r){let i=e%Fr[r].x.length,s=(e-i)/Fr[r].x.length*8+Fr[r].x[i],o=n%Fr[r].y.length,a=(n-o)/Fr[r].y.length*8+Fr[r].y[o];return s*4+a*t*4}}});var yd=xt((mB,cw)=>{cw.exports=function(e,n,r){let i=e+n-r,s=Math.abs(i-e),o=Math.abs(i-n),a=Math.abs(i-r);if(s<=o&&s<=a)return e;if(o<=a)return n;return r}});var vd=xt((pB,lw)=>{var mI=kd(),pI=yd();function uw(t,e,n){let r=t*e;if(n!==8)r=Math.ceil(r/(8/n));return r}var Us=lw.exports=function(t,e){let{width:n,height:r,interlace:i,bpp:s,depth:o}=t;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let a=mI.getImagePasses(n,r);for(let c=0;c<a.length;c++)this._images.push({byteWidth:uw(a[c].width,s,o),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:uw(n,s,o),height:r,lineIndex:0});if(o===8)this._xComparison=s;else if(o===16)this._xComparison=s*2;else this._xComparison=1};Us.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};Us.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,i=r-1;for(let s=0;s<n;s++){let o=t[1+s],a=s>i?e[s-r]:0;e[s]=o+a}};Us.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let i=0;i<n;i++){let s=t[1+i],o=r?r[i]:0;e[i]=s+o}};Us.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,i=r-1,s=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],c=s?s[o]:0,u=o>i?e[o-r]:0,f=Math.floor((u+c)/2);e[o]=a+f}};Us.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,i=r-1,s=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],c=s?s[o]:0,u=o>i?e[o-r]:0,f=o>i&&s?s[o-r]:0,l=pI(u,c,f);e[o]=a+l}};Us.prototype._reverseFilterLine=function(t){let e=t[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(e===0)n=t.slice(1,i+1);else switch(n=Buffer.alloc(i),e){case 1:this._unFilterType1(t,n,i);break;case 2:this._unFilterType2(t,n,i);break;case 3:this._unFilterType3(t,n,i);break;case 4:this._unFilterType4(t,n,i);break;default:throw Error("Unrecognised filter type - "+e)}if(this.write(n),r.lineIndex++,r.lineIndex>=r.height)this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex];else this._lastLine=n;if(r)this.read(r.byteWidth+1,this._reverseFilterLine.bind(this));else this._lastLine=null,this.complete()}});var hw=xt((gB,dw)=>{var gI=Qt("util"),fw=$d(),bI=vd(),wI=dw.exports=function(t){fw.call(this);let e=[],n=this;this._filter=new bI(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};gI.inherits(wI,fw)});var Ws=xt((bB,mw)=>{mw.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var Md=xt((wB,pw)=>{var Sd=[];(function(){for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)if(e&1)e=3988292384^e>>>1;else e=e>>>1;Sd[t]=e}})();var Ed=pw.exports=function(){this._crc=-1};Ed.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=Sd[(this._crc^t[e])&255]^this._crc>>>8;return!0};Ed.prototype.crc32=function(){return this._crc^-1};Ed.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=Sd[(e^t[n])&255]^e>>>8;return e^-1}});var xd=xt(($B,gw)=>{var jt=Ws(),$I=Md(),Ut=gw.exports=function(t,e){this._options=t,t.checkCRC=t.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[jt.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[jt.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[jt.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[jt.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[jt.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[jt.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};Ut.prototype.start=function(){this.read(jt.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Ut.prototype._parseSignature=function(t){let e=jt.PNG_SIGNATURE;for(let n=0;n<e.length;n++)if(t[n]!==e[n]){this.error(Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};Ut.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let s=4;s<8;s++)r+=String.fromCharCode(t[s]);let i=Boolean(t[4]&32);if(!this._hasIHDR&&n!==jt.TYPE_IHDR){this.error(Error("Expected IHDR on beggining"));return}if(this._crc=new $I,this._crc.write(Buffer.from(r)),this._chunks[n])return this._chunks[n](e);if(!i){this.error(Error("Unsupported critical chunk type "+r));return}this.read(e+4,this._skipChunk.bind(this))};Ut.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Ut.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Ut.prototype._parseChunkEnd=function(t){let e=t.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==e){this.error(Error("Crc error - "+e+" - "+n));return}if(!this._hasIEND)this.read(8,this._parseChunkBegin.bind(this))};Ut.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};Ut.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],i=t[9],s=t[10],o=t[11],a=t[12];if(r!==8&&r!==4&&r!==2&&r!==1&&r!==16){this.error(Error("Unsupported bit depth "+r));return}if(!(i in jt.COLORTYPE_TO_BPP_MAP)){this.error(Error("Unsupported color type"));return}if(s!==0){this.error(Error("Unsupported compression method"));return}if(o!==0){this.error(Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(Error("Unsupported interlace method"));return}this._colorType=i;let c=jt.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:Boolean(a),palette:Boolean(i&jt.COLORTYPE_PALETTE),color:Boolean(i&jt.COLORTYPE_COLOR),alpha:Boolean(i&jt.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};Ut.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};Ut.prototype._parsePLTE=function(t){this._crc.write(t);let e=Math.floor(t.length/3);for(let n=0;n<e;n++)this._palette.push([t[n*3],t[n*3+1],t[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};Ut.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};Ut.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===jt.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error("Transparency chunk must be after palette"));return}if(t.length>this._palette.length){this.error(Error("More transparent colors than palette size"));return}for(let e=0;e<t.length;e++)this._palette[e][3]=t[e];this.palette(this._palette)}if(this._colorType===jt.COLORTYPE_GRAYSCALE)this.transColor([t.readUInt16BE(0)]);if(this._colorType===jt.COLORTYPE_COLOR)this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]);this._handleChunkEnd()};Ut.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};Ut.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/jt.GAMMA_DIVISION),this._handleChunkEnd()};Ut.prototype._handleIDAT=function(t){if(!this._emittedHeadersFinished)this._emittedHeadersFinished=!0,this.headersFinished();this.read(-t,this._parseIDAT.bind(this,t))};Ut.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===jt.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error("Expected palette not found");this.inflateData(e);let n=t-e.length;if(n>0)this._handleIDAT(n);else this._handleChunkEnd()};Ut.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};Ut.prototype._parseIEND=function(t){if(this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished)this.finished()}});var Od=xt((MI)=>{var bw=kd(),kI=[function(){},function(t,e,n,r){if(r===e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=255},function(t,e,n,r){if(r+1>=e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=e[r+1]},function(t,e,n,r){if(r+2>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=255},function(t,e,n,r){if(r+3>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=e[r+3]}],yI=[function(){},function(t,e,n,r){let i=e[0];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=r},function(t,e,n){let r=e[0];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=e[1]},function(t,e,n,r){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=r},function(t,e,n){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3]}];function vI(t,e){let n=[],r=0;function i(){if(r===t.length)throw Error("Ran out of data");let s=t[r];r++;let o,a,c,u,f,l,d,h;switch(e){default:throw Error("unrecognised depth");case 16:d=t[r],r++,n.push((s<<8)+d);break;case 4:d=s&15,h=s>>4,n.push(h,d);break;case 2:f=s&3,l=s>>2&3,d=s>>4&3,h=s>>6&3,n.push(h,d,l,f);break;case 1:o=s&1,a=s>>1&1,c=s>>2&1,u=s>>3&1,f=s>>4&1,l=s>>5&1,d=s>>6&1,h=s>>7&1,n.push(h,d,l,f,u,c,a,o);break}}return{get:function(s){while(n.length<s)i();let o=n.slice(0,s);return n=n.slice(s),o},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw Error("extra data found")}}}function SI(t,e,n,r,i,s){let{width:o,height:a,index:c}=t;for(let u=0;u<a;u++)for(let f=0;f<o;f++){let l=n(f,u,c);kI[r](e,i,l,s),s+=r}return s}function EI(t,e,n,r,i,s){let{width:o,height:a,index:c}=t;for(let u=0;u<a;u++){for(let f=0;f<o;f++){let l=i.get(r),d=n(f,u,c);yI[r](e,l,d,s)}i.resetAfterLine()}}MI.dataToBitMap=function(t,e){let{width:n,height:r,depth:i,bpp:s,interlace:o}=e,a;if(i!==8)a=vI(t,i);let c;if(i<=8)c=Buffer.alloc(n*r*4);else c=new Uint16Array(n*r*4);let u=Math.pow(2,i)-1,f=0,l,d;if(o)l=bw.getImagePasses(n,r),d=bw.getInterlaceIterator(n,r);else{let h=0;d=function(){let m=h;return h+=4,m},l=[{width:n,height:r}]}for(let h=0;h<l.length;h++)if(i===8)f=SI(l[h],c,d,s,t,f);else EI(l[h],c,d,s,a,u);if(i===8){if(f!==t.length)throw Error("extra data found")}else a.end();return c}});var Pd=xt((yB,ww)=>{function OI(t,e,n,r,i){let s=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let c=i[t[s]];if(!c)throw Error("index "+t[s]+" not in palette");for(let u=0;u<4;u++)e[s+u]=c[u];s+=4}}function PI(t,e,n,r,i){let s=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let c=!1;if(i.length===1){if(i[0]===t[s])c=!0}else if(i[0]===t[s]&&i[1]===t[s+1]&&i[2]===t[s+2])c=!0;if(c)for(let u=0;u<4;u++)e[s+u]=0;s+=4}}function II(t,e,n,r,i){let s=255,o=Math.pow(2,i)-1,a=0;for(let c=0;c<r;c++)for(let u=0;u<n;u++){for(let f=0;f<4;f++)e[a+f]=Math.floor(t[a+f]*s/o+0.5);a+=4}}ww.exports=function(t,e,n=!1){let{depth:r,width:i,height:s,colorType:o,transColor:a,palette:c}=e,u=t;if(o===3)OI(t,u,i,s,c);else{if(a)PI(t,u,i,s,a);if(r!==8&&!n){if(r===16)u=Buffer.alloc(i*s*4);II(t,u,i,s,r)}}return u}});var yw=xt((vB,kw)=>{var RI=Qt("util"),Id=Qt("zlib"),$w=$d(),AI=hw(),NI=xd(),TI=Od(),HI=Pd(),On=kw.exports=function(t){$w.call(this),this._parser=new NI(t,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=t,this.writable=!0,this._parser.start()};RI.inherits(On,$w);On.prototype._handleError=function(t){if(this.emit("error",t),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy)this._inflate.destroy();if(this._filter)this._filter.destroy(),this._filter.on("error",function(){});this.errord=!0};On.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Id.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let n=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,r=Math.max(n,Id.Z_MIN_CHUNK);this._inflate=Id.createInflate({chunkSize:r});let i=n,s=this.emit.bind(this,"error");this._inflate.on("error",function(a){if(!i)return;s(a)}),this._filter.on("complete",this._complete.bind(this));let o=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){if(!i)return;if(a.length>i)a=a.slice(0,i);i-=a.length,o(a)}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};On.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new AI(this._bitmapInfo)};On.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};On.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};On.prototype._simpleTransparency=function(){this._metaData.alpha=!0};On.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};On.prototype._finished=function(){if(this.errord)return;if(!this._inflate)this.emit("error","No Inflate block");else this._inflate.end()};On.prototype._complete=function(t){if(this.errord)return;let e;try{let n=TI.dataToBitMap(t,this._bitmapInfo);e=HI(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Sw=xt((SB,vw)=>{var ze=Ws();vw.exports=function(t,e,n,r){let i=[ze.COLORTYPE_COLOR_ALPHA,ze.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let m=function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256}();if(r.bitDepth===8||r.bitDepth===16&&m)return t}let s=r.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=ze.COLORTYPE_TO_BPP_MAP[r.inputColorType];if(a===4&&!r.inputHasAlpha)a=3;let c=ze.COLORTYPE_TO_BPP_MAP[r.colorType];if(r.bitDepth===16)o=65535,c*=2;let u=Buffer.alloc(e*n*c),f=0,l=0,d=r.bgColor||{};if(d.red===void 0)d.red=o;if(d.green===void 0)d.green=o;if(d.blue===void 0)d.blue=o;function h(){let m,p,b,$=o;switch(r.inputColorType){case ze.COLORTYPE_COLOR_ALPHA:$=s[f+3],m=s[f],p=s[f+1],b=s[f+2];break;case ze.COLORTYPE_COLOR:m=s[f],p=s[f+1],b=s[f+2];break;case ze.COLORTYPE_ALPHA:$=s[f+1],m=s[f],p=m,b=m;break;case ze.COLORTYPE_GRAYSCALE:m=s[f],p=m,b=m;break;default:throw Error("input color type:"+r.inputColorType+" is not supported at present")}if(r.inputHasAlpha){if(!i)$/=o,m=Math.min(Math.max(Math.round((1-$)*d.red+$*m),0),o),p=Math.min(Math.max(Math.round((1-$)*d.green+$*p),0),o),b=Math.min(Math.max(Math.round((1-$)*d.blue+$*b),0),o)}return{red:m,green:p,blue:b,alpha:$}}for(let m=0;m<n;m++)for(let p=0;p<e;p++){let b=h(s,f);switch(r.colorType){case ze.COLORTYPE_COLOR_ALPHA:case ze.COLORTYPE_COLOR:if(r.bitDepth===8){if(u[l]=b.red,u[l+1]=b.green,u[l+2]=b.blue,i)u[l+3]=b.alpha}else if(u.writeUInt16BE(b.red,l),u.writeUInt16BE(b.green,l+2),u.writeUInt16BE(b.blue,l+4),i)u.writeUInt16BE(b.alpha,l+6);break;case ze.COLORTYPE_ALPHA:case ze.COLORTYPE_GRAYSCALE:{let $=(b.red+b.green+b.blue)/3;if(r.bitDepth===8){if(u[l]=$,i)u[l+1]=b.alpha}else if(u.writeUInt16BE($,l),i)u.writeUInt16BE(b.alpha,l+2);break}default:throw Error("unrecognised color Type "+r.colorType)}f+=a,l+=c}return u}});var xw=xt((EB,Mw)=>{var Ew=yd();function FI(t,e,n,r,i){for(let s=0;s<n;s++)r[i+s]=t[e+s]}function LI(t,e,n){let r=0,i=e+n;for(let s=e;s<i;s++)r+=Math.abs(t[s]);return r}function CI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=t[e+o]-a;r[i+o]=c}}function jI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=t[e+s]-o;i+=Math.abs(a)}return i}function _I(t,e,n,r,i){for(let s=0;s<n;s++){let o=e>0?t[e+s-n]:0,a=t[e+s]-o;r[i+s]=a}}function BI(t,e,n){let r=0,i=e+n;for(let s=e;s<i;s++){let o=e>0?t[s-n]:0,a=t[s]-o;r+=Math.abs(a)}return r}function GI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=e>0?t[e+o-n]:0,u=t[e+o]-(a+c>>1);r[i+o]=u}}function UI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=e>0?t[e+s-n]:0,c=t[e+s]-(o+a>>1);i+=Math.abs(c)}return i}function WI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=e>0?t[e+o-n]:0,u=e>0&&o>=s?t[e+o-(n+s)]:0,f=t[e+o]-Ew(a,c,u);r[i+o]=f}}function KI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=e>0?t[e+s-n]:0,c=e>0&&s>=r?t[e+s-(n+r)]:0,u=t[e+s]-Ew(o,a,c);i+=Math.abs(u)}return i}var zI={0:FI,1:CI,2:_I,3:GI,4:WI},DI={0:LI,1:jI,2:BI,3:UI,4:KI};Mw.exports=function(t,e,n,r,i){let s;if(!("filterType"in r)||r.filterType===-1)s=[0,1,2,3,4];else if(typeof r.filterType==="number")s=[r.filterType];else throw Error("unrecognised filter types");if(r.bitDepth===16)i*=2;let o=e*i,a=0,c=0,u=Buffer.alloc((o+1)*n),f=s[0];for(let l=0;l<n;l++){if(s.length>1){let d=1/0;for(let h=0;h<s.length;h++){let m=DI[s[h]](t,c,o,i);if(m<d)f=s[h],d=m}}u[a]=f,a++,zI[f](t,c,o,u,a,i),a+=o,c+=o}return u}});var Rd=xt((MB,Ow)=>{var te=Ws(),qI=Md(),JI=Sw(),YI=xw(),VI=Qt("zlib"),Lr=Ow.exports=function(t){if(this._options=t,t.deflateChunkSize=t.deflateChunkSize||32768,t.deflateLevel=t.deflateLevel!=null?t.deflateLevel:9,t.deflateStrategy=t.deflateStrategy!=null?t.deflateStrategy:3,t.inputHasAlpha=t.inputHasAlpha!=null?t.inputHasAlpha:!0,t.deflateFactory=t.deflateFactory||VI.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType==="number"?t.colorType:te.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType==="number"?t.inputColorType:te.COLORTYPE_COLOR_ALPHA,[te.COLORTYPE_GRAYSCALE,te.COLORTYPE_COLOR,te.COLORTYPE_COLOR_ALPHA,te.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw Error("option color type:"+t.colorType+" is not supported at present");if([te.COLORTYPE_GRAYSCALE,te.COLORTYPE_COLOR,te.COLORTYPE_COLOR_ALPHA,te.COLORTYPE_ALPHA].indexOf(t.inputColorType)===-1)throw Error("option input color type:"+t.inputColorType+" is not supported at present");if(t.bitDepth!==8&&t.bitDepth!==16)throw Error("option bit depth:"+t.bitDepth+" is not supported at present")};Lr.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Lr.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Lr.prototype.filterData=function(t,e,n){let r=JI(t,e,n,this._options),i=te.COLORTYPE_TO_BPP_MAP[this._options.colorType];return YI(r,e,n,this._options,i)};Lr.prototype._packChunk=function(t,e){let n=e?e.length:0,r=Buffer.alloc(n+12);if(r.writeUInt32BE(n,0),r.writeUInt32BE(t,4),e)e.copy(r,8);return r.writeInt32BE(qI.crc32(r.slice(4,r.length-4)),r.length-4),r};Lr.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*te.GAMMA_DIVISION),0),this._packChunk(te.TYPE_gAMA,e)};Lr.prototype.packIHDR=function(t,e){let n=Buffer.alloc(13);return n.writeUInt32BE(t,0),n.writeUInt32BE(e,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(te.TYPE_IHDR,n)};Lr.prototype.packIDAT=function(t){return this._packChunk(te.TYPE_IDAT,t)};Lr.prototype.packIEND=function(){return this._packChunk(te.TYPE_IEND,null)}});var Aw=xt((xB,Rw)=>{var ZI=Qt("util"),Pw=Qt("stream"),XI=Ws(),QI=Rd(),Iw=Rw.exports=function(t){Pw.call(this);let e=t||{};this._packer=new QI(e),this._deflate=this._packer.createDeflate(),this.readable=!0};ZI.inherits(Iw,Pw);Iw.prototype.pack=function(t,e,n,r){if(this.emit("data",Buffer.from(XI.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,n)),r)this.emit("data",this._packer.packGAMA(r));let i=this._packer.filterData(t,e,n);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var Cw=xt((ma,Lw)=>{var Nw=Qt("assert").ok,Ks=Qt("zlib"),tR=Qt("util"),Tw=Qt("buffer").kMaxLength;function Ni(t){if(!(this instanceof Ni))return new Ni(t);if(t&&t.chunkSize<Ks.Z_MIN_CHUNK)t.chunkSize=Ks.Z_MIN_CHUNK;if(Ks.Inflate.call(this,t),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,t&&t.maxLength!=null)this._maxLength=t.maxLength}function eR(t){return new Ni(t)}function Hw(t,e){if(e)process.nextTick(e);if(!t._handle)return;t._handle.close(),t._handle=null}Ni.prototype._processChunk=function(t,e,n){if(typeof n==="function")return Ks.Inflate._processChunk.call(this,t,e,n);let r=this,i=t&&t.length,s=this._chunkSize-this._offset,o=this._maxLength,a=0,c=[],u=0,f;this.on("error",function(m){f=m});function l(m,p){if(r._hadError)return;let b=s-p;if(Nw(b>=0,"have should not go down"),b>0){let $=r._buffer.slice(r._offset,r._offset+b);if(r._offset+=b,$.length>o)$=$.slice(0,o);if(c.push($),u+=$.length,o-=$.length,o===0)return!1}if(p===0||r._offset>=r._chunkSize)s=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize);if(p===0)return a+=i-m,i=m,!0;return!1}Nw(this._handle,"zlib binding closed");let d;do d=this._handle.writeSync(e,t,a,i,this._buffer,this._offset,s),d=d||this._writeState;while(!this._hadError&&l(d[0],d[1]));if(this._hadError)throw f;if(u>=Tw)throw Hw(this),RangeError("Cannot create final Buffer. It would be larger than 0x"+Tw.toString(16)+" bytes");let h=Buffer.concat(c,u);return Hw(this),h};tR.inherits(Ni,Ks.Inflate);function nR(t,e){if(typeof e==="string")e=Buffer.from(e);if(!(e instanceof Buffer))throw TypeError("Not a string or buffer");let n=t._finishFlushFlag;if(n==null)n=Ks.Z_FINISH;return t._processChunk(e,n)}function Fw(t,e){return nR(new Ni(e),t)}Lw.exports=ma=Fw;ma.Inflate=Ni;ma.createInflate=eR;ma.inflateSync=Fw});var Ad=xt((OB,_w)=>{var jw=_w.exports=function(t){this._buffer=t,this._reads=[]};jw.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};jw.prototype.process=function(){while(this._reads.length>0&&this._buffer.length){let t=this._reads[0];if(this._buffer.length&&(this._buffer.length>=t.length||t.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(t.length),t.func.call(this,e.slice(0,t.length))}else break}if(this._reads.length>0)throw Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)throw Error("unrecognised content at end of stream")}});var Bw=xt((sR)=>{var rR=Ad(),iR=vd();sR.process=function(t,e){let n=[],r=new rR(t);return new iR(e,{read:r.read.bind(r),write:function(s){n.push(s)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Kw=xt((IB,Ww)=>{var Gw=!0,Uw=Qt("zlib"),aR=Cw();if(!Uw.deflateSync)Gw=!1;var cR=Ad(),uR=Bw(),lR=xd(),fR=Od(),dR=Pd();Ww.exports=function(t,e){if(!Gw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n;function r(S){n=S}let i;function s(S){i=S}function o(S){i.transColor=S}function a(S){i.palette=S}function c(){i.alpha=!0}let u;function f(S){u=S}let l=[];function d(S){l.push(S)}let h=new cR(t);if(new lR(e,{read:h.read.bind(h),error:r,metadata:s,gamma:f,palette:a,transColor:o,inflateData:d,simpleTransparency:c}).start(),h.process(),n)throw n;let p=Buffer.concat(l);l.length=0;let b;if(i.interlace)b=Uw.inflateSync(p);else{let M=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;b=aR(p,{chunkSize:M,maxLength:M})}if(p=null,!b||!b.length)throw Error("bad png - invalid inflate data response");let $=uR.process(b,i);p=null;let k=fR.dataToBitMap($,i);$=null;let v=dR(k,i,e.skipRescale);return i.data=v,i.gamma=u||0,i}});var Jw=xt((RB,qw)=>{var zw=!0,Dw=Qt("zlib");if(!Dw.deflateSync)zw=!1;var hR=Ws(),mR=Rd();qw.exports=function(t,e){if(!zw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=new mR(e||{}),i=[];if(i.push(Buffer.from(hR.PNG_SIGNATURE)),i.push(r.packIHDR(t.width,t.height)),t.gamma)i.push(r.packGAMA(t.gamma));let s=r.filterData(t.data,t.width,t.height),o=Dw.deflateSync(s,r.getDeflateOptions());if(s=null,!o||!o.length)throw Error("bad png - invalid compressed data response");return i.push(r.packIDAT(o)),i.push(r.packIEND()),Buffer.concat(i)}});var Yw=xt((bR)=>{var pR=Kw(),gR=Jw();bR.read=function(t,e){return pR(t,e||{})};bR.write=function(t,e){return gR(t,e)}});var Zw=xt((ER)=>{var kR=Qt("util"),Vw=Qt("stream"),yR=yw(),vR=Aw(),SR=Yw(),le=ER.PNG=function(t){if(Vw.call(this),t=t||{},this.width=t.width|0,this.height=t.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,t.fill&&this.data)this.data.fill(0);this.gamma=0,this.readable=this.writable=!0,this._parser=new yR(t),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new vR(t),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};kR.inherits(le,Vw);le.sync=SR;le.prototype.pack=function(){if(!this.data||!this.data.length)return this.emit("error","No data provided"),this;return process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this};le.prototype.parse=function(t,e){if(e){let n,r;n=function(i){this.removeListener("error",r),this.data=i,e(null,this)}.bind(this),r=function(i){this.removeListener("parsed",n),e(i,null)}.bind(this),this.once("parsed",n),this.once("error",r)}return this.end(t),this};le.prototype.write=function(t){return this._parser.write(t),!0};le.prototype.end=function(t){this._parser.end(t)};le.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};le.prototype._gamma=function(t){this.gamma=t};le.prototype._handleClose=function(){if(!this._parser.writable&&!this._packer.readable)this.emit("close")};le.bitblt=function(t,e,n,r,i,s,o,a){if(n|=0,r|=0,i|=0,s|=0,o|=0,a|=0,n>t.width||r>t.height||n+i>t.width||r+s>t.height)throw Error("bitblt reading outside image");if(o>e.width||a>e.height||o+i>e.width||a+s>e.height)throw Error("bitblt writing outside image");for(let c=0;c<s;c++)t.data.copy(e.data,(a+c)*e.width+o<<2,(r+c)*t.width+n<<2,(r+c)*t.width+n+i<<2)};le.prototype.bitblt=function(t,e,n,r,i,s,o){return le.bitblt(this,t,e,n,r,i,s,o),this};le.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let n=0;n<t.width;n++){let r=t.width*e+n<<2;for(let i=0;i<3;i++){let s=t.data[r+i]/255;s=Math.pow(s,0.45454545454545453/t.gamma),t.data[r+i]=Math.round(s*255)}}t.gamma=0}};le.prototype.adjustGamma=function(){le.adjustGamma(this)}});var om=xt((hW,py)=>{var sm={to(t,e){if(!e)return`\x1B[${t+1}G`;return`\x1B[${e+1};${t+1}H`},move(t,e){let n="";if(t<0)n+=`\x1B[${-t}D`;else if(t>0)n+=`\x1B[${t}C`;if(e<0)n+=`\x1B[${-e}A`;else if(e>0)n+=`\x1B[${e}B`;return n},up:(t=1)=>`\x1B[${t}A`,down:(t=1)=>`\x1B[${t}B`,forward:(t=1)=>`\x1B[${t}C`,backward:(t=1)=>`\x1B[${t}D`,nextLine:(t=1)=>"\x1B[E".repeat(t),prevLine:(t=1)=>"\x1B[F".repeat(t),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},tH={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},eH={screen:"\x1B[2J",up:(t=1)=>"\x1B[1J".repeat(t),down:(t=1)=>"\x1B[J".repeat(t),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(t){let e="";for(let n=0;n<t;n++)e+=this.line+(n<t-1?sm.up():"");if(t)e+=sm.left;return e}};py.exports={cursor:sm,scroll:tH,erase:eH,beep:"\x07"}});import{spawnSync as eB}from"node:child_process";import{isMainThread as nB}from"node:worker_threads";import{parseArgs as q_}from"node:util";var lt={name:"@kecan0406/ttheme",version:"1.2.25",type:"module",bin:{ttheme:"bin/ttheme.js"},files:["bin","dist/manifest.json","shell","!shell/check.zsh"],description:"Character terminal palettes for Ghostty, iTerm2, kitty, Alacritty, WezTerm, Windows Terminal, Warp, Konsole and Terminal.app",license:"MIT",author:"kecan0406",repository:{type:"git",url:"git+https://github.com/kecan0406/ttheme.git"},homepage:"https://github.com/kecan0406/ttheme#readme",bugs:"https://github.com/kecan0406/ttheme/issues",keywords:["terminal","theme","ghostty","kitty","alacritty","wezterm","iterm2","konsole","warp","windows-terminal"],devDependencies:{"@biomejs/biome":"^2.5.15","@clack/prompts":"^1.8.1","@jsquash/jpeg":"^1.6.0","@material/material-color-utilities":"^0.4.0","@oxlint/plugins":"1.87.0","@types/bun":"^1.4.2","@types/pngjs":"6.0.5","@xterm/headless":"6.0.0","fast-string-width":"^3.0.2",oxlint:"1.87.0",pngjs:"7.0.0","smol-toml":"^1.9.0",typescript:"^7.0.2",uqr:"^0.1.3"},engines:{bun:">=1.3",node:">=22"}};import{existsSync as Pk,readFileSync as zh}from"node:fs";import{join as Ik}from"node:path";var tI=/^#[0-9a-f]{6}$/;function we(t){return tI.test(t)}function st(t){let e=Number.parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,e&255]}function Nt(t,e,n){let r=st(t),i=st(e);return`#${r.map((s,o)=>Math.round(s+((i[o]??0)-s)*n).toString(16).padStart(2,"0")).join("")}`}function Mt(t){let[e,n,r]=st(t).map((i)=>{let s=i/255;return s<=0.03928?s/12.92:((s+0.055)/1.055)**2.4});return 0.2126*e+0.7152*n+0.0722*r}function kt(t,e){let n=Mt(t),r=Mt(e);return(Math.max(n,r)+0.05)/(Math.min(n,r)+0.05)}function iu(t,e){return Math.round(kt(t,e)*100)/100}function eI(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function Ot(t){let[e,n,r]=st(t).map(eI),i=Math.cbrt(0.4122214708*e+0.5363325363*n+0.0514459929*r),s=Math.cbrt(0.2119034982*e+0.6806995451*n+0.1073969566*r),o=Math.cbrt(0.0883024619*e+0.2817188376*n+0.6299787005*r),a=1.9779984951*i-2.428592205*s+0.4505937099*o,c=0.0259040371*i+0.7827717662*s-0.808675766*o;return{l:0.2104542553*i+0.793617785*s-0.0040720468*o,c:Math.hypot(a,c),h:(Math.atan2(c,a)*180/Math.PI+360)%360}}var Nr=7,qb=3,md=0.15,Jb=1.6,gd=[1,2,3,4,5,6,9,10,11,12,13,14],Yb=[7,15],an=[1,2,3,4,5,6],Re={1:{name:"red",center:19,width:25},2:{name:"green",center:132,width:35},3:{name:"yellow",center:88,width:35},4:{name:"blue",center:250,width:60},5:{name:"magenta",center:329,width:40},6:{name:"cyan",center:197,width:60}},Ri=0.03,on=25,_s=15,Bs=0.08;function Qn(t,e){let n=t.ansi[e];if(n===void 0)throw Error(`${t.name}: missing ANSI ${e}`);return n}function pd(t,e,n){let r=t.background;return e.flatMap((i)=>{let s=Qn(t,i);return kt(s,r)<n?[`ANSI ${i} ${s} on ${r} is ${iu(s,r)}:1, needs ${n}:1`]:[]})}function Vb(t,e){return Math.min(...e.map((n)=>kt(Qn(t,n),t.background)))}var Zb=[{rule:"foreground",label:"foreground on background",unit:"ratio",min:Nr,measure:({foreground:t,background:e})=>kt(t,e),check:({foreground:t,background:e})=>kt(t,e)<Nr?[`foreground ${t} on ${e} is ${iu(t,e)}:1, needs ${Nr}:1`]:[]},{rule:"accents",label:"weakest accent on background",unit:"ratio",min:qb,measure:(t)=>Vb(t,gd),check:(t)=>pd(t,gd,qb)},{rule:"ansi0-dark",label:"ansi0 luminance",unit:"luminance",max:md,measure:(t)=>Mt(Qn(t,0)),check:(t)=>{let e=Qn(t,0);return Mt(e)>md?[`ANSI 0 ${e} has luminance ${Mt(e).toFixed(3)}, needs <= ${md}`]:[]}},{rule:"light-ansi",label:"ansi7 and ansi15 on background",unit:"ratio",min:Nr,measure:(t)=>Vb(t,Yb),check:(t)=>pd(t,Yb,Nr)},{rule:"ansi8-visible",label:"ansi8 on background",unit:"ratio",min:Jb,measure:(t)=>kt(Qn(t,8),t.background),check:(t)=>pd(t,[8],Jb)},{rule:"selection",label:"foreground on selection",unit:"ratio",min:Nr,measure:({foreground:t,selectionBackground:e})=>e===void 0?Number.NaN:kt(t,e),check:({foreground:t,selectionBackground:e})=>e!==void 0&&kt(t,e)<Nr?[`foreground ${t} on selection ${e} is ${iu(t,e)}:1, needs ${Nr}:1`]:[]}];function Ae(t,e){let n=Math.abs(t-e)%360;return Math.min(n,360-n)}var En=(t)=>t>8?t-8:t;function Gs(t){let e=t.signatureSlots.filter((n)=>n.startsWith("ansi")).map((n)=>Number(n.slice(4)));return new Set(e.flatMap((n)=>an.includes(En(n))?[n,n>8?n-8:n+8]:[n]))}function fa(t,e){let n=Ot(Qn(t,e));return n.c<Ri?void 0:n}function Tr(t){let e=Gs(t);return gd.flatMap((n)=>{let r=fa(t,n),i=Re[En(n)];if(r===void 0||i===void 0||e.has(n))return[];let s=Ae(r.h,i.center)-i.width;return s>0?[{slot:n,hue:r.h,over:s}]:[]})}function tr(t){let e=new Set(t.signatureSlots);return an.flatMap((n)=>{let r=fa(t,n),i=fa(t,n+8);if(r===void 0||i===void 0||e.has(`ansi${n}`)&&e.has(`ansi${n+8}`))return[];return[{normal:n,gap:Ae(r.h,i.h)}]})}function er(t){let e=Gs(t);return[0,8].flatMap((n)=>an.flatMap((r)=>an.filter((i)=>i>r).flatMap((i)=>{let[s,o]=[n+r,n+i],a=fa(t,s),c=fa(t,o);if(a===void 0||c===void 0||e.has(s)&&e.has(o))return[];return Ae(a.h,c.h)<_s&&Math.abs(a.l-c.l)<Bs?[[s,o]]:[]})))}var nI=[{rule:"ansi-role",label:"accent hue outside its ANSI role",unit:"degrees",max:0,measure:(t)=>Math.max(0,...Tr(t).map((e)=>e.over)),check:(t)=>Tr(t).map(({slot:e,hue:n,over:r})=>{let i=Re[En(e)];return`ANSI ${e} ${Qn(t,e)} has hue ${n.toFixed(0)}°, ${r.toFixed(0)}° outside ${i.name} (${i.center}±${i.width}°)`})},{rule:"bright-follows",label:"widest normal to bright hue gap",unit:"degrees",max:on,measure:(t)=>Math.max(0,...tr(t).map((e)=>e.gap)),check:(t)=>tr(t).filter((e)=>e.gap>on).map(({normal:e,gap:n})=>`ANSI ${e+8} is ${n.toFixed(0)}° from ANSI ${e}, needs <= ${on}°`)},{rule:"distinct",label:"accent pairs that read as one color",unit:"pairs",max:0,measure:(t)=>er(t).length,check:(t)=>er(t).map(([e,n])=>`ANSI ${e} ${Qn(t,e)} and ANSI ${n} ${Qn(t,n)} are within ${_s}° hue and ${Bs} lightness`)}],su=[...Zb,...nI],bd=su.map((t)=>t.rule),Ne=su.map(({rule:t,label:e,unit:n,min:r,max:i})=>({rule:t,label:e,unit:n,...r===void 0?{}:{min:r},...i===void 0?{}:{max:i}}));function Mn(t){return su.map((e)=>Math.round(e.measure(t)*1000)/1000)}function Xb(t,e){return t.filter((n)=>!e.waive.includes(n.rule)).flatMap((n)=>n.check(e).map((r)=>({theme:e.name,rule:n.rule,detail:r})))}function nr(t){return Xb(su,t)}function Qb(t){return Xb(Zb,t)}function tw(t){return t.flatMap(nr)}import{chmodSync as rI,copyFileSync as iI,existsSync as Hr,mkdirSync as sI,readFileSync as da,realpathSync as oI,renameSync as nw,rmSync as ew,statSync as aI,writeFileSync as rw}from"node:fs";import{dirname as cI}from"node:path";function ha(t){return`${t}.ttheme.bak`}var uI=/^(?:#|--) ttheme begin$|path = "ttheme-|^DefaultProfile=ttheme-/m;function wd(t){let e=ha(t);if(Hr(t)&&!Hr(e)&&!uI.test(da(t,"utf8")))iI(t,e)}function C(t,e){let n=Hr(t)?oI(t):t;sI(cI(n),{recursive:!0});let r=`${n}.ttheme-${process.pid}`;if(rw(r,e),Hr(n))rI(r,aI(n).mode&4095);nw(r,n)}function Ai(t,e,n){if(rw(t,n),t!==e)nw(t,e)}function xn(t,e){if((Hr(t)?da(t,"utf8"):void 0)===e)return!1;return wd(t),C(t,e),!0}function iw(t,e){return t.replace(/\n*$/,"")===e.replace(/\n*$/,"")}function sw(t,e){let n=ha(t),r=Hr(n)?da(n,"utf8"):void 0;if(e===""&&r===void 0)return ew(t,{force:!0}),"removed";let i=r!==void 0&&iw(r,e);if(C(t,i?r:e),r===void 0||i)return ew(n,{force:!0}),"restored";return"kept backup"}function ou(t){let e=ha(t);return Hr(t)&&Hr(e)&&iw(da(t,"utf8"),da(e,"utf8"))?[e]:[]}import{createHash as y$}from"node:crypto";import{copyFileSync as SN,existsSync as hh,mkdirSync as EN,readdirSync as MN,readFileSync as io,renameSync as v$,rmSync as ro,statSync as xN}from"node:fs";import{basename as S$,isAbsolute as ON,join as V}from"node:path";import{readdirSync as CR,rmSync as jR,statSync as _R}from"node:fs";import{setDefaultAutoSelectFamilyAttemptTimeout as BR}from"node:net";import{homedir as GR}from"node:os";import{join as wa}from"node:path";import{setTimeout as UR}from"node:timers/promises";var n0=hd(Zw(),1);import{constants as PR,deflateSync as IR,inflateSync as RR}from"node:zlib";import{inflateRawSync as xR}from"node:zlib";var MR=(()=>{var t=import.meta.url;return function(e={}){var n=e,r,i,s=new Promise((g,w)=>{r=g,i=w});let a=globalThis.ServiceWorkerGlobalScope!==void 0&&typeof self<"u"&&globalThis.caches&&globalThis.caches.default!==void 0,c=typeof process==="object"&&process.release&&process.release.name==="node";if(a||c){if(!globalThis.ImageData)globalThis.ImageData=class{constructor(w,y,E){this.data=w,this.width=y,this.height=E}};if(import.meta.url===void 0)import.meta.url="https://localhost";if(typeof self<"u"&&self.location===void 0)self.location={href:""}}var u=Object.assign({},n),f=[],l="./this.program",d=(g,w)=>{throw w},h=typeof window=="object",m=typeof importScripts=="function",p=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",b="";function $(g){if(n.locateFile)return n.locateFile(g,b);return b+g}var k,v,S;if(h||m){if(m)b=self.location.href;else if(typeof document<"u"&&document.currentScript)b=document.currentScript.src;if(t)b=t;if(b.startsWith("blob:"))b="";else b=b.substr(0,b.replace(/[?#].*/,"").lastIndexOf("/")+1);{if(k=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.send(null),w.responseText},m)S=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.responseType="arraybuffer",w.send(null),new Uint8Array(w.response)};v=(g,w,y)=>{var E=new XMLHttpRequest;E.open("GET",g,!0),E.responseType="arraybuffer",E.onload=()=>{if(E.status==200||E.status==0&&E.response){w(E.response);return}y()},E.onerror=y,E.send(null)}}}var M=n.print||console.log.bind(console),x=n.printErr||console.error.bind(console);if(Object.assign(n,u),u=null,n.arguments)f=n.arguments;if(n.thisProgram)l=n.thisProgram;if(n.quit)d=n.quit;var N;if(n.wasmBinary)N=n.wasmBinary;var R,T=!1,_,K,G,L,gt,Xt,it,Ar,We;function Sn(){var g=R.buffer;n.HEAP8=K=new Int8Array(g),n.HEAP16=L=new Int16Array(g),n.HEAPU8=G=new Uint8Array(g),n.HEAPU16=gt=new Uint16Array(g),n.HEAP32=Xt=new Int32Array(g),n.HEAPU32=it=new Uint32Array(g),n.HEAPF32=Ar=new Float32Array(g),n.HEAPF64=We=new Float64Array(g)}var Hs=[],tu=[],Ei=[],Qf=!1;function td(){if(n.preRun){if(typeof n.preRun=="function")n.preRun=[n.preRun];while(n.preRun.length)nO(n.preRun.shift())}rd(Hs)}function ed(){Qf=!0,rd(tu)}function eO(){if(n.postRun){if(typeof n.postRun=="function")n.postRun=[n.postRun];while(n.postRun.length)iO(n.postRun.shift())}rd(Ei)}function nO(g){Hs.unshift(g)}function rO(g){tu.unshift(g)}function iO(g){Ei.unshift(g)}var Mi=0,nd=null,ua=null;function sO(g){Mi++,n.monitorRunDependencies?.(Mi)}function oO(g){if(Mi--,n.monitorRunDependencies?.(Mi),Mi==0){if(nd!==null)clearInterval(nd),nd=null;if(ua){var w=ua;ua=null,w()}}}function xb(g){n.onAbort?.(g),g="Aborted("+g+")",x(g),T=!0,_=1,g+=". Build with -sASSERTIONS for more info.";var w=new WebAssembly.RuntimeError(g);throw i(w),w}var aO="data:application/octet-stream;base64,",Ob=(g)=>g.startsWith(aO),xi;if(n.locateFile){if(xi="mozjpeg_dec.wasm",!Ob(xi))xi=$(xi)}else xi=new URL("mozjpeg_dec.wasm",import.meta.url).href;function Pb(g){if(g==xi&&N)return new Uint8Array(N);if(S)return S(g);throw"both async and sync fetching of the wasm failed"}function cO(g){if(!N&&(h||m)){if(typeof fetch=="function")return fetch(g,{credentials:"same-origin"}).then((w)=>{if(!w.ok)throw`failed to load wasm binary file at '${g}'`;return w.arrayBuffer()}).catch(()=>Pb(g))}return Promise.resolve().then(()=>Pb(g))}function Ib(g,w,y){return cO(g).then((E)=>WebAssembly.instantiate(E,w)).then(y,(E)=>{x(`failed to asynchronously prepare wasm: ${E}`),xb(E)})}function uO(g,w,y,E){if(!g&&typeof WebAssembly.instantiateStreaming=="function"&&!Ob(w)&&typeof fetch=="function")return fetch(w,{credentials:"same-origin"}).then((P)=>{var A=WebAssembly.instantiateStreaming(P,y);return A.then(E,function(U){return x(`wasm streaming compile failed: ${U}`),x("falling back to ArrayBuffer instantiation"),Ib(w,y,E)})});return Ib(w,y,E)}function lO(){var g={a:HP};function w(E,P){return ce=E.exports,R=ce.A,Sn(),Cb=ce.F,rO(ce.B),oO("wasm-instantiate"),ce}sO("wasm-instantiate");function y(E){w(E.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(g,w)}catch(E){x(`Module.instantiateWasm callback failed with error: ${E}`),i(E)}return uO(N,xi,g,y).catch(i),{}}function fO(g){this.name="ExitStatus",this.message=`Program terminated with exit(${g})`,this.status=g}var rd=(g)=>{while(g.length>0)g.shift()(n)},dO=n.noExitRuntime||!0;class Rb{constructor(g){this.excPtr=g,this.ptr=g-24}set_type(g){it[this.ptr+4>>2]=g}get_type(){return it[this.ptr+4>>2]}set_destructor(g){it[this.ptr+8>>2]=g}get_destructor(){return it[this.ptr+8>>2]}set_caught(g){g=g?1:0,K[this.ptr+12]=g}get_caught(){return K[this.ptr+12]!=0}set_rethrown(g){g=g?1:0,K[this.ptr+13]=g}get_rethrown(){return K[this.ptr+13]!=0}init(g,w){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(w)}set_adjusted_ptr(g){it[this.ptr+16>>2]=g}get_adjusted_ptr(){return it[this.ptr+16>>2]}get_exception_ptr(){var g=Kb(this.get_type());if(g)return it[this.excPtr>>2];var w=this.get_adjusted_ptr();if(w!==0)return w;return this.excPtr}}var Ab=0,hO=0,mO=(g,w,y)=>{var E=new Rb(g);throw E.init(w,y),Ab=g,hO++,Ab},pO=(g,w,y,E,P)=>{},gO=()=>{var g=Array(256);for(var w=0;w<256;++w)g[w]=String.fromCharCode(w);Nb=g},Nb,sn=(g)=>{var w="",y=g;while(G[y])w+=Nb[G[y++]];return w},Fs={},Oi={},eu={},Tb,Ie=(g)=>{throw new Tb(g)},Hb,Fb=(g)=>{throw new Hb(g)},bO=(g,w,y)=>{g.forEach(function(H){eu[H]=w});function E(H){var z=y(H);if(z.length!==g.length)Fb("Mismatched type converter count");for(var Q=0;Q<g.length;++Q)Vn(g[Q],z[Q])}var P=Array(w.length),A=[],U=0;if(w.forEach((H,z)=>{if(Oi.hasOwnProperty(H))P[z]=Oi[H];else{if(A.push(H),!Fs.hasOwnProperty(H))Fs[H]=[];Fs[H].push(()=>{if(P[z]=Oi[H],++U,U===A.length)E(P)})}}),A.length===0)E(P)};function wO(g,w,y={}){var E=w.name;if(!g)Ie(`type "${E}" must have a positive integer typeid pointer`);if(Oi.hasOwnProperty(g))if(y.ignoreDuplicateRegistrations)return;else Ie(`Cannot register type '${E}' twice`);if(Oi[g]=w,delete eu[g],Fs.hasOwnProperty(g)){var P=Fs[g];delete Fs[g],P.forEach((A)=>A())}}function Vn(g,w,y={}){if(!("argPackAdvance"in w))throw TypeError("registerType registeredInstance requires argPackAdvance");return wO(g,w,y)}var Pi=8,$O=(g,w,y,E)=>{w=sn(w),Vn(g,{name:w,fromWireType:function(P){return!!P},toWireType:function(P,A){return A?y:E},argPackAdvance:Pi,readValueFromPointer:function(P){return this.fromWireType(G[P])},destructorFunction:null})},id=[],Zn=[],sd=(g)=>{if(g>9&&--Zn[g+1]===0)Zn[g]=void 0,id.push(g)},kO=()=>Zn.length/2-5-id.length,yO=()=>{Zn.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=kO},Ii={toValue:(g)=>{if(!g)Ie("Cannot use deleted val. handle = "+g);return Zn[g]},toHandle:(g)=>{switch(g){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let w=id.pop()||Zn.length;return Zn[w]=g,Zn[w+1]=1,w}}}};function od(g){return this.fromWireType(it[g>>2])}var vO={name:"emscripten::val",fromWireType:(g)=>{var w=Ii.toValue(g);return sd(g),w},toWireType:(g,w)=>Ii.toHandle(w),argPackAdvance:Pi,readValueFromPointer:od,destructorFunction:null},SO=(g)=>Vn(g,vO),EO=(g,w)=>{switch(w){case 4:return function(y){return this.fromWireType(Ar[y>>2])};case 8:return function(y){return this.fromWireType(We[y>>3])};default:throw TypeError(`invalid float width (${w}): ${g}`)}},MO=(g,w,y)=>{w=sn(w),Vn(g,{name:w,fromWireType:(E)=>E,toWireType:(E,P)=>P,argPackAdvance:Pi,readValueFromPointer:EO(w,y),destructorFunction:null})},ad=(g,w)=>Object.defineProperty(w,"name",{value:g}),Lb=(g)=>{while(g.length){var w=g.pop(),y=g.pop();y(w)}};function xO(g){for(var w=1;w<g.length;++w)if(g[w]!==null&&g[w].destructorFunction===void 0)return!0;return!1}function OO(g,w,y,E,P,A){var U=w.length;if(U<2)Ie("argTypes array size mismatch! Must at least get return value and 'this' types!");var H=w[1]!==null&&y!==null,z=xO(w),Q=w[0].name!=="void",bt=U-2,Ct=Array(bt),ue=[],Ke=[],Ls=function(...fd){if(fd.length!==bt)Ie(`function ${g} called with ${fd.length} arguments, expected ${bt}`);Ke.length=0;var dd;if(ue.length=H?2:1,ue[0]=P,H)dd=w[1].toWireType(Ke,this),ue[1]=dd;for(var Cs=0;Cs<bt;++Cs)Ct[Cs]=w[Cs+2].toWireType(Ke,fd[Cs]),ue.push(Ct[Cs]);var GP=E(...ue);function UP(WP){if(z)Lb(Ke);else for(var js=H?1:2;js<w.length;js++){var KP=js===1?dd:Ct[js-2];if(w[js].destructorFunction!==null)w[js].destructorFunction(KP)}if(Q)return w[0].fromWireType(WP)}return UP(GP)};return ad(g,Ls)}var PO=(g,w,y)=>{if(g[w].overloadTable===void 0){var E=g[w];g[w]=function(...P){if(!g[w].overloadTable.hasOwnProperty(P.length))Ie(`Function '${y}' called with an invalid number of arguments (${P.length}) - expects one of (${g[w].overloadTable})!`);return g[w].overloadTable[P.length].apply(this,P)},g[w].overloadTable=[],g[w].overloadTable[E.argCount]=E}},IO=(g,w,y)=>{if(n.hasOwnProperty(g)){if(y===void 0||n[g].overloadTable!==void 0&&n[g].overloadTable[y]!==void 0)Ie(`Cannot register public name '${g}' twice`);if(PO(n,g,g),n.hasOwnProperty(y))Ie(`Cannot register multiple overloads of a function with the same number of arguments (${y})!`);n[g].overloadTable[y]=w}else if(n[g]=w,y!==void 0)n[g].numArguments=y},RO=(g,w)=>{var y=[];for(var E=0;E<g;E++)y.push(it[w+E*4>>2]);return y},AO=(g,w,y)=>{if(!n.hasOwnProperty(g))Fb("Replacing nonexistent public symbol");if(n[g].overloadTable!==void 0&&y!==void 0)n[g].overloadTable[y]=w;else n[g]=w,n[g].argCount=y},NO=(g,w,y)=>{g=g.replace(/p/g,"i");var E=n["dynCall_"+g];return E(w,...y)},nu=[],Cb,jb=(g)=>{var w=nu[g];if(!w){if(g>=nu.length)nu.length=g+1;nu[g]=w=Cb.get(g)}return w},TO=(g,w,y=[])=>{if(g.includes("j"))return NO(g,w,y);var E=jb(w)(...y);return E},HO=(g,w)=>(...y)=>TO(g,w,y),FO=(g,w)=>{g=sn(g);function y(){if(g.includes("j"))return HO(g,w);return jb(w)}var E=y();if(typeof E!="function")Ie(`unknown function pointer with signature ${g}: ${w}`);return E},LO=(g,w)=>{var y=ad(w,function(E){this.name=w,this.message=E;var P=Error(E).stack;if(P!==void 0)this.stack=this.toString()+`
|
|
3
|
-
`+P.replace(/^Error(:[^\n]*)?\n/,"")});return y.prototype=Object.create(g.prototype),y.prototype.constructor=y,y.prototype.toString=function(){if(this.message===void 0)return this.name;else return`${this.name}: ${this.message}`},y},_b,Bb=(g)=>{var w=Wb(g),y=sn(w);return Xn(w),y},CO=(g,w)=>{var y=[],E={};function P(A){if(E[A])return;if(Oi[A])return;if(eu[A]){eu[A].forEach(P);return}y.push(A),E[A]=!0}throw w.forEach(P),new _b(`${g}: `+y.map(Bb).join([", "]))},jO=(g)=>{g=g.trim();let w=g.indexOf("(");if(w!==-1)return g.substr(0,w);else return g},_O=(g,w,y,E,P,A,U)=>{var H=RO(w,y);g=sn(g),g=jO(g),P=FO(E,P),IO(g,function(){CO(`Cannot call ${g} due to unbound types`,H)},w-1),bO([],H,(z)=>{var Q=[z[0],null].concat(z.slice(1));return AO(g,OO(g,Q,null,P,A,U),w-1),[]})},BO=(g,w,y)=>{switch(w){case 1:return y?(E)=>K[E]:(E)=>G[E];case 2:return y?(E)=>L[E>>1]:(E)=>gt[E>>1];case 4:return y?(E)=>Xt[E>>2]:(E)=>it[E>>2];default:throw TypeError(`invalid integer width (${w}): ${g}`)}},GO=(g,w,y,E,P)=>{if(w=sn(w),P===-1)P=4294967295;var A=(bt)=>bt;if(E===0){var U=32-8*y;A=(bt)=>bt<<U>>>U}var H=w.includes("unsigned"),z=(bt,Ct)=>{},Q;if(H)Q=function(bt,Ct){return z(Ct,this.name),Ct>>>0};else Q=function(bt,Ct){return z(Ct,this.name),Ct};Vn(g,{name:w,fromWireType:A,toWireType:Q,argPackAdvance:Pi,readValueFromPointer:BO(w,y,E!==0),destructorFunction:null})},UO=(g,w,y)=>{var E=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],P=E[w];function A(U){var H=it[U>>2],z=it[U+4>>2];return new P(K.buffer,z,H)}y=sn(y),Vn(g,{name:y,fromWireType:A,argPackAdvance:Pi,readValueFromPointer:A},{ignoreDuplicateRegistrations:!0})},WO=(g,w,y,E)=>{if(!(E>0))return 0;var P=y,A=y+E-1;for(var U=0;U<g.length;++U){var H=g.charCodeAt(U);if(H>=55296&&H<=57343){var z=g.charCodeAt(++U);H=65536+((H&1023)<<10)|z&1023}if(H<=127){if(y>=A)break;w[y++]=H}else if(H<=2047){if(y+1>=A)break;w[y++]=192|H>>6,w[y++]=128|H&63}else if(H<=65535){if(y+2>=A)break;w[y++]=224|H>>12,w[y++]=128|H>>6&63,w[y++]=128|H&63}else{if(y+3>=A)break;w[y++]=240|H>>18,w[y++]=128|H>>12&63,w[y++]=128|H>>6&63,w[y++]=128|H&63}}return w[y]=0,y-P},KO=(g,w,y)=>WO(g,G,w,y),zO=(g)=>{var w=0;for(var y=0;y<g.length;++y){var E=g.charCodeAt(y);if(E<=127)w++;else if(E<=2047)w+=2;else if(E>=55296&&E<=57343)w+=4,++y;else w+=3}return w},Gb=(g,w,y)=>{var E=w+y,P="";while(!(w>=E)){var A=g[w++];if(!A)return P;if(!(A&128)){P+=String.fromCharCode(A);continue}var U=g[w++]&63;if((A&224)==192){P+=String.fromCharCode((A&31)<<6|U);continue}var H=g[w++]&63;if((A&240)==224)A=(A&15)<<12|U<<6|H;else A=(A&7)<<18|U<<12|H<<6|g[w++]&63;if(A<65536)P+=String.fromCharCode(A);else{var z=A-65536;P+=String.fromCharCode(55296|z>>10,56320|z&1023)}}return P},DO=(g,w)=>g?Gb(G,g,w):"",qO=(g,w)=>{w=sn(w);var y=w==="std::string";Vn(g,{name:w,fromWireType(E){var P=it[E>>2],A=E+4,U;if(y){var H=A;for(var z=0;z<=P;++z){var Q=A+z;if(z==P||G[Q]==0){var bt=Q-H,Ct=DO(H,bt);if(U===void 0)U=Ct;else U+=String.fromCharCode(0),U+=Ct;H=Q+1}}}else{var ue=Array(P);for(var z=0;z<P;++z)ue[z]=String.fromCharCode(G[A+z]);U=ue.join("")}return Xn(E),U},toWireType(E,P){if(P instanceof ArrayBuffer)P=new Uint8Array(P);var A,U=typeof P=="string";if(!(U||P instanceof Uint8Array||P instanceof Uint8ClampedArray||P instanceof Int8Array))Ie("Cannot pass non-string to std::string");if(y&&U)A=zO(P);else A=P.length;var H=ld(4+A+1),z=H+4;if(it[H>>2]=A,y&&U)KO(P,z,A+1);else if(U)for(var Q=0;Q<A;++Q){var bt=P.charCodeAt(Q);if(bt>255)Xn(z),Ie("String has UTF-16 code units that do not fit in 8 bits");G[z+Q]=bt}else for(var Q=0;Q<A;++Q)G[z+Q]=P[Q];if(E!==null)E.push(Xn,H);return H},argPackAdvance:Pi,readValueFromPointer:od,destructorFunction(E){Xn(E)}})},JO=(g,w)=>{var y="";for(var E=0;!(E>=w/2);++E){var P=L[g+E*2>>1];if(P==0)break;y+=String.fromCharCode(P)}return y},YO=(g,w,y)=>{if(y??=2147483647,y<2)return 0;y-=2;var E=w,P=y<g.length*2?y/2:g.length;for(var A=0;A<P;++A){var U=g.charCodeAt(A);L[w>>1]=U,w+=2}return L[w>>1]=0,w-E},VO=(g)=>g.length*2,ZO=(g,w)=>{var y=0,E="";while(!(y>=w/4)){var P=Xt[g+y*4>>2];if(P==0)break;if(++y,P>=65536){var A=P-65536;E+=String.fromCharCode(55296|A>>10,56320|A&1023)}else E+=String.fromCharCode(P)}return E},XO=(g,w,y)=>{if(y??=2147483647,y<4)return 0;var E=w,P=E+y-4;for(var A=0;A<g.length;++A){var U=g.charCodeAt(A);if(U>=55296&&U<=57343){var H=g.charCodeAt(++A);U=65536+((U&1023)<<10)|H&1023}if(Xt[w>>2]=U,w+=4,w+4>P)break}return Xt[w>>2]=0,w-E},QO=(g)=>{var w=0;for(var y=0;y<g.length;++y){var E=g.charCodeAt(y);if(E>=55296&&E<=57343)++y;w+=4}return w},tP=(g,w,y)=>{y=sn(y);var E,P,A,U;if(w===2)E=JO,P=YO,U=VO,A=(H)=>gt[H>>1];else if(w===4)E=ZO,P=XO,U=QO,A=(H)=>it[H>>2];Vn(g,{name:y,fromWireType:(H)=>{var z=it[H>>2],Q,bt=H+4;for(var Ct=0;Ct<=z;++Ct){var ue=H+4+Ct*w;if(Ct==z||A(ue)==0){var Ke=ue-bt,Ls=E(bt,Ke);if(Q===void 0)Q=Ls;else Q+=String.fromCharCode(0),Q+=Ls;bt=ue+w}}return Xn(H),Q},toWireType:(H,z)=>{if(typeof z!="string")Ie(`Cannot pass non-string to C++ string type ${y}`);var Q=U(z),bt=ld(4+Q+w);if(it[bt>>2]=Q/w,P(z,bt+4,Q+w),H!==null)H.push(Xn,bt);return bt},argPackAdvance:Pi,readValueFromPointer:od,destructorFunction(H){Xn(H)}})},eP=(g,w)=>{w=sn(w),Vn(g,{isVoid:!0,name:w,argPackAdvance:0,fromWireType:()=>{return},toWireType:(y,E)=>{return}})},nP=(g,w,y)=>G.copyWithin(g,w,w+y),cd=[],rP=(g,w,y,E)=>{return g=cd[g],w=Ii.toValue(w),g(null,w,y,E)},iP={},sP=(g)=>{var w=iP[g];if(w===void 0)return sn(g);return w},Ub=()=>{if(typeof globalThis=="object")return globalThis;function g(w){w.$$$embind_global$$$=w;var y=typeof $$$embind_global$$$=="object"&&w.$$$embind_global$$$==w;if(!y)delete w.$$$embind_global$$$;return y}if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;if(typeof global=="object"&&g(global))$$$embind_global$$$=global;else if(typeof self=="object"&&g(self))$$$embind_global$$$=self;if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;throw Error("unable to get global object.")},oP=(g)=>{if(g===0)return Ii.toHandle(Ub());else return g=sP(g),Ii.toHandle(Ub()[g])},aP=(g)=>{var w=cd.length;return cd.push(g),w},cP=(g,w)=>{var y=Oi[g];if(y===void 0)Ie(`${w} has unknown type ${Bb(g)}`);return y},uP=(g,w)=>{var y=Array(g);for(var E=0;E<g;++E)y[E]=cP(it[w+E*4>>2],"parameter "+E);return y},lP=Reflect.construct,fP=(g,w,y)=>{var E=[],P=g.toWireType(E,y);if(E.length)it[w>>2]=Ii.toHandle(E);return P},dP=(g,w,y)=>{var E=uP(g,w),P=E.shift();g--;var A=Array(g),U=(z,Q,bt,Ct)=>{var ue=0;for(var Ke=0;Ke<g;++Ke)A[Ke]=E[Ke].readValueFromPointer(Ct+ue),ue+=E[Ke].argPackAdvance;var Ls=y===1?lP(Q,A):Q.apply(z,A);return fP(P,bt,Ls)},H=`methodCaller<(${E.map((z)=>z.name).join(", ")}) => ${P.name}>`;return aP(ad(H,U))},hP=(g)=>{if(g>9)Zn[g+1]+=1},mP=(g)=>{var w=Ii.toValue(g);Lb(w),sd(g)},pP=()=>{xb("")},gP=()=>2147483648,bP=(g)=>{var w=R.buffer,y=(g-w.byteLength+65535)/65536;try{return R.grow(y),Sn(),1}catch(E){}},wP=(g)=>{var w=G.length;g>>>=0;var y=gP();if(g>y)return!1;var E=(z,Q)=>z+(Q-z%Q)%Q;for(var P=1;P<=4;P*=2){var A=w*(1+0.2/P);A=Math.min(A,g+100663296);var U=Math.min(y,E(Math.max(g,A),65536)),H=bP(U);if(H)return!0}return!1},ud={},$P=()=>l||"./this.program",la=()=>{if(!la.strings){var g=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",w={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:g,_:$P()};for(var y in ud)if(ud[y]===void 0)delete w[y];else w[y]=ud[y];var E=[];for(var y in w)E.push(`${y}=${w[y]}`);la.strings=E}return la.strings},kP=(g,w)=>{for(var y=0;y<g.length;++y)K[w++]=g.charCodeAt(y);K[w]=0},yP=(g,w)=>{var y=0;return la().forEach((E,P)=>{var A=w+y;it[g+P*4>>2]=A,kP(E,A),y+=E.length+1}),0},vP=(g,w)=>{var y=la();it[g>>2]=y.length;var E=0;return y.forEach((P)=>E+=P.length+1),it[w>>2]=E,0},SP=0,EP=()=>dO||SP>0,MP=(g)=>{if(_=g,!EP())n.onExit?.(g),T=!0;d(g,new fO(g))},xP=(g,w)=>{_=g,MP(g)},OP=xP,PP=(g)=>52,IP=(g,w)=>w+2097152>>>0<4194305-!!g?(g>>>0)+w*4294967296:NaN;function RP(g,w,y,E,P){var A=IP(w,y);return 70}var AP=[null,[],[]],NP=(g,w)=>{var y=AP[g];if(w===0||w===10)(g===1?M:x)(Gb(y,0)),y.length=0;else y.push(w)},TP=(g,w,y,E)=>{var P=0;for(var A=0;A<y;A++){var U=it[w>>2],H=it[w+4>>2];w+=8;for(var z=0;z<H;z++)NP(g,G[U+z]);P+=H}return it[E>>2]=P,0};gO(),Tb=n.BindingError=class extends Error{constructor(w){super(w);this.name="BindingError"}},Hb=n.InternalError=class extends Error{constructor(w){super(w);this.name="InternalError"}},yO(),_b=n.UnboundTypeError=LO(Error,"UnboundTypeError");var HP={o:mO,q:pO,m:$O,l:SO,j:MO,f:_O,b:GO,a:UO,e:qO,c:tP,n:eP,v:nP,i:rP,d:sd,k:oP,h:dP,y:hP,g:mP,r:pP,s:wP,t:yP,u:vP,z:OP,w:PP,p:RP,x:TP},ce=lO(),FP=()=>(FP=ce.B)(),Wb=(g)=>(Wb=ce.C)(g),ld=(g)=>(ld=ce.D)(g),Xn=(g)=>(Xn=ce.E)(g),LP=(g)=>(LP=ce._emscripten_stack_restore)(g),CP=(g)=>(CP=ce._emscripten_stack_alloc)(g),jP=()=>(jP=ce.emscripten_stack_get_current)(),_P=(g)=>(_P=ce.__cxa_increment_exception_refcount)(g),Kb=(g)=>(Kb=ce.G)(g),BP=n.dynCall_jiji=(g,w,y,E,P)=>(BP=n.dynCall_jiji=ce.H)(g,w,y,E,P),ru;ua=function g(){if(!ru)zb();if(!ru)ua=g};function zb(){if(Mi>0)return;if(td(),Mi>0)return;function g(){if(ru)return;if(ru=!0,n.calledRun=!0,T)return;if(ed(),r(n),n.onRuntimeInitialized)n.onRuntimeInitialized();eO()}if(n.setStatus)n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),g()},1);else g()}if(n.preInit){if(typeof n.preInit=="function")n.preInit=[n.preInit];while(n.preInit.length>0)n.preInit.pop()()}return zb(),s}})(),Xw=MR;function Td(t){let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=t[0]===73&&t[1]===73;if(t.length<8||!n&&(t[0]!==77||t[1]!==77))return 1;let r=e.getUint32(4,n);if(r+2>t.length)return 1;for(let i=r+2,s=e.getUint16(r,n);s>0&&i+12<=t.length;s--,i+=12)if(e.getUint16(i,n)===274){let o=e.getUint16(i+8,n);return o>=1&&o<=8?o:1}return 1}function Hd(t){if(t[0]!==255||t[1]!==216)return null;let e=1,n=2;while(n+9<t.length){if(t[n]!==255){n++;continue}let r=t[n+1];if(r===255){n++;continue}let i=t[n+2]<<8|t[n+3];if(r===225&&String.fromCharCode(...t.subarray(n+4,n+10))==="Exif\x00\x00")e=Td(t.subarray(n+10,Math.min(t.length,n+2+i)));if(r>=192&&r<=207&&r!==196&&r!==200&&r!==204){let s=t[n+5]<<8|t[n+6],o=t[n+7]<<8|t[n+8];return e>=5?{width:s,height:o}:{width:o,height:s}}n+=2+i}return null}var Nd;function OR(){if(Nd)return Nd;let t=new WebAssembly.Module(xR(Buffer.from("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","base64"))),e={noInitialRun:!0,print:()=>{return},printErr:()=>{return},instantiateWasm:(n,r)=>{let i=new WebAssembly.Instance(t,n);return r(i),i.exports}};if(Xw(e),typeof e.decode!=="function")throw Error("the JPEG decoder did not start");return Nd=e,e}function Qw(t,e){let n=Hd(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);let r=null;try{r=OR().decode(t,!0)}catch{r=null}if(!r)throw Error("not a JPEG image this decoder can read");return{width:r.width,height:r.height,data:new Uint8Array(r.data.buffer,r.data.byteOffset,r.data.length)}}var zs=[137,80,78,71,13,10,26,10],r0=13,pa=3;function jr(t){return t.length>=zs.length&&zs.every((e,n)=>t[n]===e)}var i0={0:1,2:3,3:1,4:2,6:4};function s0(t){if(t.length<33||!jr(t))return;let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength),n=e.readUInt32BE(16),r=e.readUInt32BE(20),i=e[25];if(e[24]!==8||e[28]!==0||i0[i]===void 0)return;let s=[],o,a;for(let c=8;c+12<=e.length;){let u=e.readUInt32BE(c),f=e.toString("latin1",c+4,c+8),l=e.subarray(c+8,c+8+u);if(f==="IDAT")s.push(l);else if(f==="PLTE")o=l;else if(f==="tRNS"){if(i!==pa)return;a=l}else if(f==="IEND")break;c+=12+u}if(s.length===0||i===pa&&!o)return;return{width:n,height:r,type:i,idat:s,palette:o,opacity:a}}function AR(t,e){let n=new Uint32Array(256),r=new Uint8Array(n.buffer);for(let i=0;i<256;i++)r[i*4]=t[i*3]??0,r[i*4+1]=t[i*3+1]??0,r[i*4+2]=t[i*3+2]??0,r[i*4+3]=e?.[i]??255;return n}function NR(t,e,n,r){let i=new Uint8Array(e);for(let s=0;s<n;s++){let o=s*(e+1),a=t[o],c=o+1,u=s>0?t:i,f=s>0?c-e-1:0;if(a===1)for(let l=r;l<e;l++)t[c+l]=t[c+l]+t[c+l-r];else if(a===2)for(let l=0;l<e;l++)t[c+l]=t[c+l]+u[f+l];else if(a===3){for(let l=0;l<r;l++)t[c+l]=t[c+l]+(u[f+l]>>1);for(let l=r;l<e;l++)t[c+l]=t[c+l]+(t[c+l-r]+u[f+l]>>1)}else if(a===4){for(let l=0;l<r;l++)t[c+l]=t[c+l]+u[f+l];for(let l=r;l<e;l++){let d=t[c+l-r],h=u[f+l],m=u[f+l-r],p=Math.abs(h-m),b=Math.abs(d-m),$=Math.abs(d+h-2*m);t[c+l]=t[c+l]+(p<=b&&p<=$?d:b<=$?h:m)}}else if(a!==0)throw Error(`bad PNG filter ${a}`)}}function TR(t){let{width:e,height:n,type:r}=t,i=i0[r],s=e*i,o=RR(Buffer.concat(t.idat),{chunkSize:Math.min(268435456,Math.max(65536,n*(s+1)))});if(o.length<n*(s+1))throw Error("truncated PNG");NR(o,s,n,i);let a=new Uint8Array(e*n*4),c=r===pa?AR(t.palette,t.opacity):void 0,u=new Uint32Array(a.buffer);for(let f=0;f<n;f++){let l=f*(s+1)+1,d=f*e*4;if(c)for(let h=0,m=f*e;h<e;h++,m++)u[m]=c[o[l+h]];else if(r===6)a.set(o.subarray(l,l+s),d);else if(r===2)for(let h=0,m=l,p=d;h<e;h++,m+=3,p+=4)a[p]=o[m],a[p+1]=o[m+1],a[p+2]=o[m+2],a[p+3]=255;else if(r===0)for(let h=0,m=d;h<e;h++,m+=4){let p=o[l+h];a[m]=p,a[m+1]=p,a[m+2]=p,a[m+3]=255}else for(let h=0,m=l,p=d;h<e;h++,m+=2,p+=4){let b=o[m];a[p]=b,a[p+1]=b,a[p+2]=b,a[p+3]=o[m+1]}}return{width:e,height:n,data:a}}function Fd(t){let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength);for(let n=8;n+12<=e.length;){let r=e.readUInt32BE(n),i=e.toString("latin1",n+4,n+8);if(i==="eXIf")return Td(e.subarray(n+8,Math.min(e.length,n+8+r)));if(i==="IDAT"||i==="IEND")return 1;n+=12+r}return 1}function t0(t,e){if(e<=1)return t;let{width:n,height:r}=t,i=e>=5?r:n,s=e>=5?n:r,o=new Uint32Array(t.data.buffer,t.data.byteOffset,n*r),a=new Uint8Array(i*s*4),c=new Uint32Array(a.buffer);for(let u=0;u<s;u++)for(let f=0;f<i;f++){let l=e<=3&&e>=2?n-1-f:e===5||e===6?u:e>=7?n-1-u:f,d=e===3||e===4?r-1-u:e===5||e===8?f:e>=6?r-1-f:u;c[u*i+f]=o[d*n+l]}return{width:i,height:s,data:a}}function Wt(t){let e=s0(t);if(e)return t0(TR(e),Fd(t));let n=n0.PNG.sync.read(Buffer.from(t));return t0({width:n.width,height:n.height,data:new Uint8Array(n.data)},Fd(t))}function Pn(t,e){if(jr(t)){let n=In(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);return Wt(t)}if(t[0]===255&&t[1]===216)return Qw(t,e);throw Error("not a PNG or JPEG image")}function Ld(t,e,n){let{width:r,height:i,at:s}=e,o=Math.max(0,s.x),a=Math.max(0,s.y),c=Math.min(r,s.x+s.w),u=Math.min(i,s.y+s.h);if(c<=o||u<=a)return;let f={x:o,y:a,w:c-o,h:u-a};if(s.w===t.width&&s.h===t.height)return{part:t,box:f,dx:o-s.x,dy:a-s.y};let l={x:(o-s.x)*t.width/s.w,y:(a-s.y)*t.height/s.h,w:f.w*t.width/s.w,h:f.h*t.height/s.h};return{part:n(t,l,f.w,f.h),box:f,dx:0,dy:0}}function o0(t,e){let n=new Uint8Array(e.width*e.height*4),r=Ld(t,e,Br);if(r){let{part:i,box:s,dx:o,dy:a}=r;for(let c=0;c<s.h;c++){let u=((c+a)*i.width+o)*4;n.set(i.data.subarray(u,u+s.w*4),((s.y+c)*e.width+s.x)*4)}}return{width:e.width,height:e.height,data:n}}function a0(t,e){let n=new Uint8Array(e.width*e.height),r=Ld(t,e,(i,s,o,a)=>Ds(jd(i,s,o,a)));if(r){let{part:i,box:s,dx:o,dy:a}=r;for(let c=0;c<s.h;c++){let u=(c+a)*i.width+o;n.set(i.data.subarray(u,u+s.w),(s.y+c)*e.width+s.x)}}return{width:e.width,height:e.height,data:n}}function _r(t,e,n,r={width:t.width,height:t.height,at:{x:0,y:0,w:t.width,h:t.height}}){let i=st(e),{width:s,height:o}=r,a=new Uint8Array(s*o*3);for(let h=0;h<s*3;h+=3)a.set(i,h);for(let h=1;h<o;h++)a.copyWithin(h*s*3,0,s*3);let c=Ld(t,r,Br);if(!c)return{width:s,height:o,data:a};let{part:u,box:f,dx:l,dy:d}=c;for(let h=0;h<f.h;h++)for(let m=0;m<f.w;m++){let p=((h+d)*u.width+m+l)*4,b=((f.y+h)*s+f.x+m)*3,$=u.data[p+3]/255*n;for(let k=0;k<3;k++)a[b+k]=Math.round(i[k]*(1-$)+u.data[p+k]*$)}return{width:s,height:o,data:a}}function e0(t,e){for(let n=0;n+e.length<=t.length;n++){let r=!0;for(let i=0;i<e.length&&r;i++)r=t[n+i]===e.charCodeAt(i);if(r)return n}return-1}function In(t){if(t.length<33||!jr(t))return null;let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=Fd(t)>=5,r=e.getUint32(n?20:16),i=e.getUint32(n?16:20);if(t[25]===4||t[25]===6)return{width:r,height:i,alpha:!0};let s=e0(t,"IDAT");return{width:r,height:i,alpha:e0(s===-1?t:t.subarray(0,s),"tRNS")!==-1}}function c0(t,e=r0){let{width:n,height:r,data:i}=t,s=(f)=>{for(let l=f*n*4+3,d=l+n*4;l<d;l+=4)if(i[l]>=e)return!0;return!1},o=0;while(o<r&&!s(o))o++;if(o===r)return null;let a=r-1;while(!s(a))a--;let c=n,u=-1;for(let f=o;f<=a;f++){let l=f*n*4+3;for(let d=0;d<c;d++)if(i[l+d*4]>=e){c=d;break}for(let d=n-1;d>u;d--)if(i[l+d*4]>=e){u=d;break}}return{x:c,y:o,w:u-c+1,h:a-o+1}}function rr(t,e={x:0,y:0,w:t.width,h:t.height}){let n=0;for(let r=e.y;r<e.y+e.h;r++)for(let i=e.x;i<e.x+e.w;i++)if((t.data[(r*t.width+i)*4+3]??0)<r0)n++;return Math.round(n*100/(e.w*e.h))}function u0(t,e,n){let r=Math.min(e/t.width,n/t.height),i=Math.max(1,Math.round(t.width*r)),s=Math.max(1,Math.round(t.height*r)),o=Br(t,{x:0,y:0,w:t.width,h:t.height},i,s),a=new Uint8Array(e*n*4),c=Math.floor((e-i)/2),u=Math.floor((n-s)/2);for(let f=0;f<s;f++)a.set(o.data.subarray(f*i*4,(f+1)*i*4),((u+f)*e+c)*4);return{width:e,height:n,data:a}}function HR(t){let e=Math.abs(t);if(e<1)return(7*e*e*e-12*e*e+5.333333333333333)/6;if(e<2)return(-2.3333333333333335*e*e*e+12*e*e-20*e+10.666666666666666)/6;return 0}function Cd(t,e,n,r){if(n===r&&Number.isInteger(e)&&e>=0&&e+r<=t)return{first:Int32Array.from({length:r},(f,l)=>e+l),size:1,weights:new Float32Array(r).fill(1)};let i=n/r,s=Math.max(1,i),o=2*s,a=Math.min(t,Math.ceil(2*o)+2),c=new Int32Array(r),u=new Float32Array(r*a);for(let f=0;f<r;f++){let l=e+(f+0.5)*i,d=Math.floor(l-o-0.5),h=Math.max(0,Math.min(t-a,d));c[f]=h;let m=0;for(let p=d;p<=Math.ceil(l+o-0.5);p++){let b=HR((p+0.5-l)/s),$=f*a+Math.min(t-1,Math.max(0,p))-h;u[$]=(u[$]??0)+b,m+=b}for(let p=f*a;p<(f+1)*a;p++)u[p]=(u[p]??0)/m}return{first:c,size:a,weights:u}}function l0(t,e,n,r,i,s,o){let a=Cd(t,e.y,e.h,r),c=n*i,u=a.size+1,f=Array.from({length:u},()=>new Float32Array(c)),l=new Int32Array(u).fill(-1),d=new Float32Array(c),h=[],m=[];for(let p=0;p<r;p++){h.length=0,m.length=0;let b=a.first[p];for(let k=0;k<a.size;k++){let v=a.weights[p*a.size+k];if(v===0)continue;let S=b+k,M=S%u,x=f[M];if(l[M]!==S)s(S,x),l[M]=S;h.push(x),m.push(v)}let $=0;while($<h.length){let k=h[$],v=m[$];if(h.length-$>=4){let S=h[$+1],M=h[$+2],x=h[$+3],N=m[$+1],R=m[$+2],T=m[$+3];if($===0)for(let _=0;_<c;_++)d[_]=k[_]*v+S[_]*N+M[_]*R+x[_]*T;else for(let _=0;_<c;_++)d[_]=d[_]+(k[_]*v+S[_]*N+M[_]*R+x[_]*T);$+=4}else{if($===0)for(let S=0;S<c;S++)d[S]=k[S]*v;else for(let S=0;S<c;S++)d[S]=d[S]+k[S]*v;$+=1}}if(h.length===0)d.fill(0);o(p,d)}}function f0(t,e,n,r,i){let s=0,o=n;while(s<o){let c=s+o>>1;if(t[c]+e-1<r)s=c+1;else o=c}let a=s;o=n;while(s<o){let c=s+o>>1;if(t[c]<=i)s=c+1;else o=c}return[a,s]}function Br(t,e,n,r){let i=Cd(t.width,e.x,e.w,n),s=t.data,o=t.width,a=new Float32Array(o*4),c=new Uint8Array(n*r*4);return l0(t.height,e,n,r,4,(u,f)=>{let l=u*o*4,d=o,h=-1;for(let b=0,$=0;b<o*4;b+=4,$++){let k=s[l+b+3];if(k===0){a[b]=0,a[b+1]=0,a[b+2]=0,a[b+3]=0;continue}if($<d)d=$;h=$,a[b]=s[l+b]*k,a[b+1]=s[l+b+1]*k,a[b+2]=s[l+b+2]*k,a[b+3]=k}if(f.fill(0),h<0)return;let[m,p]=f0(i.first,i.size,n,d,h);for(let b=m;b<p;b++){let $=i.first[b]*4,k=b*i.size,v=0,S=0,M=0,x=0;for(let N=0;N<i.size;N++){let R=i.weights[k+N],T=$+N*4;v+=a[T]*R,S+=a[T+1]*R,M+=a[T+2]*R,x+=a[T+3]*R}f[b*4]=v,f[b*4+1]=S,f[b*4+2]=M,f[b*4+3]=x}},(u,f)=>{let l=u*n*4;for(let d=0;d<n;d++){let h=d*4,m=f[h+3];if(m<=0)continue;let p=f[h]/m;c[l+h]=(p<0?0:p>255?255:p)+0.5,p=f[h+1]/m,c[l+h+1]=(p<0?0:p>255?255:p)+0.5,p=f[h+2]/m,c[l+h+2]=(p<0?0:p>255?255:p)+0.5,c[l+h+3]=(m>255?255:m)+0.5}}),{width:n,height:r,data:c}}function jd(t,e,n,r){let i=Cd(t.width,e.x,e.w,n),s=t.data,o=t.width,a=new Float32Array(n*r);return l0(t.height,e,n,r,1,(c,u)=>{let f=c*o,l=o,d=-1;for(let p=0;p<o;p++)if(s[f+p]!==0){if(p<l)l=p;d=p}if(u.fill(0),d<0)return;let[h,m]=f0(i.first,i.size,n,l,d);for(let p=h;p<m;p++){let b=f+i.first[p],$=p*i.size,k=0;for(let v=0;v<i.size;v++)k+=s[b+v]*i.weights[$+v];u[p]=k}},(c,u)=>{a.set(u,c*n)}),{width:n,height:r,data:a}}function ga(t,e){if(e<=0)return t;let n=Math.max(1,Math.ceil(e*3)),r=Array.from({length:2*n+1},(f,l)=>Math.exp(-((l-n)**2)/(2*e*e))),i=r.reduce((f,l)=>f+l,0),{width:s,height:o,data:a}=t,c=new Float32Array(s*o);for(let f=0;f<o;f++){let l=f*s;for(let d=0;d<s;d++){let h=0;for(let m=-n;m<=n;m++)h+=(a[l+Math.min(s-1,Math.max(0,d+m))]??0)*(r[m+n]??0);c[l+d]=h/i}}let u=new Float32Array(s*o);for(let f=0;f<o;f++){let l=f*s;for(let d=-n;d<=n;d++){let h=(r[d+n]??0)/i,m=Math.min(o-1,Math.max(0,f+d))*s;for(let p=0;p<s;p++)u[l+p]=(u[l+p]??0)+(c[m+p]??0)*h}}return{width:s,height:o,data:u}}function Ds(t){let e=new Uint8Array(t.data.length);for(let n=0;n<e.length;n++){let r=t.data[n];e[n]=(r<0?0:r>255?255:r)+0.5}return{width:t.width,height:t.height,data:e}}function ir(t){let e=new Uint8Array(t.width*t.height);for(let n=0;n<e.length;n++)e[n]=t.data[n*4+3]??0;return{width:t.width,height:t.height,data:e}}var FR=Array.from({length:256},(t,e)=>{let n=e;for(let r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;return n>>>0});function LR(t){let e=4294967295;for(let n of t)e=(FR[(e^n)&255]??0)^e>>>8;return(e^4294967295)>>>0}function Cr(t,e){let n=Buffer.alloc(12+e.length);return n.writeUInt32BE(e.length,0),n.write(t,4,"latin1"),n.set(e,8),n.writeUInt32BE(LR(n.subarray(4,8+e.length)),8+e.length),n}function d0(t,e,n){let r=new Uint8Array(n*(e+1));r.set(t.subarray(0,e),1);for(let i=1;i<n;i++){let s=i*(e+1),o=i*e,a=o-e;r[s]=2;for(let c=0;c<e;c++)r[s+1+c]=t[o+c]-t[a+c]}return r}function h0(t){return IR(t,{level:1,strategy:PR.Z_RLE})}function m0(t,e,n){let r=Buffer.alloc(13);return r.writeUInt32BE(t.width,0),r.writeUInt32BE(t.height,4),r[8]=8,r[9]=e,Buffer.concat([Buffer.from(zs),Cr("IHDR",r),...n,Cr("IDAT",h0(d0(t.data,t.width,t.height))),Cr("IEND",new Uint8Array)])}function p0(t){let[e,n,r]=st(t),i=new Uint8Array(768);for(let s=0;s<256;s++)i.set([e,n,r],s*3);return Cr("PLTE",i)}function g0(t,e,n,r,i){let s=Buffer.alloc(13);return s.writeUInt32BE(t,0),s.writeUInt32BE(e,4),s[8]=8,s[9]=n,Buffer.concat([Buffer.from(zs),Cr("IHDR",s),Cr("IDAT",h0(d0(i,t*r,e))),Cr("IEND",new Uint8Array)])}function Gr(t){return g0(t.width,t.height,2,3,t.data)}function De(t){return g0(t.width,t.height,6,4,t.data)}function sr(t,e){return m0(t,pa,[p0(e),Cr("tRNS",Uint8Array.from({length:256},(n,r)=>r))])}function _d(t){return m0(t,0,[])}function b0(t){let e=s0(t)?.palette;if(!e||e.length<3)return;for(let n=3;n+2<e.length;n+=3)if(e[n]!==e[0]||e[n+1]!==e[1]||e[n+2]!==e[2])return;return`#${[...e.subarray(0,3)].map((n)=>n.toString(16).padStart(2,"0")).join("")}`}function au(t,e){if(!jr(t)||t[25]!==pa)return;let n=Buffer.from(t.buffer,t.byteOffset,t.byteLength),r=[Buffer.from(zs)],i=zs.length;while(i+8<=n.length){let s=i+12+n.readUInt32BE(i);r.push(n.toString("latin1",i+4,i+8)==="PLTE"?p0(e):n.subarray(i,s)),i=s}return Buffer.concat(r)}var Rn=100,fe=25000000,WR=536870912,qs=["safe","questionable","explicit"],Ti=["nudity","underwear"],Wd=["comic","monochrome","sketch","chibi"],x0=["off","5","10","25","50","100"],O0=["off","720","1080","1440","1800","2560"],P0={nudity:new Set(["nude","naked","topless","bottomless","nipples","naked_towel","undressing"]),underwear:new Set(["underwear","panties","pantsu","bra","lingerie","pantyshot"])},KR={comic:new Set(["comic","4koma"]),monochrome:new Set(["monochrome","greyscale"]),sketch:new Set(["sketch","lineart","line_art"]),chibi:new Set(["chibi"])},zR=/^(?:rating|score|width|height|filetype|dimension):/,ba={safe:"s",questionable:"q",explicit:"e"},I0=8191,DR=20000,R0=5000,w0=3000,$0=8,qR=8,JR=8000,YR=3000,A0=60000,k0=3,VR=3,ZR="https://static.zerochan.net",N0="https://s1.zerochan.net",Kd=`ttheme/${lt.version} (+${lt.homepage})`,XR=["orig","tile","thumb","cut"],T0=new Map,QR=gA(process.env.TTHEME_FIND_HOSTS),tA=pA(process.env.TTHEME_FIND_CUTOUTS);BR(YR);var eA=["artist","character","copyright"];function y0(t){try{return CR(t)}catch{return[]}}function Js(t){return t.startsWith("//")?`https:${t}`:t}function Ur(t){return(/\.([a-z0-9]+)(?:\?.*)?$/i.exec(t)?.[1]??"").toLowerCase()}function Ys(t){let e=t.trim();if(!e)return[];let n=JSON.parse(e);if(Array.isArray(n))return n;let r=n.posts;return Array.isArray(r)?r:[]}function nA(t){let e=t.trim(),r=(e?JSON.parse(e):{}).tags??{};return new Map(Object.entries(r).map(([i,s])=>[i,String(s)]))}function Gd(t,e,n){let r=Js(String(t??""));return{file:r,width:Number(e)||0,height:Number(n)||0,ext:Ur(r)}}function or(t){return String(t??"").split(/\s+/).filter(Boolean)}function Ud(t){let e=typeof t==="number"?new Date(t*1000):typeof t==="string"?new Date(t):void 0;return e&&!Number.isNaN(e.getTime())?e.toISOString().slice(0,10):void 0}function H0(t,e){let n=Js(String(e.preview??""));if(!e.file||!n||!Number(t.id))return[];let r=Number(t.width??t.image_width)||0,i=Number(t.height??t.image_height)||0;return[{id:Number(t.id),width:r,height:i,file:e.file,preview:n,ext:e.ext,owner:String(e.owner??""),score:Number(t.score)||0,rating:String(t.rating??""),md5:String(e.md5??""),source:String(t.source??""),tags:or(e.tags),named:e.named,...Ud(t.created_at)?{posted:Ud(t.created_at)}:{},solo:e.solo,family:Number(t.parent_id)||(t.has_children===!0?Number(t.id):0),smaller:e.versions.filter((s)=>s.file&&s.width>0&&s.height>0&&s.width*s.height<r*i)}]}function rA(t){let e=nA(t);return Ys(t).flatMap((n)=>{let r=Js(String(n.file_url??"")),i=String(n.tags??""),s=(o)=>or(i).filter((a)=>e.get(a)===o);return H0(n,{preview:n.preview_url,file:r,ext:String(n.file_ext||Ur(r)).toLowerCase(),owner:n.author,md5:n.md5,tags:i,named:{artist:s("artist"),character:s("character"),copyright:s("copyright")},solo:void 0,versions:[Gd(n.jpeg_url,n.jpeg_width,n.jpeg_height),Gd(n.sample_url,n.sample_width,n.sample_height)]})})}function iA(t){return Ys(t).flatMap((e)=>{let n=Js(String(e.file_url??"")),r=String(e.tag_string??""),i=e.media_asset??{};return H0(e,{preview:i.variants?.find((s)=>s.type==="360x360")?.url??e.preview_file_url,file:n,ext:String(e.file_ext||Ur(n)).toLowerCase(),owner:"",md5:e.md5,tags:r,named:{artist:or(e.tag_string_artist),character:or(e.tag_string_character),copyright:or(e.tag_string_copyright)},solo:r.split(/\s+/).includes("solo"),versions:(i.variants??[]).map((s)=>Gd(s.url,s.width,s.height)).filter((s)=>s.ext==="jpg"||s.ext==="png").sort((s,o)=>o.width*o.height-s.width*s.height)})})}function F0(t){return t.toLowerCase().replace(/\s+/g,"_")}function sA(t){return(Array.isArray(t)?t:[]).map((e)=>F0(String(e)))}function oA(t){return String(t??"").replace(/[^0-9a-z]+/gi,".").replace(/^\.+|\.+$/g,"")||"zerochan"}function aA(t){let e=t.trim(),n=e?JSON.parse(e):{};return(Array.isArray(n.items)?n.items:n.id?[n]:[]).flatMap((i)=>{let s=Number(i.id);if(!s)return[];let o=sA(i.tags),a=Js(String(i.full??""));return[{id:s,width:Number(i.width)||0,height:Number(i.height)||0,file:a,ext:Ur(a),preview:`${N0}/${oA(i.tag??i.primary)}.600.${s}.jpg`,owner:"",score:0,rating:o.some((c)=>P0.nudity.has(c))?"q":"g",md5:String(i.md5??i.hash??""),source:String(i.source??""),tags:o,named:{artist:[],character:[],copyright:[]},solo:o.includes("solo"),family:0,smaller:[]}]})}var cA={mangaka:"artist",studio:"artist",character:"character",series:"copyright",game:"copyright"};function v0(t){return t.replace(/&(?:#(\d+)|amp|quot|apos|lt|gt);/g,(e,n)=>n?String.fromCharCode(Number(n)):{"&":"&",""":'"',"'":"'","<":"<",">":">"}[e]??e)}function uA(t){let e={artist:[],character:[],copyright:[]};for(let[,r,i]of t.matchAll(/<li class="([a-z]+)[^"]*"[^>]*\bdata-tag="([^"]*)"/g)){let s=cA[r],o=F0(v0(i));if(s&&!e[s].includes(o))e[s].push(o)}let n=Ud(/"datePublished":\s*"([^"]+)"/.exec(t)?.[1]);return{named:e,source:"",owner:v0(/\buploader = \{\s*name: '([^']*)'/.exec(t)?.[1]??""),...n?{posted:n}:{}}}function lA(t){return Number(/Zerochan has ([\d,]+) /.exec(t)?.[1]?.replace(/,/g,"")??0)}function fA(t){return Ys(t).flatMap((e)=>{let n=String(e.value??"");return n?[{value:n,count:Number(e.post_count)||0}]:[]})}function dA(t){return Ys(t).flatMap((e)=>{let n=String(e.name??"");return n?[{value:n,count:Number(e.count)||0}]:[]})}function hA(t){return Number(/count="(\d+)"/.exec(t)?.[1]??0)}function mA(t){let n=(t.trim()?JSON.parse(t):{}).counts?.posts;return n===null?Number.NaN:Number(n)||0}function pA(t){let e=new Map;for(let n of(t??"").split(/\s+/).filter(Boolean)){let r=n.indexOf("=");if(r>0)e.set(n.slice(0,r),n.slice(r+1).split(",").filter(Boolean))}return e}function gA(t){let e=new Map;for(let n of(t??"").split(/[\s,]+/).filter(Boolean)){let r=n.indexOf("="),i=n.slice(0,r);try{let s=new URL(n.slice(r+1));if(i&&s.protocol==="https:")e.set(i,s.origin)}catch{}}return e}function cu(t,e,n,r){let i=(t??"").split(/\s+/);if(r!==void 0&&i.includes(r))return[];let s=e.filter((o)=>i.includes(o));return s.length>0?s:[...n]}function Hi(t){return cu(t,qs,["safe"])}function Vs(t){return cu(t,Ti,Ti,"none")}function uu(t){return cu(t,Wd,[],"none")}function $a(t){let e=Z.map((n)=>n.name);return cu(t,e,e)}function zd(t,e,n){return{score:Number(t)||0,size:Number(e)||0,png:n==="on"}}function ka(t){return[...new Set((t??"").toLowerCase().split(/[\s,]+/).map((e)=>e.replace(/^-+/,"")).filter(Boolean))]}function Dd(t,e,n){return{safe:new Set(t),questionable:new Set(e),explicit:new Set(n)}}function qd(t){let e=QR.get(t.key),n=tA.get(t.key);return{...t,origin:e??t.origin,moved:e!==void 0&&e!==t.origin,cutouts:n??t.cutouts,vouched:t.vouched&&n===void 0}}function L0(t){return t.length<2?t.join(""):t.map((e)=>`~${e}`).join(" ")}function C0(t){return t>0?[`width:>=${t}`,`height:>=${t}`]:[]}function S0(t){let e=qd(t),n=(r)=>new URLSearchParams({api_version:"2",include_tags:"1",...r});return{...e,scored:!0,narrow:({score:r,size:i})=>[...r>0?[`score:>=${r}`]:[],...C0(i)],cutouts:L0(e.cutouts),ratings:Dd([ba.safe],[ba.questionable],[ba.explicit]),rate:(r)=>{let[i]=r;if(r.length===1&&i)return`rating:${ba[i]}`;let s=qs.filter((a)=>!r.includes(a)),[o]=s;return s.length===1&&o?`-rating:${ba[o]}`:""},best:"order:score",tagBudget:Number.POSITIVE_INFINITY,ors:!0,postsUrl:(r,i)=>`${e.origin}/post.json?${n({limit:String(Rn),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/post.xml?${new URLSearchParams({limit:"1",tags:r})}`,postUrl:(r)=>`${e.origin}/post.json?${n({tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/post/show/${r}`,parse:rA,count:hA,uploadedBy:(r)=>`user:${r}`}}function bA(t){let e=qd(t),n=Dd(["g"],["s","q"],["e"]);return{...e,scored:!0,narrow:({score:r,size:i,png:s})=>[...r>0?[`score:>=${r}`]:[],...C0(i),...s?["filetype:png"]:[]],cutouts:L0(e.cutouts),ratings:n,rate:(r)=>r.length===qs.length?"":`rating:${r.flatMap((i)=>[...n[i]]).join(",")}`,best:"order:score",tagBudget:2,ors:!0,postsUrl:(r,i)=>`${e.origin}/posts.json?${new URLSearchParams({limit:String(Rn),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/counts/posts.json?${new URLSearchParams({tags:r})}`,postUrl:(r)=>`${e.origin}/posts.json?${new URLSearchParams({limit:"1",tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/posts/${r}`,parse:iA,count:mA,uploadedBy:(r)=>`user:${r}`}}function Bd(t){return t.split(/\s+/).filter((e)=>e&&!/^(?:order|dimension):/.test(e)).map((e)=>e.split("_").map(encodeURIComponent).join("+")).join(",")}function E0(t){let e=t.split(/\s+/),n=e.find((r)=>r.startsWith("dimension:"))?.slice(10);return{s:e.includes("order:fav")?"fav":"id",...n?{d:n}:{}}}function wA(t){let e=qd(t);return{...e,scored:!1,narrow:({size:n})=>n>=1800?["dimension:huge"]:n>0?["dimension:large"]:[],cutouts:e.cutouts[0]??"",ratings:Dd(["g"],["q"],["e"]),rate:()=>"",best:"order:fav",tagBudget:3,ors:!1,missing:404,postsUrl:(n,r)=>`${e.origin}/${Bd(n)}?${new URLSearchParams({json:"",l:String(Rn),p:String(r+1),...E0(n)})}`,countUrl:(n)=>`${e.origin}/${Bd(n)}?${new URLSearchParams({xml:"",l:"1"})}`,postUrl:(n)=>`${e.origin}/${n}?json=`,pageUrl:(n)=>`${e.origin}/${n}`,parse:aA,count:lA,credits:uA,counts:(n)=>Bd(n).split(",").length===1&&!("d"in E0(n)),guesses:(n)=>(n.tags.includes("transparent_background")?["png","jpg"]:["jpg","png"]).map((r)=>n.preview.replace(N0,ZR).replace(/\.600\.(\d+)\.jpg$/,`.full.$1.${r}`))}}function $A(t){let e=M0(`https://${t}`);return Z.find((n)=>M0(n.origin)===e)}function Jd(t){return t.split(/\s+/).filter((e)=>e&&!zR.test(e)).length}function lu(t,e){let n=t.trim();if(/^\d+$/.test(n))return{site:e,id:Number(n)};let r=/^([\w.]+):(\d+)$/.exec(n);if(r){let a=Z.find((c)=>c.key===r[1]||c.name===r[1]);return a&&{site:a,id:Number(r[2])}}let i;try{i=new URL(n)}catch{return}let s=$A(i.host),o=Number(i.searchParams.get("id")??i.pathname.split("/").findLast(Boolean));return s&&o>0?{site:s,id:o}:void 0}var Z=[bA({key:"danbooru",name:"danbooru",origin:"https://shima.donmai.us",cutouts:["transparent_background"],vouched:!1,ansi:2}),S0({key:"konachan",name:"konachan",origin:"https://konachan.net",cutouts:["transparent","vector"],vouched:!1,ansi:6}),S0({key:"yande",name:"yande.re",origin:"https://yande.re",cutouts:["transparent_png"],vouched:!0,ansi:5}),wA({key:"zerochan",name:"zerochan",origin:"https://www.zerochan.net",cutouts:["transparent_background"],vouched:!1,ansi:3})],Pt=Z.find((t)=>t.key==="danbooru"),Wr=134217728;function ee(t,e){let n=Z.indexOf(t);return(n===-1?Z.length:n)*Wr+e}function M0(t){let e;try{e=new URL(t).hostname}catch{return""}return e.split(".").slice(-2).join(".")}function Kr(t,e,n=e){return e.mirror&&n===e?{site:Pt,url:e.mirror.file}:{site:t,url:n.file}}function fu(t,e){return e.mirror?{site:Pt,url:e.mirror.preview}:{site:t,url:e.preview}}function du(t,e=Ti){return t.tags.filter((n)=>e.some((r)=>P0[r].has(n)))}function j0(t,e){return t.tags.filter((n)=>e.some((r)=>KR[r].has(n)))}function hu(t,e,n=["safe"]){return n.some((r)=>t.ratings[r].has(e.rating))}function _0(t,e){return t.rate(["safe"])===""?void 0:qs.find((n)=>t.ratings[n].has(e.rating))}function un(t){return[t,...t.smaller].find((e)=>e.width*e.height<=fe)}function B0(t){let e=new Map;for(let[n,r]of[...t].sort(([i],[s])=>i<s?-1:1)){if(r==="")continue;e.set(r,[...e.get(r)??[],n])}return e}function Nn(){return wa(process.env.XDG_CACHE_HOME??wa(GR(),".cache"),"ttheme")}function ln(t){return wa(Nn(),t.key)}function G0(t=WR,e=Nn()){let n=[],r=0;for(let i of y0(e))for(let s of XR){let o=wa(e,i,s);for(let a of y0(o)){let c=wa(o,a);try{let{size:u,mtimeMs:f}=_R(c);n.push({path:c,size:u,at:f}),r+=u}catch{}}}n.sort((i,s)=>i.at-s.at);for(let i of n){if(r<=t)return;try{jR(i.path,{force:!0}),r-=i.size}catch{}}}function kA(t,e){if(t!==null&&/^\s*\d+\s*$/.test(t))return Number(t)*1000;let n=t===null?Number.NaN:Date.parse(t);return Number.isNaN(n)?A0:Math.max(0,n-e)}function An(t){return T0.get(t.key)??0}function yA(t){for(let e=t;e instanceof Error;e=e.cause)if(e.code==="ECONNRESET")return!0;return!1}function vA(t){return(t.headers.get("server")??"").startsWith("cloudflare")&&t.headers.get("cf-mitigated")==="challenge"}function SA(t,e){let n=new URL(e,t);if(!n.search)n.search=new URL(t).search;return n.href}async function ar(t,e,n,r={},i=DR){let s=e;for(let o=1,a=0;;o++){let c=An(t)-Date.now();if(c>0)await UR(c,void 0,{signal:n});let u;try{u=await fetch(s,{headers:{"User-Agent":Kd,Referer:`${t.origin}/`,...r},redirect:"manual",signal:i?AbortSignal.any([n,AbortSignal.timeout(i)]):n})}catch(l){if(o<k0&&!n.aborted&&yA(l))continue;throw l}let f=u.headers.get("location");if(f&&u.status>=300&&u.status<400&&a<VR){await u.body?.cancel(),s=SA(s,f),a++,o--;continue}if(u.status===429&&o<k0){await u.body?.cancel();let l=kA(u.headers.get("retry-after"),Date.now());if(l>A0)throw Error(`${t.name} asks to wait ${Math.ceil(l/1000)}s`);T0.set(t.key,Math.max(An(t),Date.now()+l));continue}if(!u.ok)throw await u.body?.cancel(),Object.assign(Error(vA(u)?`${t.name} is behind a Cloudflare challenge`:`${t.name} answered ${u.status}`),{status:u.status});return u}}async function mu(t,e,n){try{return await(await ar(t,e,n)).text()}catch(r){if(t.missing!==void 0&&r.status===t.missing)return"";throw r}}async function U0(t,e,n,r){return t.parse(await mu(t,t.postsUrl(e,n),r))}async function Yd(t,e,n){return t.count(await mu(t,t.countUrl(e),n))}async function Fi(t,e,n){let[r]=t.parse(await mu(t,t.postUrl(e),n));return r}async function ya(t,e,n){return t.credits?.(await mu(t,t.pageUrl(e),n))}var EA=/^https?:\/\/(?:i\.pximg\.net|i\d*\.pixiv\.net|img\d*\.pixiv\.net)\/\S*\/(\d+)(?:_p\d+)?(?:_\w+)?\.\w+(?:[?#]\S*)?$/i,MA=/^https?:\/\/(?:www\.)?pixiv\.net\/member_illust\.php\?\S*\billust_id=(\d+)/i;function Li(t){let e=EA.exec(t)?.[1]??MA.exec(t)?.[1];return e?`https://www.pixiv.net/artworks/${e}`:t}function va(t,e){return t.credits!==void 0&&e.named.artist.length===0}function Zs(t,e){for(let n of eA){let r=e.named?.[n]??[];if(t.named[n].length===0&&r.length>0)t.named[n]=r}if(t.source||=e.source??"",t.owner||=e.owner??"",!t.posted&&e.posted)t.posted=e.posted}function xA(t){let e=new URLSearchParams({limit:String(2*Rn),only:"md5,tag_string,tag_string_artist,tag_string_character,tag_string_copyright,source,file_url",tags:`md5:${t.join(",")}`});return`${Pt.origin}/posts.json?${e}`}function OA(t){return new Map(Ys(t).flatMap((e)=>{let n=String(e.md5??"");return n?[[n,{tags:or(e.tag_string),named:{artist:or(e.tag_string_artist),character:or(e.tag_string_character),copyright:or(e.tag_string_copyright)},source:String(e.source??""),file:Js(String(e.file_url??""))}]]:[]}))}function Sa(t,e){for(let n of t){let r=e.get(n.md5);if(!r)continue;if(n.tags=[...new Set([...n.tags,...r.tags])],Zs(n,r),n.solo=r.tags.includes("solo"),r.file.includes("/original/")){if(n.mirror={file:r.file,preview:r.file.replace("/original/","/360x360/").replace(/\.[a-z0-9]+$/i,".jpg")},!n.file)n.file=r.file,n.ext=Ur(r.file)}}}async function Ea(t,e){let n=new Map;if(An(Pt)>Date.now())return n;for(let r=0;r<t.length;r+=Rn){let i=await(await ar(Pt,xA(t.slice(r,r+Rn)),e,{},R0)).text();for(let[s,o]of OA(i))n.set(s,o)}return n}function PA(t){let e=new URLSearchParams([...t.map((n)=>["search[name_array][]",n]),["only","name,is_deleted,urls"],["limit",String(t.length)]]);return`${Pt.origin}/artists.json?${e}`}function IA(t){return new Map(Ys(t).flatMap((e)=>{let n=String(e.name??"");if(!n||e.is_deleted===!0)return[];let r=Array.isArray(e.urls)?e.urls:[];return[[n,r.flatMap((i)=>i.is_active===!1||!i.url?[]:[String(i.url)])]]}))}async function W0(t,e){let n=new Map;if(An(Pt)>Date.now())return n;for(let r=0;r<t.length;r+=Rn){let i=await(await ar(Pt,PA(t.slice(r,r+Rn)),e,{},R0)).text();for(let[s,o]of IA(i))n.set(s,o)}return n}async function Ma(t,e,n){if(e.file||!t.guesses)return;for(let r of t.guesses(e))try{let i=await ar(t,r,n,{Range:`bytes=0-${I0}`}),s=In(new Uint8Array(await i.arrayBuffer()));return e.file=r,e.ext=Ur(r),s}catch(i){if(n.aborted||i.status!==404)throw i}throw Error(`${t.name} keeps no png or jpg of ${e.id}`)}async function K0(t,e){if(An(Pt)<=Date.now())try{let i=new URLSearchParams({"search[query]":t,"search[type]":"tag_query",limit:String($0)}),s=`${Pt.origin}/autocomplete.json?${i}`;return fA(await(await ar(Pt,s,e,{},w0)).text())}catch(i){if(e.aborted)throw i}let n=Z.find((i)=>i.key==="yande"),r=new URLSearchParams({name:t,order:"count",limit:String($0)});return dA(await(await ar(n,`${n.origin}/tag.json?${r}`,e,{},w0)).text())}function RA(t){try{return(JSON.parse(t).related_tags??[]).flatMap(({tag:n})=>n?.name?[{value:n.name,count:Number(n.post_count)||0}]:[])}catch{return[]}}async function z0(t,e){if(An(Pt)>Date.now())return[];let n=new URLSearchParams({"search[query]":t,"search[category]":"character",limit:String(qR)});return RA(await(await ar(Pt,`${Pt.origin}/related_tag.json?${n}`,e,{},JR)).text())}function D0(t,e){return e.slice(0,t.ors?t.tagBudget:1)}async function q0(t,e,n){let r=await ar(t,e,n,{Range:`bytes=0-${I0}`});return In(new Uint8Array(await r.arrayBuffer()))}async function pu(t,e,n,r){let i=await ar(t,e,n,{},0),s=Number(i.headers.get("content-length"))||0,o=i.body?.getReader();if(!o)return new Uint8Array(await i.arrayBuffer());let a=[],c=0;for(;;){let{done:l,value:d}=await o.read();if(l)break;a.push(d),c+=d.length,r?.(c,s)}let u=new Uint8Array(c),f=0;for(let l of a)u.set(l,f),f+=l.length;return u}var AA=["pixiv","x","bsky","fanbox","skeb","patreon","fantia"],J0=[["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?users\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/users/${t}`],["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/member\.php\?id=(\d+)$/i,(t)=>`https://www.pixiv.net/users/${t}`],["x",/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(?!(?:i|intent|home|search|explore|hashtag|share|settings)\/?$)(\w{1,15})\/?$/i,(t)=>`https://x.com/${t}`],["bsky",/^https?:\/\/bsky\.app\/profile\/(?!did:)([\w.-]+)\/?$/i,(t)=>`https://bsky.app/profile/${t}`],["fanbox",/^https?:\/\/([\w-]+)\.fanbox\.cc\/?$/i,(t)=>`https://${t}.fanbox.cc`],["fanbox",/^https?:\/\/(?:www\.)?pixiv\.net\/fanbox\/creator\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/fanbox/creator/${t}`],["skeb",/^https?:\/\/skeb\.jp\/@([\w-]+)\/?$/i,(t)=>`https://skeb.jp/@${t}`],["patreon",/^https?:\/\/(?:www\.)?patreon\.com\/(?:c\/)?(?!(?:user|posts|join|home|login|search)\/?$)([\w-]+)\/?$/i,(t)=>`https://www.patreon.com/${t}`],["fantia",/^https?:\/\/fantia\.jp\/fanclubs\/(\d+)\/?$/i,(t)=>`https://fantia.jp/fanclubs/${t}`]],NA=[[/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?artworks\/(\d+)/i,(t)=>`pixiv ${t[1]}`],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(\w{1,15})\/status\/\d+/i,(t)=>`x ${t[1]}`],[/^https?:\/\/bsky\.app\/profile\/([\w.-]+)\/post\//i,(t)=>`bsky ${t[1]}`],[/^https?:\/\/([\w-]+)\.fanbox\.cc\/posts\/\d+/i,(t)=>`fanbox ${t[1]}`]],TA=[[/^https?:\/\/(?:www\.)?pixiv\.net\//i,"pixiv"],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\//i,"x"],[/^https?:\/\/bsky\.app\//i,"bsky"]],HA=["x","pixiv","bsky"],FA={"shima.donmai.us":"danbooru.donmai.us"},LA=/^https?:\/\/[^\s\p{Cc}]+$/u;function Y0(t){return LA.test(t)}function CA(t){return J0.find(([,e])=>e.test(t))?.[0]}function jA(t){return AA.flatMap((e)=>{for(let[,n,r]of J0.filter(([i])=>i===e))for(let i of t){let s=n.exec(i)?.[1];if(s)return[r(s)]}return[]})}function xa(t){return(t??[]).flatMap((e)=>{let n=CA(e);return n?[{kind:n,url:e}]:[]})}function _A(t){for(let[e,n]of NA){let r=e.exec(t);if(r)return n(r)}try{return new URL(t).hostname.replace(/^www\./,"")}catch{return t}}function BA(t){try{let e=new URL(t),n=FA[e.hostname];if(n)e.hostname=n;return e.href}catch{return t}}function GA(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function Vd(t){let e=t.source??"";return Y0(e)?{label:_A(e),url:e}:void 0}function UA(t){let e=(t.from??"").split(" "),n=e[2]??"";return Y0(n)?{label:e.slice(0,2).join(" "),url:n}:void 0}function WA(t){return TA.find(([e])=>e.test(t))?.[1]}function KA(t,e){let n=e?WA(e):void 0,r=xa(t),i=HA.find((s)=>s!==n&&r.some((o)=>o.kind===s));return r.find((s)=>s.kind===i)?.url}function V0(t){let e=Vd(t)?.url??UA(t)?.url,n=t.artist??[];if(!e&&n.length===0)return;let r=n.length>0?`Background art by ${n.map((i)=>{let s=KA(t.profiles?.[i],e);return s?`${i} (${GA(s)})`:i}).join(", ")}`:"Background art (artist unknown)";return e?`${r} · ${BA(e)}`:r}async function gu(t,e){let n=await W0(t,e);return new Map(t.map((r)=>[r,jA(n.get(r)??[])]))}import{spawn as zA}from"node:child_process";var DA=30000,qA=3,JA=97,Zd={from:0.45,to:0.75},bu=2,Oa=1,YA=Uint8Array.from({length:256},(t,e)=>Math.round(255*Math.min(1,Math.max(0,(e/255-Zd.from)/(Zd.to-Zd.from))))),VA=`ObjC.import('Vision')
|
|
2
|
+
import{createRequire as rI}from"node:module";var VP=Object.create;var{getPrototypeOf:ZP,defineProperty:Xb,getOwnPropertyNames:XP}=Object;var QP=Object.prototype.hasOwnProperty;function tI(t){return this[t]}var eI,nI,ld=(t,e,n)=>{var r=t!=null&&typeof t==="object";if(r){var i=e?eI??=new WeakMap:nI??=new WeakMap,s=i.get(t);if(s)return s}n=t!=null?VP(ZP(t)):{};let o=e||!t||!t.__esModule?Xb(n,"default",{value:t,enumerable:!0}):n;for(let a of XP(t))if(!QP.call(o,a))Xb(o,a,{get:tI.bind(t,a),enumerable:!0});if(r)i.set(t,o);return o};var xt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Xt=rI(import.meta.url);var gd=xt((EB,hw)=>{var pI=Xt("util"),dw=Xt("stream"),cn=hw.exports=function(){dw.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};pI.inherits(cn,dw);cn.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e}),process.nextTick(function(){if(this._process(),this._paused&&this._reads&&this._reads.length>0)this._paused=!1,this.emit("drain")}.bind(this))};cn.prototype.write=function(t,e){if(!this.writable)return this.emit("error",Error("Stream not writable")),!1;let n;if(Buffer.isBuffer(t))n=t;else n=Buffer.from(t,e||this._encoding);if(this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0)this._paused=!0;return this.writable&&!this._paused};cn.prototype.end=function(t,e){if(t)this.write(t,e);if(this.writable=!1,!this._buffers)return;if(this._buffers.length===0)this._end();else this._buffers.push(null),this._process()};cn.prototype.destroySoon=cn.prototype.end;cn.prototype._end=function(){if(this._reads.length>0)this.emit("error",Error("Unexpected end of input"));this.destroy()};cn.prototype.destroy=function(){if(!this._buffers)return;this.writable=!1,this._reads=null,this._buffers=null,this.emit("close")};cn.prototype._processReadAllowingLess=function(t){this._reads.shift();let e=this._buffers[0];if(e.length>t.length)this._buffered-=t.length,this._buffers[0]=e.slice(t.length),t.func.call(this,e.slice(0,t.length));else this._buffered-=e.length,this._buffers.shift(),t.func.call(this,e)};cn.prototype._processRead=function(t){this._reads.shift();let e=0,n=0,r=Buffer.alloc(t.length);while(e<t.length){let i=this._buffers[n++],s=Math.min(i.length,t.length-e);if(i.copy(r,e,0,s),e+=s,s!==i.length)this._buffers[--n]=i.slice(s)}if(n>0)this._buffers.splice(0,n);this._buffered-=t.length,t.func.call(this,r)};cn.prototype._process=function(){try{while(this._buffered>0&&this._reads&&this._reads.length>0){let t=this._reads[0];if(t.allowLess)this._processReadAllowingLess(t);else if(this._buffered>=t.length)this._processRead(t);else break}if(this._buffers&&!this.writable)this._end()}catch(t){this.emit("error",t)}}});var bd=xt((gI)=>{var Hr=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];gI.getImagePasses=function(t,e){let n=[],r=t%8,i=e%8,s=(t-r)/8,o=(e-i)/8;for(let a=0;a<Hr.length;a++){let c=Hr[a],u=s*c.x.length,f=o*c.y.length;for(let l=0;l<c.x.length;l++)if(c.x[l]<r)u++;else break;for(let l=0;l<c.y.length;l++)if(c.y[l]<i)f++;else break;if(u>0&&f>0)n.push({width:u,height:f,index:a})}return n};gI.getInterlaceIterator=function(t){return function(e,n,r){let i=e%Hr[r].x.length,s=(e-i)/Hr[r].x.length*8+Hr[r].x[i],o=n%Hr[r].y.length,a=(n-o)/Hr[r].y.length*8+Hr[r].y[o];return s*4+a*t*4}}});var wd=xt((xB,mw)=>{mw.exports=function(e,n,r){let i=e+n-r,s=Math.abs(i-e),o=Math.abs(i-n),a=Math.abs(i-r);if(s<=o&&s<=a)return e;if(o<=a)return n;return r}});var $d=xt((OB,gw)=>{var $I=bd(),kI=wd();function pw(t,e,n){let r=t*e;if(n!==8)r=Math.ceil(r/(8/n));return r}var js=gw.exports=function(t,e){let{width:n,height:r,interlace:i,bpp:s,depth:o}=t;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let a=$I.getImagePasses(n,r);for(let c=0;c<a.length;c++)this._images.push({byteWidth:pw(a[c].width,s,o),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:pw(n,s,o),height:r,lineIndex:0});if(o===8)this._xComparison=s;else if(o===16)this._xComparison=s*2;else this._xComparison=1};js.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};js.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,i=r-1;for(let s=0;s<n;s++){let o=t[1+s],a=s>i?e[s-r]:0;e[s]=o+a}};js.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let i=0;i<n;i++){let s=t[1+i],o=r?r[i]:0;e[i]=s+o}};js.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,i=r-1,s=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],c=s?s[o]:0,u=o>i?e[o-r]:0,f=Math.floor((u+c)/2);e[o]=a+f}};js.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,i=r-1,s=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],c=s?s[o]:0,u=o>i?e[o-r]:0,f=o>i&&s?s[o-r]:0,l=kI(u,c,f);e[o]=a+l}};js.prototype._reverseFilterLine=function(t){let e=t[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(e===0)n=t.slice(1,i+1);else switch(n=Buffer.alloc(i),e){case 1:this._unFilterType1(t,n,i);break;case 2:this._unFilterType2(t,n,i);break;case 3:this._unFilterType3(t,n,i);break;case 4:this._unFilterType4(t,n,i);break;default:throw Error("Unrecognised filter type - "+e)}if(this.write(n),r.lineIndex++,r.lineIndex>=r.height)this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex];else this._lastLine=n;if(r)this.read(r.byteWidth+1,this._reverseFilterLine.bind(this));else this._lastLine=null,this.complete()}});var $w=xt((PB,ww)=>{var yI=Xt("util"),bw=gd(),vI=$d(),SI=ww.exports=function(t){bw.call(this);let e=[],n=this;this._filter=new vI(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};yI.inherits(SI,bw)});var _s=xt((IB,kw)=>{kw.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var vd=xt((RB,yw)=>{var kd=[];(function(){for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)if(e&1)e=3988292384^e>>>1;else e=e>>>1;kd[t]=e}})();var yd=yw.exports=function(){this._crc=-1};yd.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=kd[(this._crc^t[e])&255]^this._crc>>>8;return!0};yd.prototype.crc32=function(){return this._crc^-1};yd.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=kd[(e^t[n])&255]^e>>>8;return e^-1}});var Sd=xt((AB,vw)=>{var jt=_s(),EI=vd(),Gt=vw.exports=function(t,e){this._options=t,t.checkCRC=t.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[jt.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[jt.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[jt.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[jt.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[jt.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[jt.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};Gt.prototype.start=function(){this.read(jt.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Gt.prototype._parseSignature=function(t){let e=jt.PNG_SIGNATURE;for(let n=0;n<e.length;n++)if(t[n]!==e[n]){this.error(Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};Gt.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let s=4;s<8;s++)r+=String.fromCharCode(t[s]);let i=Boolean(t[4]&32);if(!this._hasIHDR&&n!==jt.TYPE_IHDR){this.error(Error("Expected IHDR on beggining"));return}if(this._crc=new EI,this._crc.write(Buffer.from(r)),this._chunks[n])return this._chunks[n](e);if(!i){this.error(Error("Unsupported critical chunk type "+r));return}this.read(e+4,this._skipChunk.bind(this))};Gt.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Gt.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Gt.prototype._parseChunkEnd=function(t){let e=t.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==e){this.error(Error("Crc error - "+e+" - "+n));return}if(!this._hasIEND)this.read(8,this._parseChunkBegin.bind(this))};Gt.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};Gt.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],i=t[9],s=t[10],o=t[11],a=t[12];if(r!==8&&r!==4&&r!==2&&r!==1&&r!==16){this.error(Error("Unsupported bit depth "+r));return}if(!(i in jt.COLORTYPE_TO_BPP_MAP)){this.error(Error("Unsupported color type"));return}if(s!==0){this.error(Error("Unsupported compression method"));return}if(o!==0){this.error(Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(Error("Unsupported interlace method"));return}this._colorType=i;let c=jt.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:Boolean(a),palette:Boolean(i&jt.COLORTYPE_PALETTE),color:Boolean(i&jt.COLORTYPE_COLOR),alpha:Boolean(i&jt.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};Gt.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};Gt.prototype._parsePLTE=function(t){this._crc.write(t);let e=Math.floor(t.length/3);for(let n=0;n<e;n++)this._palette.push([t[n*3],t[n*3+1],t[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};Gt.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};Gt.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===jt.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error("Transparency chunk must be after palette"));return}if(t.length>this._palette.length){this.error(Error("More transparent colors than palette size"));return}for(let e=0;e<t.length;e++)this._palette[e][3]=t[e];this.palette(this._palette)}if(this._colorType===jt.COLORTYPE_GRAYSCALE)this.transColor([t.readUInt16BE(0)]);if(this._colorType===jt.COLORTYPE_COLOR)this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]);this._handleChunkEnd()};Gt.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};Gt.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/jt.GAMMA_DIVISION),this._handleChunkEnd()};Gt.prototype._handleIDAT=function(t){if(!this._emittedHeadersFinished)this._emittedHeadersFinished=!0,this.headersFinished();this.read(-t,this._parseIDAT.bind(this,t))};Gt.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===jt.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error("Expected palette not found");this.inflateData(e);let n=t-e.length;if(n>0)this._handleIDAT(n);else this._handleChunkEnd()};Gt.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};Gt.prototype._parseIEND=function(t){if(this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished)this.finished()}});var Ed=xt((RI)=>{var Sw=bd(),MI=[function(){},function(t,e,n,r){if(r===e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=255},function(t,e,n,r){if(r+1>=e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=e[r+1]},function(t,e,n,r){if(r+2>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=255},function(t,e,n,r){if(r+3>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=e[r+3]}],xI=[function(){},function(t,e,n,r){let i=e[0];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=r},function(t,e,n){let r=e[0];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=e[1]},function(t,e,n,r){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=r},function(t,e,n){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3]}];function OI(t,e){let n=[],r=0;function i(){if(r===t.length)throw Error("Ran out of data");let s=t[r];r++;let o,a,c,u,f,l,d,h;switch(e){default:throw Error("unrecognised depth");case 16:d=t[r],r++,n.push((s<<8)+d);break;case 4:d=s&15,h=s>>4,n.push(h,d);break;case 2:f=s&3,l=s>>2&3,d=s>>4&3,h=s>>6&3,n.push(h,d,l,f);break;case 1:o=s&1,a=s>>1&1,c=s>>2&1,u=s>>3&1,f=s>>4&1,l=s>>5&1,d=s>>6&1,h=s>>7&1,n.push(h,d,l,f,u,c,a,o);break}}return{get:function(s){while(n.length<s)i();let o=n.slice(0,s);return n=n.slice(s),o},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw Error("extra data found")}}}function PI(t,e,n,r,i,s){let{width:o,height:a,index:c}=t;for(let u=0;u<a;u++)for(let f=0;f<o;f++){let l=n(f,u,c);MI[r](e,i,l,s),s+=r}return s}function II(t,e,n,r,i,s){let{width:o,height:a,index:c}=t;for(let u=0;u<a;u++){for(let f=0;f<o;f++){let l=i.get(r),d=n(f,u,c);xI[r](e,l,d,s)}i.resetAfterLine()}}RI.dataToBitMap=function(t,e){let{width:n,height:r,depth:i,bpp:s,interlace:o}=e,a;if(i!==8)a=OI(t,i);let c;if(i<=8)c=Buffer.alloc(n*r*4);else c=new Uint16Array(n*r*4);let u=Math.pow(2,i)-1,f=0,l,d;if(o)l=Sw.getImagePasses(n,r),d=Sw.getInterlaceIterator(n,r);else{let h=0;d=function(){let m=h;return h+=4,m},l=[{width:n,height:r}]}for(let h=0;h<l.length;h++)if(i===8)f=PI(l[h],c,d,s,t,f);else II(l[h],c,d,s,a,u);if(i===8){if(f!==t.length)throw Error("extra data found")}else a.end();return c}});var Md=xt((TB,Ew)=>{function NI(t,e,n,r,i){let s=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let c=i[t[s]];if(!c)throw Error("index "+t[s]+" not in palette");for(let u=0;u<4;u++)e[s+u]=c[u];s+=4}}function TI(t,e,n,r,i){let s=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let c=!1;if(i.length===1){if(i[0]===t[s])c=!0}else if(i[0]===t[s]&&i[1]===t[s+1]&&i[2]===t[s+2])c=!0;if(c)for(let u=0;u<4;u++)e[s+u]=0;s+=4}}function HI(t,e,n,r,i){let s=255,o=Math.pow(2,i)-1,a=0;for(let c=0;c<r;c++)for(let u=0;u<n;u++){for(let f=0;f<4;f++)e[a+f]=Math.floor(t[a+f]*s/o+0.5);a+=4}}Ew.exports=function(t,e,n=!1){let{depth:r,width:i,height:s,colorType:o,transColor:a,palette:c}=e,u=t;if(o===3)NI(t,u,i,s,c);else{if(a)TI(t,u,i,s,a);if(r!==8&&!n){if(r===16)u=Buffer.alloc(i*s*4);HI(t,u,i,s,r)}}return u}});var Ow=xt((HB,xw)=>{var FI=Xt("util"),xd=Xt("zlib"),Mw=gd(),LI=$w(),CI=Sd(),jI=Ed(),_I=Md(),Pn=xw.exports=function(t){Mw.call(this),this._parser=new CI(t,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=t,this.writable=!0,this._parser.start()};FI.inherits(Pn,Mw);Pn.prototype._handleError=function(t){if(this.emit("error",t),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy)this._inflate.destroy();if(this._filter)this._filter.destroy(),this._filter.on("error",function(){});this.errord=!0};Pn.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=xd.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let n=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,r=Math.max(n,xd.Z_MIN_CHUNK);this._inflate=xd.createInflate({chunkSize:r});let i=n,s=this.emit.bind(this,"error");this._inflate.on("error",function(a){if(!i)return;s(a)}),this._filter.on("complete",this._complete.bind(this));let o=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){if(!i)return;if(a.length>i)a=a.slice(0,i);i-=a.length,o(a)}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};Pn.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new LI(this._bitmapInfo)};Pn.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};Pn.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};Pn.prototype._simpleTransparency=function(){this._metaData.alpha=!0};Pn.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};Pn.prototype._finished=function(){if(this.errord)return;if(!this._inflate)this.emit("error","No Inflate block");else this._inflate.end()};Pn.prototype._complete=function(t){if(this.errord)return;let e;try{let n=jI.dataToBitMap(t,this._bitmapInfo);e=_I(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Iw=xt((FB,Pw)=>{var qe=_s();Pw.exports=function(t,e,n,r){let i=[qe.COLORTYPE_COLOR_ALPHA,qe.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let m=function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256}();if(r.bitDepth===8||r.bitDepth===16&&m)return t}let s=r.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=qe.COLORTYPE_TO_BPP_MAP[r.inputColorType];if(a===4&&!r.inputHasAlpha)a=3;let c=qe.COLORTYPE_TO_BPP_MAP[r.colorType];if(r.bitDepth===16)o=65535,c*=2;let u=Buffer.alloc(e*n*c),f=0,l=0,d=r.bgColor||{};if(d.red===void 0)d.red=o;if(d.green===void 0)d.green=o;if(d.blue===void 0)d.blue=o;function h(){let m,p,b,$=o;switch(r.inputColorType){case qe.COLORTYPE_COLOR_ALPHA:$=s[f+3],m=s[f],p=s[f+1],b=s[f+2];break;case qe.COLORTYPE_COLOR:m=s[f],p=s[f+1],b=s[f+2];break;case qe.COLORTYPE_ALPHA:$=s[f+1],m=s[f],p=m,b=m;break;case qe.COLORTYPE_GRAYSCALE:m=s[f],p=m,b=m;break;default:throw Error("input color type:"+r.inputColorType+" is not supported at present")}if(r.inputHasAlpha){if(!i)$/=o,m=Math.min(Math.max(Math.round((1-$)*d.red+$*m),0),o),p=Math.min(Math.max(Math.round((1-$)*d.green+$*p),0),o),b=Math.min(Math.max(Math.round((1-$)*d.blue+$*b),0),o)}return{red:m,green:p,blue:b,alpha:$}}for(let m=0;m<n;m++)for(let p=0;p<e;p++){let b=h(s,f);switch(r.colorType){case qe.COLORTYPE_COLOR_ALPHA:case qe.COLORTYPE_COLOR:if(r.bitDepth===8){if(u[l]=b.red,u[l+1]=b.green,u[l+2]=b.blue,i)u[l+3]=b.alpha}else if(u.writeUInt16BE(b.red,l),u.writeUInt16BE(b.green,l+2),u.writeUInt16BE(b.blue,l+4),i)u.writeUInt16BE(b.alpha,l+6);break;case qe.COLORTYPE_ALPHA:case qe.COLORTYPE_GRAYSCALE:{let $=(b.red+b.green+b.blue)/3;if(r.bitDepth===8){if(u[l]=$,i)u[l+1]=b.alpha}else if(u.writeUInt16BE($,l),i)u.writeUInt16BE(b.alpha,l+2);break}default:throw Error("unrecognised color Type "+r.colorType)}f+=a,l+=c}return u}});var Nw=xt((LB,Aw)=>{var Rw=wd();function BI(t,e,n,r,i){for(let s=0;s<n;s++)r[i+s]=t[e+s]}function GI(t,e,n){let r=0,i=e+n;for(let s=e;s<i;s++)r+=Math.abs(t[s]);return r}function UI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=t[e+o]-a;r[i+o]=c}}function WI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=t[e+s]-o;i+=Math.abs(a)}return i}function KI(t,e,n,r,i){for(let s=0;s<n;s++){let o=e>0?t[e+s-n]:0,a=t[e+s]-o;r[i+s]=a}}function zI(t,e,n){let r=0,i=e+n;for(let s=e;s<i;s++){let o=e>0?t[s-n]:0,a=t[s]-o;r+=Math.abs(a)}return r}function DI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=e>0?t[e+o-n]:0,u=t[e+o]-(a+c>>1);r[i+o]=u}}function qI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=e>0?t[e+s-n]:0,c=t[e+s]-(o+a>>1);i+=Math.abs(c)}return i}function JI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=e>0?t[e+o-n]:0,u=e>0&&o>=s?t[e+o-(n+s)]:0,f=t[e+o]-Rw(a,c,u);r[i+o]=f}}function YI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=e>0?t[e+s-n]:0,c=e>0&&s>=r?t[e+s-(n+r)]:0,u=t[e+s]-Rw(o,a,c);i+=Math.abs(u)}return i}var VI={0:BI,1:UI,2:KI,3:DI,4:JI},ZI={0:GI,1:WI,2:zI,3:qI,4:YI};Aw.exports=function(t,e,n,r,i){let s;if(!("filterType"in r)||r.filterType===-1)s=[0,1,2,3,4];else if(typeof r.filterType==="number")s=[r.filterType];else throw Error("unrecognised filter types");if(r.bitDepth===16)i*=2;let o=e*i,a=0,c=0,u=Buffer.alloc((o+1)*n),f=s[0];for(let l=0;l<n;l++){if(s.length>1){let d=1/0;for(let h=0;h<s.length;h++){let m=ZI[s[h]](t,c,o,i);if(m<d)f=s[h],d=m}}u[a]=f,a++,VI[f](t,c,o,u,a,i),a+=o,c+=o}return u}});var Od=xt((CB,Tw)=>{var Qt=_s(),XI=vd(),QI=Iw(),tR=Nw(),eR=Xt("zlib"),Fr=Tw.exports=function(t){if(this._options=t,t.deflateChunkSize=t.deflateChunkSize||32768,t.deflateLevel=t.deflateLevel!=null?t.deflateLevel:9,t.deflateStrategy=t.deflateStrategy!=null?t.deflateStrategy:3,t.inputHasAlpha=t.inputHasAlpha!=null?t.inputHasAlpha:!0,t.deflateFactory=t.deflateFactory||eR.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType==="number"?t.colorType:Qt.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType==="number"?t.inputColorType:Qt.COLORTYPE_COLOR_ALPHA,[Qt.COLORTYPE_GRAYSCALE,Qt.COLORTYPE_COLOR,Qt.COLORTYPE_COLOR_ALPHA,Qt.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw Error("option color type:"+t.colorType+" is not supported at present");if([Qt.COLORTYPE_GRAYSCALE,Qt.COLORTYPE_COLOR,Qt.COLORTYPE_COLOR_ALPHA,Qt.COLORTYPE_ALPHA].indexOf(t.inputColorType)===-1)throw Error("option input color type:"+t.inputColorType+" is not supported at present");if(t.bitDepth!==8&&t.bitDepth!==16)throw Error("option bit depth:"+t.bitDepth+" is not supported at present")};Fr.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Fr.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Fr.prototype.filterData=function(t,e,n){let r=QI(t,e,n,this._options),i=Qt.COLORTYPE_TO_BPP_MAP[this._options.colorType];return tR(r,e,n,this._options,i)};Fr.prototype._packChunk=function(t,e){let n=e?e.length:0,r=Buffer.alloc(n+12);if(r.writeUInt32BE(n,0),r.writeUInt32BE(t,4),e)e.copy(r,8);return r.writeInt32BE(XI.crc32(r.slice(4,r.length-4)),r.length-4),r};Fr.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*Qt.GAMMA_DIVISION),0),this._packChunk(Qt.TYPE_gAMA,e)};Fr.prototype.packIHDR=function(t,e){let n=Buffer.alloc(13);return n.writeUInt32BE(t,0),n.writeUInt32BE(e,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(Qt.TYPE_IHDR,n)};Fr.prototype.packIDAT=function(t){return this._packChunk(Qt.TYPE_IDAT,t)};Fr.prototype.packIEND=function(){return this._packChunk(Qt.TYPE_IEND,null)}});var Cw=xt((jB,Lw)=>{var nR=Xt("util"),Hw=Xt("stream"),rR=_s(),iR=Od(),Fw=Lw.exports=function(t){Hw.call(this);let e=t||{};this._packer=new iR(e),this._deflate=this._packer.createDeflate(),this.readable=!0};nR.inherits(Fw,Hw);Fw.prototype.pack=function(t,e,n,r){if(this.emit("data",Buffer.from(rR.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,n)),r)this.emit("data",this._packer.packGAMA(r));let i=this._packer.filterData(t,e,n);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var Ww=xt((fa,Uw)=>{var jw=Xt("assert").ok,Bs=Xt("zlib"),sR=Xt("util"),_w=Xt("buffer").kMaxLength;function Ii(t){if(!(this instanceof Ii))return new Ii(t);if(t&&t.chunkSize<Bs.Z_MIN_CHUNK)t.chunkSize=Bs.Z_MIN_CHUNK;if(Bs.Inflate.call(this,t),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,t&&t.maxLength!=null)this._maxLength=t.maxLength}function oR(t){return new Ii(t)}function Bw(t,e){if(e)process.nextTick(e);if(!t._handle)return;t._handle.close(),t._handle=null}Ii.prototype._processChunk=function(t,e,n){if(typeof n==="function")return Bs.Inflate._processChunk.call(this,t,e,n);let r=this,i=t&&t.length,s=this._chunkSize-this._offset,o=this._maxLength,a=0,c=[],u=0,f;this.on("error",function(m){f=m});function l(m,p){if(r._hadError)return;let b=s-p;if(jw(b>=0,"have should not go down"),b>0){let $=r._buffer.slice(r._offset,r._offset+b);if(r._offset+=b,$.length>o)$=$.slice(0,o);if(c.push($),u+=$.length,o-=$.length,o===0)return!1}if(p===0||r._offset>=r._chunkSize)s=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize);if(p===0)return a+=i-m,i=m,!0;return!1}jw(this._handle,"zlib binding closed");let d;do d=this._handle.writeSync(e,t,a,i,this._buffer,this._offset,s),d=d||this._writeState;while(!this._hadError&&l(d[0],d[1]));if(this._hadError)throw f;if(u>=_w)throw Bw(this),RangeError("Cannot create final Buffer. It would be larger than 0x"+_w.toString(16)+" bytes");let h=Buffer.concat(c,u);return Bw(this),h};sR.inherits(Ii,Bs.Inflate);function aR(t,e){if(typeof e==="string")e=Buffer.from(e);if(!(e instanceof Buffer))throw TypeError("Not a string or buffer");let n=t._finishFlushFlag;if(n==null)n=Bs.Z_FINISH;return t._processChunk(e,n)}function Gw(t,e){return aR(new Ii(e),t)}Uw.exports=fa=Gw;fa.Inflate=Ii;fa.createInflate=oR;fa.inflateSync=Gw});var Pd=xt((_B,zw)=>{var Kw=zw.exports=function(t){this._buffer=t,this._reads=[]};Kw.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Kw.prototype.process=function(){while(this._reads.length>0&&this._buffer.length){let t=this._reads[0];if(this._buffer.length&&(this._buffer.length>=t.length||t.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(t.length),t.func.call(this,e.slice(0,t.length))}else break}if(this._reads.length>0)throw Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)throw Error("unrecognised content at end of stream")}});var Dw=xt((lR)=>{var cR=Pd(),uR=$d();lR.process=function(t,e){let n=[],r=new cR(t);return new uR(e,{read:r.read.bind(r),write:function(s){n.push(s)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Vw=xt((GB,Yw)=>{var qw=!0,Jw=Xt("zlib"),dR=Ww();if(!Jw.deflateSync)qw=!1;var hR=Pd(),mR=Dw(),pR=Sd(),gR=Ed(),bR=Md();Yw.exports=function(t,e){if(!qw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n;function r(S){n=S}let i;function s(S){i=S}function o(S){i.transColor=S}function a(S){i.palette=S}function c(){i.alpha=!0}let u;function f(S){u=S}let l=[];function d(S){l.push(S)}let h=new hR(t);if(new pR(e,{read:h.read.bind(h),error:r,metadata:s,gamma:f,palette:a,transColor:o,inflateData:d,simpleTransparency:c}).start(),h.process(),n)throw n;let p=Buffer.concat(l);l.length=0;let b;if(i.interlace)b=Jw.inflateSync(p);else{let M=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;b=dR(p,{chunkSize:M,maxLength:M})}if(p=null,!b||!b.length)throw Error("bad png - invalid inflate data response");let $=mR.process(b,i);p=null;let k=gR.dataToBitMap($,i);$=null;let v=bR(k,i,e.skipRescale);return i.data=v,i.gamma=u||0,i}});var t0=xt((UB,Qw)=>{var Zw=!0,Xw=Xt("zlib");if(!Xw.deflateSync)Zw=!1;var wR=_s(),$R=Od();Qw.exports=function(t,e){if(!Zw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=new $R(e||{}),i=[];if(i.push(Buffer.from(wR.PNG_SIGNATURE)),i.push(r.packIHDR(t.width,t.height)),t.gamma)i.push(r.packGAMA(t.gamma));let s=r.filterData(t.data,t.width,t.height),o=Xw.deflateSync(s,r.getDeflateOptions());if(s=null,!o||!o.length)throw Error("bad png - invalid compressed data response");return i.push(r.packIDAT(o)),i.push(r.packIEND()),Buffer.concat(i)}});var e0=xt((vR)=>{var kR=Vw(),yR=t0();vR.read=function(t,e){return kR(t,e||{})};vR.write=function(t,e){return yR(t,e)}});var r0=xt((IR)=>{var MR=Xt("util"),n0=Xt("stream"),xR=Ow(),OR=Cw(),PR=e0(),le=IR.PNG=function(t){if(n0.call(this),t=t||{},this.width=t.width|0,this.height=t.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,t.fill&&this.data)this.data.fill(0);this.gamma=0,this.readable=this.writable=!0,this._parser=new xR(t),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new OR(t),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};MR.inherits(le,n0);le.sync=PR;le.prototype.pack=function(){if(!this.data||!this.data.length)return this.emit("error","No data provided"),this;return process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this};le.prototype.parse=function(t,e){if(e){let n,r;n=function(i){this.removeListener("error",r),this.data=i,e(null,this)}.bind(this),r=function(i){this.removeListener("parsed",n),e(i,null)}.bind(this),this.once("parsed",n),this.once("error",r)}return this.end(t),this};le.prototype.write=function(t){return this._parser.write(t),!0};le.prototype.end=function(t){this._parser.end(t)};le.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};le.prototype._gamma=function(t){this.gamma=t};le.prototype._handleClose=function(){if(!this._parser.writable&&!this._packer.readable)this.emit("close")};le.bitblt=function(t,e,n,r,i,s,o,a){if(n|=0,r|=0,i|=0,s|=0,o|=0,a|=0,n>t.width||r>t.height||n+i>t.width||r+s>t.height)throw Error("bitblt reading outside image");if(o>e.width||a>e.height||o+i>e.width||a+s>e.height)throw Error("bitblt writing outside image");for(let c=0;c<s;c++)t.data.copy(e.data,(a+c)*e.width+o<<2,(r+c)*t.width+n<<2,(r+c)*t.width+n+i<<2)};le.prototype.bitblt=function(t,e,n,r,i,s,o){return le.bitblt(this,t,e,n,r,i,s,o),this};le.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let n=0;n<t.width;n++){let r=t.width*e+n<<2;for(let i=0;i<3;i++){let s=t.data[r+i]/255;s=Math.pow(s,0.45454545454545453/t.gamma),t.data[r+i]=Math.round(s*255)}}t.gamma=0}};le.prototype.adjustGamma=function(){le.adjustGamma(this)}});var sm=xt((MW,wy)=>{var im={to(t,e){if(!e)return`\x1B[${t+1}G`;return`\x1B[${e+1};${t+1}H`},move(t,e){let n="";if(t<0)n+=`\x1B[${-t}D`;else if(t>0)n+=`\x1B[${t}C`;if(e<0)n+=`\x1B[${-e}A`;else if(e>0)n+=`\x1B[${e}B`;return n},up:(t=1)=>`\x1B[${t}A`,down:(t=1)=>`\x1B[${t}B`,forward:(t=1)=>`\x1B[${t}C`,backward:(t=1)=>`\x1B[${t}D`,nextLine:(t=1)=>"\x1B[E".repeat(t),prevLine:(t=1)=>"\x1B[F".repeat(t),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},cH={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},uH={screen:"\x1B[2J",up:(t=1)=>"\x1B[1J".repeat(t),down:(t=1)=>"\x1B[J".repeat(t),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(t){let e="";for(let n=0;n<t;n++)e+=this.line+(n<t-1?im.up():"");if(t)e+=im.left;return e}};wy.exports={cursor:im,scroll:cH,erase:uH,beep:"\x07"}});import{spawnSync as hB}from"node:child_process";import{isMainThread as mB}from"node:worker_threads";import{parseArgs as sB}from"node:util";var lt={name:"@kecan0406/ttheme",version:"1.2.27",type:"module",bin:{ttheme:"bin/ttheme.js"},files:["bin","dist/manifest.json","shell","!shell/check.zsh"],description:"Character terminal palettes for Ghostty, iTerm2, kitty, Alacritty, WezTerm, Windows Terminal, Warp, Konsole and Terminal.app",license:"MIT",author:"kecan0406",repository:{type:"git",url:"git+https://github.com/kecan0406/ttheme.git"},homepage:"https://github.com/kecan0406/ttheme#readme",bugs:"https://github.com/kecan0406/ttheme/issues",keywords:["terminal","theme","ghostty","kitty","alacritty","wezterm","iterm2","konsole","warp","windows-terminal","color-scheme","terminal-theme","palette","anime","zsh"],devDependencies:{"@biomejs/biome":"^2.5.15","@clack/prompts":"^1.8.1","@jsquash/jpeg":"^1.6.0","@material/material-color-utilities":"^0.4.0","@oxlint/plugins":"1.87.0","@types/bun":"^1.4.2","@types/pngjs":"6.0.5","@xterm/headless":"6.0.0","fast-string-width":"^3.0.2",oxlint:"1.87.0",pngjs:"7.0.0","smol-toml":"^1.9.0",typescript:"^7.0.2",uqr:"^0.1.3"},engines:{bun:">=1.3",node:">=22"}};import{existsSync as Fk,readFileSync as Wh}from"node:fs";import{join as Lk}from"node:path";var sI=/^#[0-9a-f]{6}$/;function be(t){return sI.test(t)}function st(t){let e=Number.parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,e&255]}function At(t,e,n){let r=st(t),i=st(e);return`#${r.map((s,o)=>Math.round(s+((i[o]??0)-s)*n).toString(16).padStart(2,"0")).join("")}`}function Mt(t){let[e,n,r]=st(t).map((i)=>{let s=i/255;return s<=0.03928?s/12.92:((s+0.055)/1.055)**2.4});return 0.2126*e+0.7152*n+0.0722*r}function kt(t,e){let n=Mt(t),r=Mt(e);return(Math.max(n,r)+0.05)/(Math.min(n,r)+0.05)}function ru(t,e){return Math.round(kt(t,e)*100)/100}function oI(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function Ot(t){let[e,n,r]=st(t).map(oI),i=Math.cbrt(0.4122214708*e+0.5363325363*n+0.0514459929*r),s=Math.cbrt(0.2119034982*e+0.6806995451*n+0.1073969566*r),o=Math.cbrt(0.0883024619*e+0.2817188376*n+0.6299787005*r),a=1.9779984951*i-2.428592205*s+0.4505937099*o,c=0.0259040371*i+0.7827717662*s-0.808675766*o;return{l:0.2104542553*i+0.793617785*s-0.0040720468*o,c:Math.hypot(a,c),h:(Math.atan2(c,a)*180/Math.PI+360)%360}}var Ar=7,Qb=3,fd=0.15,tw=1.6,hd=[1,2,3,4,5,6,9,10,11,12,13,14],ew=[7,15],an=[1,2,3,4,5,6],Re={1:{name:"red",center:19,width:25},2:{name:"green",center:132,width:35},3:{name:"yellow",center:88,width:35},4:{name:"blue",center:250,width:60},5:{name:"magenta",center:329,width:40},6:{name:"cyan",center:197,width:60}},Oi=0.03,on=25,Fs=15,Ls=0.08;function Qn(t,e){let n=t.ansi[e];if(n===void 0)throw Error(`${t.name}: missing ANSI ${e}`);return n}function dd(t,e,n){let r=t.background;return e.flatMap((i)=>{let s=Qn(t,i);return kt(s,r)<n?[`ANSI ${i} ${s} on ${r} is ${ru(s,r)}:1, needs ${n}:1`]:[]})}function nw(t,e){return Math.min(...e.map((n)=>kt(Qn(t,n),t.background)))}var rw=[{rule:"foreground",label:"foreground on background",unit:"ratio",min:Ar,measure:({foreground:t,background:e})=>kt(t,e),check:({foreground:t,background:e})=>kt(t,e)<Ar?[`foreground ${t} on ${e} is ${ru(t,e)}:1, needs ${Ar}:1`]:[]},{rule:"accents",label:"weakest accent on background",unit:"ratio",min:Qb,measure:(t)=>nw(t,hd),check:(t)=>dd(t,hd,Qb)},{rule:"ansi0-dark",label:"ansi0 luminance",unit:"luminance",max:fd,measure:(t)=>Mt(Qn(t,0)),check:(t)=>{let e=Qn(t,0);return Mt(e)>fd?[`ANSI 0 ${e} has luminance ${Mt(e).toFixed(3)}, needs <= ${fd}`]:[]}},{rule:"light-ansi",label:"ansi7 and ansi15 on background",unit:"ratio",min:Ar,measure:(t)=>nw(t,ew),check:(t)=>dd(t,ew,Ar)},{rule:"ansi8-visible",label:"ansi8 on background",unit:"ratio",min:tw,measure:(t)=>kt(Qn(t,8),t.background),check:(t)=>dd(t,[8],tw)},{rule:"selection",label:"foreground on selection",unit:"ratio",min:Ar,measure:({foreground:t,selectionBackground:e})=>e===void 0?Number.NaN:kt(t,e),check:({foreground:t,selectionBackground:e})=>e!==void 0&&kt(t,e)<Ar?[`foreground ${t} on selection ${e} is ${ru(t,e)}:1, needs ${Ar}:1`]:[]}];function Ae(t,e){let n=Math.abs(t-e)%360;return Math.min(n,360-n)}var Mn=(t)=>t>8?t-8:t;function Cs(t){let e=t.signatureSlots.filter((n)=>n.startsWith("ansi")).map((n)=>Number(n.slice(4)));return new Set(e.flatMap((n)=>an.includes(Mn(n))?[n,n>8?n-8:n+8]:[n]))}function iu(t,e){let n=Ot(Qn(t,e));return n.c<Oi?void 0:n}function Nr(t){let e=Cs(t);return hd.flatMap((n)=>{let r=iu(t,n),i=Re[Mn(n)];if(r===void 0||i===void 0||e.has(n))return[];let s=Ae(r.h,i.center)-i.width;return s>0?[{slot:n,hue:r.h,over:s}]:[]})}function tr(t){let e=new Set(t.signatureSlots);return an.flatMap((n)=>{let r=iu(t,n),i=iu(t,n+8);if(r===void 0||i===void 0||e.has(`ansi${n}`)&&e.has(`ansi${n+8}`))return[];return[{normal:n,gap:Ae(r.h,i.h)}]})}function er(t){let e=Cs(t),n=new Map,r=(i)=>{if(!n.has(i))n.set(i,iu(t,i));return n.get(i)};return[0,8].flatMap((i)=>an.flatMap((s)=>an.filter((o)=>o>s).flatMap((o)=>{let[a,c]=[i+s,i+o],u=r(a),f=r(c);if(u===void 0||f===void 0||e.has(a)&&e.has(c))return[];return Ae(u.h,f.h)<Fs&&Math.abs(u.l-f.l)<Ls?[[a,c]]:[]})))}var aI=[{rule:"ansi-role",label:"accent hue outside its ANSI role",unit:"degrees",max:0,measure:(t)=>Math.max(0,...Nr(t).map((e)=>e.over)),check:(t)=>Nr(t).map(({slot:e,hue:n,over:r})=>{let i=Re[Mn(e)];return`ANSI ${e} ${Qn(t,e)} has hue ${n.toFixed(0)}°, ${r.toFixed(0)}° outside ${i.name} (${i.center}±${i.width}°)`})},{rule:"bright-follows",label:"widest normal to bright hue gap",unit:"degrees",max:on,measure:(t)=>Math.max(0,...tr(t).map((e)=>e.gap)),check:(t)=>tr(t).filter((e)=>e.gap>on).map(({normal:e,gap:n})=>`ANSI ${e+8} is ${n.toFixed(0)}° from ANSI ${e}, needs <= ${on}°`)},{rule:"distinct",label:"accent pairs that read as one color",unit:"pairs",max:0,measure:(t)=>er(t).length,check:(t)=>er(t).map(([e,n])=>`ANSI ${e} ${Qn(t,e)} and ANSI ${n} ${Qn(t,n)} are within ${Fs}° hue and ${Ls} lightness`)}],su=[...rw,...aI],md=su.map((t)=>t.rule),Ne=su.map(({rule:t,label:e,unit:n,min:r,max:i})=>({rule:t,label:e,unit:n,...r===void 0?{}:{min:r},...i===void 0?{}:{max:i}}));function xn(t){return su.map((e)=>Math.round(e.measure(t)*1000)/1000)}function iw(t,e){return t.filter((n)=>!e.waive.includes(n.rule)).flatMap((n)=>n.check(e).map((r)=>({theme:e.name,rule:n.rule,detail:r})))}function nr(t){return iw(su,t)}function sw(t){return iw(rw,t)}function ow(t){return t.flatMap(nr)}import{chmodSync as cI,copyFileSync as uI,existsSync as Tr,mkdirSync as lI,readFileSync as ua,realpathSync as fI,renameSync as cw,rmSync as aw,statSync as dI,writeFileSync as uw}from"node:fs";import{dirname as hI}from"node:path";function la(t){return`${t}.ttheme.bak`}var mI=/^(?:#|--) ttheme begin$|path = "ttheme-|^DefaultProfile=ttheme-/m;function pd(t){let e=la(t);if(Tr(t)&&!Tr(e)&&!mI.test(ua(t,"utf8")))uI(t,e)}function C(t,e){let n=Tr(t)?fI(t):t;lI(hI(n),{recursive:!0});let r=`${n}.ttheme-${process.pid}`;if(uw(r,e),Tr(n))cI(r,dI(n).mode&4095);cw(r,n)}function Pi(t,e,n){if(uw(t,n),t!==e)cw(t,e)}function On(t,e){if((Tr(t)?ua(t,"utf8"):void 0)===e)return!1;return pd(t),C(t,e),!0}function lw(t,e){return t.replace(/\n*$/,"")===e.replace(/\n*$/,"")}function fw(t,e){let n=la(t),r=Tr(n)?ua(n,"utf8"):void 0;if(e===""&&r===void 0)return aw(t,{force:!0}),"removed";let i=r!==void 0&&lw(r,e);if(C(t,i?r:e),r===void 0||i)return aw(n,{force:!0}),"restored";return"kept backup"}function ou(t){let e=la(t);return Tr(t)&&Tr(e)&&lw(ua(t,"utf8"),ua(e,"utf8"))?[e]:[]}import{createHash as O$}from"node:crypto";import{copyFileSync as PN,existsSync as lh,mkdirSync as IN,readdirSync as RN,readFileSync as eo,renameSync as P$,rmSync as to,statSync as AN}from"node:fs";import{basename as I$,isAbsolute as NN,join as J}from"node:path";import{readdirSync as UR,rmSync as WR,statSync as KR}from"node:fs";import{setDefaultAutoSelectFamilyAttemptTimeout as zR}from"node:net";import{homedir as DR}from"node:os";import{join as pa}from"node:path";import{setTimeout as qR}from"node:timers/promises";var c0=ld(r0(),1);import{constants as TR,deflateSync as HR,inflateSync as FR}from"node:zlib";import{inflateRawSync as AR}from"node:zlib";var RR=(()=>{var t=import.meta.url;return function(e={}){var n=e,r,i,s=new Promise((g,w)=>{r=g,i=w});let a=globalThis.ServiceWorkerGlobalScope!==void 0&&typeof self<"u"&&globalThis.caches&&globalThis.caches.default!==void 0,c=typeof process==="object"&&process.release&&process.release.name==="node";if(a||c){if(!globalThis.ImageData)globalThis.ImageData=class{constructor(w,y,E){this.data=w,this.width=y,this.height=E}};if(import.meta.url===void 0)import.meta.url="https://localhost";if(typeof self<"u"&&self.location===void 0)self.location={href:""}}var u=Object.assign({},n),f=[],l="./this.program",d=(g,w)=>{throw w},h=typeof window=="object",m=typeof importScripts=="function",p=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",b="";function $(g){if(n.locateFile)return n.locateFile(g,b);return b+g}var k,v,S;if(h||m){if(m)b=self.location.href;else if(typeof document<"u"&&document.currentScript)b=document.currentScript.src;if(t)b=t;if(b.startsWith("blob:"))b="";else b=b.substr(0,b.replace(/[?#].*/,"").lastIndexOf("/")+1);{if(k=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.send(null),w.responseText},m)S=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.responseType="arraybuffer",w.send(null),new Uint8Array(w.response)};v=(g,w,y)=>{var E=new XMLHttpRequest;E.open("GET",g,!0),E.responseType="arraybuffer",E.onload=()=>{if(E.status==200||E.status==0&&E.response){w(E.response);return}y()},E.onerror=y,E.send(null)}}}var M=n.print||console.log.bind(console),x=n.printErr||console.error.bind(console);if(Object.assign(n,u),u=null,n.arguments)f=n.arguments;if(n.thisProgram)l=n.thisProgram;if(n.quit)d=n.quit;var N;if(n.wasmBinary)N=n.wasmBinary;var R,T=!1,_,W,B,L,gt,Zt,it,Rr,ze;function En(){var g=R.buffer;n.HEAP8=W=new Int8Array(g),n.HEAP16=L=new Int16Array(g),n.HEAPU8=B=new Uint8Array(g),n.HEAPU16=gt=new Uint16Array(g),n.HEAP32=Zt=new Int32Array(g),n.HEAPU32=it=new Uint32Array(g),n.HEAPF32=Rr=new Float32Array(g),n.HEAPF64=ze=new Float64Array(g)}var Rs=[],Qc=[],yi=[],Vf=!1;function Zf(){if(n.preRun){if(typeof n.preRun=="function")n.preRun=[n.preRun];while(n.preRun.length)aO(n.preRun.shift())}td(Rs)}function Xf(){Vf=!0,td(Qc)}function oO(){if(n.postRun){if(typeof n.postRun=="function")n.postRun=[n.postRun];while(n.postRun.length)uO(n.postRun.shift())}td(yi)}function aO(g){Rs.unshift(g)}function cO(g){Qc.unshift(g)}function uO(g){yi.unshift(g)}var vi=0,Qf=null,aa=null;function lO(g){vi++,n.monitorRunDependencies?.(vi)}function fO(g){if(vi--,n.monitorRunDependencies?.(vi),vi==0){if(Qf!==null)clearInterval(Qf),Qf=null;if(aa){var w=aa;aa=null,w()}}}function Nb(g){n.onAbort?.(g),g="Aborted("+g+")",x(g),T=!0,_=1,g+=". Build with -sASSERTIONS for more info.";var w=new WebAssembly.RuntimeError(g);throw i(w),w}var dO="data:application/octet-stream;base64,",Tb=(g)=>g.startsWith(dO),Si;if(n.locateFile){if(Si="mozjpeg_dec.wasm",!Tb(Si))Si=$(Si)}else Si=new URL("mozjpeg_dec.wasm",import.meta.url).href;function Hb(g){if(g==Si&&N)return new Uint8Array(N);if(S)return S(g);throw"both async and sync fetching of the wasm failed"}function hO(g){if(!N&&(h||m)){if(typeof fetch=="function")return fetch(g,{credentials:"same-origin"}).then((w)=>{if(!w.ok)throw`failed to load wasm binary file at '${g}'`;return w.arrayBuffer()}).catch(()=>Hb(g))}return Promise.resolve().then(()=>Hb(g))}function Fb(g,w,y){return hO(g).then((E)=>WebAssembly.instantiate(E,w)).then(y,(E)=>{x(`failed to asynchronously prepare wasm: ${E}`),Nb(E)})}function mO(g,w,y,E){if(!g&&typeof WebAssembly.instantiateStreaming=="function"&&!Tb(w)&&typeof fetch=="function")return fetch(w,{credentials:"same-origin"}).then((P)=>{var A=WebAssembly.instantiateStreaming(P,y);return A.then(E,function(G){return x(`wasm streaming compile failed: ${G}`),x("falling back to ArrayBuffer instantiation"),Fb(w,y,E)})});return Fb(w,y,E)}function pO(){var g={a:_P};function w(E,P){return ce=E.exports,R=ce.A,En(),Wb=ce.F,cO(ce.B),fO("wasm-instantiate"),ce}lO("wasm-instantiate");function y(E){w(E.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(g,w)}catch(E){x(`Module.instantiateWasm callback failed with error: ${E}`),i(E)}return mO(N,Si,g,y).catch(i),{}}function gO(g){this.name="ExitStatus",this.message=`Program terminated with exit(${g})`,this.status=g}var td=(g)=>{while(g.length>0)g.shift()(n)},bO=n.noExitRuntime||!0;class Lb{constructor(g){this.excPtr=g,this.ptr=g-24}set_type(g){it[this.ptr+4>>2]=g}get_type(){return it[this.ptr+4>>2]}set_destructor(g){it[this.ptr+8>>2]=g}get_destructor(){return it[this.ptr+8>>2]}set_caught(g){g=g?1:0,W[this.ptr+12]=g}get_caught(){return W[this.ptr+12]!=0}set_rethrown(g){g=g?1:0,W[this.ptr+13]=g}get_rethrown(){return W[this.ptr+13]!=0}init(g,w){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(w)}set_adjusted_ptr(g){it[this.ptr+16>>2]=g}get_adjusted_ptr(){return it[this.ptr+16>>2]}get_exception_ptr(){var g=Vb(this.get_type());if(g)return it[this.excPtr>>2];var w=this.get_adjusted_ptr();if(w!==0)return w;return this.excPtr}}var Cb=0,wO=0,$O=(g,w,y)=>{var E=new Lb(g);throw E.init(w,y),Cb=g,wO++,Cb},kO=(g,w,y,E,P)=>{},yO=()=>{var g=Array(256);for(var w=0;w<256;++w)g[w]=String.fromCharCode(w);jb=g},jb,sn=(g)=>{var w="",y=g;while(B[y])w+=jb[B[y++]];return w},As={},Ei={},tu={},_b,Ie=(g)=>{throw new _b(g)},Bb,Gb=(g)=>{throw new Bb(g)},vO=(g,w,y)=>{g.forEach(function(H){tu[H]=w});function E(H){var K=y(H);if(K.length!==g.length)Gb("Mismatched type converter count");for(var Z=0;Z<g.length;++Z)Vn(g[Z],K[Z])}var P=Array(w.length),A=[],G=0;if(w.forEach((H,K)=>{if(Ei.hasOwnProperty(H))P[K]=Ei[H];else{if(A.push(H),!As.hasOwnProperty(H))As[H]=[];As[H].push(()=>{if(P[K]=Ei[H],++G,G===A.length)E(P)})}}),A.length===0)E(P)};function SO(g,w,y={}){var E=w.name;if(!g)Ie(`type "${E}" must have a positive integer typeid pointer`);if(Ei.hasOwnProperty(g))if(y.ignoreDuplicateRegistrations)return;else Ie(`Cannot register type '${E}' twice`);if(Ei[g]=w,delete tu[g],As.hasOwnProperty(g)){var P=As[g];delete As[g],P.forEach((A)=>A())}}function Vn(g,w,y={}){if(!("argPackAdvance"in w))throw TypeError("registerType registeredInstance requires argPackAdvance");return SO(g,w,y)}var Mi=8,EO=(g,w,y,E)=>{w=sn(w),Vn(g,{name:w,fromWireType:function(P){return!!P},toWireType:function(P,A){return A?y:E},argPackAdvance:Mi,readValueFromPointer:function(P){return this.fromWireType(B[P])},destructorFunction:null})},ed=[],Zn=[],nd=(g)=>{if(g>9&&--Zn[g+1]===0)Zn[g]=void 0,ed.push(g)},MO=()=>Zn.length/2-5-ed.length,xO=()=>{Zn.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=MO},xi={toValue:(g)=>{if(!g)Ie("Cannot use deleted val. handle = "+g);return Zn[g]},toHandle:(g)=>{switch(g){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let w=ed.pop()||Zn.length;return Zn[w]=g,Zn[w+1]=1,w}}}};function rd(g){return this.fromWireType(it[g>>2])}var OO={name:"emscripten::val",fromWireType:(g)=>{var w=xi.toValue(g);return nd(g),w},toWireType:(g,w)=>xi.toHandle(w),argPackAdvance:Mi,readValueFromPointer:rd,destructorFunction:null},PO=(g)=>Vn(g,OO),IO=(g,w)=>{switch(w){case 4:return function(y){return this.fromWireType(Rr[y>>2])};case 8:return function(y){return this.fromWireType(ze[y>>3])};default:throw TypeError(`invalid float width (${w}): ${g}`)}},RO=(g,w,y)=>{w=sn(w),Vn(g,{name:w,fromWireType:(E)=>E,toWireType:(E,P)=>P,argPackAdvance:Mi,readValueFromPointer:IO(w,y),destructorFunction:null})},id=(g,w)=>Object.defineProperty(w,"name",{value:g}),Ub=(g)=>{while(g.length){var w=g.pop(),y=g.pop();y(w)}};function AO(g){for(var w=1;w<g.length;++w)if(g[w]!==null&&g[w].destructorFunction===void 0)return!0;return!1}function NO(g,w,y,E,P,A){var G=w.length;if(G<2)Ie("argTypes array size mismatch! Must at least get return value and 'this' types!");var H=w[1]!==null&&y!==null,K=AO(w),Z=w[0].name!=="void",bt=G-2,Lt=Array(bt),ue=[],De=[],Ns=function(...cd){if(cd.length!==bt)Ie(`function ${g} called with ${cd.length} arguments, expected ${bt}`);De.length=0;var ud;if(ue.length=H?2:1,ue[0]=P,H)ud=w[1].toWireType(De,this),ue[1]=ud;for(var Ts=0;Ts<bt;++Ts)Lt[Ts]=w[Ts+2].toWireType(De,cd[Ts]),ue.push(Lt[Ts]);var DP=E(...ue);function qP(JP){if(K)Ub(De);else for(var Hs=H?1:2;Hs<w.length;Hs++){var YP=Hs===1?ud:Lt[Hs-2];if(w[Hs].destructorFunction!==null)w[Hs].destructorFunction(YP)}if(Z)return w[0].fromWireType(JP)}return qP(DP)};return id(g,Ns)}var TO=(g,w,y)=>{if(g[w].overloadTable===void 0){var E=g[w];g[w]=function(...P){if(!g[w].overloadTable.hasOwnProperty(P.length))Ie(`Function '${y}' called with an invalid number of arguments (${P.length}) - expects one of (${g[w].overloadTable})!`);return g[w].overloadTable[P.length].apply(this,P)},g[w].overloadTable=[],g[w].overloadTable[E.argCount]=E}},HO=(g,w,y)=>{if(n.hasOwnProperty(g)){if(y===void 0||n[g].overloadTable!==void 0&&n[g].overloadTable[y]!==void 0)Ie(`Cannot register public name '${g}' twice`);if(TO(n,g,g),n.hasOwnProperty(y))Ie(`Cannot register multiple overloads of a function with the same number of arguments (${y})!`);n[g].overloadTable[y]=w}else if(n[g]=w,y!==void 0)n[g].numArguments=y},FO=(g,w)=>{var y=[];for(var E=0;E<g;E++)y.push(it[w+E*4>>2]);return y},LO=(g,w,y)=>{if(!n.hasOwnProperty(g))Gb("Replacing nonexistent public symbol");if(n[g].overloadTable!==void 0&&y!==void 0)n[g].overloadTable[y]=w;else n[g]=w,n[g].argCount=y},CO=(g,w,y)=>{g=g.replace(/p/g,"i");var E=n["dynCall_"+g];return E(w,...y)},eu=[],Wb,Kb=(g)=>{var w=eu[g];if(!w){if(g>=eu.length)eu.length=g+1;eu[g]=w=Wb.get(g)}return w},jO=(g,w,y=[])=>{if(g.includes("j"))return CO(g,w,y);var E=Kb(w)(...y);return E},_O=(g,w)=>(...y)=>jO(g,w,y),BO=(g,w)=>{g=sn(g);function y(){if(g.includes("j"))return _O(g,w);return Kb(w)}var E=y();if(typeof E!="function")Ie(`unknown function pointer with signature ${g}: ${w}`);return E},GO=(g,w)=>{var y=id(w,function(E){this.name=w,this.message=E;var P=Error(E).stack;if(P!==void 0)this.stack=this.toString()+`
|
|
3
|
+
`+P.replace(/^Error(:[^\n]*)?\n/,"")});return y.prototype=Object.create(g.prototype),y.prototype.constructor=y,y.prototype.toString=function(){if(this.message===void 0)return this.name;else return`${this.name}: ${this.message}`},y},zb,Db=(g)=>{var w=Yb(g),y=sn(w);return Xn(w),y},UO=(g,w)=>{var y=[],E={};function P(A){if(E[A])return;if(Ei[A])return;if(tu[A]){tu[A].forEach(P);return}y.push(A),E[A]=!0}throw w.forEach(P),new zb(`${g}: `+y.map(Db).join([", "]))},WO=(g)=>{g=g.trim();let w=g.indexOf("(");if(w!==-1)return g.substr(0,w);else return g},KO=(g,w,y,E,P,A,G)=>{var H=FO(w,y);g=sn(g),g=WO(g),P=BO(E,P),HO(g,function(){UO(`Cannot call ${g} due to unbound types`,H)},w-1),vO([],H,(K)=>{var Z=[K[0],null].concat(K.slice(1));return LO(g,NO(g,Z,null,P,A,G),w-1),[]})},zO=(g,w,y)=>{switch(w){case 1:return y?(E)=>W[E]:(E)=>B[E];case 2:return y?(E)=>L[E>>1]:(E)=>gt[E>>1];case 4:return y?(E)=>Zt[E>>2]:(E)=>it[E>>2];default:throw TypeError(`invalid integer width (${w}): ${g}`)}},DO=(g,w,y,E,P)=>{if(w=sn(w),P===-1)P=4294967295;var A=(bt)=>bt;if(E===0){var G=32-8*y;A=(bt)=>bt<<G>>>G}var H=w.includes("unsigned"),K=(bt,Lt)=>{},Z;if(H)Z=function(bt,Lt){return K(Lt,this.name),Lt>>>0};else Z=function(bt,Lt){return K(Lt,this.name),Lt};Vn(g,{name:w,fromWireType:A,toWireType:Z,argPackAdvance:Mi,readValueFromPointer:zO(w,y,E!==0),destructorFunction:null})},qO=(g,w,y)=>{var E=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],P=E[w];function A(G){var H=it[G>>2],K=it[G+4>>2];return new P(W.buffer,K,H)}y=sn(y),Vn(g,{name:y,fromWireType:A,argPackAdvance:Mi,readValueFromPointer:A},{ignoreDuplicateRegistrations:!0})},JO=(g,w,y,E)=>{if(!(E>0))return 0;var P=y,A=y+E-1;for(var G=0;G<g.length;++G){var H=g.charCodeAt(G);if(H>=55296&&H<=57343){var K=g.charCodeAt(++G);H=65536+((H&1023)<<10)|K&1023}if(H<=127){if(y>=A)break;w[y++]=H}else if(H<=2047){if(y+1>=A)break;w[y++]=192|H>>6,w[y++]=128|H&63}else if(H<=65535){if(y+2>=A)break;w[y++]=224|H>>12,w[y++]=128|H>>6&63,w[y++]=128|H&63}else{if(y+3>=A)break;w[y++]=240|H>>18,w[y++]=128|H>>12&63,w[y++]=128|H>>6&63,w[y++]=128|H&63}}return w[y]=0,y-P},YO=(g,w,y)=>JO(g,B,w,y),VO=(g)=>{var w=0;for(var y=0;y<g.length;++y){var E=g.charCodeAt(y);if(E<=127)w++;else if(E<=2047)w+=2;else if(E>=55296&&E<=57343)w+=4,++y;else w+=3}return w},qb=(g,w,y)=>{var E=w+y,P="";while(!(w>=E)){var A=g[w++];if(!A)return P;if(!(A&128)){P+=String.fromCharCode(A);continue}var G=g[w++]&63;if((A&224)==192){P+=String.fromCharCode((A&31)<<6|G);continue}var H=g[w++]&63;if((A&240)==224)A=(A&15)<<12|G<<6|H;else A=(A&7)<<18|G<<12|H<<6|g[w++]&63;if(A<65536)P+=String.fromCharCode(A);else{var K=A-65536;P+=String.fromCharCode(55296|K>>10,56320|K&1023)}}return P},ZO=(g,w)=>g?qb(B,g,w):"",XO=(g,w)=>{w=sn(w);var y=w==="std::string";Vn(g,{name:w,fromWireType(E){var P=it[E>>2],A=E+4,G;if(y){var H=A;for(var K=0;K<=P;++K){var Z=A+K;if(K==P||B[Z]==0){var bt=Z-H,Lt=ZO(H,bt);if(G===void 0)G=Lt;else G+=String.fromCharCode(0),G+=Lt;H=Z+1}}}else{var ue=Array(P);for(var K=0;K<P;++K)ue[K]=String.fromCharCode(B[A+K]);G=ue.join("")}return Xn(E),G},toWireType(E,P){if(P instanceof ArrayBuffer)P=new Uint8Array(P);var A,G=typeof P=="string";if(!(G||P instanceof Uint8Array||P instanceof Uint8ClampedArray||P instanceof Int8Array))Ie("Cannot pass non-string to std::string");if(y&&G)A=VO(P);else A=P.length;var H=ad(4+A+1),K=H+4;if(it[H>>2]=A,y&&G)YO(P,K,A+1);else if(G)for(var Z=0;Z<A;++Z){var bt=P.charCodeAt(Z);if(bt>255)Xn(K),Ie("String has UTF-16 code units that do not fit in 8 bits");B[K+Z]=bt}else for(var Z=0;Z<A;++Z)B[K+Z]=P[Z];if(E!==null)E.push(Xn,H);return H},argPackAdvance:Mi,readValueFromPointer:rd,destructorFunction(E){Xn(E)}})},QO=(g,w)=>{var y="";for(var E=0;!(E>=w/2);++E){var P=L[g+E*2>>1];if(P==0)break;y+=String.fromCharCode(P)}return y},tP=(g,w,y)=>{if(y??=2147483647,y<2)return 0;y-=2;var E=w,P=y<g.length*2?y/2:g.length;for(var A=0;A<P;++A){var G=g.charCodeAt(A);L[w>>1]=G,w+=2}return L[w>>1]=0,w-E},eP=(g)=>g.length*2,nP=(g,w)=>{var y=0,E="";while(!(y>=w/4)){var P=Zt[g+y*4>>2];if(P==0)break;if(++y,P>=65536){var A=P-65536;E+=String.fromCharCode(55296|A>>10,56320|A&1023)}else E+=String.fromCharCode(P)}return E},rP=(g,w,y)=>{if(y??=2147483647,y<4)return 0;var E=w,P=E+y-4;for(var A=0;A<g.length;++A){var G=g.charCodeAt(A);if(G>=55296&&G<=57343){var H=g.charCodeAt(++A);G=65536+((G&1023)<<10)|H&1023}if(Zt[w>>2]=G,w+=4,w+4>P)break}return Zt[w>>2]=0,w-E},iP=(g)=>{var w=0;for(var y=0;y<g.length;++y){var E=g.charCodeAt(y);if(E>=55296&&E<=57343)++y;w+=4}return w},sP=(g,w,y)=>{y=sn(y);var E,P,A,G;if(w===2)E=QO,P=tP,G=eP,A=(H)=>gt[H>>1];else if(w===4)E=nP,P=rP,G=iP,A=(H)=>it[H>>2];Vn(g,{name:y,fromWireType:(H)=>{var K=it[H>>2],Z,bt=H+4;for(var Lt=0;Lt<=K;++Lt){var ue=H+4+Lt*w;if(Lt==K||A(ue)==0){var De=ue-bt,Ns=E(bt,De);if(Z===void 0)Z=Ns;else Z+=String.fromCharCode(0),Z+=Ns;bt=ue+w}}return Xn(H),Z},toWireType:(H,K)=>{if(typeof K!="string")Ie(`Cannot pass non-string to C++ string type ${y}`);var Z=G(K),bt=ad(4+Z+w);if(it[bt>>2]=Z/w,P(K,bt+4,Z+w),H!==null)H.push(Xn,bt);return bt},argPackAdvance:Mi,readValueFromPointer:rd,destructorFunction(H){Xn(H)}})},oP=(g,w)=>{w=sn(w),Vn(g,{isVoid:!0,name:w,argPackAdvance:0,fromWireType:()=>{return},toWireType:(y,E)=>{return}})},aP=(g,w,y)=>B.copyWithin(g,w,w+y),sd=[],cP=(g,w,y,E)=>{return g=sd[g],w=xi.toValue(w),g(null,w,y,E)},uP={},lP=(g)=>{var w=uP[g];if(w===void 0)return sn(g);return w},Jb=()=>{if(typeof globalThis=="object")return globalThis;function g(w){w.$$$embind_global$$$=w;var y=typeof $$$embind_global$$$=="object"&&w.$$$embind_global$$$==w;if(!y)delete w.$$$embind_global$$$;return y}if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;if(typeof global=="object"&&g(global))$$$embind_global$$$=global;else if(typeof self=="object"&&g(self))$$$embind_global$$$=self;if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;throw Error("unable to get global object.")},fP=(g)=>{if(g===0)return xi.toHandle(Jb());else return g=lP(g),xi.toHandle(Jb()[g])},dP=(g)=>{var w=sd.length;return sd.push(g),w},hP=(g,w)=>{var y=Ei[g];if(y===void 0)Ie(`${w} has unknown type ${Db(g)}`);return y},mP=(g,w)=>{var y=Array(g);for(var E=0;E<g;++E)y[E]=hP(it[w+E*4>>2],"parameter "+E);return y},pP=Reflect.construct,gP=(g,w,y)=>{var E=[],P=g.toWireType(E,y);if(E.length)it[w>>2]=xi.toHandle(E);return P},bP=(g,w,y)=>{var E=mP(g,w),P=E.shift();g--;var A=Array(g),G=(K,Z,bt,Lt)=>{var ue=0;for(var De=0;De<g;++De)A[De]=E[De].readValueFromPointer(Lt+ue),ue+=E[De].argPackAdvance;var Ns=y===1?pP(Z,A):Z.apply(K,A);return gP(P,bt,Ns)},H=`methodCaller<(${E.map((K)=>K.name).join(", ")}) => ${P.name}>`;return dP(id(H,G))},wP=(g)=>{if(g>9)Zn[g+1]+=1},$P=(g)=>{var w=xi.toValue(g);Ub(w),nd(g)},kP=()=>{Nb("")},yP=()=>2147483648,vP=(g)=>{var w=R.buffer,y=(g-w.byteLength+65535)/65536;try{return R.grow(y),En(),1}catch(E){}},SP=(g)=>{var w=B.length;g>>>=0;var y=yP();if(g>y)return!1;var E=(K,Z)=>K+(Z-K%Z)%Z;for(var P=1;P<=4;P*=2){var A=w*(1+0.2/P);A=Math.min(A,g+100663296);var G=Math.min(y,E(Math.max(g,A),65536)),H=vP(G);if(H)return!0}return!1},od={},EP=()=>l||"./this.program",ca=()=>{if(!ca.strings){var g=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",w={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:g,_:EP()};for(var y in od)if(od[y]===void 0)delete w[y];else w[y]=od[y];var E=[];for(var y in w)E.push(`${y}=${w[y]}`);ca.strings=E}return ca.strings},MP=(g,w)=>{for(var y=0;y<g.length;++y)W[w++]=g.charCodeAt(y);W[w]=0},xP=(g,w)=>{var y=0;return ca().forEach((E,P)=>{var A=w+y;it[g+P*4>>2]=A,MP(E,A),y+=E.length+1}),0},OP=(g,w)=>{var y=ca();it[g>>2]=y.length;var E=0;return y.forEach((P)=>E+=P.length+1),it[w>>2]=E,0},PP=0,IP=()=>bO||PP>0,RP=(g)=>{if(_=g,!IP())n.onExit?.(g),T=!0;d(g,new gO(g))},AP=(g,w)=>{_=g,RP(g)},NP=AP,TP=(g)=>52,HP=(g,w)=>w+2097152>>>0<4194305-!!g?(g>>>0)+w*4294967296:NaN;function FP(g,w,y,E,P){var A=HP(w,y);return 70}var LP=[null,[],[]],CP=(g,w)=>{var y=LP[g];if(w===0||w===10)(g===1?M:x)(qb(y,0)),y.length=0;else y.push(w)},jP=(g,w,y,E)=>{var P=0;for(var A=0;A<y;A++){var G=it[w>>2],H=it[w+4>>2];w+=8;for(var K=0;K<H;K++)CP(g,B[G+K]);P+=H}return it[E>>2]=P,0};yO(),_b=n.BindingError=class extends Error{constructor(w){super(w);this.name="BindingError"}},Bb=n.InternalError=class extends Error{constructor(w){super(w);this.name="InternalError"}},xO(),zb=n.UnboundTypeError=GO(Error,"UnboundTypeError");var _P={o:$O,q:kO,m:EO,l:PO,j:RO,f:KO,b:DO,a:qO,e:XO,c:sP,n:oP,v:aP,i:cP,d:nd,k:fP,h:bP,y:wP,g:$P,r:kP,s:SP,t:xP,u:OP,z:NP,w:TP,p:FP,x:jP},ce=pO(),BP=()=>(BP=ce.B)(),Yb=(g)=>(Yb=ce.C)(g),ad=(g)=>(ad=ce.D)(g),Xn=(g)=>(Xn=ce.E)(g),GP=(g)=>(GP=ce._emscripten_stack_restore)(g),UP=(g)=>(UP=ce._emscripten_stack_alloc)(g),WP=()=>(WP=ce.emscripten_stack_get_current)(),KP=(g)=>(KP=ce.__cxa_increment_exception_refcount)(g),Vb=(g)=>(Vb=ce.G)(g),zP=n.dynCall_jiji=(g,w,y,E,P)=>(zP=n.dynCall_jiji=ce.H)(g,w,y,E,P),nu;aa=function g(){if(!nu)Zb();if(!nu)aa=g};function Zb(){if(vi>0)return;if(Zf(),vi>0)return;function g(){if(nu)return;if(nu=!0,n.calledRun=!0,T)return;if(Xf(),r(n),n.onRuntimeInitialized)n.onRuntimeInitialized();oO()}if(n.setStatus)n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),g()},1);else g()}if(n.preInit){if(typeof n.preInit=="function")n.preInit=[n.preInit];while(n.preInit.length>0)n.preInit.pop()()}return Zb(),s}})(),i0=RR;function Rd(t){let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=t[0]===73&&t[1]===73;if(t.length<8||!n&&(t[0]!==77||t[1]!==77))return 1;let r=e.getUint32(4,n);if(r+2>t.length)return 1;for(let i=r+2,s=e.getUint16(r,n);s>0&&i+12<=t.length;s--,i+=12)if(e.getUint16(i,n)===274){let o=e.getUint16(i+8,n);return o>=1&&o<=8?o:1}return 1}function Ad(t){if(t[0]!==255||t[1]!==216)return null;let e=1,n=2;while(n+9<t.length){if(t[n]!==255){n++;continue}let r=t[n+1];if(r===255){n++;continue}let i=t[n+2]<<8|t[n+3];if(r===225&&String.fromCharCode(...t.subarray(n+4,n+10))==="Exif\x00\x00")e=Rd(t.subarray(n+10,Math.min(t.length,n+2+i)));if(r>=192&&r<=207&&r!==196&&r!==200&&r!==204){let s=t[n+5]<<8|t[n+6],o=t[n+7]<<8|t[n+8];return e>=5?{width:s,height:o}:{width:o,height:s}}n+=2+i}return null}var Id;function NR(){if(Id)return Id;let t=new WebAssembly.Module(AR(Buffer.from("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","base64"))),e={noInitialRun:!0,print:()=>{return},printErr:()=>{return},instantiateWasm:(n,r)=>{let i=new WebAssembly.Instance(t,n);return r(i),i.exports}};if(i0(e),typeof e.decode!=="function")throw Error("the JPEG decoder did not start");return Id=e,e}function s0(t,e){let n=Ad(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);let r=null;try{r=NR().decode(t,!0)}catch{r=null}if(!r)throw Error("not a JPEG image this decoder can read");return{width:r.width,height:r.height,data:new Uint8Array(r.data.buffer,r.data.byteOffset,r.data.length)}}var Gs=[137,80,78,71,13,10,26,10],u0=13,da=3;function Cr(t){return t.length>=Gs.length&&Gs.every((e,n)=>t[n]===e)}var l0={0:1,2:3,3:1,4:2,6:4};function f0(t){if(t.length<33||!Cr(t))return;let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength),n=e.readUInt32BE(16),r=e.readUInt32BE(20),i=e[25];if(e[24]!==8||e[28]!==0||l0[i]===void 0)return;let s=[],o,a;for(let c=8;c+12<=e.length;){let u=e.readUInt32BE(c),f=e.toString("latin1",c+4,c+8),l=e.subarray(c+8,c+8+u);if(f==="IDAT")s.push(l);else if(f==="PLTE")o=l;else if(f==="tRNS"){if(i!==da)return;a=l}else if(f==="IEND")break;c+=12+u}if(s.length===0||i===da&&!o)return;return{width:n,height:r,type:i,idat:s,palette:o,opacity:a}}function LR(t,e){let n=new Uint32Array(256),r=new Uint8Array(n.buffer);for(let i=0;i<256;i++)r[i*4]=t[i*3]??0,r[i*4+1]=t[i*3+1]??0,r[i*4+2]=t[i*3+2]??0,r[i*4+3]=e?.[i]??255;return n}function CR(t,e,n,r){let i=new Uint8Array(e);for(let s=0;s<n;s++){let o=s*(e+1),a=t[o],c=o+1,u=s>0?t:i,f=s>0?c-e-1:0;if(a===1)for(let l=r;l<e;l++)t[c+l]=t[c+l]+t[c+l-r];else if(a===2)for(let l=0;l<e;l++)t[c+l]=t[c+l]+u[f+l];else if(a===3){for(let l=0;l<r;l++)t[c+l]=t[c+l]+(u[f+l]>>1);for(let l=r;l<e;l++)t[c+l]=t[c+l]+(t[c+l-r]+u[f+l]>>1)}else if(a===4){for(let l=0;l<r;l++)t[c+l]=t[c+l]+u[f+l];for(let l=r;l<e;l++){let d=t[c+l-r],h=u[f+l],m=u[f+l-r],p=Math.abs(h-m),b=Math.abs(d-m),$=Math.abs(d+h-2*m);t[c+l]=t[c+l]+(p<=b&&p<=$?d:b<=$?h:m)}}else if(a!==0)throw Error(`bad PNG filter ${a}`)}}function jR(t){let{width:e,height:n,type:r}=t,i=l0[r],s=e*i,o=FR(Buffer.concat(t.idat),{chunkSize:Math.min(268435456,Math.max(65536,n*(s+1)))});if(o.length<n*(s+1))throw Error("truncated PNG");CR(o,s,n,i);let a=new Uint8Array(e*n*4),c=r===da?LR(t.palette,t.opacity):void 0,u=new Uint32Array(a.buffer);for(let f=0;f<n;f++){let l=f*(s+1)+1,d=f*e*4;if(c)for(let h=0,m=f*e;h<e;h++,m++)u[m]=c[o[l+h]];else if(r===6)a.set(o.subarray(l,l+s),d);else if(r===2)for(let h=0,m=l,p=d;h<e;h++,m+=3,p+=4)a[p]=o[m],a[p+1]=o[m+1],a[p+2]=o[m+2],a[p+3]=255;else if(r===0)for(let h=0,m=d;h<e;h++,m+=4){let p=o[l+h];a[m]=p,a[m+1]=p,a[m+2]=p,a[m+3]=255}else for(let h=0,m=l,p=d;h<e;h++,m+=2,p+=4){let b=o[m];a[p]=b,a[p+1]=b,a[p+2]=b,a[p+3]=o[m+1]}}return{width:e,height:n,data:a}}function Nd(t){let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength);for(let n=8;n+12<=e.length;){let r=e.readUInt32BE(n),i=e.toString("latin1",n+4,n+8);if(i==="eXIf")return Rd(e.subarray(n+8,Math.min(e.length,n+8+r)));if(i==="IDAT"||i==="IEND")return 1;n+=12+r}return 1}function o0(t,e){if(e<=1)return t;let{width:n,height:r}=t,i=e>=5?r:n,s=e>=5?n:r,o=new Uint32Array(t.data.buffer,t.data.byteOffset,n*r),a=new Uint8Array(i*s*4),c=new Uint32Array(a.buffer);for(let u=0;u<s;u++)for(let f=0;f<i;f++){let l=e<=3&&e>=2?n-1-f:e===5||e===6?u:e>=7?n-1-u:f,d=e===3||e===4?r-1-u:e===5||e===8?f:e>=6?r-1-f:u;c[u*i+f]=o[d*n+l]}return{width:i,height:s,data:a}}function Ut(t){let e=f0(t);if(e)return o0(jR(e),Nd(t));let n=c0.PNG.sync.read(Buffer.from(t));return o0({width:n.width,height:n.height,data:new Uint8Array(n.data)},Nd(t))}function In(t,e){if(Cr(t)){let n=Rn(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);return Ut(t)}if(t[0]===255&&t[1]===216)return s0(t,e);throw Error("not a PNG or JPEG image")}function Td(t,e,n){let{width:r,height:i,at:s}=e,o=Math.max(0,s.x),a=Math.max(0,s.y),c=Math.min(r,s.x+s.w),u=Math.min(i,s.y+s.h);if(c<=o||u<=a)return;let f={x:o,y:a,w:c-o,h:u-a};if(s.w===t.width&&s.h===t.height)return{part:t,box:f,dx:o-s.x,dy:a-s.y};let l={x:(o-s.x)*t.width/s.w,y:(a-s.y)*t.height/s.h,w:f.w*t.width/s.w,h:f.h*t.height/s.h};return{part:n(t,l,f.w,f.h),box:f,dx:0,dy:0}}function d0(t,e){let n=new Uint8Array(e.width*e.height*4),r=Td(t,e,_r);if(r){let{part:i,box:s,dx:o,dy:a}=r;for(let c=0;c<s.h;c++){let u=((c+a)*i.width+o)*4;n.set(i.data.subarray(u,u+s.w*4),((s.y+c)*e.width+s.x)*4)}}return{width:e.width,height:e.height,data:n}}function h0(t,e){let n=new Uint8Array(e.width*e.height),r=Td(t,e,(i,s,o,a)=>Us(Fd(i,s,o,a)));if(r){let{part:i,box:s,dx:o,dy:a}=r;for(let c=0;c<s.h;c++){let u=(c+a)*i.width+o;n.set(i.data.subarray(u,u+s.w),(s.y+c)*e.width+s.x)}}return{width:e.width,height:e.height,data:n}}function jr(t,e,n,r={width:t.width,height:t.height,at:{x:0,y:0,w:t.width,h:t.height}}){let i=st(e),{width:s,height:o}=r,a=new Uint8Array(s*o*3);for(let h=0;h<s*3;h+=3)a.set(i,h);for(let h=1;h<o;h++)a.copyWithin(h*s*3,0,s*3);let c=Td(t,r,_r);if(!c)return{width:s,height:o,data:a};let{part:u,box:f,dx:l,dy:d}=c;for(let h=0;h<f.h;h++)for(let m=0;m<f.w;m++){let p=((h+d)*u.width+m+l)*4,b=((f.y+h)*s+f.x+m)*3,$=u.data[p+3]/255*n;for(let k=0;k<3;k++)a[b+k]=Math.round(i[k]*(1-$)+u.data[p+k]*$)}return{width:s,height:o,data:a}}function a0(t,e){for(let n=0;n+e.length<=t.length;n++){let r=!0;for(let i=0;i<e.length&&r;i++)r=t[n+i]===e.charCodeAt(i);if(r)return n}return-1}function Rn(t){if(t.length<33||!Cr(t))return null;let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=Nd(t)>=5,r=e.getUint32(n?20:16),i=e.getUint32(n?16:20);if(t[25]===4||t[25]===6)return{width:r,height:i,alpha:!0};let s=a0(t,"IDAT");return{width:r,height:i,alpha:a0(s===-1?t:t.subarray(0,s),"tRNS")!==-1}}function m0(t,e=u0){let{width:n,height:r,data:i}=t,s=(f)=>{for(let l=f*n*4+3,d=l+n*4;l<d;l+=4)if(i[l]>=e)return!0;return!1},o=0;while(o<r&&!s(o))o++;if(o===r)return null;let a=r-1;while(!s(a))a--;let c=n,u=-1;for(let f=o;f<=a;f++){let l=f*n*4+3;for(let d=0;d<c;d++)if(i[l+d*4]>=e){c=d;break}for(let d=n-1;d>u;d--)if(i[l+d*4]>=e){u=d;break}}return{x:c,y:o,w:u-c+1,h:a-o+1}}function rr(t,e={x:0,y:0,w:t.width,h:t.height}){let n=0;for(let r=e.y;r<e.y+e.h;r++)for(let i=e.x;i<e.x+e.w;i++)if((t.data[(r*t.width+i)*4+3]??0)<u0)n++;return Math.round(n*100/(e.w*e.h))}function p0(t,e,n){let r=Math.min(e/t.width,n/t.height),i=Math.max(1,Math.round(t.width*r)),s=Math.max(1,Math.round(t.height*r)),o=_r(t,{x:0,y:0,w:t.width,h:t.height},i,s),a=new Uint8Array(e*n*4),c=Math.floor((e-i)/2),u=Math.floor((n-s)/2);for(let f=0;f<s;f++)a.set(o.data.subarray(f*i*4,(f+1)*i*4),((u+f)*e+c)*4);return{width:e,height:n,data:a}}function _R(t){let e=Math.abs(t);if(e<1)return(7*e*e*e-12*e*e+5.333333333333333)/6;if(e<2)return(-2.3333333333333335*e*e*e+12*e*e-20*e+10.666666666666666)/6;return 0}function Hd(t,e,n,r){if(n===r&&Number.isInteger(e)&&e>=0&&e+r<=t)return{first:Int32Array.from({length:r},(f,l)=>e+l),size:1,weights:new Float32Array(r).fill(1)};let i=n/r,s=Math.max(1,i),o=2*s,a=Math.min(t,Math.ceil(2*o)+2),c=new Int32Array(r),u=new Float32Array(r*a);for(let f=0;f<r;f++){let l=e+(f+0.5)*i,d=Math.floor(l-o-0.5),h=Math.max(0,Math.min(t-a,d));c[f]=h;let m=0;for(let p=d;p<=Math.ceil(l+o-0.5);p++){let b=_R((p+0.5-l)/s),$=f*a+Math.min(t-1,Math.max(0,p))-h;u[$]=(u[$]??0)+b,m+=b}for(let p=f*a;p<(f+1)*a;p++)u[p]=(u[p]??0)/m}return{first:c,size:a,weights:u}}function g0(t,e,n,r,i,s,o){let a=Hd(t,e.y,e.h,r),c=n*i,u=a.size+1,f=Array.from({length:u},()=>new Float32Array(c)),l=new Int32Array(u).fill(-1),d=new Float32Array(c),h=[],m=[];for(let p=0;p<r;p++){h.length=0,m.length=0;let b=a.first[p];for(let k=0;k<a.size;k++){let v=a.weights[p*a.size+k];if(v===0)continue;let S=b+k,M=S%u,x=f[M];if(l[M]!==S)s(S,x),l[M]=S;h.push(x),m.push(v)}let $=0;while($<h.length){let k=h[$],v=m[$];if(h.length-$>=4){let S=h[$+1],M=h[$+2],x=h[$+3],N=m[$+1],R=m[$+2],T=m[$+3];if($===0)for(let _=0;_<c;_++)d[_]=k[_]*v+S[_]*N+M[_]*R+x[_]*T;else for(let _=0;_<c;_++)d[_]=d[_]+(k[_]*v+S[_]*N+M[_]*R+x[_]*T);$+=4}else{if($===0)for(let S=0;S<c;S++)d[S]=k[S]*v;else for(let S=0;S<c;S++)d[S]=d[S]+k[S]*v;$+=1}}if(h.length===0)d.fill(0);o(p,d)}}function b0(t,e,n,r,i){let s=0,o=n;while(s<o){let c=s+o>>1;if(t[c]+e-1<r)s=c+1;else o=c}let a=s;o=n;while(s<o){let c=s+o>>1;if(t[c]<=i)s=c+1;else o=c}return[a,s]}function _r(t,e,n,r){let i=Hd(t.width,e.x,e.w,n),s=t.data,o=t.width,a=new Float32Array(o*4),c=new Uint8Array(n*r*4);return g0(t.height,e,n,r,4,(u,f)=>{let l=u*o*4,d=o,h=-1;for(let b=0,$=0;b<o*4;b+=4,$++){let k=s[l+b+3];if(k===0){a[b]=0,a[b+1]=0,a[b+2]=0,a[b+3]=0;continue}if($<d)d=$;h=$,a[b]=s[l+b]*k,a[b+1]=s[l+b+1]*k,a[b+2]=s[l+b+2]*k,a[b+3]=k}if(f.fill(0),h<0)return;let[m,p]=b0(i.first,i.size,n,d,h);for(let b=m;b<p;b++){let $=i.first[b]*4,k=b*i.size,v=0,S=0,M=0,x=0;for(let N=0;N<i.size;N++){let R=i.weights[k+N],T=$+N*4;v+=a[T]*R,S+=a[T+1]*R,M+=a[T+2]*R,x+=a[T+3]*R}f[b*4]=v,f[b*4+1]=S,f[b*4+2]=M,f[b*4+3]=x}},(u,f)=>{let l=u*n*4;for(let d=0;d<n;d++){let h=d*4,m=f[h+3];if(m<=0)continue;let p=f[h]/m;c[l+h]=(p<0?0:p>255?255:p)+0.5,p=f[h+1]/m,c[l+h+1]=(p<0?0:p>255?255:p)+0.5,p=f[h+2]/m,c[l+h+2]=(p<0?0:p>255?255:p)+0.5,c[l+h+3]=(m>255?255:m)+0.5}}),{width:n,height:r,data:c}}function Fd(t,e,n,r){let i=Hd(t.width,e.x,e.w,n),s=t.data,o=t.width,a=new Float32Array(n*r);return g0(t.height,e,n,r,1,(c,u)=>{let f=c*o,l=o,d=-1;for(let p=0;p<o;p++)if(s[f+p]!==0){if(p<l)l=p;d=p}if(u.fill(0),d<0)return;let[h,m]=b0(i.first,i.size,n,l,d);for(let p=h;p<m;p++){let b=f+i.first[p],$=p*i.size,k=0;for(let v=0;v<i.size;v++)k+=s[b+v]*i.weights[$+v];u[p]=k}},(c,u)=>{a.set(u,c*n)}),{width:n,height:r,data:a}}function ha(t,e){if(e<=0)return t;let n=Math.max(1,Math.ceil(e*3)),r=Array.from({length:2*n+1},(f,l)=>Math.exp(-((l-n)**2)/(2*e*e))),i=r.reduce((f,l)=>f+l,0),{width:s,height:o,data:a}=t,c=new Float32Array(s*o);for(let f=0;f<o;f++){let l=f*s;for(let d=0;d<s;d++){let h=0;for(let m=-n;m<=n;m++)h+=(a[l+Math.min(s-1,Math.max(0,d+m))]??0)*(r[m+n]??0);c[l+d]=h/i}}let u=new Float32Array(s*o);for(let f=0;f<o;f++){let l=f*s;for(let d=-n;d<=n;d++){let h=(r[d+n]??0)/i,m=Math.min(o-1,Math.max(0,f+d))*s;for(let p=0;p<s;p++)u[l+p]=(u[l+p]??0)+(c[m+p]??0)*h}}return{width:s,height:o,data:u}}function Us(t){let e=new Uint8Array(t.data.length);for(let n=0;n<e.length;n++){let r=t.data[n];e[n]=(r<0?0:r>255?255:r)+0.5}return{width:t.width,height:t.height,data:e}}function ir(t){let e=new Uint8Array(t.width*t.height);for(let n=0;n<e.length;n++)e[n]=t.data[n*4+3]??0;return{width:t.width,height:t.height,data:e}}var BR=Array.from({length:256},(t,e)=>{let n=e;for(let r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;return n>>>0});function GR(t){let e=4294967295;for(let n of t)e=(BR[(e^n)&255]??0)^e>>>8;return(e^4294967295)>>>0}function Lr(t,e){let n=Buffer.alloc(12+e.length);return n.writeUInt32BE(e.length,0),n.write(t,4,"latin1"),n.set(e,8),n.writeUInt32BE(GR(n.subarray(4,8+e.length)),8+e.length),n}function w0(t,e,n){let r=new Uint8Array(n*(e+1));r.set(t.subarray(0,e),1);for(let i=1;i<n;i++){let s=i*(e+1),o=i*e,a=o-e;r[s]=2;for(let c=0;c<e;c++)r[s+1+c]=t[o+c]-t[a+c]}return r}function $0(t){return HR(t,{level:1,strategy:TR.Z_RLE})}function k0(t,e,n){let r=Buffer.alloc(13);return r.writeUInt32BE(t.width,0),r.writeUInt32BE(t.height,4),r[8]=8,r[9]=e,Buffer.concat([Buffer.from(Gs),Lr("IHDR",r),...n,Lr("IDAT",$0(w0(t.data,t.width,t.height))),Lr("IEND",new Uint8Array)])}function y0(t){let[e,n,r]=st(t),i=new Uint8Array(768);for(let s=0;s<256;s++)i.set([e,n,r],s*3);return Lr("PLTE",i)}function v0(t,e,n,r,i){let s=Buffer.alloc(13);return s.writeUInt32BE(t,0),s.writeUInt32BE(e,4),s[8]=8,s[9]=n,Buffer.concat([Buffer.from(Gs),Lr("IHDR",s),Lr("IDAT",$0(w0(i,t*r,e))),Lr("IEND",new Uint8Array)])}function Br(t){return v0(t.width,t.height,2,3,t.data)}function Je(t){return v0(t.width,t.height,6,4,t.data)}function sr(t,e){return k0(t,da,[y0(e),Lr("tRNS",Uint8Array.from({length:256},(n,r)=>r))])}function Ld(t){return k0(t,0,[])}function S0(t){let e=f0(t)?.palette;if(!e||e.length<3)return;for(let n=3;n+2<e.length;n+=3)if(e[n]!==e[0]||e[n+1]!==e[1]||e[n+2]!==e[2])return;return`#${[...e.subarray(0,3)].map((n)=>n.toString(16).padStart(2,"0")).join("")}`}function au(t,e){if(!Cr(t)||t[25]!==da)return;let n=Buffer.from(t.buffer,t.byteOffset,t.byteLength),r=[Buffer.from(Gs)],i=Gs.length;while(i+8<=n.length){let s=i+12+n.readUInt32BE(i);r.push(n.toString("latin1",i+4,i+8)==="PLTE"?y0(e):n.subarray(i,s)),i=s}return Buffer.concat(r)}var An=100,fe=25000000,JR=536870912,Ws=["safe","questionable","explicit"],Ri=["nudity","underwear"],Bd=["comic","monochrome","sketch","chibi"],N0=["off","5","10","25","50","100"],T0=["off","720","1080","1440","1800","2560"],H0={nudity:new Set(["nude","naked","topless","bottomless","nipples","naked_towel","undressing"]),underwear:new Set(["underwear","panties","pantsu","bra","lingerie","pantyshot"])},YR={comic:new Set(["comic","4koma"]),monochrome:new Set(["monochrome","greyscale"]),sketch:new Set(["sketch","lineart","line_art"]),chibi:new Set(["chibi"])},VR=/^(?:rating|score|width|height|filetype|dimension):/,ma={safe:"s",questionable:"q",explicit:"e"},F0=8191,ZR=20000,L0=5000,E0=3000,M0=8,XR=8,QR=8000,tA=3000,C0=60000,x0=3,eA=3,nA="https://static.zerochan.net",j0="https://s1.zerochan.net",Gd=`ttheme/${lt.version} (+${lt.homepage})`,rA=["orig","tile","thumb","cut"],_0=new Map,iA=yA(process.env.TTHEME_FIND_HOSTS),sA=kA(process.env.TTHEME_FIND_CUTOUTS);zR(tA);var oA=["artist","character","copyright"];function O0(t){try{return UR(t)}catch{return[]}}function Ks(t){return t.startsWith("//")?`https:${t}`:t}function Gr(t){return(/\.([a-z0-9]+)(?:\?.*)?$/i.exec(t)?.[1]??"").toLowerCase()}function zs(t){let e=t.trim();if(!e)return[];let n=JSON.parse(e);if(Array.isArray(n))return n;let r=n.posts;return Array.isArray(r)?r:[]}function aA(t){let e=t.trim(),r=(e?JSON.parse(e):{}).tags??{};return new Map(Object.entries(r).map(([i,s])=>[i,String(s)]))}function jd(t,e,n){let r=Ks(String(t??""));return{file:r,width:Number(e)||0,height:Number(n)||0,ext:Gr(r)}}function or(t){return String(t??"").split(/\s+/).filter(Boolean)}function _d(t){let e=typeof t==="number"?new Date(t*1000):typeof t==="string"?new Date(t):void 0;return e&&!Number.isNaN(e.getTime())?e.toISOString().slice(0,10):void 0}function B0(t,e){let n=Ks(String(e.preview??""));if(!e.file||!n||!Number(t.id))return[];let r=Number(t.width??t.image_width)||0,i=Number(t.height??t.image_height)||0;return[{id:Number(t.id),width:r,height:i,file:e.file,preview:n,ext:e.ext,owner:String(e.owner??""),score:Number(t.score)||0,rating:String(t.rating??""),md5:String(e.md5??""),source:String(t.source??""),tags:or(e.tags),named:e.named,..._d(t.created_at)?{posted:_d(t.created_at)}:{},solo:e.solo,family:Number(t.parent_id)||(t.has_children===!0?Number(t.id):0),smaller:e.versions.filter((s)=>s.file&&s.width>0&&s.height>0&&s.width*s.height<r*i)}]}function cA(t){let e=aA(t);return zs(t).flatMap((n)=>{let r=Ks(String(n.file_url??"")),i=String(n.tags??""),s=(o)=>or(i).filter((a)=>e.get(a)===o);return B0(n,{preview:n.preview_url,file:r,ext:String(n.file_ext||Gr(r)).toLowerCase(),owner:n.author,md5:n.md5,tags:i,named:{artist:s("artist"),character:s("character"),copyright:s("copyright")},solo:void 0,versions:[jd(n.jpeg_url,n.jpeg_width,n.jpeg_height),jd(n.sample_url,n.sample_width,n.sample_height)]})})}function uA(t){return zs(t).flatMap((e)=>{let n=Ks(String(e.file_url??"")),r=String(e.tag_string??""),i=e.media_asset??{};return B0(e,{preview:i.variants?.find((s)=>s.type==="360x360")?.url??e.preview_file_url,file:n,ext:String(e.file_ext||Gr(n)).toLowerCase(),owner:"",md5:e.md5,tags:r,named:{artist:or(e.tag_string_artist),character:or(e.tag_string_character),copyright:or(e.tag_string_copyright)},solo:r.split(/\s+/).includes("solo"),versions:(i.variants??[]).map((s)=>jd(s.url,s.width,s.height)).filter((s)=>s.ext==="jpg"||s.ext==="png").sort((s,o)=>o.width*o.height-s.width*s.height)})})}function G0(t){return t.toLowerCase().replace(/\s+/g,"_")}function lA(t){return(Array.isArray(t)?t:[]).map((e)=>G0(String(e)))}function fA(t){return String(t??"").replace(/[^0-9a-z]+/gi,".").replace(/^\.+|\.+$/g,"")||"zerochan"}function dA(t){let e=t.trim(),n=e?JSON.parse(e):{};return(Array.isArray(n.items)?n.items:n.id?[n]:[]).flatMap((i)=>{let s=Number(i.id);if(!s)return[];let o=lA(i.tags),a=Ks(String(i.full??""));return[{id:s,width:Number(i.width)||0,height:Number(i.height)||0,file:a,ext:Gr(a),preview:`${j0}/${fA(i.tag??i.primary)}.600.${s}.jpg`,owner:"",score:0,rating:o.some((c)=>H0.nudity.has(c))?"q":"g",md5:String(i.md5??i.hash??""),source:String(i.source??""),tags:o,named:{artist:[],character:[],copyright:[]},solo:o.includes("solo"),family:0,smaller:[]}]})}var hA={mangaka:"artist",studio:"artist",character:"character",series:"copyright",game:"copyright"};function P0(t){return t.replace(/&(?:#(\d+)|amp|quot|apos|lt|gt);/g,(e,n)=>n?String.fromCharCode(Number(n)):{"&":"&",""":'"',"'":"'","<":"<",">":">"}[e]??e)}function mA(t){let e={artist:[],character:[],copyright:[]};for(let[,r,i]of t.matchAll(/<li class="([a-z]+)[^"]*"[^>]*\bdata-tag="([^"]*)"/g)){let s=hA[r],o=G0(P0(i));if(s&&!e[s].includes(o))e[s].push(o)}let n=_d(/"datePublished":\s*"([^"]+)"/.exec(t)?.[1]);return{named:e,source:"",owner:P0(/\buploader = \{\s*name: '([^']*)'/.exec(t)?.[1]??""),...n?{posted:n}:{}}}function pA(t){return Number(/Zerochan has ([\d,]+) /.exec(t)?.[1]?.replace(/,/g,"")??0)}function gA(t){return zs(t).flatMap((e)=>{let n=String(e.value??"");return n?[{value:n,count:Number(e.post_count)||0}]:[]})}function bA(t){return zs(t).flatMap((e)=>{let n=String(e.name??"");return n?[{value:n,count:Number(e.count)||0}]:[]})}function wA(t){return Number(/count="(\d+)"/.exec(t)?.[1]??0)}function $A(t){let n=(t.trim()?JSON.parse(t):{}).counts?.posts;return n===null?Number.NaN:Number(n)||0}function kA(t){let e=new Map;for(let n of(t??"").split(/\s+/).filter(Boolean)){let r=n.indexOf("=");if(r>0)e.set(n.slice(0,r),n.slice(r+1).split(",").filter(Boolean))}return e}function yA(t){let e=new Map;for(let n of(t??"").split(/[\s,]+/).filter(Boolean)){let r=n.indexOf("="),i=n.slice(0,r);try{let s=new URL(n.slice(r+1));if(i&&s.protocol==="https:")e.set(i,s.origin)}catch{}}return e}function cu(t,e,n,r){let i=(t??"").split(/\s+/);if(r!==void 0&&i.includes(r))return[];let s=e.filter((o)=>i.includes(o));return s.length>0?s:[...n]}function Ai(t){return cu(t,Ws,["safe"])}function Ds(t){return cu(t,Ri,Ri,"none")}function uu(t){return cu(t,Bd,[],"none")}function ga(t){let e=Y.map((n)=>n.name);return cu(t,e,e)}function Ud(t,e,n){return{score:Number(t)||0,size:Number(e)||0,png:n==="on"}}function ba(t){return[...new Set((t??"").toLowerCase().split(/[\s,]+/).map((e)=>e.replace(/^-+/,"")).filter(Boolean))]}function Wd(t,e,n){return{safe:new Set(t),questionable:new Set(e),explicit:new Set(n)}}function Kd(t){let e=iA.get(t.key),n=sA.get(t.key);return{...t,origin:e??t.origin,moved:e!==void 0&&e!==t.origin,cutouts:n??t.cutouts,vouched:t.vouched&&n===void 0}}function U0(t){return t.length<2?t.join(""):t.map((e)=>`~${e}`).join(" ")}function W0(t){return t>0?[`width:>=${t}`,`height:>=${t}`]:[]}function I0(t){let e=Kd(t),n=(r)=>new URLSearchParams({api_version:"2",include_tags:"1",...r});return{...e,scored:!0,narrow:({score:r,size:i})=>[...r>0?[`score:>=${r}`]:[],...W0(i)],cutouts:U0(e.cutouts),ratings:Wd([ma.safe],[ma.questionable],[ma.explicit]),rate:(r)=>{let[i]=r;if(r.length===1&&i)return`rating:${ma[i]}`;let s=Ws.filter((a)=>!r.includes(a)),[o]=s;return s.length===1&&o?`-rating:${ma[o]}`:""},best:"order:score",tagBudget:Number.POSITIVE_INFINITY,ors:!0,postsUrl:(r,i)=>`${e.origin}/post.json?${n({limit:String(An),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/post.xml?${new URLSearchParams({limit:"1",tags:r})}`,postUrl:(r)=>`${e.origin}/post.json?${n({tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/post/show/${r}`,parse:cA,count:wA,uploadedBy:(r)=>`user:${r}`}}function vA(t){let e=Kd(t),n=Wd(["g"],["s","q"],["e"]);return{...e,scored:!0,narrow:({score:r,size:i,png:s})=>[...r>0?[`score:>=${r}`]:[],...W0(i),...s?["filetype:png"]:[]],cutouts:U0(e.cutouts),ratings:n,rate:(r)=>r.length===Ws.length?"":`rating:${r.flatMap((i)=>[...n[i]]).join(",")}`,best:"order:score",tagBudget:2,ors:!0,postsUrl:(r,i)=>`${e.origin}/posts.json?${new URLSearchParams({limit:String(An),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/counts/posts.json?${new URLSearchParams({tags:r})}`,postUrl:(r)=>`${e.origin}/posts.json?${new URLSearchParams({limit:"1",tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/posts/${r}`,parse:uA,count:$A,uploadedBy:(r)=>`user:${r}`}}function Cd(t){return t.split(/\s+/).filter((e)=>e&&!/^(?:order|dimension):/.test(e)).map((e)=>e.split("_").map(encodeURIComponent).join("+")).join(",")}function R0(t){let e=t.split(/\s+/),n=e.find((r)=>r.startsWith("dimension:"))?.slice(10);return{s:e.includes("order:fav")?"fav":"id",...n?{d:n}:{}}}function SA(t){let e=Kd(t);return{...e,scored:!1,narrow:({size:n})=>n>=1800?["dimension:huge"]:n>0?["dimension:large"]:[],cutouts:e.cutouts[0]??"",ratings:Wd(["g"],["q"],["e"]),rate:()=>"",best:"order:fav",tagBudget:3,ors:!1,missing:404,postsUrl:(n,r)=>`${e.origin}/${Cd(n)}?${new URLSearchParams({json:"",l:String(An),p:String(r+1),...R0(n)})}`,countUrl:(n)=>`${e.origin}/${Cd(n)}?${new URLSearchParams({xml:"",l:"1"})}`,postUrl:(n)=>`${e.origin}/${n}?json=`,pageUrl:(n)=>`${e.origin}/${n}`,parse:dA,count:pA,credits:mA,counts:(n)=>Cd(n).split(",").length===1&&!("d"in R0(n)),guesses:(n)=>(n.tags.includes("transparent_background")?["png","jpg"]:["jpg","png"]).map((r)=>n.preview.replace(j0,nA).replace(/\.600\.(\d+)\.jpg$/,`.full.$1.${r}`))}}function EA(t){let e=A0(`https://${t}`);return Y.find((n)=>A0(n.origin)===e)}function zd(t){return t.split(/\s+/).filter((e)=>e&&!VR.test(e)).length}function lu(t,e){let n=t.trim();if(/^\d+$/.test(n))return{site:e,id:Number(n)};let r=/^([\w.]+):(\d+)$/.exec(n);if(r){let a=Y.find((c)=>c.key===r[1]||c.name===r[1]);return a&&{site:a,id:Number(r[2])}}let i;try{i=new URL(n)}catch{return}let s=EA(i.host),o=Number(i.searchParams.get("id")??i.pathname.split("/").findLast(Boolean));return s&&o>0?{site:s,id:o}:void 0}var Y=[vA({key:"danbooru",name:"danbooru",origin:"https://shima.donmai.us",cutouts:["transparent_background"],vouched:!1,ansi:2}),I0({key:"konachan",name:"konachan",origin:"https://konachan.net",cutouts:["transparent","vector"],vouched:!1,ansi:6}),I0({key:"yande",name:"yande.re",origin:"https://yande.re",cutouts:["transparent_png"],vouched:!0,ansi:5}),SA({key:"zerochan",name:"zerochan",origin:"https://www.zerochan.net",cutouts:["transparent_background"],vouched:!1,ansi:3})],Pt=Y.find((t)=>t.key==="danbooru"),Ur=134217728;function te(t,e){let n=Y.indexOf(t);return(n===-1?Y.length:n)*Ur+e}function A0(t){let e;try{e=new URL(t).hostname}catch{return""}return e.split(".").slice(-2).join(".")}function Wr(t,e,n=e){return e.mirror&&n===e?{site:Pt,url:e.mirror.file}:{site:t,url:n.file}}function fu(t,e){return e.mirror?{site:Pt,url:e.mirror.preview}:{site:t,url:e.preview}}function du(t,e=Ri){return t.tags.filter((n)=>e.some((r)=>H0[r].has(n)))}function K0(t,e){return t.tags.filter((n)=>e.some((r)=>YR[r].has(n)))}function hu(t,e,n=["safe"]){return n.some((r)=>t.ratings[r].has(e.rating))}function z0(t,e){return t.rate(["safe"])===""?void 0:Ws.find((n)=>t.ratings[n].has(e.rating))}function un(t){return[t,...t.smaller].find((e)=>e.width*e.height<=fe)}function D0(t){let e=new Map;for(let[n,r]of[...t].sort(([i],[s])=>i<s?-1:1)){if(r==="")continue;e.set(r,[...e.get(r)??[],n])}return e}function Tn(){return pa(process.env.XDG_CACHE_HOME??pa(DR(),".cache"),"ttheme")}function ln(t){return pa(Tn(),t.key)}function q0(t=JR,e=Tn()){let n=[],r=0;for(let i of O0(e))for(let s of rA){let o=pa(e,i,s);for(let a of O0(o)){let c=pa(o,a);try{let{size:u,mtimeMs:f}=KR(c);n.push({path:c,size:u,at:f}),r+=u}catch{}}}n.sort((i,s)=>i.at-s.at);for(let i of n){if(r<=t)return;try{WR(i.path,{force:!0}),r-=i.size}catch{}}}function MA(t,e){if(t!==null&&/^\s*\d+\s*$/.test(t))return Number(t)*1000;let n=t===null?Number.NaN:Date.parse(t);return Number.isNaN(n)?C0:Math.max(0,n-e)}function Nn(t){return _0.get(t.key)??0}function xA(t){for(let e=t;e instanceof Error;e=e.cause)if(e.code==="ECONNRESET")return!0;return!1}function OA(t){return(t.headers.get("server")??"").startsWith("cloudflare")&&t.headers.get("cf-mitigated")==="challenge"}function PA(t,e){let n=new URL(e,t);if(!n.search)n.search=new URL(t).search;return n.href}async function ar(t,e,n,r={},i=ZR){let s=e;for(let o=1,a=0;;o++){let c=Nn(t)-Date.now();if(c>0)await qR(c,void 0,{signal:n});let u;try{u=await fetch(s,{headers:{"User-Agent":Gd,Referer:`${t.origin}/`,...r},redirect:"manual",signal:i?AbortSignal.any([n,AbortSignal.timeout(i)]):n})}catch(l){if(o<x0&&!n.aborted&&xA(l))continue;throw l}let f=u.headers.get("location");if(f&&u.status>=300&&u.status<400&&a<eA){await u.body?.cancel(),s=PA(s,f),a++,o--;continue}if(u.status===429&&o<x0){await u.body?.cancel();let l=MA(u.headers.get("retry-after"),Date.now());if(l>C0)throw Error(`${t.name} asks to wait ${Math.ceil(l/1000)}s`);_0.set(t.key,Math.max(Nn(t),Date.now()+l));continue}if(!u.ok)throw await u.body?.cancel(),Object.assign(Error(OA(u)?`${t.name} is behind a Cloudflare challenge`:`${t.name} answered ${u.status}`),{status:u.status});return u}}async function mu(t,e,n){try{return await(await ar(t,e,n)).text()}catch(r){if(t.missing!==void 0&&r.status===t.missing)return"";throw r}}async function J0(t,e,n,r){return t.parse(await mu(t,t.postsUrl(e,n),r))}async function Dd(t,e,n){return t.count(await mu(t,t.countUrl(e),n))}async function Ni(t,e,n){let[r]=t.parse(await mu(t,t.postUrl(e),n));return r}async function wa(t,e,n){return t.credits?.(await mu(t,t.pageUrl(e),n))}var IA=/^https?:\/\/(?:i\.pximg\.net|i\d*\.pixiv\.net|img\d*\.pixiv\.net)\/\S*\/(\d+)(?:_p\d+)?(?:_\w+)?\.\w+(?:[?#]\S*)?$/i,RA=/^https?:\/\/(?:www\.)?pixiv\.net\/member_illust\.php\?\S*\billust_id=(\d+)/i;function Ti(t){let e=IA.exec(t)?.[1]??RA.exec(t)?.[1];return e?`https://www.pixiv.net/artworks/${e}`:t}function $a(t,e){return t.credits!==void 0&&e.named.artist.length===0}function qs(t,e){for(let n of oA){let r=e.named?.[n]??[];if(t.named[n].length===0&&r.length>0)t.named[n]=r}if(t.source||=e.source??"",t.owner||=e.owner??"",!t.posted&&e.posted)t.posted=e.posted}function AA(t){let e=new URLSearchParams({limit:String(2*An),only:"md5,tag_string,tag_string_artist,tag_string_character,tag_string_copyright,source,file_url",tags:`md5:${t.join(",")}`});return`${Pt.origin}/posts.json?${e}`}function NA(t){return new Map(zs(t).flatMap((e)=>{let n=String(e.md5??"");return n?[[n,{tags:or(e.tag_string),named:{artist:or(e.tag_string_artist),character:or(e.tag_string_character),copyright:or(e.tag_string_copyright)},source:String(e.source??""),file:Ks(String(e.file_url??""))}]]:[]}))}function ka(t,e){for(let n of t){let r=e.get(n.md5);if(!r)continue;if(n.tags=[...new Set([...n.tags,...r.tags])],qs(n,r),n.solo=r.tags.includes("solo"),r.file.includes("/original/")){if(n.mirror={file:r.file,preview:r.file.replace("/original/","/360x360/").replace(/\.[a-z0-9]+$/i,".jpg")},!n.file)n.file=r.file,n.ext=Gr(r.file)}}}async function ya(t,e){let n=new Map;if(Nn(Pt)>Date.now())return n;for(let r=0;r<t.length;r+=An){let i=await(await ar(Pt,AA(t.slice(r,r+An)),e,{},L0)).text();for(let[s,o]of NA(i))n.set(s,o)}return n}function TA(t){let e=new URLSearchParams([...t.map((n)=>["search[name_array][]",n]),["only","name,is_deleted,urls"],["limit",String(t.length)]]);return`${Pt.origin}/artists.json?${e}`}function HA(t){return new Map(zs(t).flatMap((e)=>{let n=String(e.name??"");if(!n||e.is_deleted===!0)return[];let r=Array.isArray(e.urls)?e.urls:[];return[[n,r.flatMap((i)=>i.is_active===!1||!i.url?[]:[String(i.url)])]]}))}async function Y0(t,e){let n=new Map;if(Nn(Pt)>Date.now())return n;for(let r=0;r<t.length;r+=An){let i=await(await ar(Pt,TA(t.slice(r,r+An)),e,{},L0)).text();for(let[s,o]of HA(i))n.set(s,o)}return n}async function va(t,e,n){if(e.file||!t.guesses)return;for(let r of t.guesses(e))try{let i=await ar(t,r,n,{Range:`bytes=0-${F0}`}),s=Rn(new Uint8Array(await i.arrayBuffer()));return e.file=r,e.ext=Gr(r),s}catch(i){if(n.aborted||i.status!==404)throw i}throw Error(`${t.name} keeps no png or jpg of ${e.id}`)}async function V0(t,e){if(Nn(Pt)<=Date.now())try{let i=new URLSearchParams({"search[query]":t,"search[type]":"tag_query",limit:String(M0)}),s=`${Pt.origin}/autocomplete.json?${i}`;return gA(await(await ar(Pt,s,e,{},E0)).text())}catch(i){if(e.aborted)throw i}let n=Y.find((i)=>i.key==="yande"),r=new URLSearchParams({name:t,order:"count",limit:String(M0)});return bA(await(await ar(n,`${n.origin}/tag.json?${r}`,e,{},E0)).text())}function FA(t){try{return(JSON.parse(t).related_tags??[]).flatMap(({tag:n})=>n?.name?[{value:n.name,count:Number(n.post_count)||0}]:[])}catch{return[]}}async function Z0(t,e){if(Nn(Pt)>Date.now())return[];let n=new URLSearchParams({"search[query]":t,"search[category]":"character",limit:String(XR)});return FA(await(await ar(Pt,`${Pt.origin}/related_tag.json?${n}`,e,{},QR)).text())}function X0(t,e){return e.slice(0,t.ors?t.tagBudget:1)}async function Q0(t,e,n){let r=await ar(t,e,n,{Range:`bytes=0-${F0}`});return Rn(new Uint8Array(await r.arrayBuffer()))}async function pu(t,e,n,r){let i=await ar(t,e,n,{},0),s=Number(i.headers.get("content-length"))||0,o=i.body?.getReader();if(!o)return new Uint8Array(await i.arrayBuffer());let a=[],c=0;for(;;){let{done:l,value:d}=await o.read();if(l)break;a.push(d),c+=d.length,r?.(c,s)}let u=new Uint8Array(c),f=0;for(let l of a)u.set(l,f),f+=l.length;return u}var LA=["pixiv","x","bsky","fanbox","skeb","patreon","fantia"],t$=[["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?users\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/users/${t}`],["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/member\.php\?id=(\d+)$/i,(t)=>`https://www.pixiv.net/users/${t}`],["x",/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(?!(?:i|intent|home|search|explore|hashtag|share|settings)\/?$)(\w{1,15})\/?$/i,(t)=>`https://x.com/${t}`],["bsky",/^https?:\/\/bsky\.app\/profile\/(?!did:)([\w.-]+)\/?$/i,(t)=>`https://bsky.app/profile/${t}`],["fanbox",/^https?:\/\/([\w-]+)\.fanbox\.cc\/?$/i,(t)=>`https://${t}.fanbox.cc`],["fanbox",/^https?:\/\/(?:www\.)?pixiv\.net\/fanbox\/creator\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/fanbox/creator/${t}`],["skeb",/^https?:\/\/skeb\.jp\/@([\w-]+)\/?$/i,(t)=>`https://skeb.jp/@${t}`],["patreon",/^https?:\/\/(?:www\.)?patreon\.com\/(?:c\/)?(?!(?:user|posts|join|home|login|search)\/?$)([\w-]+)\/?$/i,(t)=>`https://www.patreon.com/${t}`],["fantia",/^https?:\/\/fantia\.jp\/fanclubs\/(\d+)\/?$/i,(t)=>`https://fantia.jp/fanclubs/${t}`]],CA=[[/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?artworks\/(\d+)/i,(t)=>`pixiv ${t[1]}`],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(\w{1,15})\/status\/\d+/i,(t)=>`x ${t[1]}`],[/^https?:\/\/bsky\.app\/profile\/([\w.-]+)\/post\//i,(t)=>`bsky ${t[1]}`],[/^https?:\/\/([\w-]+)\.fanbox\.cc\/posts\/\d+/i,(t)=>`fanbox ${t[1]}`]],jA=[[/^https?:\/\/(?:www\.)?pixiv\.net\//i,"pixiv"],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\//i,"x"],[/^https?:\/\/bsky\.app\//i,"bsky"]],_A=["x","pixiv","bsky"],BA={"shima.donmai.us":"danbooru.donmai.us"},GA=/^https?:\/\/[^\s\p{Cc}]+$/u;function e$(t){return GA.test(t)}function UA(t){return t$.find(([,e])=>e.test(t))?.[0]}function WA(t){return LA.flatMap((e)=>{for(let[,n,r]of t$.filter(([i])=>i===e))for(let i of t){let s=n.exec(i)?.[1];if(s)return[r(s)]}return[]})}function Sa(t){return(t??[]).flatMap((e)=>{let n=UA(e);return n?[{kind:n,url:e}]:[]})}function KA(t){for(let[e,n]of CA){let r=e.exec(t);if(r)return n(r)}try{return new URL(t).hostname.replace(/^www\./,"")}catch{return t}}function zA(t){try{let e=new URL(t),n=BA[e.hostname];if(n)e.hostname=n;return e.href}catch{return t}}function DA(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function qd(t){let e=t.source??"";return e$(e)?{label:KA(e),url:e}:void 0}function qA(t){let e=(t.from??"").split(" "),n=e[2]??"";return e$(n)?{label:e.slice(0,2).join(" "),url:n}:void 0}function JA(t){return jA.find(([e])=>e.test(t))?.[1]}function YA(t,e){let n=e?JA(e):void 0,r=Sa(t),i=_A.find((s)=>s!==n&&r.some((o)=>o.kind===s));return r.find((s)=>s.kind===i)?.url}function n$(t){let e=qd(t)?.url??qA(t)?.url,n=t.artist??[];if(!e&&n.length===0)return;let r=n.length>0?`Background art by ${n.map((i)=>{let s=YA(t.profiles?.[i],e);return s?`${i} (${DA(s)})`:i}).join(", ")}`:"Background art (artist unknown)";return e?`${r} · ${zA(e)}`:r}async function gu(t,e){let n=await Y0(t,e);return new Map(t.map((r)=>[r,WA(n.get(r)??[])]))}import{spawn as VA}from"node:child_process";var ZA=30000,XA=3,QA=97,Jd={from:0.45,to:0.75},bu=2,Ea=1,tN=Uint8Array.from({length:256},(t,e)=>Math.round(255*Math.min(1,Math.max(0,(e/255-Jd.from)/(Jd.to-Jd.from))))),eN=`ObjC.import('Vision')
|
|
4
4
|
ObjC.import('CoreImage')
|
|
5
5
|
ObjC.import('CoreGraphics')
|
|
6
6
|
function run(argv) {
|
|
@@ -20,8 +20,8 @@ function run(argv) {
|
|
|
20
20
|
$.CIImage.imageWithCVPixelBuffer(buffer), $.NSURL.fileURLWithPath(argv[1]), $.kCIFormatRGBA8,
|
|
21
21
|
$.CGColorSpaceCreateWithName($.kCGColorSpaceSRGB), $({}), error)
|
|
22
22
|
if (!written) throw new Error('write failed')
|
|
23
|
-
}`;function
|
|
24
|
-
`).at(-1)||`osascript exited ${a}`))})})}import{createHash as
|
|
23
|
+
}`;function Js(){return process.platform==="darwin"}function wu(t){return t>=XA&&t<=QA}function r$(t){let{width:e,height:n}=t,r=t.data.slice();for(let i=3;i<r.length;i+=4)r[i]=tN[r[i]];for(let i=0;i<n;i++)for(let s=0;s<e;s++){let o=(i*e+s)*4,a=r[o+3];if(a===0||a===255)continue;let c=0,u=0,f=0,l=0;for(let d=Math.max(0,i-bu);d<=Math.min(n-1,i+bu);d++)for(let h=Math.max(0,s-bu);h<=Math.min(e-1,s+bu);h++){let m=(d*e+h)*4;if(r[m+3]===255)c+=r[m],u+=r[m+1],f+=r[m+2],l++}if(l>0)r[o]=Math.round(c/l),r[o+1]=Math.round(u/l),r[o+2]=Math.round(f/l)}return{width:e,height:n,data:r}}function Ma(t,e,n){return new Promise((r,i)=>{let s=VA("osascript",["-l","JavaScript","-e",eN,t,e],{stdio:["ignore","ignore","pipe"],signal:AbortSignal.any([n,AbortSignal.timeout(ZA)])}),o="";s.stderr.on("data",(a)=>{o+=a}),s.on("error",i),s.on("close",(a)=>{if(a===0){r();return}i(Error(o.trim().split(`
|
|
24
|
+
`).at(-1)||`osascript exited ${a}`))})})}import{createHash as nN}from"node:crypto";import{existsSync as rN,readdirSync as iN,readFileSync as sN,rmSync as oN,statSync as aN,utimesSync as cN}from"node:fs";import{join as Vs}from"node:path";var uN=12,lN=/^[0-9a-f]{40}$/;function Ys(){return Vs(Tn(),"drawn")}function i$(t){return nN("sha1").update(JSON.stringify(t)).digest("hex")}function s$(t){return rN(Vs(Ys(),t))}function o$(t){let e=Vs(Ys(),t);try{let n=sN(e),r=n.readUInt32BE(0),i=JSON.parse(n.toString("utf8",4,4+r)),s=n.subarray(4+r,4+r+i.figure),o=n.subarray(4+r+i.figure,4+r+i.figure+i.picture);if(s.length!==i.figure||o.length!==i.picture)return;let a=new Date;return cN(e,a,a),{stem:i.stem,fill:i.fill,...i.peak?{peak:i.peak}:{},figure:s,picture:o}}catch{return}}function Yd(t,e){let n=Buffer.from(JSON.stringify({stem:e.stem,fill:e.fill,...e.peak?{peak:e.peak}:{},figure:e.figure.length,picture:e.picture.length})),r=Buffer.alloc(4);r.writeUInt32BE(n.length),C(Vs(Ys(),t),Buffer.concat([r,n,e.figure,e.picture])),fN()}function fN(){let t=iN(Ys()).filter((e)=>lN.test(e)).flatMap((e)=>{try{return[{name:e,at:aN(Vs(Ys(),e)).mtimeMs}]}catch{return[]}}).sort((e,n)=>n.at-e.at);for(let{name:e}of t.slice(uN))oN(Vs(Ys(),e),{force:!0})}import{readdirSync as d$,readFileSync as h$}from"node:fs";import{basename as wN,join as vu}from"node:path";/*!
|
|
25
25
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
26
26
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
27
27
|
*
|
|
@@ -47,9 +47,9 @@ function run(argv) {
|
|
|
47
47
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
48
48
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
49
49
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
50
|
-
*/function
|
|
50
|
+
*/function dN(t,e){let n=t.slice(0,e).split(/\r?\n/);return[n.length,n.pop().length+1]}function hN(t,e,n){let r=t.split(/\r?\n/),i="",s=(Math.log10(e+1)|0)+1;for(let o=e-1;o<=e+1;o++){let a=r[o-1];if(!a)continue;if(i+=o.toString().padEnd(s," "),i+=": ",i+=a,i+=`
|
|
51
51
|
`,o===e)i+=" ".repeat(s+n+2),i+=`^
|
|
52
|
-
`}return i}class q extends Error{line;column;codeblock;constructor(t,e){let[n,r]=
|
|
52
|
+
`}return i}class q extends Error{line;column;codeblock;constructor(t,e){let[n,r]=dN(e.toml,e.ptr),i=hN(e.toml,n,r);super(`Invalid TOML document: ${t}
|
|
53
53
|
|
|
54
54
|
${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(t,{toml:e.s,ptr:n??e.p})}}/*!
|
|
55
55
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
@@ -104,7 +104,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
|
|
|
104
104
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
105
105
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
106
106
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
107
|
-
*/var
|
|
107
|
+
*/var mN=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i;class Kr extends Date{#e=!1;#r=!1;#t=null;constructor(t,e,n){let r=!0,i=!0,s="Z",o;if(typeof t==="string")if(e)t:{if(e<3){if(+t.slice(11,13)>23){t="";break t}if(e===2)s=null,t+="Z";else if((o=t.charCodeAt(t.length-1))!==90&&o!==122)s=t.slice(t.length-6);if(n)t=t.slice(0,10)+"T"+t.slice(11)}else if(e===4)t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`;r=e!==4,i=e!==3}else{let a=t.match(mN);if(a){if(!a[1])r=!1,t=`0000-01-01T${t}`;if(i=!!a[2],i&&t[10]===" "&&(t=t.replace(" ","T")),a[2]&&+a[2]>23)t="";else if(s=a[3]||null,!s&&i)t+="Z"}else t=""}super(t);if(!isNaN(this.getTime()))this.#e=r,this.#r=i,this.#t=s}isDateTime(){return this.#e&&this.#r}isLocal(){return!this.#e||!this.#r||!this.#t}isDate(){return this.#e&&!this.#r}isTime(){return this.#r&&!this.#e}isValid(){return this.#e||this.#r}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#t===null)return t.slice(0,-1);if(this.#t==="Z"||this.#t==="z")return t;let e=+this.#t.slice(1,3)*60+ +this.#t.slice(4,6);return e=this.#t[0]==="-"?e:-e,new Date(this.getTime()-e*60000).toISOString().slice(0,-1)+this.#t}static wrapAsOffsetDateTime(t,e="Z"){let n=new Kr(t);return n.#t=e,n}static wrapAsLocalDateTime(t){let e=new Kr(t);return e.#t=null,e}static wrapAsLocalDate(t){let e=new Kr(t);return e.#r=!1,e.#t=null,e}static wrapAsLocalTime(t){let e=new Kr(t);return e.#e=!1,e.#t=null,e}}/*!
|
|
108
108
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
109
109
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
110
110
|
*
|
|
@@ -130,7 +130,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
|
|
|
130
130
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
131
131
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
132
132
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
133
|
-
*/function Te(t,e=10){return e===16?t>47&&t<58||t>64&&t<71||t>96&&t<103:t>47&&t<48+e}function
|
|
133
|
+
*/function Te(t,e=10){return e===16?t>47&&t<58||t>64&&t<71||t>96&&t<103:t>47&&t<48+e}function Zd(t,e){return t===32||t===9||t===10||t===13||e&&(t===e||t===44)||t===35}function Oa(t,e){let n=t.p,r=t.s.charCodeAt(t.p);if(r===91||r===123){t.d--||q.x("document contains excessively nested structures. aborting.",t);let i=r===91?u$(t):c$(t);return t.d++,i}if(r===34||r===39)return $u(t);if(r===116){if(t.s.charCodeAt(++t.p)!==114||t.s.charCodeAt(++t.p)!==117||t.s.charCodeAt(++t.p)!==101)q.x("invalid value",t,n);return t.p++,!0}if(r===102){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==108||t.s.charCodeAt(++t.p)!==115||t.s.charCodeAt(++t.p)!==101)q.x("invalid value",t,n);return t.p++,!1}if(r===43||r===45)return ku(t,t.p,t.s.charCodeAt(++t.p),44-r,e);if(t.s.charCodeAt(t.p+4)===45&&t.s.charCodeAt(t.p+7)===45)return pN(t,r,e);if(t.s.charCodeAt(t.p+2)===58)return gN(t,r,e);return ku(t,t.p,r,0,e)}function ku(t,e,n,r,i){let s=n,o=0,a=!1;if(s===105){if(t.s.charCodeAt(++t.p)!==110||t.s.charCodeAt(++t.p)!==102)q.x("invalid value",t,e);return t.p++,(r||1)/0}if(s===110){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==110)q.x("invalid value",t,e);return t.p++,NaN}if(s===48){if(++t.p>=t.s.length||Zd(s=t.s.charCodeAt(t.p),i))return t.bi===!0?0n:0;if(!r){if(s===120)return Vd(t,e,16,i);else if(s===98)return Vd(t,e,2,i);else if(s===111)return Vd(t,e,8,i)}if(s===46)o=2;else if(s===101||s===69)o=4;else q.x("illegal leading zero",t,e)}else if(!Te(s))q.x("invalid value",t,e);while(++t.p<t.s.length&&(s=t.s.charCodeAt(t.p),!Zd(s,i))){if(!o)o=1;if(s===95){if(!(o&1))q.x("illegal underscore",t);o+=11,a=!0}else if(o===1&&s===46)o=2;else if((o===1||o===3)&&(s===101||s===69))o=4;else if(o===4&&(s===43||s===45));else if(!Te(s))q.x("illegal character in numeric literal",t);else if(o>9)o-=11;else if(!(o&1))o++}if(!o){let u=(n-48)*(r||1);return t.bi===!0?BigInt(u):u}if(!(o&1))q.x("unfinished numeric value",t,e);let c=t.s.slice(e,t.p);if(a)c=c.replaceAll("_","");return o>1?parseFloat(c):a$(t,c,10,e)}function Vd(t,e,n,r){let i,s=1;while(++t.p<t.s.length&&(i=t.s.charCodeAt(t.p),!Zd(i,r)))if(i===95){if(s&1)q.x("illegal underscore",t);s=3}else if(!Te(i,n))q.x("illegal character in numeric literal",t);else if(s&1)s--;if(s&1)q.x("unfinished numeric value",t);let o=t.s.slice(e+2,t.p);if(s)o=o.replaceAll("_","");return a$(t,o,n,e)}function a$(t,e,n,r){if(t.bi!==!0)t:{let i=parseInt(e,n);if(!Number.isSafeInteger(i)){if(t.bi)break t;q.x("integer value cannot be represented losslessly",t,r)}return i}return n===10?BigInt(e):BigInt((n===2?"0b":n===8?"0o":"0x")+e)}function pN(t,e,n){let r=t.p++,i;if(!Te(e)||!Te(t.s.charCodeAt(t.p++))||!Te(t.s.charCodeAt(t.p++))||!Te(t.s.charCodeAt(t.p++)))return ku(t,t.p=r,e,0,n);if(t.p+=5,!Te(t.s.charCodeAt(t.p++)))q.x("invalid date-time: date part is malformed",t,r);if(t.p>=t.s.length||((e=t.s.charCodeAt(t.p))!==32||(i=!0,!Te(t.s.charCodeAt(t.p+1))))&&e!==84&&e!==116){let o=t.s.slice(r,t.p);return xa(t,o,3,!1,r)}if(t.s.charCodeAt(t.p+=3)!==58)q.x("invalid date-time: time part is malformed",t,r);if(t.s.charCodeAt(t.p+=3)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Te(t.s.charCodeAt(++t.p)));if(e=t.s.charCodeAt(t.p)){if(e===90||e===122){let o=t.s.slice(r,++t.p);return xa(t,o,1,i,r,"[+00:00]")}if(e===43||e===45){let o=t.s.slice(r,t.p+=6);return xa(t,o,1,i,r,!t.ld&&"["+t.s.slice(t.p-6,t.p)+"]")}}let s=t.s.slice(r,t.p);return xa(t,s,2,i,r)}function gN(t,e,n){let r=t.p;if(!Te(e)||!Te(t.s.charCodeAt(++t.p)))return ku(t,--t.p,e,0,n);if(t.s.charCodeAt(t.p+=4)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Te(t.s.charCodeAt(++t.p)));let i=t.s.slice(r,t.p);return xa(t,i,4,!1,r)}function xa(t,e,n,r,i,s){if(t.ld){let o=new Kr(e,n,r);if(!o.isValid())q.x("invalid date",t,i);return o}try{if(s)e+=s;switch(n){case 1:return Temporal.ZonedDateTime.from(e);case 2:return Temporal.PlainDateTime.from(e);case 3:return Temporal.PlainDate.from(e);case 4:return Temporal.PlainTime.from(e)}}catch(o){q.x(o instanceof Error?o.message:""+o,t,i)}}/*!
|
|
134
134
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
135
135
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
136
136
|
*
|
|
@@ -156,7 +156,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
|
|
|
156
156
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
157
157
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
158
158
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
159
|
-
*/function
|
|
159
|
+
*/function bN(t){for(;t.p<t.s.length;t.p++){let e=t.s.charCodeAt(t.p);if(e===10)break;if(e===13&&t.s.charCodeAt(t.p+1)===10){t.p++;break}if(e<32&&e!==9||e===127)q.x("control characters are not allowed in comments",t)}}function fn(t,e,n){let r;while(t.p<t.s.length){while(t.p<t.s.length&&((r=t.s.charCodeAt(t.p))===32||r===9||!e&&(r===10||r===13&&t.s.charCodeAt(t.p+1)===10)))t.p++;if(n||r!==35)break;bN(t)}}/*!
|
|
160
160
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
161
161
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
162
162
|
*
|
|
@@ -182,7 +182,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
|
|
|
182
182
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
183
183
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
184
184
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
185
|
-
*/function yu(t,e=61){let n,r=0,i=[],s,o=t.s.charCodeAt(n=t.p);do if(o===e){if(!r)q.x("unexpected end of key",t);if(r===1)i.push(t.s.slice(s,t.p));return t.p++,i}else if(o===46){if(!r)q.x("illegal empty bare key",t);if(r===1)i.push(t.s.slice(s,t.p));r=0}else if(!r&&(o===34||o===39)){if(o===t.s.charCodeAt(t.p+1)&&o===t.s.charCodeAt(t.p+2))q.x("illegal quoted key: multiline strings are not allowed",t);i.push($u(t)),r=2,t.p--}else if(o===32||o===9){if(r===1)i.push(t.s.slice(s,t.p)),r=2}else if(r===2||o<48&&o!==45||o>57&&o<65||o>90&&o<97&&o!==95||o>122)q.x("illegal character in key",t);else if(!r)r=1,s=t.p;while(o=t.s.charCodeAt(++t.p));q.x("incomplete key-value: cannot find end of key",t,n)}function
|
|
185
|
+
*/function yu(t,e=61){let n,r=0,i=[],s,o=t.s.charCodeAt(n=t.p);do if(o===e){if(!r)q.x("unexpected end of key",t);if(r===1)i.push(t.s.slice(s,t.p));return t.p++,i}else if(o===46){if(!r)q.x("illegal empty bare key",t);if(r===1)i.push(t.s.slice(s,t.p));r=0}else if(!r&&(o===34||o===39)){if(o===t.s.charCodeAt(t.p+1)&&o===t.s.charCodeAt(t.p+2))q.x("illegal quoted key: multiline strings are not allowed",t);i.push($u(t)),r=2,t.p--}else if(o===32||o===9){if(r===1)i.push(t.s.slice(s,t.p)),r=2}else if(r===2||o<48&&o!==45||o>57&&o<65||o>90&&o<97&&o!==95||o>122)q.x("illegal character in key",t);else if(!r)r=1,s=t.p;while(o=t.s.charCodeAt(++t.p));q.x("incomplete key-value: cannot find end of key",t,n)}function c$(t){let e=t.p++,n=Object.create(null),r=new Set,i;while(t.p<t.s.length){if(fn(t),(i=t.s.charCodeAt(t.p))===125)return t.p++,n;let s,o=n,a=!1,c=t.p,u=yu(t);for(let l=0;l<u.length;l++){if(l)o=a?o[s]:o[s]=Object.create(null);if(s=u[l],(a=Object.hasOwn(o,s))&&(typeof o[s]!=="object"||r.has(o[s])))q.x("trying to redefine an already defined value",t,c);let d=s==="__proto__";if(t.uk&&(d||s==="constructor")){o=t.uk!==1&&q.x("document contains an unsafe property",t,c);break}if(!a&&d)Object.defineProperty(o,s,{enumerable:!0,configurable:!0,writable:!0})}if(a)q.x("trying to redefine an already defined value",t,c);fn(t,!0,!0);let f=Oa(t,125);if(o&&typeof(o[s]=f)==="object")r.add(f);if(fn(t),(i=t.s.charCodeAt(t.p++))===125)return n;if(i!==44)q.x("expected comma or end of structure",t,t.p-1)}q.x("unfinished table",t,e)}function u$(t){let e=t.p++,n=[],r;while(t.p<t.s.length){if(fn(t),(r=t.s.charCodeAt(t.p))===93)return t.p++,n;if(n.push(Oa(t,93)),fn(t),(r=t.s.charCodeAt(t.p++))===93)return n;if(r!==44)q.x("expected comma or end of structure",t,t.p-1)}q.x("unfinished array",t,e)}/*!
|
|
186
186
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
187
187
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
188
188
|
*
|
|
@@ -208,7 +208,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
|
|
|
208
208
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
209
209
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
210
210
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
211
|
-
*/function
|
|
211
|
+
*/function l$(t,e,n,r,i){let s=n,o=r,a,c=!1,u;for(let f=0;f<e.length;f++){if(f){if(s=c?s[a]:s[a]=Object.create(null),o=(u=o[a]).c,i===0&&(u.t===1||u.t===2))return null;if(u.t===2){let l=s.length-1;s=s[l],o=o[l].c}}if(a=e[f],(c=Object.hasOwn(s,a))&&o[a]?.t===0&&o[a]?.d)return null;if(!c){let l=a==="__proto__";if(t.uk&&(l||a==="constructor"))return!1;if(l)Object.defineProperty(s,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0});o[a]={t:f<e.length-1&&i===2?3:i,d:!1,i:0,c:Object.create(null)}}}if(u=o[a],u.t!==i&&!(i===1&&u.t===3))return null;if(i===2){if(!u.d)u.d=!0,s[a]=[];s[a].push(s=Object.create(null)),u.c[u.i++]=u={t:1,d:!1,i:0,c:Object.create(null)}}if(u.d)return null;if(u.d=!0,i===1)s=c?s[a]:s[a]=Object.create(null);else if(i===0&&c)return null;return[a,s,u.c]}function f$(t,e,n){if(e===null||t.uk===2)q.x(e===null?"trying to redefine an already defined table or value":"document contains an unsafe property",t,n)}function Hi(t,e={}){let n={s:t,p:0,d:e.maxDepth??1000,bi:e.integersAsBigInt??!1,ld:e.useLegacyDate??!0,uk:e.unsafeKeyBehaviour==="throw"?2:e.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),i=Object.create(null),s,o=!1,a=r,c=i;if(t.charCodeAt(0)===65279)n.p++;fn(n);while(n.p<t.length){if(t.charCodeAt(n.p)===91){let u=t.charCodeAt(++n.p)===91;s=n.p+=+u,o=!1;let f=yu(n,93);if(u){if(t.charCodeAt(n.p)!==93)q.x("expected end of table array declaration",n);n.p++}let l=l$(n,f,r,i,u?2:1);if(!l)f$(n,l,s),o=!0;else c=l[2],a=l[1]}else{s=n.p;let u=yu(n),f=l$(n,u,a,c,0);if(!f&&!o)f$(n,f,s);fn(n,!0,!0);let l=Oa(n,void 0);if(f&&!o)f[1][f[0]]=l}if(fn(n,!0),n.p<t.length&&(s=t.charCodeAt(n.p))!==10&&(s!==13||t.charCodeAt(n.p+1)!==10))q.x("each key-value declaration must be followed by an end-of-line",n);fn(n)}return r}/*!
|
|
212
212
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
213
213
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
214
214
|
*
|
|
@@ -234,7 +234,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
|
|
|
234
234
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
235
235
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
236
236
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
237
|
-
*/var
|
|
237
|
+
*/var _G=!!"".isWellFormed;/*!
|
|
238
238
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
239
239
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
240
240
|
*
|
|
@@ -260,179 +260,177 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
|
|
|
260
260
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
261
261
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
262
262
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
263
|
-
*/var
|
|
264
|
-
`)[0]}`)}}function
|
|
263
|
+
*/var Dt=["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right"],ft="ttheme-marketplace.toml",$N=1e6,m$=3,p$=8,Xd="[a-z0-9]+(?:-[a-z0-9]+)*",kN=new RegExp(`^(?:(${Xd})@(${Xd})/)?(${Xd})$`),g$=["background","foreground","cursor","selection"];function et(t,e){throw Error(`${t}: ${e}`)}function Fi(t,e,n){if(typeof n!=="string"||!be(n))et(t,`${e} must be "#rrggbb" (lowercase), got ${JSON.stringify(n)}`);return n}function Eu(t,e,n){if(typeof n!=="string"||n.length===0)et(t,`${e} must be a non-empty string`);return n}function de(t){return t.replace("@","--").replace("/","--")}function j(t){return`ttheme-${de(t)}`}function rt(t){let e=t.indexOf("/");return e<0?void 0:t.slice(0,e)}function we(t){return t.slice(t.indexOf("/")+1)}function ee(t){let e=kN.exec(t);if(!e)return"takes lowercase letters, digits and single hyphens, as <palette> or <owner>@<marketplace>/<palette>";if((e[1]?.length??0)>39)return"has an owner longer than a GitHub handle can be";return(e[2]?.length??0)>40||(e[3]?.length??0)>40?"is longer than 40 characters":void 0}function Pa(t){if(/[\p{Cc}"$`\\]/u.test(t))return"holds a control character, a quote, $, ` or \\";return t.length>80?"is longer than 80 characters":void 0}function Su(t,e,n){let r=Eu(t,e,n),i=Pa(r);if(i)et(t,`${e} ${JSON.stringify(r)} ${i}`);return r}function th(t,e,n){let r=Eu(t,e,n),i=ee(r);if(i)et(t,`${e} "${r}" ${i}`);return r}function Zs(t){return t&&typeof t==="object"?t:{}}function yN(t,e,n){if(e===void 0)return[n.cursor,n.selectionBackground,n.background];let r=Array.isArray(e)?e:[e];if(r.length===0)et(t,"ghostty.icon_screen must not be empty");return r.map((i,s)=>Fi(t,`ghostty.icon_screen[${s}]`,i))}function vN(t,e,n){let r=Zs(e);return{iconGhost:r.icon_ghost===void 0?n.cursor:Fi(t,"ghostty.icon_ghost",r.icon_ghost),iconScreen:yN(t,r.icon_screen,n)}}function SN(t){return new Map([...g$.map((e)=>[e,t[e]]),...t.ansi.map((e,n)=>[`ansi${n}`,e])])}function EN(t,e,n){if(!Array.isArray(e)||e.length!==m$)et(t,`meta.signature must name exactly ${m$} palette slots`);let r=SN(n),i=[],s=[];for(let[o,a]of e.entries()){let c=`meta.signature[${o}]`,u=Eu(t,c,a),f=r.get(u);if(f===void 0)et(t,`${c} ${JSON.stringify(a)} is not a palette slot — use ${g$.join(", ")} or ansi0-ansi15`);i.push(u),s.push(f)}if(new Set(s).size!==s.length)et(t,"meta.signature slots must resolve to three different colors");return{names:i,colors:s}}function MN(t,e,n,r=!1){if(e===void 0)return;if(!n)et(t,"meta.booru_sites renames meta.booru per site, so it needs meta.booru");if(!e||typeof e!=="object"||Array.isArray(e))et(t,'meta.booru_sites must be a table of site = "tag" or site = ["tag", ...]');let i={};for(let[s,o]of Object.entries(e)){let a=Y.find((u)=>u.key===s);if(!a){if(r)continue;et(t,`meta.booru_sites.${s} is not a find site — use ${Y.map((u)=>u.key).join(", ")}`)}let c=typeof o==="string"?[o]:Array.isArray(o)?o:void 0;if(!c||c.some((u)=>typeof u!=="string"||u===""||/\s/.test(u)))et(t,`meta.booru_sites.${s} must be one tag or a list of tags, got ${JSON.stringify(o)}`);if(c.length>1&&!a.ors)et(t,`meta.booru_sites.${s} takes one tag — ${a.name} does not OR tags`);if(c.length>a.tagBudget)et(t,`meta.booru_sites.${s} takes ${a.tagBudget} tags at most — ${a.name} searches that many at a time`);i[s]=c}return i}function xN(t,e,n){if(e===void 0)return;if(!Array.isArray(e)||e.length===0||e.length>p$)et(t,`[[picture]] holds 1 to ${p$} pictures`);let r=e.flatMap((i,s)=>{let o=Zs(i),a=`picture[${s}]`,c=Y.find((h)=>h.key===o.site);if(!c){if(n)return[];et(t,`${a}.site must be one of ${Y.map((h)=>h.key).join(", ")}`)}if(typeof o.id!=="number"||!Number.isSafeInteger(o.id)||o.id<=0)et(t,`${a}.id must be the post's number on ${c.name}`);let{size:u,position:f,opacity:l}=o;if(u!==void 0&&u!=="fill"&&!(Number.isInteger(u)&&Number(u)>=20&&Number(u)<=999))et(t,`${a}.size must be "fill" or a percentage from 20 to 999`);let d=f===void 0||Dt.includes(f);if(!d&&!n)et(t,`${a}.position must be one of ${Dt.join(", ")}`);if(l!==void 0&&!(typeof l==="number"&&l>=0&&l<=1))et(t,`${a}.opacity must be a number from 0 to 1`);return[{site:c.key,id:o.id,...u!==void 0?{size:u}:{},...f!==void 0&&d?{position:f}:{},...l!==void 0?{opacity:l}:{}}]});return r.length>0?r:void 0}function eh(t,e){try{return Hi(e)}catch(n){et(t,`is not valid TOML — ${(n instanceof Error?n.message:String(n)).split(`
|
|
264
|
+
`)[0]}`)}}function nh(t,e){if(e===void 0)return[];if(!Array.isArray(e))et(t,"catalog must be [[catalog]] tables");let n=e.map((r,i)=>{let s=Zs(r);return{name:Su(t,`catalog[${i}].name`,s.name),...s.native===void 0?{}:{native:Su(t,`catalog[${i}].native`,s.native)},...s.lead===void 0?{}:{lead:th(t,`catalog[${i}].lead`,s.lead)}}});if(new Set(n.map((r)=>r.name)).size!==n.length)et(t,"catalog.name must be unique");return n}function ON(t,e){if(!Array.isArray(e)||e.length===0)et(t,'meta.native_names must be a list of names, like ["後藤ひとり"]');return e.map((n,r)=>{let i=Su(t,`meta.native_names[${r}]`,n);if(i.includes("|"))et(t,`meta.native_names[${r}] ${JSON.stringify(i)} contains |`);return i})}var Qd={"":["$schema","meta","colors","contrast","ghostty","picture"],meta:["name","base","ansi_source","booru","booru_sites","native_names","signature","order","role"],colors:["background","foreground","cursor","selection_background","ansi"],contrast:["waive","reason"],ghostty:["icon_ghost","icon_screen"],picture:["site","id","size","position","opacity"]};function b$(t,e){let n=eh(t,e),r=(i,s,o=[])=>s&&typeof s==="object"&&!Array.isArray(s)?Object.keys(s).filter((a)=>!o.includes(a)).map((a)=>i?`${i}.${a}`:a):[];return[...r("",n,Qd[""]),...["meta","colors","contrast","ghostty"].flatMap((i)=>r(i,n[i],Qd[i])),...(Array.isArray(n.picture)?n.picture:[]).flatMap((i,s)=>r(`picture[${s}]`,i,Qd.picture))]}function rh(t,e,n){let r=eh(t,e),i=Zs(r.meta),s=Zs(r.colors),o=Zs(r.contrast),a=s.ansi;if(!Array.isArray(a)||a.length!==16)et(t,`colors.ansi must hold exactly 16 colors, got ${Array.isArray(a)?a.length:typeof a}`);let c=th(t,"meta.name",i.name);if(c!==n.name)et(t,`meta.name "${c}" does not match its file — it lives at ${n.name}`);let u=n.open===!0;for(let T of["order","role"])if(u&&i[T]!==void 0)et(t,`meta.${T} is for the official palettes — a marketplace palette follows its base`);let f=i.role;if(f!==void 0&&f!=="default")et(t,`meta.role must be "default", got ${JSON.stringify(f)}`);let l=i.base===void 0?void 0:th(t,"meta.base",i.base);if(l!==void 0&&!u)et(t,"meta.base is for marketplace palettes");let d=l===void 0?void 0:n.bases?.get(l),h=n.catalog===void 0?void 0:n.catalogs.get(n.catalog);if(!u&&!h)et(t,n.catalog===void 0?"an official palette lives in a catalog folder, palettes/<catalog>/<palette>.toml":`its folder "${n.catalog}" has no [[catalog]] table in ${ft}`);let m=Fi(t,"colors.background",s.background),p=Fi(t,"colors.foreground",s.foreground),b=Fi(t,"colors.cursor",s.cursor),$=Fi(t,"colors.selection_background",s.selection_background),k=a.map((T,_)=>Fi(t,`colors.ansi[${_}]`,T)),v=EN(t,i.signature,{background:m,foreground:p,cursor:b,selection:$,ansi:k}),S=i.booru===void 0?void 0:Eu(t,"meta.booru",i.booru);if(S!==void 0&&/[\s\p{Cc}]/u.test(S))et(t,`meta.booru must be a single booru tag, got ${JSON.stringify(S)}`);let M=MN(t,i.booru_sites,S,n.foreign===!0),x=i.native_names===void 0?void 0:ON(t,i.native_names),N=Array.isArray(o.waive)?o.waive.map(String):[];if(N.length>0&&typeof o.reason!=="string")et(t,"contrast.waive needs a contrast.reason explaining why");let R=xN(t,r.picture,n.foreign===!0);return{name:c,...l?{base:l}:{},...n.catalog===void 0?{}:{catalog:n.catalog},native:h?.native,...x?{nativeNames:x}:{},lead:h?.lead===c,order:u?d?.order??$N:Number(i.order),role:f,ansiSource:u&&i.ansi_source===void 0?l??"original":Su(t,"meta.ansi_source",i.ansi_source),...S?{booru:S}:{},...M?{booruSites:M}:{},background:m,foreground:p,cursor:b,selectionBackground:$,ansi:k,signature:v.colors,signatureSlots:v.names,ghostty:vN(t,r.ghostty,{background:m,cursor:b,selectionBackground:$}),waive:N,waiveReason:typeof o.reason==="string"?o.reason:void 0,...R?{pictures:R}:{}}}function w$(t){let e=nh(ft,eh(ft,h$(vu(t,ft),"utf8")).catalog);if(e.length===0)et(ft,"needs at least one [[catalog]] table");let n=new Map(e.map((a)=>[a.name,a])),r=vu(t,"palettes"),i=d$(r,{withFileTypes:!0}).filter((a)=>!a.name.startsWith(".")).flatMap((a)=>{if(!a.isDirectory())et(`palettes/${a.name}`,"an official palette lives in a catalog folder, palettes/<catalog>/<palette>.toml");return d$(vu(r,a.name)).filter((c)=>c.endsWith(".toml")).map((c)=>rh(`palettes/${a.name}/${c}`,h$(vu(r,a.name,c),"utf8"),{name:wN(c,".toml"),catalog:a.name,catalogs:n}))}).sort((a,c)=>a.order-c.order);if(new Set(i.map((a)=>a.order)).size!==i.length)throw Error("themes: meta.order must be unique across all themes");let o=Map.groupBy(i,(a)=>a.catalog);for(let a of e){let c=o.get(a.name);if(!c)et(ft,`catalog "${a.name}" has no palettes`);if(!c.some((u)=>u.name===a.lead))et(ft,`catalog "${a.name}" needs a lead, one of its palettes`)}if([...o.keys()].join(`
|
|
265
265
|
`)!==e.map((a)=>a.name).join(`
|
|
266
|
-
`))
|
|
267
|
-
`)}function
|
|
268
|
-
`);for(let r of n){let i=e.palettes[r],s=
|
|
269
|
-
`)){let l=/^([a-z-]+)\s*=\s*(.*?)\s*$/.exec(f);if(l?.[1]==="config-file"&&c<4)i(
|
|
270
|
-
`)),h}function _$(t){return new Map(Object.entries(Tt(X(t)).palettes).flatMap(([e,n])=>{let[,r,i]=/^([a-z.]+)_(\d+)$/.exec(n.active)??[];return r&&i?[[e,{site:r,id:Number(i)}]]:[]}))}function B$(t){try{let e=In(new Uint8Array(io(t)));return e?{width:e.width,height:e.height}:void 0}catch{return}}function G$(t,e,n,r,i,s,o){let a=[n.original,n.cut].map((c)=>{if(!c)return"";try{let{size:u,mtimeMs:f}=xN(V(t,c));return`${c}:${u}:${f}`}catch{return}});if(!n.original||a.includes(void 0))return;return X0([PN,de(e),n.key,...a,r.width,r.height,i,s,s==="tone"?o:""])}function DN(t,e,n){if(!n.window||n.blur===void 0)return;let r=G$(t,e,n,n.window,n.blur,qe(n),n.tone??"");if(!r||Q0(r))return;try{Xd(r,{stem:n.stem,fill:n.fill,...n.peak?{peak:n.peak}:{},figure:io(V(t,`${n.stem}.png`)),picture:io(V(t,n.fill))})}catch{}}function U$(t,e,n,r,i,s,o,a,c){let u=c?void 0:G$(t,e,n,r,o,a,s.hue.color),f=u?t$(u):void 0;if(f)return{made:{stem:f.stem,fill:f.fill,files:[[`${f.stem}.png`,f.figure],[f.fill,f.picture]]},peak:f.peak,image:void 0};let l=i();if(!l)return null;let d=I$(l,r.width,r.height,o,a,c||n.cut!==void 0),h=C$(e,n.key,d,s.hue.color),m=d.coloring==="original"?d.peak:void 0;if(u)Xd(u,{stem:h.stem,fill:h.fill,...m?{peak:m}:{},figure:h.files[0]?.[1],picture:h.files[1]?.[1]});return{made:h,peak:m,image:l}}function Ha(t,e,n,r,i,s,o,a,c,u=qe(n)){let f=X(t),l=n.window??B$(V(f,n.fill))??Na,d=U$(f,e,n,l,r,i,s,u,c);if(!d)return null;let{made:h,peak:m,image:p}=d,b={...n,stem:h.stem,fill:h.fill,...j$(i.colors,i.hue,u,m),blur:s,window:l,...c?{cut:`${fh(e,n.key)}.cut.png`}:{},...c||n.cut?{matte:Oa}:{}};if(u==="original")delete b.tone;else delete b.peak;if(c&&p)C(V(f,`${fh(e,n.key)}.cut.png`),_d(ir(p)));if(h.stem===n.stem)return b;if(qe(n)!==u)DN(f,e,n);$h(f,h.files);let $=kh(f,n);Ta(f,b,qe(n)===u?$:{...$,opacity:void 0},o,a);let k=V(f,`${n.stem}.off.conf`);if(hh(k))SN(k,V(f,`${b.stem}.off.conf`));return b}function W$(t,e,n,r,i,s,o){let a=X(t),c=n.window??B$(V(a,n.fill))??Na;return U$(a,e,n,c,r,i,s,o,!1)!==null}function yh(t,e){let n=X(t),r=Tt(n),i=new Set,s=[];for(let{name:o,picture:a}of e){let c=r.palettes[o],u=c?.pictures.findIndex((l)=>l.key===a.key)??-1,f=c?.pictures[u];if(!c||!f)continue;if(c.pictures[u]=a,i.add(o),f.stem!==a.stem)s.push(f.stem)}if(i.size===0)return;Ui(n,r,[...i]);for(let o of s)wh(n,o)}function qN(t,e,n,r){let i=F$(t,n.stem).filter((a)=>a.endsWith(".png")).map((a)=>{let c=new Uint8Array(io(V(t,a)));return[a,au(c,r.color)??sr(ir(Wt(c)),r.color)]}),s=(a)=>i.find(([c])=>c===a)?.[1]??new Uint8Array,o=`${de(e)}.${y$("sha1").update(n.key).update(s(`${n.stem}.png`)).update(s(n.fill)).digest("hex").slice(0,8)}`;$h(t,i.map(([a,c])=>[o+a.slice(n.stem.length),c]));for(let a of["tune","off"]){let c=Gi(V(t,`${n.stem}.${a}.conf`));if(c!==void 0)C(V(t,`${o}.${a}.conf`),c.split(n.stem).join(o))}return{...n,stem:o,fill:o+n.fill.slice(n.stem.length),tone:r.color}}function k$(t,e){return qe(t)!=="original"&&t.tone!==void 0&&t.tone!==e.hue.color}function K$(t,e){let n=X(t),r=Tt(n),i=[],s=[];for(let[o,a]of Object.entries(r.palettes)){let c=e.get(o);if(!c||!a.pictures.some((u)=>k$(u,c)))continue;a.pictures=a.pictures.map((u)=>{if(!k$(u,c))return u;let f=qN(n,o,u,c.hue);if(f.stem!==u.stem)s.push(u.stem);return f}),i.push(o)}if(i.length>0){Ui(n,r,i);for(let o of s)wh(n,o)}return i}var JN=1;function dn(t){let{slot:e,color:n,opacity:r}=Tn({name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi,waived:t.waive},t.signatureSlots);return{name:t.name,...t.base?{base:t.base}:{},...t.catalog?{catalog:t.catalog}:{},...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},...t.lead?{lead:!0}:{},order:t.order,ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},...t.role==="default"?{default:!0}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,signature:t.signature,signatureSlots:t.signatureSlots,ansi:t.ansi,gate:Mn(t),...t.waive.length>0?{waived:t.waive}:{},backdrop:{slot:e,color:n,opacity:r},...t.pictures?{pictures:t.pictures}:{}}}function Fe(t){return{name:t.name,...t.base?{base:t.base}:{},...t.catalog?{catalog:t.catalog}:{},...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},lead:t.lead===!0,order:t.order,...t.default?{role:"default"}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selectionBackground:t.selection,ansi:t.ansi,signature:t.signature,signatureSlots:t.signatureSlots,ghostty:{iconGhost:t.cursor,iconScreen:[t.cursor,t.selection,t.background]},waive:t.waived??[],...t.pictures?{pictures:t.pictures}:{}}}var YN=6,VN=["ansi1","ansi2","ansi4","ansi3","ansi5","ansi6"];function uo(t){let e=(s)=>s.startsWith("ansi")?t.ansi[Number(s.slice(4))]:s==="foreground"?t.foreground:s==="cursor"?t.cursor:s==="selection"?t.selection:void 0,n=(s)=>s.startsWith("ansi")?`ansi${Number(s.slice(4))%8}`:s,r=new Set,i=[];for(let s of["foreground",...t.signatureSlots,...VN]){let o=e(s);if(i.length===YN||!o||r.has(n(s))||i.includes(o))continue;r.add(n(s)),i.push(o)}return i}function It(t){return t.filter((e)=>e.default!==!0)}function Iu(){return{schema:JN,version:lt.version,gate:Ne,palettes:[]}}import{existsSync as ZN,readFileSync as Au,statSync as z$}from"node:fs";import{homedir as mo}from"node:os";import{join as fo}from"node:path";var XN=["core","kowiki","unlicensed"],QN=["ko","ja","en","zh","other"],J$=["keys","keyAt","ownAt","owners","cards","cardAt","ranks","tags","tagAt","tagCard"],Y$="TTNI";function qr(t=mo()){return fo(process.env.XDG_CACHE_HOME??fo(t,".cache"),"ttheme","aninames")}var tT=/[ァ-ヶ]/g,eT=/[\s\p{P}\p{S}]+/gu;function ho(t){return t.normalize("NFKC").toLowerCase().replace(tT,(e)=>String.fromCharCode(e.charCodeAt(0)-96)).replace(eT,"")}function Wi(t,e){let n=ho(e);if(n===""){let r=e.toLowerCase();return t.some((i)=>i.toLowerCase().includes(r))}return t.some((r)=>ho(r).includes(n))}function Mh(t){return t.length>=2||/[\p{Script=Han}\p{Script=Hangul}\p{Script=Hiragana}]/u.test(t)}function V$(t){let e=qr(t);return XN.values().map((n)=>fo(e,`ttheme-${n}.json`)).filter((n)=>ZN(n)).toArray()}var nT=6;function Z$(t){return[`format ${nT}`,...t.map((e)=>`${e}:${z$(e).size}:${z$(e).mtimeMs}`)].join("|")}function rT(t){try{return JSON.parse(Au(t,"utf8"))}catch{return{}}}function iT(t){let e=new Map;for(let r of t)for(let[i,s]of Object.entries(rT(r))){let o=e.get(i)??{tags:new Set,names:[],japanese:[],generated:[],rank:0,weight:0,posts:0};o.posts=Math.max(o.posts,s.posts??0),o.generated.push(...s.generated??[]),o.japanese.push(...s.names?.ja??[]),o.tag??=s.tag;for(let a of s.danbooru??[])o.tags.add(a);for(let a of QN)o.names.push(...s.names?.[a]??[]);if(s.rank!==void 0){let a=s.weight??1;o.rank=(o.rank*o.weight+s.rank*a)/(o.weight+a),o.weight+=a}e.set(i,o)}let n=Math.log1p(e.values().reduce((r,i)=>Math.max(r,i.posts),1));return e.values().filter((r)=>r.tags.size>0).map((r)=>{let i=[...r.tags];return{tag:r.tag&&r.tags.has(r.tag)?r.tag:i[0],tags:i,names:[...new Set(r.names)],japanese:[...new Set(r.japanese)],generated:[...new Set(r.generated)],rank:r.posts>0?Math.log1p(r.posts)/n:r.rank}}).toArray()}function Fa(t,e){let n=new t(e.length);return n.set(e),n}function vh(t){let e=[0];for(let n of t)e.push(e.at(-1)+n.length);return{bytes:Buffer.concat(t),at:Fa(Uint32Array,e)}}function sT(t,e){let n=iT(t),r=new Map,i=(v,S,M)=>{let x=r.get(v),N=S*4+M;if(!x)r.set(v,[N]);else if(x.at(-1)>>>2!==S)x.push(N);else if(x.at(-1)<N)x[x.length-1]=N};n.forEach((v,S)=>{let M=[...v.names,...v.tags.map((x)=>x.replaceAll("_"," "))];for(let[x,N]of[[M,1],[v.generated,0]])for(let R of x){let T=ho(R);if(T&&Mh(T))i(T,S,2|N);let _=R.split(/[\s・·_]+/);if(_.length<2)continue;for(let K of _){let G=ho(K);if(G&&Mh(G))i(G,S,N)}}});let s=[...r.keys()].sort(),o=[0],a=[];for(let v of s){for(let S of r.get(v)??[])a.push(S);o.push(a.length)}let c=n.flatMap((v,S)=>v.tags.map((M)=>[M,S])).sort(([v],[S])=>v<S?-1:v>S?1:0),u=vh(s.map((v)=>Buffer.from(v))),f=vh(n.map((v)=>Buffer.from(JSON.stringify([v.tag,v.tags,v.names,v.japanese,v.generated])))),l=vh(c.map(([v])=>Buffer.from(v))),d={keys:u.bytes,keyAt:u.at,ownAt:Fa(Uint32Array,o),owners:Fa(Uint32Array,a),cards:f.bytes,cardAt:f.at,ranks:Fa(Float32Array,n.map((v)=>v.rank)),tags:l.bytes,tagAt:l.at,tagCard:Fa(Uint32Array,c.map(([,v])=>v))},h=J$.map((v)=>{let S=d[v];return Buffer.from(S.buffer,S.byteOffset,S.byteLength)}),m=0,p=h.map((v)=>{let S=[m,v.length];return m+=Math.ceil(v.length/4)*4,S}),b=Buffer.from(JSON.stringify({stamp:e,sections:p})),$=Math.ceil((8+b.length)/4)*4,k=Buffer.alloc($+m);k.write(Y$,0,"latin1"),k.writeUInt32LE(b.length,4),b.copy(k,8);for(let[v,S]of h.entries())S.copy(k,$+(p[v]?.[0]??0));return k}function D$(t,e,n,r){let i=e.byteOffset+n;if(i%4===0)return new t(e.buffer,i,r/4);return new t(e.buffer.slice(i,i+r),0,r/4)}function q$(t,e){if(t.toString("latin1",0,4)!==Y$)return;let n=t.readUInt32LE(4),r=JSON.parse(t.toString("utf8",8,8+n));if(r.stamp!==e)return;let i=Math.ceil((8+n)/4)*4,s=(c)=>{let[u,f]=r.sections[J$.indexOf(c)];return[i+u,f]},o=(c)=>{let[u,f]=s(c);return t.subarray(u,u+f)},a=(c)=>D$(Uint32Array,t,...s(c));return{keys:o("keys"),keyAt:a("keyAt"),ownAt:a("ownAt"),owners:a("owners"),cards:o("cards"),cardAt:a("cardAt"),ranks:D$(Float32Array,t,...s("ranks")),tags:o("tags"),tagAt:a("tagAt"),tagCard:a("tagCard")}}var Sh;function xh(t){try{let e=V$(t);if(e.length===0)return;let n=Z$(e);if(Sh?.stamp===n)return Sh.index;let r=fo(qr(t),"index.bin"),i;try{i=q$(Au(r),n)}catch{}if(!i){let s=sT(e,n);try{C(r,s)}catch{}i=q$(s,n)}if(i)Sh={stamp:n,index:i};return i}catch{return}}function X$(t,e){let[n,r,i,s,o]=JSON.parse(t.cards.toString("utf8",t.cardAt[e],t.cardAt[e+1]));return{tag:n,tags:r,names:i,japanese:s,generated:o,rank:t.ranks[e]??0}}function Q$(t,e,n,r){let i=0,s=n;while(i<s){let o=i+s>>1;if(t.toString("utf8",e[o],e[o+1])<r)i=o+1;else s=o}return i}function tk(t,e){let n=Buffer.from(e),r=t.tagCard.length,i=Q$(t.tags,t.tagAt,r,e);if(i>=r||t.tags.compare(n,0,n.length,t.tagAt[i],t.tagAt[i+1])!==0)return;return t.tagCard[i]}var Eh=/\s*[((][^()()]*[))]$/u,Ru={ko:4,en:4,ja:5,zh:3};function oT(t){if(!t)return[];let e=/\p{Script=Hangul}/u,n=/^[\p{Script=Latin}\p{N}\s.'’-]+$/u,r=new Set([...t.names,...t.generated].filter((l)=>!Eh.test(l))),i=(l)=>!Eh.test(l)||!r.has(l.replace(Eh,"")),s=t.names.filter(i),o=s.filter((l)=>e.test(l)),a=[...o,...t.generated.slice(0,o.length>0?0:2)],c=s.filter((l)=>n.test(l)),u=t.japanese.filter(i),f=s.filter((l)=>!e.test(l)&&!n.test(l)&&!u.includes(l));return[...new Set([...a.slice(0,Ru.ko),...c.slice(0,Ru.en),...u.slice(0,Ru.ja),...f.slice(0,Ru.zh)])]}var lo;function Nu(t,e=mo()){if(!t)return[];if(!lo)try{lo=JSON.parse(Au(fo(qr(e),"aliases.json"),"utf8")).tags}catch{lo={}}return lo[t]??[]}function Oh(t,e=mo()){try{return aT(t,e)}catch{return new Map}}function aT(t,e){let n=V$(e);if(n.length===0||t.length===0)return new Map;let r=Z$(n),i=fo(qr(e),"aliases.json"),s;try{s=JSON.parse(Au(i,"utf8"))}catch{}if(s?.stamp===r&&t.every((u)=>(u in s.tags)))return lo=s.tags,new Map(t.map((u)=>[u,s.tags[u]??[]]));let o=xh(e);if(!o)return new Map;let a=new Set([...t,...s?.stamp===r?Object.keys(s.tags):[]]),c={};for(let u of a){let f=tk(o,u);c[u]=f===void 0?[]:oT(X$(o,f))}try{C(i,`${JSON.stringify({stamp:r,tags:c})}
|
|
271
|
-
`)}catch{}return
|
|
266
|
+
`))et(ft,"the [[catalog]] tables must follow the order meta.order gives their palettes");return i}function $$(t){return t.filter((e)=>e.role===void 0)}function He(t){return[rt(t.name),t.catalog].filter((e)=>e!==void 0).join(" / ")}function Xs(t){return rt(t.name)??t.catalog??""}function Qs(t){let e=(r,i)=>r<i?-1:r>i?1:0,n=(r)=>rt(r.name)?r.name:r.base??r.name;return t.toSorted((r,i)=>Number(rt(r.name)!==void 0)-Number(rt(i.name)!==void 0)||e(Xs(r).toLowerCase(),Xs(i).toLowerCase())||Number(r.catalog===void 0)-Number(i.catalog===void 0)||e((r.catalog??"").toLowerCase(),(i.catalog??"").toLowerCase())||e(n(r),n(i))||Number(r.base!==void 0)-Number(i.base!==void 0)||e(r.name,i.name))}var Ia={width:2560,height:1550},TN=2,HN=2560,FN=0.1,R$=0.99,LN=2,Li={tall:1.15,reach:0.4,widest:0.95,headroom:0.04,margin:0.03,stands:12},CN=Mt(At("#19161e","#9b86c8",0.2)),jN="shelf",xu="originals",_N="images.json",sh=1;function BN(t,e){if(e==="background"||e==="foreground"||e==="cursor")return t[e];if(e==="selection"&&t.selection)return t.selection;let n=/^ansi(\d|1[0-5])$/.exec(e),r=n?t.ansi[Number(n[1])]:void 0;if(!r)throw Error(`${t.name} has no slot ${e}`);return r}function k$(t){if(t(1))return 1;let e=0,n=1;for(let r=0;r<40;r++){let i=(e+n)/2;if(t(i))e=i;else n=i}return e}function A$(t,e){let n=(o)=>sw({name:t.name,background:At(t.background,e,o),foreground:t.foreground,ansi:t.ansi,waive:t.waived??[]}).map((a)=>a.rule),r=new Set(n(0)),i=k$((o)=>n(o).every((a)=>r.has(a))),s=k$((o)=>Mt(At(t.background,e,o))<=CN);return{cap:i,matched:s,opacity:Math.floor(Math.min(i,s)*100)/100}}function y$(t,e){let n=BN(t,e),{cap:r,matched:i,opacity:s}=A$(t,n),o=st(t.background),a=Math.hypot(...st(n).map((c,u)=>(c-(o[u]??0))*s));return{slot:e,color:n,cap:r,matched:i,opacity:s,reach:a}}function N$(t,e){return A$(t,e).opacity}function Hn(t,e){let n=y$(t,"cursor");if(n.opacity>=FN)return n;return e.values().filter((r)=>r!=="cursor"&&r!=="background").map((r)=>y$(t,r)).reduce((r,i)=>i.reach>r.reach?i:r,n)}function GN(t){return m0(t)??{x:0,y:0,w:t.width,h:t.height}}function fh(t,e){if(t<=0||e<=0)return Ia;let n=Math.min(1,Ia.width/Math.max(t,e));return{width:Math.round(t*n),height:Math.round(e*n)}}function T$(t,e,n,r){if(r<Li.stands){let c=t.w*n>t.h*e?{x:t.x+(t.w-t.h*e/n)/2,y:t.y,w:t.h*e/n,h:t.h}:{x:t.x,y:t.y,w:t.w,h:t.w*n/e};return{crop:c,at:{x:0,y:0,w:e,h:n},focus:(c.y-t.y+c.h/2)/t.h}}let i=Math.max(Li.tall*n,Li.reach*e*t.h/t.w),s=i*t.w/t.h;if(s>Li.widest*e)s=Li.widest*e,i=s*t.h/t.w;let o=Li.headroom*n,a=Math.min(1,(n-o)/i);return{crop:{x:t.x,y:t.y,w:t.w,h:t.h*a},at:{x:e*(1-Li.margin)-s,y:o,w:s,h:i*a},focus:Math.min(1,(n/2-o)/i)}}function UN(t,e){return 0.299*(t[e]??0)+0.587*(t[e+1]??0)+0.114*(t[e+2]??0)}function WN(t,e){let n=new Uint32Array(256),r=Math.max(1,Math.floor(e.w*e.h/400000)),i=0;for(let o=0;o<e.w*e.h;o+=r){let a=((e.y+Math.floor(o/e.w))*t.width+e.x+o%e.w)*4;if((t.data[a+3]??0)>=128){let c=Math.round(UN(t.data,a));n[c]=(n[c]??0)+1,i++}}let s=0;for(let o=0;o<256&&i>0;o++)if(s+=n[o]??0,s>=i*R$)return Math.min(LN,Math.max(1,255/Math.max(1,o)));return 1}var ih=Float64Array.from({length:256},(t,e)=>{let n=e/255;return n<=0.04045?n/12.92:((n+0.055)/1.055)**2.4});function KN(t,e,n){return`#${[t,e,n].map((r)=>Math.round(r).toString(16).padStart(2,"0")).join("")}`}function zN(t,e){let n=new Uint32Array(256),r=new Float64Array(768),i=Math.max(1,Math.floor(e.w*e.h/400000)),s=0;for(let a=0;a<e.w*e.h;a+=i){let c=((e.y+Math.floor(a/e.w))*t.width+e.x+a%e.w)*4;if((t.data[c+3]??0)>=128){let u=t.data[c]??0,f=t.data[c+1]??0,l=t.data[c+2]??0,d=Math.round(255*Math.sqrt(0.2126*(ih[u]??0)+0.7152*(ih[f]??0)+0.0722*(ih[l]??0)));n[d]=(n[d]??0)+1,r[d*3]=(r[d*3]??0)+u,r[d*3+1]=(r[d*3+1]??0)+f,r[d*3+2]=(r[d*3+2]??0)+l,s++}}let o=0;for(let a=0;a<256&&s>0;a++)if(o+=n[a]??0,o>=s*R$){let c=Math.max(1,n[a]??1);return KN((r[a*3]??0)/c,(r[a*3+1]??0)/c,(r[a*3+2]??0)/c)}return"#ffffff"}function DN(t,e){let n=t.data,r=new Uint8Array(t.width*t.height);for(let i=0,s=0;i<r.length;i++,s+=4){let o=n[s+3];if(o===0)continue;let a=(0.299*n[s]+0.587*n[s+1]+0.114*n[s+2])*e;r[i]=(a>255?255:a)*o/255+0.5}return{width:t.width,height:t.height,data:r}}function H$(t,e,n){let r=Math.max(0,Math.round(t.at.x)),i=Math.max(0,Math.round(t.at.y)),s=Math.min(e,Math.round(t.at.x+t.at.w)),o=Math.min(n,Math.round(t.at.y+t.at.h));if(s<=r||o<=i)return;let a=t.crop.w/t.at.w,c=t.crop.h/t.at.h;return{x0:r,y0:i,x1:s,y1:o,box:{x:t.crop.x+(r-t.at.x)*a,y:t.crop.y+(i-t.at.y)*c,w:(s-r)*a,h:(o-i)*c}}}function Mu(t,e,n,r){let i=new Float32Array(n*r),s=H$(e,n,r);if(s){let o=Fd(t,s.box,s.x1-s.x0,s.y1-s.y0);for(let a=s.y0;a<s.y1;a++)i.set(o.data.subarray((a-s.y0)*(s.x1-s.x0),(a-s.y0+1)*(s.x1-s.x0)),a*n+s.x0)}return{width:n,height:r,data:i}}function dh(t,e,n,r){let i=new Uint8Array(n*r*4),s=H$(e,n,r);if(s){let o=s.x1-s.x0,a=_r(t,s.box,o,s.y1-s.y0);for(let c=s.y0;c<s.y1;c++)i.set(a.data.subarray((c-s.y0)*o*4,(c-s.y0+1)*o*4),(c*n+s.x0)*4)}return{width:n,height:r,data:i}}function oh(t,e){if(e<=0)return t;let{width:n,height:r}=t,i=[0,1,2,3].map(()=>({width:n,height:r,data:new Float32Array(n*r)}));for(let a=0;a<n*r;a++){let c=t.data[a*4+3]??0;for(let u=0;u<3;u++)i[u].data[a]=(t.data[a*4+u]??0)*c/255;i[3].data[a]=c}let s=i.map((a)=>ha(a,e).data),o=new Uint8Array(n*r*4);for(let a=0;a<n*r;a++){let c=s[3]?.[a]??0;if(c<=0)continue;for(let u=0;u<3;u++)o[a*4+u]=Math.min(255,Math.max(0,Math.round((s[u]?.[a]??0)*255/c)));o[a*4+3]=Math.min(255,Math.round(c))}return{width:n,height:r,data:o}}function hh(t,e=!1){let n=e?r$(t):t,r=GN(n),i,s;return{box:r,clear:rr(n,r),get ink(){return i??=DN(n,WN(n,r)),i},image:n,get peak(){return s??=zN(n,r),s}}}function F$(t,e,n,r,i,s){let o=hh(t,s),{box:a,clear:c,ink:u,image:f}=o,l=T$(a,e,n,c),d=Math.min(1,HN/Math.max(a.w,a.h)),h={x:0,y:0,w:Math.round(a.w*d),h:Math.round(a.h*d)},m=r*h.w*l.crop.w/(a.w*l.at.w);if(i==="original")return{coloring:i,figure:oh(_r(f,a,h.w,h.h),m),fill:oh(dh(f,l,e,n),r),focus:l.focus,peak:o.peak};let p=Mu(u,{crop:a,at:h,focus:l.focus},h.w,h.h),b=Mu(u,l,e,n);return{coloring:i,figure:Us(ha(p,m)),fill:Us(ha(b,r)),focus:l.focus}}function qN(t,e,n,r){let i=st(e),s=st(n),o=new Uint8Array(t.width*t.height*4);for(let a=0;a<t.data.length;a++){let c=(t.data[a]??0)/255*r;for(let u=0;u<3;u++)o[a*4+u]=Math.round((i[u]??0)+((s[u]??0)-(i[u]??0))*c);o[a*4+3]=255}return{width:t.width,height:t.height,data:o}}function JN(t,e,n){let r=st(e),i=new Uint8Array(t.width*t.height*4);for(let s=0;s<t.width*t.height;s++){let o=(t.data[s*4+3]??0)/255*n;for(let a=0;a<3;a++)i[s*4+a]=Math.round((r[a]??0)+((t.data[s*4+a]??0)-(r[a]??0))*o);i[s*4+3]=255}return{width:t.width,height:t.height,data:i}}function L$(t,e,n,r,i,s,o,a="tone"){let{box:c,clear:u,ink:f}=t,l=T$(c,r,i,u),d=Math.round(100*l.at.w/l.crop.w/Math.min(r/c.w,i/c.h)),h=o?.size??"fill",m=h==="fill"?l:{crop:c,at:so(c.w,c.h,r,i,h,o?.at??5,!1,h>100?Math.round(l.focus*100):-1),focus:l.focus},p=a==="original"?N$(e,t.peak):n.opacity,b=o?.opacity??p;return{image:a==="original"?JN(oh(dh(t.image,m,r,i),s),e.background,b):qN(Us(ha(Mu(f,m,r,i),s)),e.background,n.color,b),fill:d,opacity:p}}function V(t){return J(t,"ttheme","backgrounds")}function ah(t){return J(t,_N)}function Ci(t){try{return eo(t,"utf8")}catch{return}}function zr(t){try{return RN(t)}catch{return[]}}function Nt(t){let e=Ci(ah(t));if(e===void 0)return VN(t);let n=JSON.parse(e);if(n.version!==sh)throw Error(`${ah(t)} is version ${n.version} — this ttheme reads version ${sh}`);return n}function Ye(t){return t.coloring??"tone"}function mh(t){return{name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,...t.selection?{selection:t.selection}:{},ansi:t.ansi,...t.waived?{waived:t.waived}:{}}}function no(t){return{hue:{color:t.backdrop.color,opacity:t.backdrop.opacity},colors:mh(t)}}function ro(t){return t.tone===void 0&&Ye(t)==="tone"}function C$(t){return t.replace(/[\s,\p{Cc}]+/gu,"_")}function v$(t){return(t.artist??[]).map(C$).join(",")}function YN(t){let e=qd(t),n=n$(t)?.replace(/\p{Cc}+/gu,"");return[...n?[`# credit ${t.key} ${n}`]:[],...e?[`# source ${t.key} ${e.label} ${e.url}`]:[],...(t.artist??[]).flatMap((r)=>{let i=Sa(t.profiles?.[r]);return i.length>0?[`# profile ${t.key} ${C$(r)} ${i.map((s)=>`${s.kind} ${s.url}`).join(" ")}`]:[]})]}function j$(t,e){let n=e.pictures.findIndex((i)=>i.key===e.active),r=e.pictures[n];return[...r.artist?.length?[`# by ${v$(r)}`]:[],...r.from?[`# from ${r.from}`]:[],`# image ${r.key} ${n+1}/${e.pictures.length}`,...e.pictures.map((i)=>[`# picture ${i.key} ${i.stem} ${i.fill} ${i.opacity} ${i.artist?.length?v$(i):"-"}`,...i.from?[i.from]:[]].join(" ")),...e.pictures.filter((i)=>Ye(i)==="original").map((i)=>`# colors ${i.key} original`),...e.pictures.flatMap(YN),`background-image = ${J(t,r.fill)}`,"background-image-fit = cover","background-image-position = top-right",`background-image-opacity = ${r.opacity}`,`config-file = ?${r.stem}.tune.conf`,`config-file = ?${r.stem}.off.conf`,""].join(`
|
|
267
|
+
`)}function _$(t){let e=V(t);for(let[n,r]of Object.entries(Nt(e).palettes)){let i=J(e,`${de(n)}.conf`),s=j$(e,r);if(Ci(i)!==s)C(i,s)}}function ji(t,e,n){C(ah(t),`${JSON.stringify(e,null,2)}
|
|
268
|
+
`);for(let r of n){let i=e.palettes[r],s=J(t,`${de(r)}.conf`);if(i)C(s,j$(t,i));else to(s,{force:!0})}}function B$(t,e){let n=V(t),r=Nt(n),i=[];for(let[s,o]of e){let a=r.palettes[s];if(a&&!r.palettes[o])r.palettes[o]=a,delete r.palettes[s],i.push(s,o)}if(i.length>0)ji(n,r,i)}function G$(t,e){return zr(t).filter((n)=>n.startsWith(`${e}.`)||n.startsWith(`${e}@`))}function ph(t,e){for(let n of G$(t,e))to(J(t,n),{force:!0})}function U$(t,e){ph(t,e.stem);for(let n of[e.original,e.cut])if(n)to(J(t,n),{force:!0})}function S$(t,e,n,r){let i=I$(/^background-image\s*=\s*(.*?)\s*$/m.exec(e??"")?.[1]??"");if(!i.startsWith(`${t}.`)||!/^\.[0-9a-f]{8}@fill-\d+\.png$/.test(i.slice(t.length)))return;let s=i.slice(0,i.indexOf("@")),o=r??/^# image (\S+)$/m.exec(e??"")?.[1]??`picture_${s.slice(t.length+1)}`,a=/^# from (.+)$/m.exec(e??"")?.[1],c=Number(/^background-image-opacity\s*=\s*(\S+)/m.exec(e??"")?.[1]??1),u=n.find((f)=>f.startsWith(`${t}-${o}.`));return{key:o,stem:s,fill:i,opacity:Number.isFinite(c)?c:1,...a?{from:a}:{},...u?{original:J(xu,u)}:{}}}function E$(t,e){if(lh(t))P$(t,e)}function VN(t){let e={version:sh,palettes:{}};if(!lh(t))return e;let n=zr(J(t,xu)),r=zr(t).filter((s)=>s.endsWith(".conf")&&s!=="shown.conf"&&!/\.(tune|off)\.conf$/.test(s)).map((s)=>s.slice(0,-5)),i=J(t,jN);for(let s of new Set([...r,...zr(i)])){let o=[],a=S$(s,Ci(J(t,`${s}.conf`)),n);if(a)E$(J(t,`${s}.tune.conf`),J(t,`${a.stem}.tune.conf`)),E$(J(t,`${s}.off.conf`),J(t,`${a.stem}.off.conf`)),o.push(a);for(let c of zr(J(i,s))){let u=J(i,s,c),f=S$(s,Ci(J(u,".conf")),n,c);if(!f)continue;for(let l of zr(u)){let d=l===".tune.conf"||l===".off.conf"?`${f.stem}${l}`:`${s}${l}`;if(l!==".conf")P$(J(u,l),J(t,d))}to(u,{recursive:!0}),o.push(f)}if(zr(J(i,s)).length===0)to(J(i,s),{recursive:!0,force:!0});if(o.length>0)o.sort((c,u)=>c.key<u.key?-1:c.key>u.key?1:0),e.palettes[s]={active:(a??o[0]).key,pictures:o}}if(zr(i).length===0)to(i,{recursive:!0,force:!0});return ji(t,e,Object.keys(e.palettes)),e}function M$(t,e,n){return e.startsWith("~/")?J(n,e.slice(2)):NN(e)?e:J(t,e)}function Fe(t,e,n){let r=new Map,i=(a,c)=>{let u=Ci(a);if(u===void 0)return!1;for(let f of u.split(`
|
|
269
|
+
`)){let l=/^([a-z-]+)\s*=\s*(.*?)\s*$/.exec(f);if(l?.[1]==="config-file"&&c<4)i(M$(t,l[2].replace(/^\?/,""),n),c+1);else if(l&&/^background-image(?:-fit|-opacity|-position)?$/.test(l[1]))r.set(l[1],l[2])}return!0};if(!i(J(t,`${de(e)}.conf`),0))return;let s=r.get("background-image")??"";if(s==="")return;let o=Number(r.get("background-image-opacity")??1);return{image:M$(t,s,n),opacity:Number.isFinite(o)?o:1,cover:r.get("background-image-fit")==="cover",position:r.get("background-image-position")??"center"}}function he(t){return`${t.site}_${t.id}`}function Ou(t,e,n){let r=V(t),i=Nt(r),s=i.palettes[e];if(!s)throw Error(`${e} has no image`);let o=s.pictures.findIndex((u)=>u.key===(n??s.active));if(o===-1)throw Error(`${e} has no picture ${n}`);let[a]=s.pictures.splice(o,1);U$(r,a);let c=s.pictures[o%Math.max(s.pictures.length,1)];if(!c)delete i.palettes[e];else if(a.key===s.active)s.active=c.key;return ji(r,i,[e]),{key:a.key,left:s.pictures.length}}function W$(t,e,n,r){let i=n.coloring==="original"?Je(n.figure):sr(n.figure,r),s=n.coloring==="original"?Je(n.fill):sr(n.fill,r),o=`${de(t)}.${O$("sha1").update(e).update(i).update(s).digest("hex").slice(0,8)}`,a=`${o}@fill-${Math.round(n.focus*100)}.png`;return{stem:o,fill:a,files:[[`${o}.png`,i],[a,s]]}}function K$(t,e,n,r){return n==="original"&&r?{coloring:"original",opacity:N$(t,r),peak:r}:{coloring:"tone",opacity:e.opacity,tone:e.color}}function ch(t,e){return J(xu,`${de(t)}-${e}`)}function gh(t,e){return e.map(([n,r])=>{let i=J(t,n);return C(i,r),i})}function Pu(t,e,n,r,i,s,o,a="tone"){let c=V(t),u=e.name,f=he(i),l=Nt(c),d=l.palettes[u]??{active:f,pictures:[]},h=fh(s.width,s.height),m=F$(r,h.width,h.height,o,a,i.cut===!0),p=W$(u,f,m,n.color),b=ch(u,f),$={key:f,stem:p.stem,fill:p.fill,...K$(e,n,m.coloring,m.coloring==="original"?m.peak:void 0),blur:o,window:h,...i.from?{from:i.from}:{},...i.artist?.length?{artist:i.artist}:{},...i.profiles&&Object.keys(i.profiles).length>0?{profiles:i.profiles}:{},...i.source?{source:i.source}:{},original:`${b}.${i.ext}`,...i.cut?{cut:`${b}.cut.png`,matte:Ea}:{}},k=d.pictures.find((S)=>S.key===f);if(k)U$(c,k);IN(J(c,xu),{recursive:!0});let v=gh(c,[...p.files,[$.original,i.bytes],...$.cut?[[$.cut,Ld(ir(r))]]:[]]);return d.pictures=k?d.pictures.map((S)=>S===k?$:S):[...d.pictures,$],d.active=f,l.palettes[u]=d,ji(c,l,[u]),[...v,J(c,`${de(u)}.conf`)]}function io(t,e,n){let r=V(t),i=Nt(r),s=i.palettes[e],o=s?s.pictures.findIndex((a)=>a.key===n):-1;if(!s||o===-1)throw Error(`${e} has no picture ${n}`);if(s.active!==n)s.active=n,ji(r,i,[e]);return{at:o+1,of:s.pictures.length}}function $e(t,e){let n=Nt(V(t)).palettes[e];if(!n)return[];return[...n.pictures.filter((i)=>i.key===n.active),...n.pictures.filter((i)=>i.key!==n.active)]}var uh="top-right";function so(t,e,n,r,i,s,o,a=-1){let c=Math.trunc,u=(s-1)%3,f=c((s-1)/3),l=n*e>=r*t!==!o,d=l?c(i*n/100):c(i*r*t/(100*e)),h=l?c(i*n*e/(100*t)):c(i*r/100),m=c(u*(n-d)/2),p=c(f*(r-h)/2);if(a>=0){if(d>n)m=c((n-d)/2);if(h>r)p=Math.max(r-h,Math.min(0,c(r/2)-c(a*h/100)))}return{x:m,y:p,w:d,h}}function bh(t,e){let n=Ci(J(t,`${e.stem}.tune.conf`));if(n===void 0)return{};let r=(u)=>new RegExp(`^${u}\\s*=\\s*(.*?)\\s*$`,"m").exec(n)?.[1]??"",i=I$(r("background-image")),s=/@(\d+)-/.exec(i)?.[1],o=/@fill-\d+\.png$/.test(i)?"fill":s?Number(s):r("background-image-fit")==="cover"?"fill":100,a=r("background-image-position").replace("center-center","center")||"center",c=Number(r("background-image-opacity")||1);return{...o!=="fill"?{size:o}:{},...a!==uh?{position:a}:{},...Number.isFinite(c)&&c!==e.opacity?{opacity:c}:{}}}function Ra(t,e,n,r,i){let s=n.size??"fill",o=n.position??uh,a=n.opacity??e.opacity;if(s==="fill"&&o===uh&&a===e.opacity)return;let c=Dt.indexOf(o)+1,u=J(t,`${e.stem}.png`),f=J(t,e.fill),l=!0,d=typeof s==="number"&&(s>100||!r&&o!=="center");if(s===100&&!d)f=u,l=!1;else if(typeof s==="number"){if(ro(e))throw Error(`${e.stem} was drawn before pictures kept their tone — init draws it again`);let m=Ut(new Uint8Array(eo(u))),{width:p,height:b}=d?Ia:m,$=d?Number(/@fill-(\d+)\.png$/.exec(e.fill)?.[1]??50):-1,k=so(m.width,m.height,p,b,s,c,!1,$);f=J(t,`${e.stem}@${s}-${o}${d?`-${p}x${b}`:""}.png`);let S={crop:{x:0,y:0,w:m.width,h:m.height},at:k,focus:$};C(f,e.tone?sr(Us(Mu(ir(m),S,p,b)),e.tone):Je(dh(m,S,p,b))),l=d}let h=J(t,`${e.stem}.tune.conf`);return C(h,[`background-image = ${f.startsWith(`${i}/`)?`~${f.slice(i.length)}`:f}`,`background-image-fit = ${l?"cover":"contain"}`,`background-image-position = ${o}`,`background-image-opacity = ${a}`,""].join(`
|
|
270
|
+
`)),h}function z$(t){return new Map(Object.entries(Nt(V(t)).palettes).flatMap(([e,n])=>{let[,r,i]=/^([a-z.]+)_(\d+)$/.exec(n.active)??[];return r&&i?[[e,{site:r,id:Number(i)}]]:[]}))}function D$(t){try{let e=Rn(new Uint8Array(eo(t)));return e?{width:e.width,height:e.height}:void 0}catch{return}}function q$(t,e,n,r,i,s,o){let a=[n.original,n.cut].map((c)=>{if(!c)return"";try{let{size:u,mtimeMs:f}=AN(J(t,c));return`${c}:${u}:${f}`}catch{return}});if(!n.original||a.includes(void 0))return;return i$([TN,de(e),n.key,...a,r.width,r.height,i,s,s==="tone"?o:""])}function ZN(t,e,n){if(!n.window||n.blur===void 0)return;let r=q$(t,e,n,n.window,n.blur,Ye(n),n.tone??"");if(!r||s$(r))return;try{Yd(r,{stem:n.stem,fill:n.fill,...n.peak?{peak:n.peak}:{},figure:eo(J(t,`${n.stem}.png`)),picture:eo(J(t,n.fill))})}catch{}}function J$(t,e,n,r,i,s,o,a,c){let u=c?void 0:q$(t,e,n,r,o,a,s.hue.color),f=u?o$(u):void 0;if(f)return{made:{stem:f.stem,fill:f.fill,files:[[`${f.stem}.png`,f.figure],[f.fill,f.picture]]},peak:f.peak,image:void 0};let l=i();if(!l)return null;let d=F$(l,r.width,r.height,o,a,c||n.cut!==void 0),h=W$(e,n.key,d,s.hue.color),m=d.coloring==="original"?d.peak:void 0;if(u)Yd(u,{stem:h.stem,fill:h.fill,...m?{peak:m}:{},figure:h.files[0]?.[1],picture:h.files[1]?.[1]});return{made:h,peak:m,image:l}}function Aa(t,e,n,r,i,s,o,a,c,u=Ye(n)){let f=V(t),l=n.window??D$(J(f,n.fill))??Ia,d=J$(f,e,n,l,r,i,s,u,c);if(!d)return null;let{made:h,peak:m,image:p}=d,b={...n,stem:h.stem,fill:h.fill,...K$(i.colors,i.hue,u,m),blur:s,window:l,...c?{cut:`${ch(e,n.key)}.cut.png`}:{},...c||n.cut?{matte:Ea}:{}};if(u==="original")delete b.tone;else delete b.peak;if(c&&p)C(J(f,`${ch(e,n.key)}.cut.png`),Ld(ir(p)));if(h.stem===n.stem)return b;if(Ye(n)!==u)ZN(f,e,n);gh(f,h.files);let $=bh(f,n);Ra(f,b,Ye(n)===u?$:{...$,opacity:void 0},o,a);let k=J(f,`${n.stem}.off.conf`);if(lh(k))PN(k,J(f,`${b.stem}.off.conf`));return b}function Y$(t,e,n,r,i,s,o){let a=V(t),c=n.window??D$(J(a,n.fill))??Ia;return J$(a,e,n,c,r,i,s,o,!1)!==null}function wh(t,e){let n=V(t),r=Nt(n),i=new Set,s=[];for(let{name:o,picture:a}of e){let c=r.palettes[o],u=c?.pictures.findIndex((l)=>l.key===a.key)??-1,f=c?.pictures[u];if(!c||!f)continue;if(c.pictures[u]=a,i.add(o),f.stem!==a.stem)s.push(f.stem)}if(i.size===0)return;ji(n,r,[...i]);for(let o of s)ph(n,o)}function XN(t,e,n,r){let i=G$(t,n.stem).filter((a)=>a.endsWith(".png")).map((a)=>{let c=new Uint8Array(eo(J(t,a)));return[a,au(c,r.color)??sr(ir(Ut(c)),r.color)]}),s=(a)=>i.find(([c])=>c===a)?.[1]??new Uint8Array,o=`${de(e)}.${O$("sha1").update(n.key).update(s(`${n.stem}.png`)).update(s(n.fill)).digest("hex").slice(0,8)}`;gh(t,i.map(([a,c])=>[o+a.slice(n.stem.length),c]));for(let a of["tune","off"]){let c=Ci(J(t,`${n.stem}.${a}.conf`));if(c!==void 0)C(J(t,`${o}.${a}.conf`),c.split(n.stem).join(o))}return{...n,stem:o,fill:o+n.fill.slice(n.stem.length),tone:r.color}}function x$(t,e){return Ye(t)!=="original"&&t.tone!==void 0&&t.tone!==e.hue.color}function V$(t,e){let n=V(t),r=Nt(n),i=[],s=[];for(let[o,a]of Object.entries(r.palettes)){let c=e.get(o);if(!c||!a.pictures.some((u)=>x$(u,c)))continue;a.pictures=a.pictures.map((u)=>{if(!x$(u,c))return u;let f=XN(n,o,u,c.hue);if(f.stem!==u.stem)s.push(u.stem);return f}),i.push(o)}if(i.length>0){ji(n,r,i);for(let o of s)ph(n,o)}return i}var QN=1;function dn(t){let{slot:e,color:n,opacity:r}=Hn({name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi,waived:t.waive},t.signatureSlots);return{name:t.name,...t.base?{base:t.base}:{},...t.catalog?{catalog:t.catalog}:{},...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},...t.lead?{lead:!0}:{},order:t.order,ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},...t.role==="default"?{default:!0}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,signature:t.signature,signatureSlots:t.signatureSlots,ansi:t.ansi,gate:xn(t),...t.waive.length>0?{waived:t.waive}:{},backdrop:{slot:e,color:n,opacity:r},...t.pictures?{pictures:t.pictures}:{}}}function Le(t){return{name:t.name,...t.base?{base:t.base}:{},...t.catalog?{catalog:t.catalog}:{},...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},lead:t.lead===!0,order:t.order,...t.default?{role:"default"}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selectionBackground:t.selection,ansi:t.ansi,signature:t.signature,signatureSlots:t.signatureSlots,ghostty:{iconGhost:t.cursor,iconScreen:[t.cursor,t.selection,t.background]},waive:t.waived??[],...t.pictures?{pictures:t.pictures}:{}}}var tT=6,eT=["ansi1","ansi2","ansi4","ansi3","ansi5","ansi6"];function oo(t){let e=(s)=>s.startsWith("ansi")?t.ansi[Number(s.slice(4))]:s==="foreground"?t.foreground:s==="cursor"?t.cursor:s==="selection"?t.selection:void 0,n=(s)=>s.startsWith("ansi")?`ansi${Number(s.slice(4))%8}`:s,r=new Set,i=[];for(let s of["foreground",...t.signatureSlots,...eT]){let o=e(s);if(i.length===tT||!o||r.has(n(s))||i.includes(o))continue;r.add(n(s)),i.push(o)}return i}function _t(t){return t.filter((e)=>e.default!==!0)}function Iu(){return{schema:QN,version:lt.version,gate:Ne,palettes:[]}}import{existsSync as nT,readFileSync as Au,statSync as Z$}from"node:fs";import{homedir as lo}from"node:os";import{join as co}from"node:path";var rT=["core","kowiki","unlicensed"],iT=["ko","ja","en","zh","other"],tk=["keys","keyAt","ownAt","owners","cards","cardAt","ranks","tags","tagAt","tagCard"],ek="TTNI";function Dr(t=lo()){return co(process.env.XDG_CACHE_HOME??co(t,".cache"),"ttheme","aninames")}var sT=/[ァ-ヶ]/g,oT=/[\s\p{P}\p{S}]+/gu;function uo(t){return t.normalize("NFKC").toLowerCase().replace(sT,(e)=>String.fromCharCode(e.charCodeAt(0)-96)).replace(oT,"")}function fo(t,e){let n=uo(e);if(n===""){let r=e.toLowerCase();return t.some((i)=>i.toLowerCase().includes(r))}return t.some((r)=>uo(r).includes(n))}function vh(t){return t.length>=2||/[\p{Script=Han}\p{Script=Hangul}\p{Script=Hiragana}]/u.test(t)}function nk(t){let e=Dr(t);return rT.values().map((n)=>co(e,`ttheme-${n}.json`)).filter((n)=>nT(n)).toArray()}var aT=6;function rk(t){return[`format ${aT}`,...t.map((e)=>`${e}:${Z$(e).size}:${Z$(e).mtimeMs}`)].join("|")}function cT(t){try{return JSON.parse(Au(t,"utf8"))}catch{return{}}}function uT(t){let e=new Map;for(let r of t)for(let[i,s]of Object.entries(cT(r))){let o=e.get(i)??{tags:new Set,names:[],japanese:[],generated:[],rank:0,weight:0,posts:0};o.posts=Math.max(o.posts,s.posts??0),o.generated.push(...s.generated??[]),o.japanese.push(...s.names?.ja??[]),o.tag??=s.tag;for(let a of s.danbooru??[])o.tags.add(a);for(let a of iT)o.names.push(...s.names?.[a]??[]);if(s.rank!==void 0){let a=s.weight??1;o.rank=(o.rank*o.weight+s.rank*a)/(o.weight+a),o.weight+=a}e.set(i,o)}let n=Math.log1p(e.values().reduce((r,i)=>Math.max(r,i.posts),1));return e.values().filter((r)=>r.tags.size>0).map((r)=>{let i=[...r.tags];return{tag:r.tag&&r.tags.has(r.tag)?r.tag:i[0],tags:i,names:[...new Set(r.names)],japanese:[...new Set(r.japanese)],generated:[...new Set(r.generated)],rank:r.posts>0?Math.log1p(r.posts)/n:r.rank}}).toArray()}function Na(t,e){let n=new t(e.length);return n.set(e),n}function $h(t){let e=[0];for(let n of t)e.push(e.at(-1)+n.length);return{bytes:Buffer.concat(t),at:Na(Uint32Array,e)}}function lT(t,e){let n=uT(t),r=new Map,i=(v,S,M)=>{let x=r.get(v),N=S*4+M;if(!x)r.set(v,[N]);else if(x.at(-1)>>>2!==S)x.push(N);else if(x.at(-1)<N)x[x.length-1]=N};n.forEach((v,S)=>{let M=[...v.names,...v.tags.map((x)=>x.replaceAll("_"," "))];for(let[x,N]of[[M,1],[v.generated,0]])for(let R of x){let T=uo(R);if(T&&vh(T))i(T,S,2|N);let _=R.split(/[\s・·_]+/);if(_.length<2)continue;for(let W of _){let B=uo(W);if(B&&vh(B))i(B,S,N)}}});let s=[...r.keys()].sort(),o=[0],a=[];for(let v of s){for(let S of r.get(v)??[])a.push(S);o.push(a.length)}let c=n.flatMap((v,S)=>v.tags.map((M)=>[M,S])).sort(([v],[S])=>v<S?-1:v>S?1:0),u=$h(s.map((v)=>Buffer.from(v))),f=$h(n.map((v)=>Buffer.from(JSON.stringify([v.tag,v.tags,v.names,v.japanese,v.generated])))),l=$h(c.map(([v])=>Buffer.from(v))),d={keys:u.bytes,keyAt:u.at,ownAt:Na(Uint32Array,o),owners:Na(Uint32Array,a),cards:f.bytes,cardAt:f.at,ranks:Na(Float32Array,n.map((v)=>v.rank)),tags:l.bytes,tagAt:l.at,tagCard:Na(Uint32Array,c.map(([,v])=>v))},h=tk.map((v)=>{let S=d[v];return Buffer.from(S.buffer,S.byteOffset,S.byteLength)}),m=0,p=h.map((v)=>{let S=[m,v.length];return m+=Math.ceil(v.length/4)*4,S}),b=Buffer.from(JSON.stringify({stamp:e,sections:p})),$=Math.ceil((8+b.length)/4)*4,k=Buffer.alloc($+m);k.write(ek,0,"latin1"),k.writeUInt32LE(b.length,4),b.copy(k,8);for(let[v,S]of h.entries())S.copy(k,$+(p[v]?.[0]??0));return k}function X$(t,e,n,r){let i=e.byteOffset+n;if(i%4===0)return new t(e.buffer,i,r/4);return new t(e.buffer.slice(i,i+r),0,r/4)}function Q$(t,e){if(t.toString("latin1",0,4)!==ek)return;let n=t.readUInt32LE(4),r=JSON.parse(t.toString("utf8",8,8+n));if(r.stamp!==e)return;let i=Math.ceil((8+n)/4)*4,s=(c)=>{let[u,f]=r.sections[tk.indexOf(c)];return[i+u,f]},o=(c)=>{let[u,f]=s(c);return t.subarray(u,u+f)},a=(c)=>X$(Uint32Array,t,...s(c));return{keys:o("keys"),keyAt:a("keyAt"),ownAt:a("ownAt"),owners:a("owners"),cards:o("cards"),cardAt:a("cardAt"),ranks:X$(Float32Array,t,...s("ranks")),tags:o("tags"),tagAt:a("tagAt"),tagCard:a("tagCard")}}var kh;function Sh(t){try{let e=nk(t);if(e.length===0)return;let n=rk(e);if(kh?.stamp===n)return kh.index;let r=co(Dr(t),"index.bin"),i;try{i=Q$(Au(r),n)}catch{}if(!i){let s=lT(e,n);try{C(r,s)}catch{}i=Q$(s,n)}if(i)kh={stamp:n,index:i};return i}catch{return}}function ik(t,e){let[n,r,i,s,o]=JSON.parse(t.cards.toString("utf8",t.cardAt[e],t.cardAt[e+1]));return{tag:n,tags:r,names:i,japanese:s,generated:o,rank:t.ranks[e]??0}}function sk(t,e,n,r){let i=0,s=n;while(i<s){let o=i+s>>1;if(t.toString("utf8",e[o],e[o+1])<r)i=o+1;else s=o}return i}function ok(t,e){let n=Buffer.from(e),r=t.tagCard.length,i=sk(t.tags,t.tagAt,r,e);if(i>=r||t.tags.compare(n,0,n.length,t.tagAt[i],t.tagAt[i+1])!==0)return;return t.tagCard[i]}var yh=/\s*[((][^()()]*[))]$/u,Ru={ko:4,en:4,ja:5,zh:3};function fT(t){if(!t)return[];let e=/\p{Script=Hangul}/u,n=/^[\p{Script=Latin}\p{N}\s.'’-]+$/u,r=new Set([...t.names,...t.generated].filter((l)=>!yh.test(l))),i=(l)=>!yh.test(l)||!r.has(l.replace(yh,"")),s=t.names.filter(i),o=s.filter((l)=>e.test(l)),a=[...o,...t.generated.slice(0,o.length>0?0:2)],c=s.filter((l)=>n.test(l)),u=t.japanese.filter(i),f=s.filter((l)=>!e.test(l)&&!n.test(l)&&!u.includes(l));return[...new Set([...a.slice(0,Ru.ko),...c.slice(0,Ru.en),...u.slice(0,Ru.ja),...f.slice(0,Ru.zh)])]}var ao;function Eh(t,e=lo()){if(!t)return[];if(!ao)try{ao=JSON.parse(Au(co(Dr(e),"aliases.json"),"utf8")).tags}catch{ao={}}return ao[t]??[]}function Mh(t,e=lo()){try{return dT(t,e)}catch{return new Map}}function dT(t,e){let n=nk(e);if(n.length===0||t.length===0)return new Map;let r=rk(n),i=co(Dr(e),"aliases.json"),s;try{s=JSON.parse(Au(i,"utf8"))}catch{}if(s?.stamp===r&&t.every((u)=>(u in s.tags)))return ao=s.tags,new Map(t.map((u)=>[u,s.tags[u]??[]]));let o=Sh(e);if(!o)return new Map;let a=new Set([...t,...s?.stamp===r?Object.keys(s.tags):[]]),c={};for(let u of a){let f=ok(o,u);c[u]=f===void 0?[]:fT(ik(o,f))}try{C(i,`${JSON.stringify({stamp:r,tags:c})}
|
|
271
|
+
`)}catch{}return ao=c,new Map(t.map((u)=>[u,c[u]??[]]))}function ho(t,e=lo()){Mh(t.flatMap((n)=>n.booru?[n.booru]:[]),e)}var hT=0.25,mT=0.1;function ak(t,e,n=new Set,r=lo()){let i=uo(t);if(!i||!vh(i))return[];let s=Sh(r);if(!s)return[];let o=Buffer.from(i),a=s.ownAt.length-1,c=new Set([...n].flatMap((f)=>ok(s,f)??[])),u=new Map;for(let f=sk(s.keys,s.keyAt,a,i);f<a;f++){let l=s.keyAt[f],d=s.keyAt[f+1]-l;if(d<o.length||s.keys.compare(o,0,o.length,l,l+o.length)!==0)break;let h=d===o.length;for(let m=s.ownAt[f];m<s.ownAt[f+1];m++){let p=s.owners[m],b=p>>>2,$=h?Math.max(0,(p&2?2:1)-(p&1?0:1)):0,k=(s.ranks[b]??0)+hT*$+(c.has(b)?mT:0);if((u.get(b)?.score??-1)<k)u.set(b,{score:k,key:f})}}return[...u].sort(([,f],[,l])=>l.score-f.score).slice(0,e).map(([f,{key:l}])=>{let d=ik(s,f),h=s.keys.toString("utf8",s.keyAt[l],s.keyAt[l+1]);return{tag:d.tags.find((m)=>n.has(m))??d.tag,name:[...d.names,...d.generated].find((m)=>uo(m).includes(h))??d.tag.replaceAll("_"," ")}})}function Nu(t=lo()){Sh(t)}import{createHash as ET}from"node:crypto";import{existsSync as MT,readdirSync as wk,readFileSync as xT}from"node:fs";import{basename as $k,join as Fu}from"node:path";import{existsSync as pT,readFileSync as ck}from"node:fs";import{homedir as uk}from"node:os";import{isAbsolute as lk,join as _i,resolve as gT}from"node:path";var Q="official",bT="https://www.schemastore.org/ttheme-marketplace.json",fk="https://www.schemastore.org/ttheme-palette.json",dk=["$schema","name","description","owner","catalog","renames","force_remove_deleted_palettes","metadata"],hk=["name","email","url"],mk=["name","native","lead"],po="ttheme-marketplace",wT=/^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$/i,$T=/^[\w.-]{1,100}$/,kT=/^\w[\w.+/-]{0,199}$/;function cr(t){return _i(t,"ttheme","installed.json")}function me(t){return t??[Q]}function go(t){try{let{marketplaces:e}=JSON.parse(ck(cr(t),"utf8"));return me(Array.isArray(e)?e.filter((n)=>typeof n==="string"):void 0)}catch{return[Q]}}function qt(t){return lk(t)}function yt(t){return t!==Q&&!qt(t)}function mo(t){let e=t.indexOf("#");return yt(t)&&e>=0?t.slice(0,e):t}function Ta(t){let e=t.indexOf("#");return yt(t)&&e>=0?t.slice(e+1):void 0}function Bi(t,e){return mo(t)===mo(e)}function Gi(t,e){return yt(t)&&(e?.[t]??!1)}function yT(t){return!kT.test(t)||t.includes("..")||t.includes("//")||/(?:[./]|\.lock)$/.test(t)}function hn(t,e=process.cwd()){if(t===Q)return Q;if(t==="~"||t.startsWith("~/"))return _i(uk(),t.slice(1));if(t.startsWith(".")||lk(t))return gT(e,t);let[n="",r,...i]=t.split("#"),[s,o,...a]=n.replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,"").split("/");if(!s||!wT.test(s)||!o||!$T.test(o)||a.length>0||i.length>0||r!==void 0&&yT(r))throw Error(`${t} is not a marketplace — give a repository (alice/ttheme-dust, #v1 pins a tag or branch) or a path (./my-marketplace)`);return`${s.toLowerCase()}/${o}${r===void 0?"":`#${r}`}`}function pk(t){let e=Ta(t)?.split("/").map(encodeURIComponent).join("/")??"HEAD";return`https://codeload.github.com/${mo(t)}/tar.gz/${e}`}function gk(t){return t.slice(0,t.indexOf("/"))}function Ph(t){return _i(t,"ttheme","marketplaces")}function ur(t,e){return _i(Ph(t),`${mo(e).replace("/","--")}.json`)}function Tu(t){return _i(t,"ttheme","marketplace")}function Ih(t,e){return _i(Tu(t),e)}function vT(t,e){if(typeof t!=="string"||typeof e!=="string")return'needs a "name" and an [owner] table whose name is the GitHub handle';return ee(`${t}@${e}/x`)}function ke({owner:t,name:e}){return`${t}@${e}`}function bk({owner:t,name:e}){return`"$schema" = ${JSON.stringify(bT)}
|
|
272
272
|
name = ${JSON.stringify(e)}
|
|
273
273
|
|
|
274
274
|
[owner]
|
|
275
275
|
name = ${JSON.stringify(t)}
|
|
276
|
-
`}function
|
|
277
|
-
`)[0]}`)}let r=
|
|
278
|
-
`);return[]}})}function
|
|
279
|
-
`):()=>{}}function
|
|
276
|
+
`}function Oh(t,e,n,r){if(typeof n!=="string"||n===""||/\p{Cc}/u.test(n)||n.length>200)throw Error(`${t}: ${e} must be ${r}`);return n}function xh(t,e,n){return n===void 0?void 0:Oh(t,e,n,"one line of text, 200 characters at most")}function ST(t,e){if(e===void 0)return{};if(!e||typeof e!=="object"||Array.isArray(e))throw Error(`${t}: [renames] maps an old palette name to its new name, or to false once it is gone`);let n={};for(let[r,i]of Object.entries(e)){if(ee(r)||i!==!1&&(typeof i!=="string"||ee(i)))throw Error(`${t}: renames.${r} must map a palette name to a palette name, or to false`);n[r]=i}return n}function Rh(t,e){let n;try{n=Hi(t)}catch(d){throw Error(`${e} is not valid TOML — ${d.message.split(`
|
|
277
|
+
`)[0]}`)}let r=Oh(e,"name",n.name,"the marketplace name"),i=n.owner;if(!i||typeof i!=="object"||Array.isArray(i))throw Error(`${e}: owner is a table — [owner] with name = "<GitHub handle>"`);let s=i,o={name:Oh(e,"owner.name",s.name,"the GitHub handle")},a=xh(e,"owner.email",s.email),c=xh(e,"owner.url",s.url),u=xh(e,"description",n.description),f=n.force_remove_deleted_palettes;if(f!==void 0&&typeof f!=="boolean")throw Error(`${e}: force_remove_deleted_palettes must be true or false`);let l=vT(o.name,r);if(l)throw Error(`${e} ${l}`);return{owner:o.name,name:r,about:{...o,...a?{email:a}:{},...c?{url:c}:{}},...u?{description:u}:{},catalogs:nh(e,n.catalog),renames:ST(e,n.renames),forceRemove:f===!0}}function Ve(t){let e=_i(t,ft);if(!pT(e))throw Error(`${t} has no ${ft} — \`ttheme marketplace init ${t}\` makes one`);return Rh(ck(e,"utf8"),e)}function at(t){if(t===Q)return"the official marketplace";if(!qt(t))return`github.com/${t}`;let e=uk();return t===e||t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}var Ha="tt2:",Th="https://ttheme.vercel.app/p/",Hu=4,kk=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)];function Ui(t,e=!0){return go(t).filter(qt).flatMap((n)=>{try{let r=Ve(n);return[{dir:n,...r,id:ke(r)}]}catch(r){if(e)process.stderr.write(`ttheme: skipping the marketplace at ${n} — ${r.message}
|
|
278
|
+
`);return[]}})}function Lu(t){return Fu(t,"palettes")}function Ah(t,e){return t<e?-1:t>e?1:0}function Hh(t,e,n=[]){let r=[],i=[];for(let o of t){let[a,c,u,...f]=o.split("/");if(a!=="palettes"||!c||c.startsWith(".")||f.length>0)continue;if(u===void 0){if(c.endsWith(".toml"))i.push({file:{path:e(o),slug:$k(c,".toml")},name:c})}else if(u.endsWith(".toml"))r.push({file:{path:e(o),slug:$k(u,".toml"),catalog:c},name:u})}let s=(o="")=>{let a=n.findIndex((c)=>c.name===o);return a<0?n.length:a};return r.sort((o,a)=>s(o.file.catalog)-s(a.file.catalog)||Ah(o.file.catalog??"",a.file.catalog??"")||Ah(o.name,a.name)),i.sort((o,a)=>Ah(o.name,a.name)),[...r,...i].map(({file:o})=>o)}function OT(t){try{return Ve(t).catalogs}catch{return[]}}function bo(t,e=[]){let n=Lu(t);if(!MT(n))return[];let r=wk(n,{withFileTypes:!0}).flatMap((i)=>i.isDirectory()?wk(Fu(n,i.name)).map((s)=>`palettes/${i.name}/${s}`):[`palettes/${i.name}`]);return Hh(r,(i)=>Fu(t,i),e)}function PT(t,e){let n=e.get(t.slug);if(n)return`${t.slug} is also ${n.catalog?`in ${n.catalog}`:"outside a catalog"} — a palette name is used once in a marketplace`;let r=t.catalog===void 0?void 0:Pa(t.catalog);return r?`the catalog folder ${JSON.stringify(t.catalog)} ${r}`:void 0}function Fh(t,e){let n=rt(e);if(!n)throw Error(`${e} is an official palette — yours are named <you>@<marketplace>/<palette>`);let r=Ui(t,!1).find((s)=>s.id===n);if(!r)throw Error(`${n} is not a local marketplace — \`ttheme marketplace add <dir>\` adds the folder that holds it`);let i=we(e);return bo(r.dir).find((s)=>s.slug===i)?.path??Fu(Lu(r.dir),`${i}.toml`)}function IT(t,e,n,r){let i=new Map(e.values().filter((s)=>!s.default&&!rt(s.name)).map((s)=>[s.name,{order:s.order}]));return{name:t,...r.catalog===void 0?{}:{catalog:r.catalog},catalogs:new Map((r.catalogs??[]).map((s)=>[s.name,s])),bases:i,open:!0,...n?{foreign:!0}:{}}}function Fn(t,e,n,r=!1,i={}){let s=we(t);return{...rh(`${s}.toml`,e,IT(s,n,r,i)),name:t}}function Ce(t){return t?(e,n)=>process.stderr.write(`ttheme: skipping ${e} — ${n}
|
|
279
|
+
`):()=>{}}function Lh(t,e,n,r,i,s=!1,o=[]){let a=new Map;return t.flatMap((c)=>{try{let u=PT(c,a);if(u)throw Error(u);a.set(c.slug,c);let f={...c.catalog===void 0?{}:{catalog:c.catalog},catalogs:o};return[dn(Fn(`${n}/${c.slug}`,e(c),r,s,f))]}catch(u){return i(c.path,u.message),[]}})}function lr(t,e,n,r=Ce(!0)){let i=OT(t);return Lh(bo(t,i),(s)=>xT(s.path,"utf8"),e,n,r,!1,i)}function yk(t,e,n=!0){return Ui(t,n).flatMap(({dir:r,id:i})=>lr(r,i,e,Ce(n)))}function Ch(t,e=t.name,n){return{name:e,...t.base?{base:t.base}:{},...t.catalog?{catalog:t.catalog}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},signature:t.signatureSlots,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi,...t.waived&&t.waived.length>0?{waive:t.waived,reason:n??"kept from the palette"}:{},...t.pictures?{pictures:t.pictures}:{}}}var Tt=(t)=>JSON.stringify(t);function vk(t){return["[[picture]]",`site = ${Tt(t.site)}`,`id = ${t.id}`,...t.size===void 0?[]:[`size = ${typeof t.size==="number"?t.size:Tt(t.size)}`],...t.position===void 0?[]:[`position = ${Tt(t.position)}`],...t.opacity===void 0?[]:[`opacity = ${t.opacity}`]]}function Sk(t,e){return e.length===0?t:`${t.replace(/\n*$/,`
|
|
280
280
|
`)}${e.map((n)=>`
|
|
281
|
-
${
|
|
281
|
+
${vk(n).join(`
|
|
282
282
|
`)}
|
|
283
|
-
`).join("")}`}function
|
|
283
|
+
`).join("")}`}function jh(t){return`${[`"$schema" = ${Tt(fk)}`,"","[meta]",`name = ${Tt(we(t.name))}`,...t.base?[`base = ${Tt(t.base)}`]:[],...t.ansiSource?[`ansi_source = ${Tt(t.ansiSource)}`]:[],...t.booru?[`booru = ${Tt(t.booru)}`]:[],`signature = [${t.signature.map(Tt).join(", ")}]`,...t.booruSites?["","[meta.booru_sites]",...Object.entries(t.booruSites).map(([n,r])=>`${n} = [${r.map(Tt).join(", ")}]`)]:[],"","[colors]",`background = ${Tt(t.background)}`,`foreground = ${Tt(t.foreground)}`,`cursor = ${Tt(t.cursor)}`,`selection_background = ${Tt(t.selection)}`,"ansi = [",...t.ansi.slice(0,8).map((n)=>` ${Tt(n)},`),"",...t.ansi.slice(8).map((n)=>` ${Tt(n)},`),"]",...t.waive&&t.waive.length>0?["","[contrast]",`waive = [${t.waive.map(Tt).join(", ")}]`,`reason = ${Tt(t.reason??"")}`]:[],...(t.pictures??[]).flatMap((n)=>["",...vk(n)])].join(`
|
|
284
284
|
`)}
|
|
285
|
-
`}class
|
|
286
|
-
`)}function
|
|
287
|
-
`)}function
|
|
288
|
-
`);return[]}}function
|
|
289
|
-
`)}function Zr(t){try{let{palettes:e}=JSON.parse(zh(Hk(t),"utf8"));return Array.isArray(e)?e.filter((n)=>Tk(n)===void 0):[]}catch{return[]}}function Ok(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi,t.pictures??[]])}function ko(t,e){let n=new Map(Zr(t).map((r)=>[r.name,r]));return e.palettes.filter((r)=>{let i=n.get(r.name);return et(r.name)!==void 0&&i!==void 0&&Ok(i)!==Ok(r)})}function dr(t,e,n=!0){let r=Zr(t),i=new Map(r.filter((a)=>et(a.name)!==void 0).map((a)=>[a.name,a])),s=[...e.palettes.map((a)=>i.get(a.name)??a),...ju(t,e.palettes,n)],o=new Set(s.map((a)=>a.name));return{...e,palettes:[...s,...r.filter((a)=>!o.has(a.name))]}}function zt(t,e,n=!0){let r=dr(t,e,n);return{...r,palettes:_u(r.palettes,Kt(t))}}function ve(t){return zt(t,ct(t))}class Uu extends Error{}class Fk extends Error{}async function Wa(t,e=RT,n,r={}){let i;try{let s=AbortSignal.timeout(e);i=await fetch(t,{headers:r,signal:n?AbortSignal.any([s,n]):s})}catch(s){throw Error(`cannot reach ${t} — ${s instanceof Error?s.message:String(s)}`)}if(i.status===404)throw new Uu(`nothing at ${t}`);if(i.status===403||i.status===429)throw new Fk(`${new URL(t).host} is turning requests away for now (${i.status}) — try again in a minute`);if(!i.ok&&i.status!==304)throw Error(`${t} answered ${i.status}`);return i}function Ka(t){let e=new Set(t.waived??[]),n=t.gate??Mn(Fe(t));return Ne.flatMap((r,i)=>{let s=n[i];if(e.has(r.rule)||typeof s!=="number"||Number.isNaN(s))return[];if(r.min!==void 0&&s<r.min)return[`${r.label} ${s} < ${r.min}`];if(r.max!==void 0&&s>r.max)return[`${r.label} ${s} > ${r.max}`];return[]})}function Ln(t,e){let n=t.find((r)=>r.name===e);if(!n)throw Error(`no palette named ${e} in your marketplaces — ${Dh(t,[e])}`);return n}function Dh(t,e){let n=e.map((o)=>o.toLowerCase()),r=t.filter((o)=>n.some((a)=>o.name.includes(a))),i=t.filter((o)=>!r.includes(o)&&n.some((a)=>re(o).toLowerCase().includes(a))),s=[...r,...i].map((o)=>o.name).slice(0,3);return s.length>0?`did you mean: ${s.join(", ")}?`:"`ttheme list` shows what is there"}function Lk(t,e){return t.filter((n)=>Wi([n.name,re(n),n.native??"",n.ansiSource,...n.nativeNames??[],...Nu(n.booru)],e))}function Ck(t,e,n){let r=n.toLowerCase(),i=(s)=>s.name===e.name?0:re(s)===re(e)?1:2;return t.filter((s)=>s.booru?.toLowerCase().includes(r)).sort((s,o)=>i(s)-i(o))}function jk(t,e){return t.booruSites?.[e]??(t.booru?[t.booru]:[])}var _k=(()=>{let t=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(e)=>{let n=0;t.lastIndex=0;while(t.test(e))n+=1;return e.length-n}})(),Bk=(t)=>{return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510},Gk=(t)=>{return t===8987||t===9001||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12771||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=19903||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t>=131072&&t<=196605||t>=196608&&t<=262141};var TT=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,HT=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Uk=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,FT=/\t{1,1000}/y,Wk=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,LT=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,CT=/\p{M}+/gu,jT={limit:1/0,ellipsis:""},Kk=(t,e={},n={})=>{let r=e.limit??1/0,i=e.ellipsis??"",s=e?.ellipsisWidth??(i?Kk(i,jT,n).width:0),o=0,a=n.controlWidth??0,c=n.tabWidth??8,u=n.emojiWidth??2,f=2,l=n.regularWidth??1,d=n.wideWidth??2,h=[[LT,l],[TT,0],[HT,a],[FT,c],[Wk,u],[Uk,d]],m=0,p=0,b=t.length,$=0,k=!1,v=b,S=Math.max(0,r-s),M=0,x=0,N=0,R=0;t:while(!0){if(x>M||p>=b&&p>m){let T=t.slice(M,x)||t.slice(m,p);$=0;for(let _ of T.replaceAll(CT,"")){let K=_.codePointAt(0)||0;if(Bk(K))R=2;else if(Gk(K))R=d;else R=l;if(N+R>S)v=Math.min(v,Math.max(M,m)+$);if(N+R>r){k=!0;break t}$+=_.length,N+=R}M=x=0}if(p>=b)break t;for(let T=0,_=h.length;T<_;T++){let[K,G]=h[T];if(K.lastIndex=p,K.test(t)){if($=K===Uk?_k(t.slice(p,K.lastIndex)):K===Wk?1:K.lastIndex-p,R=$*G,N+R>S)v=Math.min(v,p+Math.floor((S-N)/G));if(N+R>r){k=!0;break t}N+=R,M=m,x=p,p=m=K.lastIndex;continue t}}p+=1}return{width:k?S:N,index:k?v:b,truncated:k,ellipsed:k&&r>=s}},zk=Kk;var _T={limit:1/0,ellipsis:"",ellipsisWidth:0},BT=(t,e={})=>{return zk(t,_T,e).width},B=BT;var Dk={dim:["2","22"],bold:["1","22"],under:["4","24"],reverse:["7","27"],accent:["36","39"],pill:["7;1;36","22;27;39"],chip:["100;1","22;49"],danger:["7;1;31","22;27;39"],match:["1;4;36","22;24;39"],ok:["32","39"],warn:["33","39"],error:["31","39"]},GT={stage:0.08,bar:0.14,selection:0.2,tab:0.3,line:0.45},I={gutter:"▌",current:"◆",signature:"✦",closed:"▸",opened:"▾",on:"●",off:"○",ok:"✓",miss:"✗",above:"↑",below:"↓",update:"⇡",auto:"↻",remove:"×",undo:"↶",star:"★",link:"⧉",search:"⌕",linked:"⇠",contrast:"◐",swatch:"■",pictures:"▣",sep:"·",cut:"…"},mn=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];function Le(t){return`\x1B[${t}m`}function wt(t){return Le(Dk[t][0])}function qh(t){return Le(Dk[t][1])}var Se=Le("0"),$t=Le("39"),qk=Le("49"),pe=Le("39;49");function Vi(t){return Le(String(t<8?30+t:82+t))}function Jk(t){return Le(String(t<8?40+t:92+t))}function Yk(t,e){return Le(`38;5;${t};48;5;${e}`)}function Wu(t){let e=t.replace("#","");return[e.slice(0,2),e.slice(2,4),e.slice(4,6)].map((n)=>Number.parseInt(n,16)).join(";")}function hr(t){return Le(`38;2;${Wu(t)}`)}function Jh(t){return Le(`48;2;${Wu(t)}`)}function Vk(t,e){return Le(`48;2;${Wu(t)};38;2;${Wu(e)}`)}function Ku(t,e=$t){return`${t.map((n)=>`${hr(n)}${I.swatch}`).join(" ")}${e}`}function Zi(t,e,n){return Nt(t,e,GT[n])}function Yh(t){let e=!1,n=!1,r=!1,i=!1,s=!1,o=!1;for(let c of t.split("\x1B[").slice(1)){let u=/^([0-9;]*)m/.exec(c)?.[1];if(u===void 0)continue;let f=(u||"0").split(";").map(Number);for(let l=0;l<f.length;l++){let d=f[l];if(d===0)e=n=r=i=s=o=!1;else if(d===1||d===2)e=!0;else if(d===22)e=!1;else if(d===3||d===23)n=d===3;else if(d===4||d===24)r=d===4;else if(d===7||d===27)i=d===7;else if(d===38||d===48)s||=d===38,o||=d===48,l+=f[l+1]===5?2:4;else if(d===39)s=!1;else if(d===49)o=!1;else if(d>=30&&d<=37||d>=90&&d<=97)s=!0;else if(d>=40&&d<=47||d>=100&&d<=107)o=!0}}let a=[e&&"22",n&&"23",r&&"24",i&&"27",s&&"39",o&&"49"].filter(Boolean);return a.length>0?Le(a.join(";")):""}function Ce(t){let e=(n)=>(r)=>t?`${wt(n)}${r}${qh(n)}`:r;return{color:t,dim:e("dim"),bold:e("bold"),accent:e("accent"),pill:e("pill"),chip:e("chip"),danger:e("danger"),ok:e("ok"),warn:e("warn"),error:e("error"),fg:(n)=>t?hr(n):"",bg:(n)=>t?Jh(n):""}}function zu(t,e){return e&&!/\p{Cc}/u.test(e)?`\x1B]8;;${e}\x1B\\${t}\x1B]8;;\x1B\\`:t}function Vh(t,e){if(t[e]!=="\x1B")return 0;if(t[e+1]==="]"){let r=t.indexOf("\x07",e+2),i=t.indexOf("\x1B\\",e+2),s=r!==-1&&(i===-1||r<i)?r+1:i!==-1?i+2:0;return s?s-e:0}if(t[e+1]!=="[")return 0;let n=e+2;while(n<t.length&&!/[@-~]/.test(t[n]))n++;return n<t.length?n-e+1:0}var Zk;function Zh(t){return Zk??=new Intl.Segmenter(void 0,{granularity:"grapheme"}),Zk.segment(t)}function yo(t){let e=[],n=0;while(n<t.length){let r=Vh(t,n);if(r>0){e.push({text:t.slice(n,n+r),start:n,end:n+r,width:0,sequence:!0}),n+=r;continue}let i=t.indexOf("\x1B",n+1),s=i===-1?t.length:i;for(let{segment:o,index:a}of Zh(t.slice(n,s)))e.push({text:o,start:n+a,end:n+a+o.length,width:B(o),sequence:!1});n=s}return e}function UT(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?e:void 0}function Xh(t,e){let n="",r=0,i=0;for(let s of yo(t)){if(!s.sequence){if(r+s.width>e)break;r+=s.width}else{let o=UT(s.text);if(o!==void 0)i=o==="0"?Math.max(0,i-1):i+1}n+=s.text}return{head:n,used:r,ends:"\x1B[?0y".repeat(i)}}function tt(t,e,n=!0){if(e<=0)return"";let r=B(t);if(r<=e)return n?t+" ".repeat(e-r):t;let{head:i,used:s,ends:o}=Xh(t,e-1);return`${i}${Yh(i)}…${o}${n?" ".repeat(e-1-s):""}`}function Xk(t,e){let{head:n,used:r,ends:i}=Xh(t,e);return`${n}${Yh(n)}${i}${" ".repeat(e-r)}`}function Rt(t,e,n){let r=n-B(e)-1;return r<=0?tt(t,n):`${tt(t,r)} ${e}`}function Ft(t,e){let n=[],r="";for(let i of t.split(/\s+/).filter(Boolean)){let s=r?`${r} ${i}`:i;if(B(s)<=e){r=s;continue}if(r)n.push(r);while(B(i)>e){let{head:o}=Xh(i,e),a=Math.max(o.lastIndexOf("/")+1,o.lastIndexOf("#")),c=a>0?a:o.length||yo(i)[0].end;n.push(i.slice(0,c)),i=i.slice(c)}r=i}if(r)n.push(r);return n}var WT=9999,vo;function Ye(t,e){if(!vo||e===""||vo.length>=WT)return e;return`\x1B[?${vo.push(t)}y${e}\x1B[?0y`}function ty(t){let e=vo,n=[];vo=n;try{return{drawn:t(),targets:n}}finally{vo=e}}function ey(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?Number(e):void 0}function KT(t){let e=t.slice(2,-1);return t.startsWith("\x1B[")&&t.endsWith("G")&&/^\d*$/.test(e)?Math.max(1,Number(e||1))-1:void 0}function zT(t,e,n){if(!t.includes("\x1B[?"))return{text:t,zones:[]};let r=[],i=[],s="",o=0,a="",c=()=>{let f=i.pop();if(f&&o>f.col)r.push({row:e,col:f.col,width:o-f.col,height:1,target:f.target})},u=0;while(u<t.length){let f=t.indexOf("\x1B",u);if(f!==u){let m=f===-1?t.length:f;a+=t.slice(u,m),s+=t.slice(u,m),u=m;continue}let l=t.slice(u,u+(Vh(t,u)||1));u+=l.length;let d=ey(l),h=d===void 0?KT(l):void 0;if(d===void 0&&h===void 0){s+=l;continue}if(o+=B(a),a="",h!==void 0)o=h,s+=l;else if(d===0)c();else if(d!==void 0)i.push({target:n[d-1],col:o})}o+=B(a);while(i.length>0)c();return{text:s,zones:r}}function ny(t,e,n){let r=[],i=[],s="",o=(b)=>{let $=ey(b);if($===0)r.pop();else if($!==void 0)r.push(b);else if(b.startsWith("\x1B]8;"))s=b.slice(b.indexOf(";",4)+1).replace("\x07","").replace("\x1B\\","")===""?"":b;else if(b.startsWith("\x1B[")&&b.endsWith("m"))i.push(b)},a=t.includes("\x1B")||n.includes("\x1B")?Se:"",c=yo(t),u="",f=0,l=0;while(l<c.length&&f<e){let b=c[l];if(b.sequence)o(b.text);else if(f+b.width>e)break;else f+=b.width;u+=b.text,l++}u+=" ".repeat(e-Math.min(e,f));let d=`${"\x1B[?0y".repeat(r.length)}${s?"\x1B]8;;\x1B\\":""}${a}`,h=e+B(n);while(l<c.length&&f<h){let b=c[l];if(b.sequence)o(b.text);else f+=b.width;l++}let m=l<c.length?t.slice(c[l].start):"";if(m===""&&f<=h)return`${u}${d}${n}${a}`;let p=`${i.join("")}${s}${r.join("")}${" ".repeat(Math.max(0,f-h))}`;return`${u}${d}${n}${a}${p}${m}`}function ry(t,e){let n=t.map((r,i)=>zT(r,i,e));return{lines:n.map((r)=>r.text),zones:n.flatMap((r)=>r.zones)}}function Qk(t,e,n,r=0.5,i=0.5){let s=n-t.col,o=e-t.row;return{target:t.target,x:s,y:o,exact:{x:s+r,y:o+i},width:t.width,height:t.height,inside:s>=0&&s<t.width&&o>=0&&o<t.height}}function DT(t,e,n){let r;for(let i of t)if(e>=i.row&&e<i.row+i.height&&n>=i.col&&n<i.col+i.width&&(!r||i.width*i.height<=r.width*r.height))r=i;return r}var qT={space:" ",enter:"enter",esc:"esc",tab:"tab",bksp:"backspace",del:"delete","←":"left","→":"right"};function Qh(t){let e=/^(ctrl|alt)\+([a-z])$/.exec(t);if(e)return`${e[1]}-${e[2]}`;return qT[t]??([...t].length===1&&t!==" "?t:void 0)}function ge(t,e){let n=Qh(t);return n?Ye({kind:"key",key:n},e):e}class tm{zones=[];held;point(t){if(t.action==="drag"||t.action==="release"){let n=this.held;if(t.action==="release")this.held=void 0;return n&&Qk(n,t.row,t.col,t.fx,t.fy)}let e=DT(this.zones,t.row,t.col);if(t.action==="press")this.held=t.button==="left"?e:void 0;return e&&Qk(e,t.row,t.col,t.fx,t.fy)}drop(){this.held=void 0}}function Du(t,e,n,r=(i)=>i){if(!t.color)return r(n?`[${e}]`:` ${e} `);return n?t.pill(r(` ${e} `)):t.dim(r(` ${e} `))}function iy(t,e,n,r=!1){if(!t.color)return n==="focus"?`[${e}]`:` ${e} `;if(n==="off")return t.dim(` ${e} `);if(n==="focus")return r?t.danger(` ${e} `):t.pill(` ${e} `);return t.chip(` ${e} `)}function Ve(t,e){return t.color?t.pill(` ${e} `):`[${e}]`}function sy(t,e,n){return ge(e.split(" ")[0]??"",`${t.bold(e)} ${t.dim(n)}`)}function qu(t,e){return e===void 0?t.dim(I.sep):e?t.dim(I.ok):t.bold(I.miss)}var JT={top:"╭╮",mid:"├┤",bottom:"╰╯"};function Bt(t,e,n=[]){let[r,i]=[...JT[e]],s=[...`${r}${"─".repeat(Math.max(0,t-2))}${i}`];for(let[o,a]of n)[...a].forEach((c,u)=>{if(o+u>0&&o+u<t-1)s[o+u]=c});return s.join("")}function Ze(t,e,n){return`${t.dim("│")}${tt(e,n-2)}${t.dim("│")}`}var mr=[{name:"preview",title:"Preview"},{name:"browse",title:"Browse"}],Ju=10,Yu=20;function oy(t){return mr.find((e)=>e.name===t.TTHEME_HUB)?.name}function Vu(t,e){let n=mr.findIndex((r)=>r.name===t);return Yu+(n+e+mr.length)%mr.length+1}function ay(t){return Yu+mr.findIndex((e)=>e.name===t)+1}function em(t,e){let n=Ce(e);return` ${mr.map(({name:i,title:s})=>{let o={kind:"hub",tab:i};return Du(n,s,i===t,(a)=>Ye(o,a))}).join(" ")} ${n.dim("tab next")}`}import{execFileSync as sC}from"node:child_process";import{existsSync as Gl,mkdirSync as oC,readdirSync as aC,readFileSync as Ul,rmSync as cC}from"node:fs";import{basename as Qv,join as fc,relative as Vv}from"node:path";import{styleText as el}from"node:util";import{stdout as wy,stdin as nH}from"node:process";import rH from"node:readline";var Zu="\x1B",dy="",YT=39,rm="\x07",hy="[",VT="]",my="m",im=`${VT}8;;`,cy=new RegExp(`(?:\\${hy}(?<code>\\d+)m|\\${im}(?<uri>.*)${rm})`,"y"),uy=(t)=>{if(t>=30&&t<=37)return 39;if(t>=90&&t<=97)return 39;if(t>=40&&t<=47)return 49;if(t>=100&&t<=107)return 49;if(t===1||t===2)return 22;if(t===3)return 23;if(t===4)return 24;if(t===7)return 27;if(t===8)return 28;if(t===9)return 29;if(t===0)return 0;return},ly=(t)=>`${Zu}${hy}${t}${my}`,fy=(t)=>`${Zu}${im}${t}${rm}`,nm=(t,e,n)=>{let r=e[Symbol.iterator](),i=!1,s=!1,o=t.at(-1),a=o===void 0?0:B(o),c=r.next(),u=r.next(),f=0;while(!c.done){let l=c.value,d=B(l);if(a+d<=n)t[t.length-1]+=l;else t.push(l),a=0;if(l===Zu||l===dy)i=!0,s=e.startsWith(im,f+1);if(i){if(s){if(l===rm)i=!1,s=!1}else if(l===my)i=!1}else if(a+=d,a===n&&!u.done)t.push(""),a=0;c=u,u=r.next(),f+=l.length}if(o=t.at(-1),!a&&o!==void 0&&o.length&&t.length>1)t[t.length-2]+=t.pop()},ZT=(t)=>{let e=t.split(" "),n=e.length;while(n){if(B(e[n-1]))break;n--}if(n===e.length)return t;return e.slice(0,n).join(" ")+e.slice(n).join("")},XT=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",i,s,o=t.split(" "),a=[""],c=0;for(let l=0;l<o.length;l++){let d=o[l];if(n.trim!==!1){let m=a.at(-1)??"",p=m.trimStart();if(m.length!==p.length)a[a.length-1]=p,c=B(p)}if(l!==0){if(c>=e&&(n.wordWrap===!1||n.trim===!1))a.push(""),c=0;if(c||n.trim===!1)a[a.length-1]+=" ",c++}let h=B(d);if(n.hard&&h>e){let m=e-c,p=1+Math.floor((h-m-1)/e);if(Math.floor((h-1)/e)<p)a.push("");nm(a,d,e),c=B(a.at(-1)??"");continue}if(c+h>e&&c&&h){if(n.wordWrap===!1&&c<e){nm(a,d,e),c=B(a.at(-1)??"");continue}a.push(""),c=0}if(c+h>e&&n.wordWrap===!1){nm(a,d,e),c=B(a.at(-1)??"");continue}a[a.length-1]+=d,c+=h}if(n.trim!==!1)a=a.map((l)=>ZT(l));let u=a.join(`
|
|
290
|
-
`),f=!1;for(let l=0;l<u.length;l++){let d=u[l];if(r+=d,!f){if(f=d>="\uD800"&&d<="\uDBFF",f)continue}else f=!1;if(d===Zu||d===
|
|
291
|
-
`){if(s)r+=
|
|
292
|
-
`){if(i&&
|
|
293
|
-
`)}var
|
|
294
|
-
`),s=0,o=t;for(let c of i){if(o<=c.length)break;o-=c.length+1,s++}for(s=Math.max(0,Math.min(i.length-1,s+n)),o=Math.min(o,i[s].length)+e;o<0&&s>0;)s--,o+=i[s].length+1;for(;o>i[s].length&&s<i.length-1;)o-=i[s].length+1,s++;o=Math.max(0,Math.min(i[s].length,o));let a=0;for(let c=0;c<s;c++)a+=i[c].length+1;return a+o}var
|
|
285
|
+
`}class Ek{bytes=[];u8(t){this.bytes.push(t&255)}u16(t){this.u8(t>>8),this.u8(t)}u32(t){this.u16(Math.floor(t/65536)),this.u16(t%65536)}str(t=""){let e=new TextEncoder().encode(t);if(e.length>255)throw Error(`"${t}" is too long to share`);this.u8(e.length),this.bytes.push(...e)}color(t){let e=Number.parseInt(t.slice(1),16);this.u8(e>>16),this.u8(e>>8),this.u8(e)}done(){let t=Buffer.from(this.bytes);return Buffer.concat([t,xk(t)]).toString("base64url")}}class Mk{at=0;bytes;constructor(t){this.bytes=t}u8(){let t=this.bytes[this.at++];if(t===void 0)throw Error("the share code is cut short");return t}u16(){return this.u8()*256+this.u8()}u32(){return this.u16()*65536+this.u16()}str(){let t=this.u8(),e=this.bytes.subarray(this.at,this.at+t);if(e.length!==t)throw Error("the share code is cut short");this.at+=t;try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw Error("the share code holds text it cannot read — was it copied whole?")}}color(){return`#${[this.u8(),this.u8(),this.u8()].map((t)=>t.toString(16).padStart(2,"0")).join("")}`}end(){if(this.at!==this.bytes.length)throw Error("the share code has bytes left over")}}function xk(t){return ET("sha256").update(t).digest().subarray(0,Hu)}function Nh(t){return/^tt\d+:/.test(t)}function Ok(t){return`${Th}${t}`}function Fa(t){let e=t.trim();if(!/^https?:\/\//i.test(e))return Nh(e)?e:void 0;let r=(URL.canParse(e)?/^\/p\/([^/]+)\/?$/.exec(new URL(e).pathname)?.[1]:void 0)?.replace(/%3a/gi,":");return r&&Nh(r)?r:void 0}function Pk(t,e){let n=Bh(t),r=dn(Fn(n.name,jh(n),e,!0));return n.catalog?{...r,catalog:n.catalog}:r}function _h(t){let e=new Ek;e.str(t.name);for(let r of[t.background,t.foreground,t.cursor,t.selection,...t.ansi])e.color(r);for(let r of t.signature)e.u8(kk.indexOf(r));e.str(t.base),e.str(t.catalog),e.str(t.ansiSource),e.str(t.booru),e.u16((t.waive??[]).reduce((r,i)=>r|1<<md.indexOf(i),0)),e.str(t.waive&&t.waive.length>0?t.reason:"");let n=t.pictures??[];if(n.length>255)throw Error(`a share code carries at most 255 pictures, and ${t.name} holds ${n.length}`);e.u8(n.length);for(let r of n)e.u8(Y.findIndex((i)=>i.key===r.site)),e.u32(r.id),e.u16(r.size===void 0?0:r.size==="fill"?1:r.size),e.u8(r.position===void 0?0:Dt.indexOf(r.position)+1),e.u16(r.opacity===void 0?0:Math.round(r.opacity*1000)+1);return`${Ha}${e.done()}`}function Bh(t){if(!t.startsWith(Ha))throw Error(Nh(t)?`this ttheme reads ${Ha} share codes, not ${t.slice(0,t.indexOf(":")+1)}`:`a share code starts with ${Ha}`);let e=t.slice(Ha.length);if(!/^[A-Za-z0-9_-]+$/.test(e))throw Error("the share code holds characters it never uses — was it copied whole?");let n=Buffer.from(e,"base64url");if(n.length<=Hu)throw Error("the share code is cut short");let r=n.subarray(0,-Hu);if(!xk(r).equals(n.subarray(-Hu)))throw Error("the share code does not add up — was it copied whole?");let i=new Mk(new Uint8Array(r)),s=i.str(),[o,a,c,u,...f]=Array.from({length:20},()=>i.color()),l=[i.u8(),i.u8(),i.u8()].map((S)=>kk[S]??`slot${S}`),d=i.str(),h=i.str(),m=i.str(),p=i.str(),b=i.u16(),$=i.str(),k=md.filter((S,M)=>b&1<<M),v=Array.from({length:i.u8()},()=>{let S=Y[i.u8()]?.key??"unknown",M=i.u32(),x=i.u16(),N=i.u8(),R=i.u16();return{site:S,id:M,...x===1?{size:"fill"}:x>1?{size:x}:{},...N>0?{position:Dt[N-1]??"unknown"}:{},...R>0?{opacity:(R-1)/1000}:{}}});if(i.end(),![o,a,c,u,...f].every(be))throw Error("the share code holds a color that is not one");return{name:s,...d?{base:d}:{},...h?{catalog:h}:{},...m?{ansiSource:m}:{},...p?{booru:p}:{},signature:l,background:o,foreground:a,cursor:c,selection:u,ansi:f,...k.length>0?{waive:k,reason:$}:{},...v.length>0?{pictures:v}:{}}}function wo(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi}}function Gh(t,e){let n=t.indexOf("ansi = ["),r=t.indexOf("]",n);if(n<0||r<0)throw Error("no ansi = [...] list to rewrite");let i=0,s=t.slice(n,r).replace(/"#[0-9a-fA-F]{6}"/g,()=>Tt(e.ansi[i++]));return[["background",e.background],["foreground",e.foreground],["cursor",e.cursor],["selection_background",e.selection]].reduce((a,[c,u])=>a.replace(new RegExp(`^(${c}\\s*=\\s*)"#[0-9a-fA-F]{6}"`,"m"),(f,l)=>`${l}${Tt(u)}`),t.slice(0,n)+s+t.slice(r))}function Ik(t,e){return t.replace(/^(signature\s*=\s*)\[[^\]]*\]/m,(n,r)=>`${r}[${e.map(Tt).join(", ")}]`)}function La(t){let e=xn(Le(t)),n=new Set(t.waived??[]),r=Math.max(...Ne.map((i)=>i.label.length));return Ne.map((i,s)=>{let o=e[s],a=n.has(i.rule)||Number.isNaN(o)||(i.min===void 0||o>=i.min)&&(i.max===void 0||o<=i.max),c=i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",u=Number.isNaN(o)?"—":Number.isInteger(o)?String(o):o.toFixed(2);return` ${a?"✓":"✗"} ${i.label.padEnd(r)} ${u.padStart(6)} ${c}${n.has(i.rule)?" waived":""}`})}import{existsSync as RT,readFileSync as AT,rmSync as NT}from"node:fs";import{join as TT}from"node:path";var ja=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],HT=1;function Rk(t){return TT(t,"ttheme","tone.json")}function Ak(t){return ja.includes(t)}function ne(t){let e=Rk(t);if(!RT(e))return{};let n;try{n=JSON.parse(AT(e,"utf8"))}catch{return{}}let r=n?.palettes;if(typeof r!=="object"||r===null)return{};let i={};for(let[s,o]of Object.entries(r)){if(typeof o!=="object"||o===null)continue;let a={};for(let[c,u]of Object.entries(o))if(Ak(c)&&typeof u==="string"&&be(u.toLowerCase()))a[c]=u.toLowerCase();if(Object.keys(a).length>0)i[s]=a}return i}function _a(t,e){let n=Rk(t),r=Object.fromEntries(Object.entries(e).filter(([,i])=>Object.keys(i).length>0));if(Object.keys(r).length===0){NT(n,{force:!0});return}C(n,`${JSON.stringify({version:HT,palettes:r},null,2)}
|
|
286
|
+
`)}function Ca(t,e){if(e==="background"||e==="foreground"||e==="cursor"||e==="selection")return t[e];return t.ansi[Number(e.slice(4))]}function Nk(t){return ja.map((e)=>Ca(t,e))}function Uh(t,e){return Object.fromEntries(ja.flatMap((n,r)=>{let i=e[r].toLowerCase();return i===Ca(t,n).toLowerCase()?[]:[[n,i]]}))}function Ba(t,e){if(!e)return t;let n=(u)=>e[u]===void 0||e[u]===Ca(t,u).toLowerCase();if(ja.every(n))return t;let r=(u)=>e[u]??Ca(t,u),i={background:r("background"),foreground:r("foreground"),cursor:r("cursor"),selection:r("selection"),ansi:ja.slice(4).map(r)},s=t.signatureSlots.map((u)=>Ak(u)?r(u):Ca(i,u)),o={...t,...i,signature:s},a=Le(o),c=Hn({name:o.name,background:i.background,foreground:i.foreground,cursor:i.cursor,selection:i.selection,ansi:i.ansi,waived:a.waive},o.signatureSlots);return{...o,gate:xn(a),backdrop:c}}function Cu(t,e){return Object.keys(e).length===0?t:t.map((n)=>Ba(n,e[n.name]))}function ju(t,e,n){let r={...t};if(Object.keys(n).length===0)delete r[e];else r[e]=n;return r}function Tk(t,e,n){let r=ne(t);if(!Object.keys(r).some((s)=>e.has(s)||n.includes(s)))return;_a(t,Object.fromEntries(Object.entries(r).filter(([s])=>!n.includes(s)).map(([s,o])=>[e.get(s)??s,o])))}var FT=20000;function Wi(t){return Lk(t,"ttheme","official.json")}function Ck(t,e){C(Wi(t),`${JSON.stringify(e,null,2)}
|
|
287
|
+
`)}function ut(t,e=!0,n){let r=go(t),i=Wi(t),s=Iu();if(r.includes(Q))if(n)s=n;else{if(!Fk(i))throw Error(`no official marketplace at ${i} — run \`ttheme init\` first`);s=Ki(Wh(i,"utf8"))}let o=r.filter(yt).flatMap((a)=>CT(t,a,s.palettes,e));return{...s,palettes:[...s.palettes,...o]}}function LT(t){let e;try{e=JSON.parse(t)}catch{throw Error("is not valid JSON")}let n=e?.files;if(!n||typeof n!=="object"||Object.values(n).some((r)=>typeof r!=="string"))throw Error("is not a copy of a marketplace this ttheme fetched — `ttheme update` fetches it again");return{...typeof e?.etag==="string"?{etag:e.etag}:{},files:n}}function qr(t,e){return LT(Wh(ur(t,e),"utf8"))}function jk(t,e){return ke({owner:gk(t),name:e.name})}function _k(t,e){let n=e.files[ft];if(n===void 0)throw Error(`${at(t)} has no ${ft} — \`ttheme marketplace init\` makes one`);return Rh(n,ft)}function _u(t,e){return jk(t,_k(t,e))}function Ga(t,e,n,r){let i=_k(t,e),s=jk(t,i),o=at(t),a=new Map(Object.entries(e.files).map(([u,f])=>[`${o}/${u}`,f])),c=Hh(Object.keys(e.files),(u)=>`${o}/${u}`);return{id:s,info:i,entries:Lh(c,(u)=>a.get(u.path)??"",s,n,r,!0)}}function CT(t,e,n,r){let i=ur(t,e);if(!Fk(i))return[];try{return Ga(e,qr(t,e),n,Ce(!1)).entries}catch(s){if(r)process.stderr.write(`ttheme: skipping ${i} — ${s.message}
|
|
288
|
+
`);return[]}}function Ki(t){let e;try{e=JSON.parse(t)}catch{throw Error("the manifest is not valid JSON")}let n=e;if(typeof n?.version!=="string"||!Array.isArray(n.palettes))throw Error("the manifest has no version or palettes");for(let r of n.palettes){let i=Bk(r);if(i)throw Error(`manifest entry ${JSON.stringify(r?.name)} ${i}`)}return n}function Bk(t){if(typeof t?.name!=="string"||!Array.isArray(t.ansi)||t.ansi.length!==16)return"is missing name or its 16 ANSI colors";let e=ee(t.name)??(t.base===void 0?void 0:ee(t.base));if(e)return e;if(![t.background,t.foreground,t.cursor,t.selection,...t.ansi].every((n)=>typeof n==="string"&&be(n)))return'holds a color that is not "#rrggbb"';return[t.native??"-",t.catalog??"-",t.ansiSource].values().map((n)=>typeof n==="string"?Pa(n):"has a field that is not text").find(Boolean)}function Gk(t){return Lk(t,"ttheme","kept.json")}function $o(t,e){C(Gk(t),`${JSON.stringify({palettes:e},null,2)}
|
|
289
|
+
`)}function Jr(t){try{let{palettes:e}=JSON.parse(Wh(Gk(t),"utf8"));return Array.isArray(e)?e.filter((n)=>Bk(n)===void 0):[]}catch{return[]}}function Hk(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi,t.pictures??[]])}function ko(t,e){let n=new Map(Jr(t).map((r)=>[r.name,r]));return e.palettes.filter((r)=>{let i=n.get(r.name);return rt(r.name)!==void 0&&i!==void 0&&Hk(i)!==Hk(r)})}function fr(t,e,n=!0){let r=Jr(t),i=new Map(r.filter((a)=>rt(a.name)!==void 0).map((a)=>[a.name,a])),s=[...e.palettes.map((a)=>i.get(a.name)??a),...yk(t,e.palettes,n)],o=new Set(s.map((a)=>a.name));return{...e,palettes:[...s,...r.filter((a)=>!o.has(a.name))]}}function Jt(t,e,n=!0){let r=fr(t,e,n);return{...r,palettes:Cu(r.palettes,ne(t))}}function ye(t){return Jt(t,ut(t))}class Bu extends Error{}class Uk extends Error{}async function Ua(t,e=FT,n,r={}){let i;try{let s=AbortSignal.timeout(e);i=await fetch(t,{headers:r,signal:n?AbortSignal.any([s,n]):s})}catch(s){throw Error(`cannot reach ${t} — ${s instanceof Error?s.message:String(s)}`)}if(i.status===404)throw new Bu(`nothing at ${t}`);if(i.status===403||i.status===429)throw new Uk(`${new URL(t).host} is turning requests away for now (${i.status}) — try again in a minute`);if(!i.ok&&i.status!==304)throw Error(`${t} answered ${i.status}`);return i}function Wa(t){let e=new Set(t.waived??[]),n=t.gate??xn(Le(t));return Ne.flatMap((r,i)=>{let s=n[i];if(e.has(r.rule)||typeof s!=="number"||Number.isNaN(s))return[];if(r.min!==void 0&&s<r.min)return[`${r.label} ${s} < ${r.min}`];if(r.max!==void 0&&s>r.max)return[`${r.label} ${s} > ${r.max}`];return[]})}function Ln(t,e){let n=t.find((r)=>r.name===e);if(!n)throw Error(`no palette named ${e} in your marketplaces — ${Kh(t,[e])}`);return n}function Kh(t,e){let n=e.map((o)=>o.toLowerCase()),r=t.filter((o)=>n.some((a)=>o.name.includes(a))),i=t.filter((o)=>!r.includes(o)&&n.some((a)=>He(o).toLowerCase().includes(a))),s=[...r,...i].map((o)=>o.name).slice(0,3);return s.length>0?`did you mean: ${s.join(", ")}?`:"the Browse tab of `ttheme` shows what is there"}function Wk(t,e,n){let r=n.toLowerCase(),i=(s)=>s.name===e.name?0:He(s)===He(e)?1:2;return t.filter((s)=>s.booru?.toLowerCase().includes(r)).sort((s,o)=>i(s)-i(o))}function Kk(t,e){return t.booruSites?.[e]??(t.booru?[t.booru]:[])}var zk=(()=>{let t=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(e)=>{let n=0;t.lastIndex=0;while(t.test(e))n+=1;return e.length-n}})(),Dk=(t)=>{return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510},qk=(t)=>{return t===8987||t===9001||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12771||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=19903||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t>=131072&&t<=196605||t>=196608&&t<=262141};var jT=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,_T=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Jk=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,BT=/\t{1,1000}/y,Yk=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,GT=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,UT=/\p{M}+/gu,WT={limit:1/0,ellipsis:""},Vk=(t,e={},n={})=>{let r=e.limit??1/0,i=e.ellipsis??"",s=e?.ellipsisWidth??(i?Vk(i,WT,n).width:0),o=0,a=n.controlWidth??0,c=n.tabWidth??8,u=n.emojiWidth??2,f=2,l=n.regularWidth??1,d=n.wideWidth??2,h=[[GT,l],[jT,0],[_T,a],[BT,c],[Yk,u],[Jk,d]],m=0,p=0,b=t.length,$=0,k=!1,v=b,S=Math.max(0,r-s),M=0,x=0,N=0,R=0;t:while(!0){if(x>M||p>=b&&p>m){let T=t.slice(M,x)||t.slice(m,p);$=0;for(let _ of T.replaceAll(UT,"")){let W=_.codePointAt(0)||0;if(Dk(W))R=2;else if(qk(W))R=d;else R=l;if(N+R>S)v=Math.min(v,Math.max(M,m)+$);if(N+R>r){k=!0;break t}$+=_.length,N+=R}M=x=0}if(p>=b)break t;for(let T=0,_=h.length;T<_;T++){let[W,B]=h[T];if(W.lastIndex=p,W.test(t)){if($=W===Jk?zk(t.slice(p,W.lastIndex)):W===Yk?1:W.lastIndex-p,R=$*B,N+R>S)v=Math.min(v,p+Math.floor((S-N)/B));if(N+R>r){k=!0;break t}N+=R,M=m,x=p,p=m=W.lastIndex;continue t}}p+=1}return{width:k?S:N,index:k?v:b,truncated:k,ellipsed:k&&r>=s}},Zk=Vk;var KT={limit:1/0,ellipsis:"",ellipsisWidth:0},zT=(t,e={})=>{return Zk(t,KT,e).width},Wt=zT;var Xk={dim:["2","22"],bold:["1","22"],under:["4","24"],reverse:["7","27"],accent:["36","39"],pill:["7;1;36","22;27;39"],chip:["100;1","22;49"],danger:["7;1;31","22;27;39"],match:["1;4;36","22;24;39"],ok:["32","39"],warn:["33","39"],error:["31","39"]},DT={stage:0.08,bar:0.14,selection:0.2,tab:0.3,line:0.45},I={gutter:"▌",current:"◆",signature:"✦",closed:"▸",opened:"▾",on:"●",off:"○",ok:"✓",miss:"✗",above:"↑",below:"↓",update:"⇡",auto:"↻",remove:"×",undo:"↶",star:"★",link:"⧉",search:"⌕",linked:"⇠",contrast:"◐",swatch:"■",pictures:"▣",sep:"·",cut:"…"},mn=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];function je(t){return`\x1B[${t}m`}function wt(t){return je(Xk[t][0])}function zh(t){return je(Xk[t][1])}var ve=je("0"),$t=je("39"),Qk=je("49"),pe=je("39;49");function zi(t){return je(String(t<8?30+t:82+t))}function ty(t){return je(String(t<8?40+t:92+t))}function ey(t,e){return je(`38;5;${t};48;5;${e}`)}function Gu(t){let e=t.replace("#","");return[e.slice(0,2),e.slice(2,4),e.slice(4,6)].map((n)=>Number.parseInt(n,16)).join(";")}function dr(t){return je(`38;2;${Gu(t)}`)}function Dh(t){return je(`48;2;${Gu(t)}`)}function ny(t,e){return je(`48;2;${Gu(t)};38;2;${Gu(e)}`)}function Uu(t,e=$t){return`${t.map((n)=>`${dr(n)}${I.swatch}`).join(" ")}${e}`}function Di(t,e,n){return At(t,e,DT[n])}function qh(t){let e=!1,n=!1,r=!1,i=!1,s=!1,o=!1;for(let c of t.split("\x1B[").slice(1)){let u=/^([0-9;]*)m/.exec(c)?.[1];if(u===void 0)continue;let f=(u||"0").split(";").map(Number);for(let l=0;l<f.length;l++){let d=f[l];if(d===0)e=n=r=i=s=o=!1;else if(d===1||d===2)e=!0;else if(d===22)e=!1;else if(d===3||d===23)n=d===3;else if(d===4||d===24)r=d===4;else if(d===7||d===27)i=d===7;else if(d===38||d===48)s||=d===38,o||=d===48,l+=f[l+1]===5?2:4;else if(d===39)s=!1;else if(d===49)o=!1;else if(d>=30&&d<=37||d>=90&&d<=97)s=!0;else if(d>=40&&d<=47||d>=100&&d<=107)o=!0}}let a=[e&&"22",n&&"23",r&&"24",i&&"27",s&&"39",o&&"49"].filter(Boolean);return a.length>0?je(a.join(";")):""}function Se(t){let e=(n)=>(r)=>t?`${wt(n)}${r}${zh(n)}`:r;return{color:t,dim:e("dim"),bold:e("bold"),accent:e("accent"),pill:e("pill"),chip:e("chip"),danger:e("danger"),ok:e("ok"),warn:e("warn"),error:e("error"),fg:(n)=>t?dr(n):"",bg:(n)=>t?Dh(n):""}}var qT=/^[\x20-\x7e]*$/,Wu=new Map,JT=8192,YT=512;function z(t){if(qT.test(t))return t.length;if(t.length>YT)return Wt(t);let e=Wu.get(t);if(e===void 0){if(Wu.size>=JT)Wu.clear();e=Wt(t),Wu.set(t,e)}return e}function Ku(t,e){return e&&!/\p{Cc}/u.test(e)?`\x1B]8;;${e}\x1B\\${t}\x1B]8;;\x1B\\`:t}function Jh(t,e){if(t[e]!=="\x1B")return 0;if(t[e+1]==="]"){let r=t.indexOf("\x07",e+2),i=t.indexOf("\x1B\\",e+2),s=r!==-1&&(i===-1||r<i)?r+1:i!==-1?i+2:0;return s?s-e:0}if(t[e+1]!=="[")return 0;let n=e+2;while(n<t.length&&!/[@-~]/.test(t[n]))n++;return n<t.length?n-e+1:0}var ry;function Yh(t){return ry??=new Intl.Segmenter(void 0,{granularity:"grapheme"}),ry.segment(t)}function yo(t){let e=[],n=0;while(n<t.length){let r=Jh(t,n);if(r>0){e.push({text:t.slice(n,n+r),start:n,end:n+r,width:0,sequence:!0}),n+=r;continue}let i=t.indexOf("\x1B",n+1),s=i===-1?t.length:i;for(let{segment:o,index:a}of Yh(t.slice(n,s)))e.push({text:o,start:n+a,end:n+a+o.length,width:z(o),sequence:!1});n=s}return e}function VT(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?e:void 0}function Vh(t,e){let n="",r=0,i=0;for(let s of yo(t)){if(!s.sequence){if(r+s.width>e)break;r+=s.width}else{let o=VT(s.text);if(o!==void 0)i=o==="0"?Math.max(0,i-1):i+1}n+=s.text}return{head:n,used:r,ends:"\x1B[?0y".repeat(i)}}function tt(t,e,n=!0){if(e<=0)return"";let r=z(t);if(r<=e)return n?t+" ".repeat(e-r):t;let{head:i,used:s,ends:o}=Vh(t,e-1);return`${i}${qh(i)}…${o}${n?" ".repeat(e-1-s):""}`}function iy(t,e){let{head:n,used:r,ends:i}=Vh(t,e);return`${n}${qh(n)}${i}${" ".repeat(e-r)}`}function It(t,e,n){let r=n-z(e)-1;return r<=0?tt(t,n):`${tt(t,r)} ${e}`}function Ht(t,e){let n=[],r="";for(let i of t.split(/\s+/).filter(Boolean)){let s=r?`${r} ${i}`:i;if(z(s)<=e){r=s;continue}if(r)n.push(r);while(z(i)>e){let{head:o}=Vh(i,e),a=Math.max(o.lastIndexOf("/")+1,o.lastIndexOf("#")),c=a>0?a:o.length||yo(i)[0].end;n.push(i.slice(0,c)),i=i.slice(c)}r=i}if(r)n.push(r);return n}var ZT=9999,vo;function Ze(t,e){if(!vo||e===""||vo.length>=ZT)return e;return`\x1B[?${vo.push(t)}y${e}\x1B[?0y`}function oy(t){let e=vo,n=[];vo=n;try{return{drawn:t(),targets:n}}finally{vo=e}}function ay(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?Number(e):void 0}function XT(t){let e=t.slice(2,-1);return t.startsWith("\x1B[")&&t.endsWith("G")&&/^\d*$/.test(e)?Math.max(1,Number(e||1))-1:void 0}function QT(t,e,n){if(!t.includes("\x1B[?"))return{text:t,zones:[]};let r=[],i=[],s="",o=0,a="",c=()=>{let f=i.pop();if(f&&o>f.col)r.push({row:e,col:f.col,width:o-f.col,height:1,target:f.target})},u=0;while(u<t.length){let f=t.indexOf("\x1B",u);if(f!==u){let m=f===-1?t.length:f;a+=t.slice(u,m),s+=t.slice(u,m),u=m;continue}let l=t.slice(u,u+(Jh(t,u)||1));u+=l.length;let d=ay(l),h=d===void 0?XT(l):void 0;if(d===void 0&&h===void 0){s+=l;continue}if(o+=z(a),a="",h!==void 0)o=h,s+=l;else if(d===0)c();else if(d!==void 0)i.push({target:n[d-1],col:o})}o+=z(a);while(i.length>0)c();return{text:s,zones:r}}function zu(t,e,n){let r=[],i=[],s="",o=(b)=>{let $=ay(b);if($===0)r.pop();else if($!==void 0)r.push(b);else if(b.startsWith("\x1B]8;"))s=b.slice(b.indexOf(";",4)+1).replace("\x07","").replace("\x1B\\","")===""?"":b;else if(b.startsWith("\x1B[")&&b.endsWith("m"))i.push(b)},a=t.includes("\x1B")||n.includes("\x1B")?ve:"",c=yo(t),u="",f=0,l=0;while(l<c.length&&f<e){let b=c[l];if(b.sequence)o(b.text);else if(f+b.width>e)break;else f+=b.width;u+=b.text,l++}u+=" ".repeat(e-Math.min(e,f));let d=`${"\x1B[?0y".repeat(r.length)}${s?"\x1B]8;;\x1B\\":""}${a}`,h=e+z(n);while(l<c.length&&f<h){let b=c[l];if(b.sequence)o(b.text);else f+=b.width;l++}let m=l<c.length?t.slice(c[l].start):"";if(m===""&&f<=h)return`${u}${d}${n}${a}`;let p=`${i.join("")}${s}${r.join("")}${" ".repeat(Math.max(0,f-h))}`;return`${u}${d}${n}${a}${p}${m}`}function cy(t,e){let n=t.map((r,i)=>QT(r,i,e));return{lines:n.map((r)=>r.text),zones:n.flatMap((r)=>r.zones)}}function sy(t,e,n,r=0.5,i=0.5){let s=n-t.col,o=e-t.row;return{target:t.target,x:s,y:o,exact:{x:s+r,y:o+i},width:t.width,height:t.height,inside:s>=0&&s<t.width&&o>=0&&o<t.height}}function tH(t,e,n){let r;for(let i of t)if(e>=i.row&&e<i.row+i.height&&n>=i.col&&n<i.col+i.width&&(!r||i.width*i.height<=r.width*r.height))r=i;return r}var eH={space:" ",enter:"enter",esc:"esc",tab:"tab",bksp:"backspace",del:"delete","←":"left","→":"right"};function Zh(t){let e=/^(ctrl|alt)\+([a-z])$/.exec(t);if(e)return`${e[1]}-${e[2]}`;return eH[t]??([...t].length===1&&t!==" "?t:void 0)}function Kt(t,e){let n=Zh(t);return n?Ze({kind:"key",key:n},e):e}class Xh{zones=[];held;point(t){if(t.action==="drag"||t.action==="release"){let n=this.held;if(t.action==="release")this.held=void 0;return n&&sy(n,t.row,t.col,t.fx,t.fy)}let e=tH(this.zones,t.row,t.col);if(t.action==="press")this.held=t.button==="left"?e:void 0;return e&&sy(e,t.row,t.col,t.fx,t.fy)}drop(){this.held=void 0}}function Du(t,e,n,r=(i)=>i){if(!t.color)return r(n?`[${e}]`:` ${e} `);return n?t.pill(r(` ${e} `)):t.dim(r(` ${e} `))}function Ka(t,e,n,r=!1){if(!t.color)return n==="focus"?`[${e}]`:` ${e} `;if(n==="off")return t.dim(` ${e} `);if(n==="focus")return r?t.danger(` ${e} `):t.pill(` ${e} `);return t.chip(` ${e} `)}function Xe(t,e){return t.color?t.pill(` ${e} `):`[${e}]`}function So(t,e,n){return Kt(e.split(" ")[0]??"",`${t.bold(e)} ${t.dim(n)}`)}function qu(t,e){return e===void 0?t.dim(I.sep):e?t.dim(I.ok):t.bold(I.miss)}var nH={top:"╭╮",mid:"├┤",bottom:"╰╯"};function Ct(t,e,n=[]){let[r,i]=[...nH[e]],s=[...`${r}${"─".repeat(Math.max(0,t-2))}${i}`];for(let[o,a]of n)[...a].forEach((c,u)=>{if(o+u>0&&o+u<t-1)s[o+u]=c});return s.join("")}function Qh(t,e,n,r){let i=[...Ct(t,"top",[[2,e]])],s=2+[...e].length;return`${n(i.slice(0,2).join(""))}${r(e)}${n(i.slice(s).join(""))}`}function _e(t,e,n){return`${t.dim("│")}${tt(e,n-2)}${t.dim("│")}`}var hr=[{name:"preview",title:"Preview"},{name:"browse",title:"Browse"}],Ju=10,Yu=20;function uy(t){return hr.find((e)=>e.name===t.TTHEME_HUB)?.name}function Vu(t,e){let n=hr.findIndex((r)=>r.name===t);return Yu+(n+e+hr.length)%hr.length+1}function ly(t){return Yu+hr.findIndex((e)=>e.name===t)+1}function tm(t,e){let n=Se(e);return` ${hr.map(({name:i,title:s})=>{let o={kind:"hub",tab:i};return Du(n,s,i===t,(a)=>Ze(o,a))}).join(" ")} ${n.dim("tab next")}`}import{execFileSync as nC}from"node:child_process";import{existsSync as Gl,mkdirSync as rC,readdirSync as iC,readFileSync as jp,rmSync as sC}from"node:fs";import{basename as tS,join as fc,relative as Zv}from"node:path";import{styleText as el}from"node:util";import{stdout as yy,stdin as lH}from"node:process";import fH from"node:readline";var Zu="\x1B",py="",rH=39,nm="\x07",gy="[",iH="]",by="m",rm=`${iH}8;;`,fy=new RegExp(`(?:\\${gy}(?<code>\\d+)m|\\${rm}(?<uri>.*)${nm})`,"y"),dy=(t)=>{if(t>=30&&t<=37)return 39;if(t>=90&&t<=97)return 39;if(t>=40&&t<=47)return 49;if(t>=100&&t<=107)return 49;if(t===1||t===2)return 22;if(t===3)return 23;if(t===4)return 24;if(t===7)return 27;if(t===8)return 28;if(t===9)return 29;if(t===0)return 0;return},hy=(t)=>`${Zu}${gy}${t}${by}`,my=(t)=>`${Zu}${rm}${t}${nm}`,em=(t,e,n)=>{let r=e[Symbol.iterator](),i=!1,s=!1,o=t.at(-1),a=o===void 0?0:Wt(o),c=r.next(),u=r.next(),f=0;while(!c.done){let l=c.value,d=Wt(l);if(a+d<=n)t[t.length-1]+=l;else t.push(l),a=0;if(l===Zu||l===py)i=!0,s=e.startsWith(rm,f+1);if(i){if(s){if(l===nm)i=!1,s=!1}else if(l===by)i=!1}else if(a+=d,a===n&&!u.done)t.push(""),a=0;c=u,u=r.next(),f+=l.length}if(o=t.at(-1),!a&&o!==void 0&&o.length&&t.length>1)t[t.length-2]+=t.pop()},sH=(t)=>{let e=t.split(" "),n=e.length;while(n){if(Wt(e[n-1]))break;n--}if(n===e.length)return t;return e.slice(0,n).join(" ")+e.slice(n).join("")},oH=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",i,s,o=t.split(" "),a=[""],c=0;for(let l=0;l<o.length;l++){let d=o[l];if(n.trim!==!1){let m=a.at(-1)??"",p=m.trimStart();if(m.length!==p.length)a[a.length-1]=p,c=Wt(p)}if(l!==0){if(c>=e&&(n.wordWrap===!1||n.trim===!1))a.push(""),c=0;if(c||n.trim===!1)a[a.length-1]+=" ",c++}let h=Wt(d);if(n.hard&&h>e){let m=e-c,p=1+Math.floor((h-m-1)/e);if(Math.floor((h-1)/e)<p)a.push("");em(a,d,e),c=Wt(a.at(-1)??"");continue}if(c+h>e&&c&&h){if(n.wordWrap===!1&&c<e){em(a,d,e),c=Wt(a.at(-1)??"");continue}a.push(""),c=0}if(c+h>e&&n.wordWrap===!1){em(a,d,e),c=Wt(a.at(-1)??"");continue}a[a.length-1]+=d,c+=h}if(n.trim!==!1)a=a.map((l)=>sH(l));let u=a.join(`
|
|
290
|
+
`),f=!1;for(let l=0;l<u.length;l++){let d=u[l];if(r+=d,!f){if(f=d>="\uD800"&&d<="\uDBFF",f)continue}else f=!1;if(d===Zu||d===py){fy.lastIndex=l+1;let m=fy.exec(u)?.groups;if(m?.code!==void 0){let p=Number.parseFloat(m.code);i=p===rH?void 0:p}else if(m?.uri!==void 0)s=m.uri.length===0?void 0:m.uri}if(u[l+1]===`
|
|
291
|
+
`){if(s)r+=my("");let h=i?dy(i):void 0;if(i&&h)r+=hy(h)}else if(d===`
|
|
292
|
+
`){if(i&&dy(i))r+=hy(i);if(s)r+=my(s)}}return r},aH=/\r?\n/;function Yr(t,e,n){return String(t).normalize().split(aH).map((r)=>oH(r,e,n)).join(`
|
|
293
|
+
`)}var Be=ld(sm(),1);function mr(t,e,n){if(!n.some((o)=>!o.disabled))return t;let r=t+e,i=Math.max(n.length-1,0),s=r<0?i:r>i?0:r;return n[s]?.disabled?mr(s,e<0?-1:1,n):s}function Xu(t,e,n,r){let i=r.split(`
|
|
294
|
+
`),s=0,o=t;for(let c of i){if(o<=c.length)break;o-=c.length+1,s++}for(s=Math.max(0,Math.min(i.length-1,s+n)),o=Math.min(o,i[s].length)+e;o<0&&s>0;)s--,o+=i[s].length+1;for(;o>i[s].length&&s<i.length-1;)o-=i[s].length+1,s++;o=Math.max(0,Math.min(i[s].length,o));let a=0;for(let c=0;c<s;c++)a+=i[c].length+1;return a+o}var dH=["up","down","left","right","space","enter","cancel"],hH=["January","February","March","April","May","June","July","August","September","October","November","December"],Bt={actions:new Set(dH),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,accessible:void 0,date:{monthNames:[...hH],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(t,e)=>`There are only ${t} days in ${e}`,afterMin:(t)=>`Date must be on or after ${t.toISOString().slice(0,10)}`,beforeMax:(t)=>`Date must be on or before ${t.toISOString().slice(0,10)}`}}};function mH(t){if(t!==void 0)return t;if(Bt.accessible!==void 0)return Bt.accessible;let e=process.env.ACCESSIBLE;return e!==void 0&&e!==""&&e!=="0"&&e!=="false"}function vy(t,e){if(typeof t=="string")return Bt.aliases.get(t)===e;for(let n of t)if(n!==void 0&&vy(n,e))return!0;return!1}function pH(t,e){if(t===e)return;let n=t.split(`
|
|
295
295
|
`),r=e.split(`
|
|
296
|
-
`),i=Math.max(n.length,r.length),s=[];for(let o=0;o<i;o++)n[o]!==r[o]&&s.push(o);return{lines:s,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}var
|
|
296
|
+
`),i=Math.max(n.length,r.length),s=[];for(let o=0;o<i;o++)n[o]!==r[o]&&s.push(o);return{lines:s,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}var RW=globalThis.process.platform.startsWith("win"),nl=Symbol("clack:cancel");function re(t){return t===nl}function Qu(t,e){let n=t;n.isTTY&&n.setRawMode(e)}var rl=(t)=>("columns"in t)&&typeof t.columns=="number"?t.columns:80,cm=(t)=>("rows"in t)&&typeof t.rows=="number"?t.rows:20;function Vr(t,e,n,r=n,i=n,s){let o=rl(t??yy);return Yr(e,o-n.length,{hard:!0,trim:!1}).split(`
|
|
297
297
|
`).map((a,c,u)=>{let f=s?s(a,c):a;return c===0?`${r}${f}`:c===u.length-1?`${i}${f}`:`${n}${f}`}).join(`
|
|
298
|
-
`)}function
|
|
299
|
-
`),Qu(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=
|
|
300
|
-
`).length-1;this.output.write(
|
|
301
|
-
`);this.output.write(o[s]),this._prevFrame=t,this.output.write(
|
|
298
|
+
`)}function Sy(t,e){if("~standard"in t){let n=t["~standard"].validate(e);return n instanceof Promise?n.then((r)=>r.issues?.at(0)?.message):n.issues?.at(0)?.message}return t(e)}class pr{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";get accessible(){return mH(this.opts.accessible)}constructor(t,e=!0){let{input:n=lH,output:r=yy,render:i,signal:s,...o}=t;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=e,this._abortSignal=s,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(t,e){let n=this._subscribers.get(t)??[];n.push(e),this._subscribers.set(t,n)}on(t,e){this.setSubscriber(t,{cb:e})}once(t,e){this.setSubscriber(t,{cb:e,once:!0})}emit(t,...e){let n=this._subscribers.get(t)??[],r=[];for(let i of n)i.cb(...e),i.once&&r.push(()=>n.splice(n.indexOf(i),1));for(let i of r)i()}prompt(){return new Promise((t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(nl);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=fH.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),Qu(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Be.cursor.show),this.output.off("resize",this.render),Qu(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(Be.cursor.show),this.output.off("resize",this.render),Qu(this.input,!1),t(nl)})})}_isActionKey(t,e){return t==="\t"}_shouldSubmit(t,e){return!0}_setValue(t){this.value=t,this.emit("value",this.value)}_setUserInput(t,e){this.userInput=t??"",this.emit("userInput",this.userInput),e&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}async onKeypress(t,e){if(this.state!=="validating"){if(this._track&&e.name!=="return"&&(e.name&&this._isActionKey(t,e)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),e?.name&&(!this._track&&Bt.aliases.has(e.name)&&this.emit("cursor",Bt.aliases.get(e.name)),Bt.actions.has(e.name)&&this.emit("cursor",e.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),this.emit("key",t,e),e?.name==="return"&&this._shouldSubmit(t,e)){if(this.opts.validate){let n=Sy(this.opts.validate,this.value),r;n instanceof Promise?(this.state="validating",this.render(),r=await n):r=n,r&&(this.error=r instanceof Error?r.message:r,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}vy([t,e?.name,e?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
299
|
+
`),Qu(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=Yr(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
|
|
300
|
+
`).length-1;this.output.write(Be.cursor.move(-999,t*-1))}render(){let t=Yr(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(Be.cursor.hide);else{let e=pH(this._prevFrame,t),n=cm(this.output);if(this.restoreCursor(),e){let r=Math.max(0,e.numLinesAfter-n),i=Math.max(0,e.numLinesBefore-n),s=e.lines.find((o)=>o>=r);if(s===void 0){this._prevFrame=t;return}if(e.lines.length===1){this.output.write(Be.cursor.move(0,s-i)),this.output.write(Be.erase.lines(1));let o=t.split(`
|
|
301
|
+
`);this.output.write(o[s]),this._prevFrame=t,this.output.write(Be.cursor.move(0,o.length-s-1));return}else if(e.lines.length>1){if(r<i)s=r;else{let a=s-i;a>0&&this.output.write(Be.cursor.move(0,a))}this.output.write(Be.erase.down());let o=t.split(`
|
|
302
302
|
`).slice(s);this.output.write(o.join(`
|
|
303
|
-
`)),this._prevFrame=t;return}}this.output.write(je.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}function cH(t,e){if(t===void 0||e.length===0)return 0;let n=e.findIndex((r)=>r.value===t);return n!==-1?n:0}function uH(t,e){return(e.label??String(e.value)).toLowerCase().includes(t.toLowerCase())}function lH(t,e){if(e)return t?e:e[0]}var fH=class extends gr{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#r="";#t;#o;#a;#n;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return el(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let e=this.userInput.slice(0,this.cursor),n=this.userInput.slice(this.cursor,this.cursor+1),r=this.userInput.slice(this.cursor+1);return`${e}${el("inverse",n)}${r}`}get options(){return typeof this.#o=="function"?this.#o():this.#o}constructor(e){super(e),this.#o=e.options,this.#a=e.placeholder,this.#n=e.completeOnTab===!0;let n=this.options;this.filteredOptions=[...n],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??uH;let r;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?r=e.initialValue:r=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(r=[this.options[0]?.value]),r)for(let i of r){let s=n.findIndex((o)=>o.value===i);s!==-1&&(this.toggleSelected(i),this.#e=s)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,s)=>this.#i(i,s)),this.on("userInput",(i)=>this.#s(i))}_isActionKey(e,n){return e==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&e!==void 0&&e!==""}#i(e,n){let r=n.name==="up",i=n.name==="down",s=n.name==="return",o=this.userInput===""||this.userInput==="\t",a=this.#a,c=this.options,u=a!==void 0&&a!==""&&c.some((f)=>!f.disabled&&(this.#t?this.#t(a,f):!0));if(n.name==="tab"&&o&&u){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}if(n.name==="tab"&&this.#n&&!this.multiple&&this.focusedValue!==void 0){let f=String(this.focusedValue);this._clearUserInput(),this._setUserInput(f,!0),this.isNavigating=!1;return}r||i?(this.#e=pr(this.#e,r?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):s?this.value=lH(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(n.name==="tab"||this.isNavigating&&n.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter((n)=>n!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#s(e){if(e!==this.#r){this.#r=e;let n=this.options;e&&this.#t?this.filteredOptions=n.filter((s)=>this.#t?.(e,s)):this.filteredOptions=[...n];let r=cH(this.focusedValue,this.filteredOptions);this.#e=pr(r,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class lm extends gr{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(e)=>{this.output.write(je.cursor.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var dH={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function gy(t){return[...t].map((e)=>dH[e])}function hH(t){let e=new Intl.DateTimeFormat(t,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(2000,0,15)),n=[],r="/";for(let i of e)i.type==="literal"?r=i.value.trim()||i.value:(i.type==="year"||i.type==="month"||i.type==="day")&&n.push({type:i.type,len:i.type==="year"?4:2});return{segments:n,separator:r}}function am(t){return Number.parseInt((t||"0").replace(/_/g,"0"),10)||0}function tl(t){return{year:am(t.year),month:am(t.month),day:am(t.day)}}function cm(t,e){return new Date(t||2001,e||1,0).getDate()}function yy(t){let{year:e,month:n,day:r}=tl(t);if(!e||e<0||e>9999||!n||n<1||n>12||!r||r<1)return;let i=new Date(Date.UTC(e,n-1,r));if(!(i.getUTCFullYear()!==e||i.getUTCMonth()!==n-1||i.getUTCDate()!==r))return{year:e,month:n,day:r}}function by(t){let e=yy(t);return e?new Date(Date.UTC(e.year,e.month-1,e.day)):void 0}function mH(t,e,n,r){let i=n?{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate()}:null,s=r?{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate()}:null;return t==="year"?{min:i?.year??1,max:s?.year??9999}:t==="month"?{min:i&&e.year===i.year?i.month:1,max:s&&e.year===s.year?s.month:12}:{min:i&&e.year===i.year&&e.month===i.month?i.day:1,max:s&&e.year===s.year&&e.month===s.month?s.day:cm(e.year,e.month)}}class vy extends gr{#e;#r;#t;#o;#a;#n={segmentIndex:0,positionInSegment:0};#i=!0;#s=null;inlineError="";get segmentCursor(){return{...this.#n}}get segmentValues(){return{...this.#t}}get segments(){return this.#e}get separator(){return this.#r}get formattedValue(){return this.#f(this.#t)}#f(t){return this.#e.map((e)=>t[e.type]).join(this.#r)}#c(){this._setUserInput(this.#f(this.#t)),this._setValue(by(this.#t)??void 0)}constructor(t){let e=t.format?{segments:gy(t.format),separator:t.separator??"/"}:hH(t.locale),n=t.separator??e.separator,r=t.format?gy(t.format):e.segments,i=t.initialValue??t.defaultValue,s=i?{year:String(i.getUTCFullYear()).padStart(4,"0"),month:String(i.getUTCMonth()+1).padStart(2,"0"),day:String(i.getUTCDate()).padStart(2,"0")}:{year:"____",month:"__",day:"__"},o=r.map((a)=>s[a.type]).join(n);super({...t,initialUserInput:o},!1),this.#e=r,this.#r=n,this.#t=s,this.#o=t.minDate,this.#a=t.maxDate,this.#c(),this.on("cursor",(a)=>this.#m(a)),this.on("key",(a,c)=>this.#p(a,c)),this.on("finalize",()=>this.#g(t))}#u(){let t=Math.max(0,Math.min(this.#n.segmentIndex,this.#e.length-1)),e=this.#e[t];if(e)return this.#n.positionInSegment=Math.max(0,Math.min(this.#n.positionInSegment,e.len-1)),{segment:e,index:t}}#l(t){this.inlineError="",this.#s=null;let e=this.#u();e&&(this.#n.segmentIndex=Math.max(0,Math.min(this.#e.length-1,e.index+t)),this.#n.positionInSegment=0,this.#i=!0)}#d(t){let e=this.#u();if(!e)return;let{segment:n}=e,r=this.#t[n.type],i=!r||r.replace(/_/g,"")==="",s=Number.parseInt((r||"0").replace(/_/g,"0"),10)||0,o=mH(n.type,tl(this.#t),this.#o,this.#a),a;i?a=t===1?o.min:o.max:a=Math.max(Math.min(o.max,s+t),o.min),this.#t={...this.#t,[n.type]:a.toString().padStart(n.len,"0")},this.#i=!0,this.#s=null,this.#c()}#m(t){if(t)switch(t){case"right":return this.#l(1);case"left":return this.#l(-1);case"up":return this.#d(1);case"down":return this.#d(-1)}}#p(t,e){if(e?.name==="backspace"||e?.sequence===""||e?.sequence==="\b"||t===""||t==="\b"){this.inlineError="";let n=this.#u();if(!n)return;if(!this.#t[n.segment.type].replace(/_/g,"")){this.#l(-1);return}this.#t[n.segment.type]="_".repeat(n.segment.len),this.#i=!0,this.#n.positionInSegment=0,this.#c();return}if(e?.name==="tab"){this.inlineError="";let n=this.#u();if(!n)return;let r=e.shift?-1:1,i=n.index+r;i>=0&&i<this.#e.length&&(this.#n.segmentIndex=i,this.#n.positionInSegment=0,this.#i=!0);return}if(t&&/^[0-9]$/.test(t)){let n=this.#u();if(!n)return;let{segment:r}=n,i=!this.#t[r.type].replace(/_/g,"");if(this.#i&&this.#s!==null&&!i){let d=this.#s+t,h={...this.#t,[r.type]:d},m=this.#h(h,r);if(m){this.inlineError=m,this.#s=null,this.#i=!1;return}this.inlineError="",this.#t[r.type]=d,this.#s=null,this.#i=!1,this.#c(),n.index<this.#e.length-1&&(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0);return}this.#i&&!i&&(this.#t[r.type]="_".repeat(r.len),this.#n.positionInSegment=0),this.#i=!1,this.#s=null;let s=this.#t[r.type],o=s.indexOf("_"),a=o>=0?o:Math.min(this.#n.positionInSegment,r.len-1);if(a<0||a>=r.len)return;let c=s.slice(0,a)+t+s.slice(a+1),u=!1;if(a===0&&s==="__"&&(r.type==="month"||r.type==="day")){let d=Number.parseInt(t,10);c=`0${t}`,u=d<=(r.type==="month"?1:2)}if(r.type==="year"&&(c=(s.replace(/_/g,"")+t).padStart(r.len,"_")),!c.includes("_")){let d={...this.#t,[r.type]:c},h=this.#h(d,r);if(h){this.inlineError=h;return}}this.inlineError="",this.#t[r.type]=c;let f=c.includes("_")?void 0:yy(this.#t);if(f){let{year:d,month:h}=f,m=cm(d,h);this.#t={year:String(Math.max(0,Math.min(9999,d))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,h))).padStart(2,"0"),day:String(Math.max(1,Math.min(m,f.day))).padStart(2,"0")}}this.#c();let l=c.indexOf("_");u?(this.#i=!0,this.#s=t):l>=0?this.#n.positionInSegment=l:o>=0&&n.index<this.#e.length-1?(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0):this.#n.positionInSegment=Math.min(a+1,r.len-1)}}#h(t,e){let{month:n,day:r}=tl(t);if(e.type==="month"&&(n<0||n>12))return Gt.date.messages.invalidMonth;if(e.type==="day"&&(r<0||r>31))return Gt.date.messages.invalidDay(31,"any month")}#g(t){let{year:e,month:n,day:r}=tl(this.#t);if(e&&n&&r){let i=cm(e,n);this.#t={...this.#t,day:String(Math.min(r,i)).padStart(2,"0")}}this.value=by(this.#t)??t.defaultValue??void 0}}var pH=class extends gr{options;cursor=0;#e;getGroupItems(e){return this.options.filter((n)=>n.group===e)}isGroupSelected(e){let n=this.getGroupItems(e),r=this.value;return r===void 0?!1:n.every((i)=>r.includes(i.value))}toggleValue(){let e=this.options[this.cursor];if(e!==void 0)if(this.value===void 0&&(this.value=[]),e.group===!0){let n=e.value,r=this.getGroupItems(n);this.isGroupSelected(n)?this.value=this.value.filter((i)=>r.findIndex((s)=>s.value===i)===-1):this.value=[...this.value,...r.map((i)=>i.value)],this.value=Array.from(new Set(this.value))}else{let n=this.value.includes(e.value);this.value=n?this.value.filter((r)=>r!==e.value):[...this.value,e.value]}}constructor(e){super(e,!1);let{options:n}=e;this.#e=e.selectableGroups!==!1,this.options=Object.entries(n).flatMap(([r,i])=>[{value:r,group:!0,label:r},...i.map((s)=>({...s,group:r}))]),this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:r})=>r===e.cursorAt),this.#e?0:1),this.on("cursor",(r)=>{switch(r){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}},gH=new Set(["up","down","left","right"]);class Sy extends gr{#e=!1;#r;focused="editor";get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${t}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return n===`
|
|
303
|
+
`)),this._prevFrame=t;return}}this.output.write(Be.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}function gH(t,e){if(t===void 0||e.length===0)return 0;let n=e.findIndex((r)=>r.value===t);return n!==-1?n:0}function bH(t,e){return(e.label??String(e.value)).toLowerCase().includes(t.toLowerCase())}function wH(t,e){if(e)return t?e:e[0]}var $H=class extends pr{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#r="";#t;#o;#a;#n;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return el(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let e=this.userInput.slice(0,this.cursor),n=this.userInput.slice(this.cursor,this.cursor+1),r=this.userInput.slice(this.cursor+1);return`${e}${el("inverse",n)}${r}`}get options(){return typeof this.#o=="function"?this.#o():this.#o}constructor(e){super(e),this.#o=e.options,this.#a=e.placeholder,this.#n=e.completeOnTab===!0;let n=this.options;this.filteredOptions=[...n],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??bH;let r;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?r=e.initialValue:r=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(r=[this.options[0]?.value]),r)for(let i of r){let s=n.findIndex((o)=>o.value===i);s!==-1&&(this.toggleSelected(i),this.#e=s)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,s)=>this.#i(i,s)),this.on("userInput",(i)=>this.#s(i))}_isActionKey(e,n){return e==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&e!==void 0&&e!==""}#i(e,n){let r=n.name==="up",i=n.name==="down",s=n.name==="return",o=this.userInput===""||this.userInput==="\t",a=this.#a,c=this.options,u=a!==void 0&&a!==""&&c.some((f)=>!f.disabled&&(this.#t?this.#t(a,f):!0));if(n.name==="tab"&&o&&u){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}if(n.name==="tab"&&this.#n&&!this.multiple&&this.focusedValue!==void 0){let f=String(this.focusedValue);this._clearUserInput(),this._setUserInput(f,!0),this.isNavigating=!1;return}r||i?(this.#e=mr(this.#e,r?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):s?this.value=wH(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(n.name==="tab"||this.isNavigating&&n.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter((n)=>n!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#s(e){if(e!==this.#r){this.#r=e;let n=this.options;e&&this.#t?this.filteredOptions=n.filter((s)=>this.#t?.(e,s)):this.filteredOptions=[...n];let r=gH(this.focusedValue,this.filteredOptions);this.#e=mr(r,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class um extends pr{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(e)=>{this.output.write(Be.cursor.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var kH={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function $y(t){return[...t].map((e)=>kH[e])}function yH(t){let e=new Intl.DateTimeFormat(t,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(2000,0,15)),n=[],r="/";for(let i of e)i.type==="literal"?r=i.value.trim()||i.value:(i.type==="year"||i.type==="month"||i.type==="day")&&n.push({type:i.type,len:i.type==="year"?4:2});return{segments:n,separator:r}}function om(t){return Number.parseInt((t||"0").replace(/_/g,"0"),10)||0}function tl(t){return{year:om(t.year),month:om(t.month),day:om(t.day)}}function am(t,e){return new Date(t||2001,e||1,0).getDate()}function Ey(t){let{year:e,month:n,day:r}=tl(t);if(!e||e<0||e>9999||!n||n<1||n>12||!r||r<1)return;let i=new Date(Date.UTC(e,n-1,r));if(!(i.getUTCFullYear()!==e||i.getUTCMonth()!==n-1||i.getUTCDate()!==r))return{year:e,month:n,day:r}}function ky(t){let e=Ey(t);return e?new Date(Date.UTC(e.year,e.month-1,e.day)):void 0}function vH(t,e,n,r){let i=n?{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate()}:null,s=r?{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate()}:null;return t==="year"?{min:i?.year??1,max:s?.year??9999}:t==="month"?{min:i&&e.year===i.year?i.month:1,max:s&&e.year===s.year?s.month:12}:{min:i&&e.year===i.year&&e.month===i.month?i.day:1,max:s&&e.year===s.year&&e.month===s.month?s.day:am(e.year,e.month)}}class My extends pr{#e;#r;#t;#o;#a;#n={segmentIndex:0,positionInSegment:0};#i=!0;#s=null;inlineError="";get segmentCursor(){return{...this.#n}}get segmentValues(){return{...this.#t}}get segments(){return this.#e}get separator(){return this.#r}get formattedValue(){return this.#f(this.#t)}#f(t){return this.#e.map((e)=>t[e.type]).join(this.#r)}#c(){this._setUserInput(this.#f(this.#t)),this._setValue(ky(this.#t)??void 0)}constructor(t){let e=t.format?{segments:$y(t.format),separator:t.separator??"/"}:yH(t.locale),n=t.separator??e.separator,r=t.format?$y(t.format):e.segments,i=t.initialValue??t.defaultValue,s=i?{year:String(i.getUTCFullYear()).padStart(4,"0"),month:String(i.getUTCMonth()+1).padStart(2,"0"),day:String(i.getUTCDate()).padStart(2,"0")}:{year:"____",month:"__",day:"__"},o=r.map((a)=>s[a.type]).join(n);super({...t,initialUserInput:o},!1),this.#e=r,this.#r=n,this.#t=s,this.#o=t.minDate,this.#a=t.maxDate,this.#c(),this.on("cursor",(a)=>this.#m(a)),this.on("key",(a,c)=>this.#p(a,c)),this.on("finalize",()=>this.#g(t))}#u(){let t=Math.max(0,Math.min(this.#n.segmentIndex,this.#e.length-1)),e=this.#e[t];if(e)return this.#n.positionInSegment=Math.max(0,Math.min(this.#n.positionInSegment,e.len-1)),{segment:e,index:t}}#l(t){this.inlineError="",this.#s=null;let e=this.#u();e&&(this.#n.segmentIndex=Math.max(0,Math.min(this.#e.length-1,e.index+t)),this.#n.positionInSegment=0,this.#i=!0)}#d(t){let e=this.#u();if(!e)return;let{segment:n}=e,r=this.#t[n.type],i=!r||r.replace(/_/g,"")==="",s=Number.parseInt((r||"0").replace(/_/g,"0"),10)||0,o=vH(n.type,tl(this.#t),this.#o,this.#a),a;i?a=t===1?o.min:o.max:a=Math.max(Math.min(o.max,s+t),o.min),this.#t={...this.#t,[n.type]:a.toString().padStart(n.len,"0")},this.#i=!0,this.#s=null,this.#c()}#m(t){if(t)switch(t){case"right":return this.#l(1);case"left":return this.#l(-1);case"up":return this.#d(1);case"down":return this.#d(-1)}}#p(t,e){if(e?.name==="backspace"||e?.sequence===""||e?.sequence==="\b"||t===""||t==="\b"){this.inlineError="";let n=this.#u();if(!n)return;if(!this.#t[n.segment.type].replace(/_/g,"")){this.#l(-1);return}this.#t[n.segment.type]="_".repeat(n.segment.len),this.#i=!0,this.#n.positionInSegment=0,this.#c();return}if(e?.name==="tab"){this.inlineError="";let n=this.#u();if(!n)return;let r=e.shift?-1:1,i=n.index+r;i>=0&&i<this.#e.length&&(this.#n.segmentIndex=i,this.#n.positionInSegment=0,this.#i=!0);return}if(t&&/^[0-9]$/.test(t)){let n=this.#u();if(!n)return;let{segment:r}=n,i=!this.#t[r.type].replace(/_/g,"");if(this.#i&&this.#s!==null&&!i){let d=this.#s+t,h={...this.#t,[r.type]:d},m=this.#h(h,r);if(m){this.inlineError=m,this.#s=null,this.#i=!1;return}this.inlineError="",this.#t[r.type]=d,this.#s=null,this.#i=!1,this.#c(),n.index<this.#e.length-1&&(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0);return}this.#i&&!i&&(this.#t[r.type]="_".repeat(r.len),this.#n.positionInSegment=0),this.#i=!1,this.#s=null;let s=this.#t[r.type],o=s.indexOf("_"),a=o>=0?o:Math.min(this.#n.positionInSegment,r.len-1);if(a<0||a>=r.len)return;let c=s.slice(0,a)+t+s.slice(a+1),u=!1;if(a===0&&s==="__"&&(r.type==="month"||r.type==="day")){let d=Number.parseInt(t,10);c=`0${t}`,u=d<=(r.type==="month"?1:2)}if(r.type==="year"&&(c=(s.replace(/_/g,"")+t).padStart(r.len,"_")),!c.includes("_")){let d={...this.#t,[r.type]:c},h=this.#h(d,r);if(h){this.inlineError=h;return}}this.inlineError="",this.#t[r.type]=c;let f=c.includes("_")?void 0:Ey(this.#t);if(f){let{year:d,month:h}=f,m=am(d,h);this.#t={year:String(Math.max(0,Math.min(9999,d))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,h))).padStart(2,"0"),day:String(Math.max(1,Math.min(m,f.day))).padStart(2,"0")}}this.#c();let l=c.indexOf("_");u?(this.#i=!0,this.#s=t):l>=0?this.#n.positionInSegment=l:o>=0&&n.index<this.#e.length-1?(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0):this.#n.positionInSegment=Math.min(a+1,r.len-1)}}#h(t,e){let{month:n,day:r}=tl(t);if(e.type==="month"&&(n<0||n>12))return Bt.date.messages.invalidMonth;if(e.type==="day"&&(r<0||r>31))return Bt.date.messages.invalidDay(31,"any month")}#g(t){let{year:e,month:n,day:r}=tl(this.#t);if(e&&n&&r){let i=am(e,n);this.#t={...this.#t,day:String(Math.min(r,i)).padStart(2,"0")}}this.value=ky(this.#t)??t.defaultValue??void 0}}var SH=class extends pr{options;cursor=0;#e;getGroupItems(e){return this.options.filter((n)=>n.group===e)}isGroupSelected(e){let n=this.getGroupItems(e),r=this.value;return r===void 0?!1:n.every((i)=>r.includes(i.value))}toggleValue(){let e=this.options[this.cursor];if(e!==void 0)if(this.value===void 0&&(this.value=[]),e.group===!0){let n=e.value,r=this.getGroupItems(n);this.isGroupSelected(n)?this.value=this.value.filter((i)=>r.findIndex((s)=>s.value===i)===-1):this.value=[...this.value,...r.map((i)=>i.value)],this.value=Array.from(new Set(this.value))}else{let n=this.value.includes(e.value);this.value=n?this.value.filter((r)=>r!==e.value):[...this.value,e.value]}}constructor(e){super(e,!1);let{options:n}=e;this.#e=e.selectableGroups!==!1,this.options=Object.entries(n).flatMap(([r,i])=>[{value:r,group:!0,label:r},...i.map((s)=>({...s,group:r}))]),this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:r})=>r===e.cursorAt),this.#e?0:1),this.on("cursor",(r)=>{switch(r){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}},EH=new Set(["up","down","left","right"]);class xy extends pr{#e=!1;#r;focused="editor";get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${t}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return n===`
|
|
304
304
|
`?`${e}█
|
|
305
305
|
${r}`:`${e}${el("inverse",n)}${r}`}get cursor(){return this._cursor}#t(t){if(this.userInput.length===0){this._setUserInput(t);return}this._setUserInput(this.userInput.slice(0,this.cursor)+t+this.userInput.slice(this.cursor))}#o(t){let e=this.value??"";switch(t){case"up":this._cursor=Xu(this._cursor,0,-1,e);return;case"down":this._cursor=Xu(this._cursor,0,1,e);return;case"left":this._cursor=Xu(this._cursor,-1,0,e);return;case"right":this._cursor=Xu(this._cursor,1,0,e);return}}_shouldSubmit(t,e){if(this.#r)return this.focused==="submit"?!0:(this.#t(`
|
|
306
306
|
`),this._cursor++,!1);let n=this.#e;return this.#e=!0,n&&this.cursor===this.userInput.length?(this.userInput[this.cursor-1]===`
|
|
307
307
|
`&&(this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--),!0):(this.#t(`
|
|
308
|
-
`),this._cursor++,!1)}constructor(t){let e=t.initialUserInput??t.initialValue;super({...t,initialUserInput:e},!1),e!==void 0&&(this._cursor=e.length),this.#r=t.showSubmit??!1,this.on("key",(n,r)=>{if(r?.name&&
|
|
309
|
-
`);b.push(R),$+=R.length}if($>f){let M=0,x=0,N=$,R=t-k,T=f,_=()=>
|
|
308
|
+
`),this._cursor++,!1)}constructor(t){let e=t.initialUserInput??t.initialValue;super({...t,initialUserInput:e},!1),e!==void 0&&(this._cursor=e.length),this.#r=t.showSubmit??!1,this.on("key",(n,r)=>{if(r?.name&&EH.has(r.name)){this.#e=!1,this.#o(r.name);return}if(n==="\t"&&this.#r){this.focused=this.focused==="editor"?"submit":"editor";return}if(r?.name!=="return"){if(this.#e=!1,r?.name==="backspace"&&this.cursor>0){this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--;return}if(r?.name==="delete"&&this.cursor<this.userInput.length){this._setUserInput(this.userInput.slice(0,this.cursor)+this.userInput.slice(this.cursor+1));return}n&&(this.#r&&this.focused==="submit"&&(this.focused="editor"),this.#t(n??""),this._cursor++)}}),this.on("userInput",(n)=>{this._setValue(n)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}class lm extends pr{options;cursor=0;get _value(){return this.options[this.cursor]?.value}get _enabledOptions(){return this.options.filter((t)=>t.disabled!==!0)}toggleAll(){let t=this._enabledOptions,e=this.value!==void 0&&this.value.length===t.length;this.value=e?[]:t.map((n)=>n.value)}toggleInvert(){let t=this.value;if(!t)return;let e=this._enabledOptions.filter((n)=>!t.includes(n.value));this.value=e.map((n)=>n.value)}toggleValue(){this.value===void 0&&(this.value=[]);let t=this.value.includes(this._value);this.value=t?this.value.filter((e)=>e!==this._value):[...this.value,this._value]}constructor(t){super(t,!1),this.options=t.options,this.value=[...t.initialValues??[]];let e=Math.max(this.options.findIndex(({value:n})=>n===t.cursorAt),0);this.cursor=this.options[e]?.disabled?mr(e,1,this.options):e,this.on("key",(n,r)=>{r.name==="a"&&this.toggleAll(),r.name==="i"&&this.toggleInvert()}),this.on("cursor",(n)=>{switch(n){case"left":case"up":this.cursor=mr(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=mr(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}}var Oy=class extends pr{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){let e=this._selectedValue;this.value=e===void 0?void 0:e.value}constructor(e){super(e,!1),this.options=e.options;let n=this.options.findIndex(({value:i})=>i===e.initialValue),r=n===-1?0:n;this.cursor=this.options[r]?.disabled?mr(r,1,this.options):r,this.changeValue(),this.on("cursor",(i)=>{switch(i){case"left":case"up":this.cursor=mr(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=mr(this.cursor,1,this.options);break}this.changeValue()})}};class fm extends pr{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return`${e}${el("inverse",n)}${r}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",(e)=>{this._setValue(e)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}import{styleText as O,stripVTControlCharacters as jW}from"node:util";import Qe from"node:process";var Ty=ld(sm(),1);function MH(){if(Qe.platform!=="win32")return Qe.env.TERM!=="linux";return Boolean(Qe.env.CI)||Boolean(Qe.env.WT_SESSION)||Boolean(Qe.env.TERMINUS_SUBLIME)||Qe.env.ConEmuTask==="{cmd::Cmder}"||Qe.env.TERM_PROGRAM==="Terminus-Sublime"||Qe.env.TERM_PROGRAM==="vscode"||Qe.env.TERM==="xterm-256color"||Qe.env.TERM==="alacritty"||Qe.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var xH=MH();var ht=(t,e)=>xH?t:e,Py=ht("◆","*"),OH=ht("■","x"),PH=ht("▲","x"),mm=ht("◇","o"),IH=ht("┌","T"),nt=ht("│","|"),Cn=ht("└","—"),UW=ht("┐","T"),WW=ht("┘","—"),dm=ht("●",">"),sl=ht("○"," "),RH=ht("◻","[•]"),Iy=ht("◼","[+]"),Ry=ht("◻","[ ]"),KW=ht("▪","•"),Ay=ht("─","-"),AH=ht("╮","+"),NH=ht("├","+"),TH=ht("╯","+"),HH=ht("╰","+"),zW=ht("╭","+"),FH=ht("●","•"),LH=ht("◆","*"),CH=ht("▲","!"),jH=ht("■","x"),ol=(t)=>{switch(t){case"initial":case"active":return O("cyan",Py);case"cancel":return O("red",OH);case"error":return O("yellow",PH);case"submit":return O("green",mm);case"validating":return O("dim",Py)}},Hy=(t)=>{switch(t){case"initial":case"active":return O("cyan",nt);case"cancel":return O("red",nt);case"error":return O("yellow",nt);case"submit":return O("green",nt)}};function Fy(t,e){let n=[`${e?`${O("cyan",nt)} `:""}${t.join(" • ")}`];return e&&n.push(O("cyan",Cn)),n}var Ny=(t,e,n,r,i,s=!1)=>{let o=e,a=0;if(s)for(let c=r-1;c>=n;c--){let u=t[c];if(u&&(o-=u.length),a++,o<=i)break}else for(let c=n;c<r;c++){let u=t[c];if(u&&(o-=u.length),a++,o<=i)break}return{lineCount:o,removals:a}},hm=({cursor:t,options:e,style:n,output:r=process.stdout,maxItems:i=Number.POSITIVE_INFINITY,columnPadding:s=0,rowPadding:o=4})=>{let a=rl(r)-s,c=cm(r),u=O("dim","..."),f=Math.max(c-o,0),l=Math.max(Math.min(i,f),5),d=0;t>=l-3&&(d=Math.max(Math.min(t-l+3,e.length-l),0));let h=l<e.length&&d>0,m=l<e.length&&d+l<e.length,p=Math.min(d+l,e.length),b=[],$=0;h&&$++,m&&$++;let k=d+(h?1:0),v=p-(m?1:0);for(let M=k;M<v;M++){let x=e[M],N=x?n(x,M===t):"",R=Yr(N,a,{hard:!0,trim:!1}).split(`
|
|
309
|
+
`);b.push(R),$+=R.length}if($>f){let M=0,x=0,N=$,R=t-k,T=f,_=()=>Ny(b,N,0,R,T),W=()=>Ny(b,N,R+1,b.length,T,!0);h?({lineCount:N,removals:M}=_(),N>T&&(m||(T-=1),{lineCount:N,removals:x}=W())):(m||(T-=1),{lineCount:N,removals:x}=W(),N>T&&(T-=1,{lineCount:N,removals:M}=_())),M>0&&(h=!0,b.splice(0,M)),x>0&&(m=!0,b.splice(b.length-x,x))}let S=[];h&&S.push(u);for(let M of b)for(let x of M)S.push(x);return m&&S.push(u),S};var Ge=(t)=>{let e=t.active??"Yes",n=t.inactive??"No";return new um({active:e,inactive:n,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue??!0,render(){let r=t.withGuide??Bt.withGuide,i=`${ol(this.state)} `,s=r?`${O("gray",nt)} `:"",o=Vr(t.output,t.message,s,i),a=`${r?`${O("gray",nt)}
|
|
310
310
|
`:""}${o}
|
|
311
|
-
`,c=this.value?e:n;switch(this.state){case"submit":{let u=r?`${O("gray",
|
|
312
|
-
${O("gray",
|
|
313
|
-
${O("cyan",
|
|
314
|
-
`:` ${O("dim","/")} `}${this.value?`${O("dim",sl)} ${O("dim",n)}`:`${O("green",
|
|
311
|
+
`,c=this.value?e:n;switch(this.state){case"submit":{let u=r?`${O("gray",nt)} `:"";return`${a}${u}${O("dim",c)}`}case"cancel":{let u=r?`${O("gray",nt)} `:"";return`${a}${u}${O(["strikethrough","dim"],c)}${r?`
|
|
312
|
+
${O("gray",nt)}`:""}`}default:{let u=r?`${O("cyan",nt)} `:"",f=r?O("cyan",Cn):"";return`${a}${u}${this.value?`${O("green",dm)} ${e}`:`${O("dim",sl)} ${O("dim",e)}`}${t.vertical?r?`
|
|
313
|
+
${O("cyan",nt)} `:`
|
|
314
|
+
`:` ${O("dim","/")} `}${this.value?`${O("dim",sl)} ${O("dim",n)}`:`${O("green",dm)} ${n}`}
|
|
315
315
|
${f}
|
|
316
|
-
`}}}}).prompt()};var
|
|
316
|
+
`}}}}).prompt()};var _H=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Space:")} select`,`${O("dim","Enter:")} confirm`],za=(t,e)=>t.split(`
|
|
317
317
|
`).map((n)=>e(n)).join(`
|
|
318
|
-
`),
|
|
319
|
-
${O("reset",O("dim",`Press ${O(["gray","bgWhite","inverse"]," space ")} to select, ${O("gray",O("bgWhite",O("inverse"," enter ")))} to submit`))}`},render(){let i=t.withGuide??
|
|
318
|
+
`),Ly=(t)=>{let e=(i,s)=>{let o=i.label??String(i.value);return s==="disabled"?`${O("gray",Ry)} ${za(o,(a)=>O(["strikethrough","gray"],a))}${i.hint?` ${O("dim",`(${i.hint??"disabled"})`)}`:""}`:s==="active"?`${O("cyan",RH)} ${o}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:s==="selected"?`${O("green",Iy)} ${za(o,(a)=>O("dim",a))}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:s==="cancelled"?`${za(o,(a)=>O(["strikethrough","dim"],a))}`:s==="active-selected"?`${O("green",Iy)} ${o}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:s==="submitted"?`${za(o,(a)=>O("dim",a))}`:`${O("dim",Ry)} ${za(o,(a)=>O("dim",a))}`},n=t.required??!0,r=t.showInstructions??!0;return new lm({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValues:t.initialValues,required:n,cursorAt:t.cursorAt,validate(i){if(n&&(i===void 0||i.length===0))return`Please select at least one option.
|
|
319
|
+
${O("reset",O("dim",`Press ${O(["gray","bgWhite","inverse"]," space ")} to select, ${O("gray",O("bgWhite",O("inverse"," enter ")))} to submit`))}`},render(){let i=t.withGuide??Bt.withGuide,s=Vr(t.output,t.message,i?`${Hy(this.state)} `:"",`${ol(this.state)} `),o=`${i?`${O("gray",nt)}
|
|
320
320
|
`:""}${s}
|
|
321
|
-
`,a=this.value??[],c=(u,f)=>{if(u.disabled)return e(u,"disabled");let l=a.includes(u.value);return f&&l?e(u,"active-selected"):l?e(u,"selected"):e(u,f?"active":"inactive")};switch(this.state){case"submit":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"submitted")).join(O("dim",", "))||O("dim","none"),f=
|
|
322
|
-
${O("gray",
|
|
321
|
+
`,a=this.value??[],c=(u,f)=>{if(u.disabled)return e(u,"disabled");let l=a.includes(u.value);return f&&l?e(u,"active-selected"):l?e(u,"selected"):e(u,f?"active":"inactive")};switch(this.state){case"submit":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"submitted")).join(O("dim",", "))||O("dim","none"),f=Vr(t.output,u,i?`${O("gray",nt)} `:"");return`${o}${f}`}case"cancel":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"cancelled")).join(O("dim",", "));if(u.trim()==="")return`${o}${O("gray",nt)}`;let f=Vr(t.output,u,i?`${O("gray",nt)} `:"");return`${o}${f}${i?`
|
|
322
|
+
${O("gray",nt)}`:""}`}case"error":{let u=i?`${O("yellow",nt)} `:"",f=this.error.split(`
|
|
323
323
|
`).map((h,m)=>m===0?`${i?`${O("yellow",Cn)} `:""}${O("yellow",h)}`:` ${h}`).join(`
|
|
324
324
|
`),l=o.split(`
|
|
325
325
|
`).length,d=f.split(`
|
|
326
|
-
`).length+1;return`${o}${u}${
|
|
326
|
+
`).length+1;return`${o}${u}${hm({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:l+d,style:c}).join(`
|
|
327
327
|
${u}`)}
|
|
328
328
|
${f}
|
|
329
|
-
`}default:{let u=i?`${O("cyan",
|
|
330
|
-
`).length,l=r?
|
|
331
|
-
`),h=l.length+1;return`${o}${u}${
|
|
329
|
+
`}default:{let u=i?`${O("cyan",nt)} `:"",f=o.split(`
|
|
330
|
+
`).length,l=r?Fy(_H,i):i?[O("cyan",Cn)]:[],d=l.join(`
|
|
331
|
+
`),h=l.length+1;return`${o}${u}${hm({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:f+h,style:c}).join(`
|
|
332
332
|
${u}`)}
|
|
333
333
|
${d}
|
|
334
|
-
`}}}}).prompt()};var
|
|
334
|
+
`}}}}).prompt()};var Zr={message:(t=[],{symbol:e=O("gray",nt),secondarySymbol:n=O("gray",nt),output:r=process.stdout,spacing:i=1,withGuide:s}={})=>{let o=[],a=s??Bt.withGuide,c=a?n:"",u=a?`${e} `:"",f=a?`${n} `:"";for(let d=0;d<i;d++)o.push(c);let l=Array.isArray(t)?t:t.split(`
|
|
335
335
|
`);if(l.length>0){let[d,...h]=l;d.length>0?o.push(`${u}${d}`):o.push(a?e:"");for(let m of h)m.length>0?o.push(`${f}${m}`):o.push(a?n:"")}r.write(`${o.join(`
|
|
336
336
|
`)}
|
|
337
|
-
`)},info:(t,e)=>{
|
|
337
|
+
`)},info:(t,e)=>{Zr.message(t,{...e,symbol:O("blue",FH)})},success:(t,e)=>{Zr.message(t,{...e,symbol:O("green",LH)})},step:(t,e)=>{Zr.message(t,{...e,symbol:O("green",mm)})},warn:(t,e)=>{Zr.message(t,{...e,symbol:O("yellow",CH)})},warning:(t,e)=>{Zr.warn(t,e)},error:(t,e)=>{Zr.message(t,{...e,symbol:O("red",jH)})}},Xr=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Bt.withGuide?`${O("gray",Cn)} `:"";n.write(`${r}${O("red",t)}
|
|
338
338
|
|
|
339
|
-
`)},al=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??
|
|
340
|
-
`)},Da=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??
|
|
339
|
+
`)},al=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Bt.withGuide?`${O("gray",IH)} `:"";n.write(`${r}${t}
|
|
340
|
+
`)},Da=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Bt.withGuide?`${O("gray",nt)}
|
|
341
341
|
${O("gray",Cn)} `:"";n.write(`${r}${t}
|
|
342
342
|
|
|
343
|
-
`)};var
|
|
344
|
-
`),s=i.reduce((c,u)=>Math.max(
|
|
345
|
-
`).map(s),""],a=
|
|
346
|
-
`),f=i?`${O("gray",
|
|
347
|
-
`:"",l=i?
|
|
343
|
+
`)};var BH=(t)=>t,GH=(t,e,n)=>{let r={hard:!0,trim:!1},i=Yr(t,e,r).split(`
|
|
344
|
+
`),s=i.reduce((c,u)=>Math.max(Wt(u),c),0),o=i.map(n).reduce((c,u)=>Math.max(Wt(u),c),0),a=e-(o-s);return Yr(t,a,r)},jn=(t="",e="",n)=>{let r=n?.output??Qe.stdout,i=n?.withGuide??Bt.withGuide,s=n?.format??BH,o=["",...GH(t,rl(r)-6,s).split(`
|
|
345
|
+
`).map(s),""],a=Wt(e),c=Math.max(o.reduce((d,h)=>{let m=Wt(h);return m>d?m:d},0),a)+2,u=o.map((d)=>`${O("gray",nt)} ${d}${" ".repeat(c-Wt(d))}${O("gray",nt)}`).join(`
|
|
346
|
+
`),f=i?`${O("gray",nt)}
|
|
347
|
+
`:"",l=i?NH:HH;r.write(`${f}${O("green",mm)} ${O("reset",e)} ${O("gray",Ay.repeat(Math.max(c-a-1,1))+AH)}
|
|
348
348
|
${u}
|
|
349
|
-
${O("gray",l+
|
|
350
|
-
`)};var
|
|
349
|
+
${O("gray",l+Ay.repeat(c+2)+TH)}
|
|
350
|
+
`)};var DW={light:ht("─","-"),heavy:ht("━","="),block:ht("█","#")};var UH=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Enter:")} confirm`],il=(t,e)=>t.includes(`
|
|
351
351
|
`)?t.split(`
|
|
352
352
|
`).map((n)=>e(n)).join(`
|
|
353
|
-
`):e(t),
|
|
353
|
+
`):e(t),pm=(t)=>{let e=(r,i)=>{if(r===void 0)return"";let s=r.label??String(r.value);switch(i){case"disabled":return`${O("gray",sl)} ${il(s,(o)=>O("gray",o))}${r.hint?` ${O("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${il(s,(o)=>O("dim",o))}`;case"active":return`${O("green",dm)} ${s}${r.hint?` ${O("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${il(s,(o)=>O(["strikethrough","dim"],o))}`;default:return`${O("dim",sl)} ${il(s,(o)=>O("dim",o))}`}},n=t.showInstructions??!0;return new Oy({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue,render(){let r=t.withGuide??Bt.withGuide,i=`${ol(this.state)} `,s=`${Hy(this.state)} `,o=Vr(t.output,t.message,s,i),a=`${r?`${O("gray",nt)}
|
|
354
354
|
`:""}${o}
|
|
355
|
-
`;switch(this.state){case"submit":{let c=r?`${O("gray",
|
|
356
|
-
${O("gray",
|
|
357
|
-
`).length,f=n?
|
|
358
|
-
`),d=f.length+1;return`${a}${c}${
|
|
355
|
+
`;switch(this.state){case"submit":{let c=r?`${O("gray",nt)} `:"",u=Vr(t.output,e(this.options[this.cursor],"selected"),c);return`${a}${u}`}case"cancel":{let c=r?`${O("gray",nt)} `:"",u=Vr(t.output,e(this.options[this.cursor],"cancelled"),c);return`${a}${u}${r?`
|
|
356
|
+
${O("gray",nt)}`:""}`}default:{let c=r?`${O("cyan",nt)} `:"",u=a.split(`
|
|
357
|
+
`).length,f=n?Fy(UH,r):r?[O("cyan",Cn)]:[],l=f.join(`
|
|
358
|
+
`),d=f.length+1;return`${a}${c}${hm({output:t.output,cursor:this.cursor,options:this.options,maxItems:t.maxItems,columnPadding:c.length,rowPadding:u+d,style:(h,m)=>e(h,h.disabled?"disabled":m?"active":"inactive")}).join(`
|
|
359
359
|
${c}`)}
|
|
360
360
|
${l}
|
|
361
|
-
`}}}}).prompt()};var
|
|
361
|
+
`}}}}).prompt()};var qW=`${O("gray",nt)} `;var gm=(t)=>new fm({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,output:t.output,signal:t.signal,input:t.input,render(){let e=t?.withGuide??Bt.withGuide,n=`${`${e?`${O("gray",nt)}
|
|
362
362
|
`:""}${ol(this.state)} `}${t.message}
|
|
363
|
-
`,r=t.placeholder&&t.placeholder.length>0?O("inverse",t.placeholder[0])+O("dim",t.placeholder.slice(1)):O(["inverse","hidden"],"_"),i=this.userInput?this.userInputWithCursor:r,s=this.value??"";switch(this.state){case"validating":{let o=e?`${O("cyan",
|
|
363
|
+
`,r=t.placeholder&&t.placeholder.length>0?O("inverse",t.placeholder[0])+O("dim",t.placeholder.slice(1)):O(["inverse","hidden"],"_"),i=this.userInput?this.userInputWithCursor:r,s=this.value??"";switch(this.state){case"validating":{let o=e?`${O("cyan",nt)} `:"",a=e?O("cyan",Cn):"",c=O("dim",i),u=O("dim","Validating...");return`${n}${o}${c}
|
|
364
364
|
${a} ${u}
|
|
365
|
-
`}case"error":{let o=this.error?` ${O("yellow",this.error)}`:"",a=e?`${O("yellow",
|
|
365
|
+
`}case"error":{let o=this.error?` ${O("yellow",this.error)}`:"",a=e?`${O("yellow",nt)} `:"",c=e?O("yellow",Cn):"";return`${n.trim()}
|
|
366
366
|
${a}${i}
|
|
367
367
|
${c}${o}
|
|
368
|
-
`}case"submit":{let o=s?`${e?" ":""}${O("dim",s)}`:"",a=e?O("gray",
|
|
369
|
-
${a}`:""}`}default:{let o=e?`${O("cyan",
|
|
368
|
+
`}case"submit":{let o=s?`${e?" ":""}${O("dim",s)}`:"",a=e?O("gray",nt):"";return`${n}${a}${o}`}case"cancel":{let o=s?` ${O(["strikethrough","dim"],s)}`:"",a=e?O("gray",nt):"";return`${n}${a}${o}${s.trim()?`
|
|
369
|
+
${a}`:""}`}default:{let o=e?`${O("cyan",nt)} `:"",a=e?O("cyan",Cn):"";return`${n}${o}${i}
|
|
370
370
|
${a}
|
|
371
|
-
`}}}}).prompt();import{readFileSync as
|
|
372
|
-
`)}
|
|
373
|
-
`)
|
|
374
|
-
`)
|
|
375
|
-
`)){
|
|
376
|
-
`)
|
|
377
|
-
`),d=`${j("view")}.${WH("sha1").update(l).digest("hex").slice(0,10)}`,h=Qi(r,`${d}.colorscheme`);if(!fl(h))C(h,l);if(!s.includes(h))s.push(h);for(let m of s.splice(0,Math.max(0,s.length-JH)))jy(m,{force:!0});return ll(d,f)},a=()=>{for(let c of s.splice(0))jy(c,{force:!0})};return{slots:[],paint:(c)=>o(c.name,c,c.cursor),wear:(c,u)=>u.includes("konsole")?ll(j(c.name),c.cursor):void 0,saved:async()=>new Map,restore:()=>{return a(),`\x1B]50;${e}\x07`},stop:a}}function Ky(t,e,n=(r)=>{process.stdout.write(r)}){let r=Zt(t),i=Ee[r];if(!e||Lt(t)||t.TMUX||!i.paints)return;if(r==="iterm2")return qH(t,n);if(r==="konsole"&&t.TTHEME_KONSOLE_LOOK)return ZH(t,t.TTHEME_KONSOLE_LOOK);let s=i.repaint??[...pn.keys()],o=pn.filter((a,c)=>s.includes(c));return{slots:s,paint:(a)=>wr(a,s),wear:(a,c)=>!i.schemes?wr(a):c.includes(r)?ll(j(a.name),a.cursor):void 0,saved:()=>vm(o),restore:(a)=>ul(a,o,i.hex===!0)}}var se=["ghostty","kitty","alacritty","wezterm","iterm2","windows-terminal","warp","konsole","terminal-app"];var XH=[{section:"tab",title:"This tab"},{section:"startup",title:"New tabs"},{section:"palettes",title:"Palettes"},{section:"own",title:"Your own"},{section:"setup",title:"Setup"},{section:"support",title:"Support"}],Oo=[{name:"use",args:["<palette>"],about:"Paint this tab — a unique prefix works: ttheme use ho",section:"tab",shell:!0},{name:"default",args:["<palette>"],about:"Make a palette the one new tabs open with",section:"startup"},{name:"on",args:[],about:"Wear the default palette in new tabs again",section:"startup"},{name:"off",args:[],about:"Take the palette and picture off every tab — the terminal's own colors until `ttheme on`",section:"startup"},{name:"pin",args:["[dir|ssh:<host>]"],about:"Pin a palette to a directory or an ssh host — the pin covers everything below it, or its whole repository; cd or ssh in repaints, leaving restores",section:"tab",shell:!0},{name:"unpin",args:["[dir|ssh:<host>]"],about:"Drop a pin — this directory's, every one below it, the one above that paints it, or an ssh host's",section:"tab",shell:!0},{name:"pins",args:[],about:"Map every pin as a file tree — the pinned directories in their palettes' colors, every ssh host, and the pin that covers this one",section:"tab",shell:!0},{name:"config",args:[],about:"Edit settings in $EDITOR — they apply in new tabs",section:"startup",shell:!0},{name:"browse",args:[],about:"Pick palettes and marketplaces in a live picker — one list with every marketplace as a row, which ctrl+s narrows to one marketplace at a time",section:"palettes",hidden:!0},{name:"list",args:["[query]"],about:"List palettes, marking what is installed",section:"palettes",flags:{json:{type:"boolean",about:"Print the matches as JSON — name, group, catalog, installed"}}},{name:"add",args:["<palette...>"],about:"Install palettes — from your marketplaces, or from a share link: ttheme add https://ttheme.vercel.app/p/tt2:…",section:"palettes",flags:{marketplace:{type:"string",value:"<source>",about:"Add this marketplace first — a repository, a folder or official — and take bare palette names from it"}}},{name:"remove",args:["<palette...>"],about:"Uninstall palettes",section:"palettes"},{name:"update",args:["[marketplace...]"],about:"Update ttheme and refresh your marketplaces — official palettes come with ttheme; an installed palette from another marketplace keeps its colors until ctrl+r on it in Browse takes its update",section:"palettes"},{name:"marketplace",args:["[action]","[source]"],about:"The marketplaces you added — add, remove and search them; init makes one of your own",actions:[["(none)","List the marketplaces you added — their palettes, auto-update and last update"],["add <source>","Add a marketplace — a repository (alice/ttheme-pastel, #v1 pins a tag or branch), a folder, or official; asks whether it updates on its own"],["remove <marketplace>","Drop one by its name (alice@pastel) — the palettes you installed from it keep working"],["search [query]","The marketplaces on GitHub with the ttheme-marketplace topic, listed every half hour — a query matches names, palettes and descriptions"],["init [name]","Make a marketplace of your own — <you>@<name>, in ~/.config/ttheme/marketplace/<name> or a folder you give"],["check [dir]","Check a marketplace's folder before you push it — ttheme-marketplace.toml, every palette, the renames and the gate; nothing is written"]],section:"palettes"},{name:"new",args:["<name>"],about:"Make a palette of your own in the palette editor — <you>@<marketplace>/<name>, from blank, installed at once",section:"own",flags:{from:{type:"string",value:"<palette>",about:"Start from this palette's colors instead of blank"},in:{type:"string",value:"<marketplace>",about:"The local marketplace to put it in — when you have more than one"}}},{name:"edit",args:["[palette]"],about:"Change a palette in the palette editor — your own in its file, any other as your tone over its marketplace's colors, which R and s in the editor put back; with none named, asks to edit the one this tab wears",section:"own"},{name:"check",args:["[palette]"],about:"Measure a palette against the contrast gate — where it misses, suggest colors that pass; with none named, asks to check the one this tab wears",section:"own",flags:{fix:{type:"boolean",about:"Write the suggested colors into your palette"}}},{name:"share",args:["[palette]"],about:"Print a share link and its QR code — the page shows the palette, and ttheme add <link> installs it anywhere, pictures included; with none named, asks to share the one this tab wears — or shares it without asking when the link goes to a pipe",section:"own",flags:{tone:{type:"string",value:"<tuned|original>",choices:["tuned","original"],about:"Share it as you tuned it, or as it was — asked when you tuned it and omit this"}}},{name:"init",args:[],about:"Install the shell layer and wire your terminals",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Accept every default without prompting"}}},{name:"uninstall",args:[],about:"Remove ttheme — its block comes out of every terminal config and what it wrote is deleted",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Remove without asking"}}},{name:"wire",args:["<terminal>"],about:"Wire one more terminal into this setup, after showing what it edits — the shell offers it in a terminal that paints only through the config init would have wired",section:"setup",hidden:!0},{name:"info",args:[],about:"Print what a bug report needs — version, OS, shell, terminal and the settings you changed",section:"support"},{name:"build",args:[],about:"Emit dist/ for every terminal, plus the zsh palette table — from a checkout",section:"setup",hidden:!0,flags:{only:{type:"string",multiple:!0,value:"<terminal>",choices:se,about:"Rebuild just this terminal — repeat it for more"}}},{name:"find",args:["<palette>"],about:"Pick a booru background for a palette — preview opens this on tab",section:"setup",hidden:!0},{name:"image",args:["<palette>","<action>","[picture]"],about:"Show one of a palette's saved backgrounds, remove one, draw one in its palette's tone or its own colors (or get the other ready before it is asked for), or pass on tuning — preview calls this",section:"setup",hidden:!0},{name:"flatten",args:["<source>","<out>","<background>","<opacity>","[canvas]","[place]","[into]"],about:"Lay a picture on a background color at an opacity, placed on a canvas when given one, for Warp, which fades the window instead, and Terminal.app, which takes it written into the file its profile points at and renamed to the out — preview calls this",section:"setup",hidden:!0},{name:"bake",args:["<source>","<out>","<canvas>","<place>"],about:"Place a picture on a transparent canvas where preview's tuning puts it — preview calls this for a size the terminal cannot scale and for the bands iTerm2 shows",section:"setup",hidden:!0},{name:"tone",args:["<palette>","<action>","[width]"],about:"Print a palette's colors for preview's panel at its width, open them in the palette editor, or reset them to its marketplace's — preview calls this",section:"setup",hidden:!0},{name:"sync",args:[],about:"Write every wired terminal's config again from what is installed and config.zsh — ttheme config and preview call this when TTHEME_TAB_PALETTE changed",section:"setup",hidden:!0},{name:"redraw",args:[],about:"Draw the background pictures again after TTHEME_BG_BLUR changed — ttheme config and preview call this",section:"setup",hidden:!0},{name:"latest",args:[],about:"Ask npm for the newest ttheme — any command starts this in the background once a day",section:"setup",hidden:!0},{name:"names",args:[],about:"Download aninames' character names when its release changed and index them — any command starts this in the background once a day",section:"setup",hidden:!0}];function QH(t){let e=Object.entries(t.flags??{}).map(([n,{value:r}])=>`[--${n}${r?` ${r}`:""}]`);return[t.name,...e,...t.args].join(" ")}function xo(t,e=tF){return t.map(([n,r])=>` ${n.padEnd(e)} ${r}`)}function zy(t){return t.split(" — ")[0]}function qy(t){return Object.entries(t.flags??{}).map(([e,{short:n,value:r,about:i}])=>[`${n?`-${n}, `:""}--${e}${r?` ${r}`:""}`,i])}function Jy(t,e){let n=e?[...t.actions??[],...qy(t)]:[];return[[[t.name,...t.args].join(" "),zy(t.about)],...n.map(([r,i])=>[` ${r}`,zy(i)])]}var Yy=[`ttheme ${lt.version}`,lt.description,"Usage: ttheme <command> [options] [args]"],Vy=[["ttheme help","Every command"],["ttheme help all","Every command with its options, and examples"],["ttheme help <command>","One command in full"]],Zy=[["-h, --help","Show help — after a command, that command's"],["-v, --version","Print the version"]],tF=Math.max(...[...Vy,...Zy,...Oo.filter((t)=>!t.hidden).flatMap((t)=>Jy(t,!0))].map(([t])=>t.length)),Dy=[["npx @kecan0406/ttheme init -y","Wire the terminals found here, no prompts"],["ttheme add homura madoka","Install two palettes"],["ttheme use homura","Paint this tab with one"],["ttheme list --json madoka","The Madoka Magica catalog as JSON"],["ttheme marketplace add alice/ttheme-pastel","alice's marketplace, alice@pastel — ttheme add alice@pastel/dusk"],["ttheme add dusk --marketplace alice/ttheme-pastel","The same in one step"],["ttheme new rei --from rei","Your own rei, <you>@<marketplace>/rei, to edit and share"]];function Xy(){return[...Yy,"","Use --help to list every command, or init to set ttheme up"].join(`
|
|
378
|
-
`)}
|
|
379
|
-
`)}function Ja(t,e=!1){let n=Oo.filter((i)=>!i.hidden&&!(e&&i.section==="setup")),r=XH.filter(({section:i})=>n.some((s)=>s.section===i));return[...Yy,"ttheme alone opens Preview and Browse as tabs — tab and shift+tab move between them","","Getting help:",...xo(Vy),"","Global options:",...xo(Zy),...r.flatMap(({section:i,title:s})=>["",`${s}:`,...xo(n.filter((o)=>o.section===i).flatMap((o)=>Jy(o,t)))]),...t?["","Examples:",...xo(Dy,Math.max(...Dy.map(([i])=>i.length)))]:[],"","https://ttheme.vercel.app"].join(`
|
|
380
|
-
`)}import{readFileSync as eF}from"node:fs";import{join as nF}from"node:path";var Im="# ttheme begin",Rm="# ttheme end",rs=/# ttheme begin\n[\s\S]*?# ttheme end\n?/,Me="Managed by ttheme — npx @kecan0406/ttheme@latest uninstall takes it out",_n="Generated by ttheme — rewritten on every add, remove and default; do not edit.";function ri(t,e,n){return t.startsWith(`${e}/`)?`${n}${t.slice(e.length)}`:void 0}function ii(t,e){let n=`${Im}
|
|
371
|
+
`}}}}).prompt();import{existsSync as Tl,readFileSync as mv,rmSync as gp}from"node:fs";import{homedir as $n}from"node:os";import{join as jo}from"node:path";var Cy=44,Yt=[{name:"Shell",lines:["«B4»~/code/demo«d» on «5»main«2» +2«3» ~1","«2»❯ «»git status -sb","«w»## «2»main«»...«1»origin/main«3» [ahead 1]","«1» M«» src/main.rs","«1»??«» notes.md","","«w»«2»❯ «»ls","«w»«B4»docs«» «B4»src«» «B4»tests«» Cargo.toml README.md","«w»","«2»❯ «»cargo test","«2» ✓«» parses config","«n»«1» ✗«» renders frame","«w»«1» ✗«» renders frame«d» expected «2»3«d», received «1»2","","«2»❯ «»echo «s»selected text«» «c» "]},{name:"Code",lines:["«d» 12 │ «5»import«» { readFile } «5»from «2»'node:fs/promises'","«d» 13 │","«d» 14 │ «8»// Read a palette and check its sixteen colors","«d» 15 │ «5»export async function «4»load«»(path: «6»string«») {","«d» 16 │ «5»const«» text = «5»await «4»readFile«»(path, «2»'utf8'«»)","«b» 17 «d»│ «5»const«» colors = «s»parse(text)«».colors ?? {}","«d» 18 │ «5»if«» (colors.ansi.length !== «3»16«») {","«d» 19 │ «5»throw new «6»Error«»(«2»'needs 16 colors'«»)","«d» 20 │ }","«d» 21 │ «5»return«» { ...colors, ratio: «c»4«3».5«» }","«d» 22 │ }"]},{name:"Diff",lines:["«2»❯ «»git diff --stat","«» src/theme.ts | 3 «2»++«1»-","«2»❯ «»git diff","«b»diff --git a/src/theme.ts b/src/theme.ts","«6»@@ -16,3 +16,4 @@«» export async function load(","«» const text = await readFile(path, 'utf8')","«1»- const colors = parse(text).colors","«2»+ const colors = parse(text).colors ?? {}","«2»+ const ratio = contrast(colors)","«2»❯ «»git log --oneline --graph -4","«3»* 3f2a1c9 («B6»HEAD -> «B2»main«3»)«» Check contrast on load","«3»* 9b04e7d«» Merge branch ansi","«1»|«5»\\","«1»| «5»* «3»51cd0aa«» Add sixteen ANSI colors","«1»|«5»/","«3»* 07be2f1 («B1»origin/main«3», «B3»tag: v1.0«3»)«» Read palette files"]},{name:"Logs",lines:["«2»❯ «»npm run dev","«B2» VITE v6.2.0«d» ready in «b»412«d» ms","«2» ➜ «b»Local«»: «6»http://localhost:5173/","«d»10:42:07 «2»INFO «» GET /api/palettes «2»200«d» 12 ms","«d»10:42:08 «2»INFO «» GET /api/themes/kita «2»200«d» 8 ms","«d»10:42:09 «3»WARN «» slow query: palettes «3»812 ms","«d»10:42:10 «4»DEBUG«» cache hit themes/kita","«d»10:42:11 «B1»ERROR«» POST /api/share «1»500«d» 41 ms","«1» Error«»: read ECONNRESET","«d» at «»TCP.onStreamRead «d»(«6»node:net:216:20«d»)","«d» at «»share «d»(«6»src/share.ts:48:11«d»)","«d»10:42:12 «2»INFO «» retry 1/3 in 200 ms"]},{name:"Monitor",lines:["«6» 1 «b»[«2»|||||||||||||«1»||«» 42.1%«b»]«6» Tasks: «b»128«», 412 thr; «B2»3«» running","«6» 2 «b»[«2»||||||«4»||«» 21.4%«b»]«6» Load average: «b»1.42 «»1.18 0.97","«6» 3 «b»[«2»||||||||||||||«1»|||||«» 71.0%«b»]«6» Uptime: «b»3 days, 04:12:55","«6» 4 «b»[«2»||«» 7.9%«b»]","«6» Mem«b»[«2»||||||||«4»||«3»||«» 6.21G/16.0G«b»]","«6» Swp«b»[«1»|«» 0.10G/2.00G«b»]","","«K2» PID USER CPU% MEM% TIME+ Command ","«s» 4127 kec 38.2 2.1 3:12.44 node dev.js ","«» 2210 kec 12.0 4.8 1:02.10 «b»ghostty","«» 3301 kec 4.4 1.2 0:05.61 «b»zsh","«» 812 «1»root«» 3.1 0.3 0:44.02 «d»kernel_task","«» 167 «1»root«» 0.9 0.1 0:12.80 «d»WindowServer"]}];function qi(t){let e=Yt.length;return Yt[(t%e+e)%e]}function Eo(t,e){let n=t.split("«"),r=n[0]?[[n[0],""]]:[];for(let i of n.slice(1)){let s=i.indexOf("»"),o=i.slice(0,s),a=i.slice(s+1);if(o==="w"||o==="n"){if(o==="w"!==e>=44)return}if(a)r.push([a,o==="w"||o==="n"?"":o])}return r}import{createHash as ZH}from"node:crypto";import{existsSync as ll,readFileSync as Em,rmSync as Gy}from"node:fs";import{homedir as Uy}from"node:os";import{join as Ji}from"node:path";function Qr(t){return[`# ${t.name} — ${He(t)}${t.native?` (${t.native})`:""}`,`# ANSI: ${t.ansiSource}`]}function gr(t,e){return[`[${t}]`,`Color=${st(e).join(",")}`,""]}function bm(t,e,n=["Wallpaper="]){let r=(i)=>At(i,t.background,0.5);return[...gr("Background",t.background),...gr("BackgroundFaint",t.background),...gr("BackgroundIntense",t.background),...t.ansi.slice(0,8).flatMap((i,s)=>[...gr(`Color${s}`,i),...gr(`Color${s}Faint`,r(i)),...gr(`Color${s}Intense`,t.ansi[s+8])]),...gr("Foreground",t.foreground),...gr("ForegroundFaint",r(t.foreground)),...gr("ForegroundIntense",t.foreground),"[General]","Blur=false","ColorRandomization=false",`Description=${e}`,"Opacity=1",...n,""]}var jy={left:"0",top:"0",center:"0.5",right:"1",bottom:"1"};function WH(t){if(!t||t.opacity<=0)return["Wallpaper="];let[e="center",n="center"]=t.position.split("-");return[`Wallpaper=${t.image}`,`FillStyle=${t.cover?"Crop":"Adapt"}`,`Anchor=${jy[n]??"0.5"},${jy[e]??"0.5"}`,`WallpaperOpacity=${t.opacity}`]}function wm(t,e){return[...Qr(t),"",...bm(t,`ttheme · ${t.name}`,WH(e))].join(`
|
|
372
|
+
`)}var $m={id:"konsole",limits:"draws no OSC 4, so a tab repaints by switching color scheme",emit(t){return[{path:`konsole/${j(t.name)}.colorscheme`,content:wm(t)}]}};import{openSync as KH,writeSync as zH}from"node:fs";import{ReadStream as DH}from"node:tty";var pn=["11","10","12","17",...Array.from({length:16},(t,e)=>`4;${e}`)];function Ft(t=process.env){return Boolean(t.NO_COLOR)||t.TERM==="dumb"}function qH(t,e){return`\x1B]${pn[t]};${e}\x1B\\`}function br(t,e){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi].map((n,r)=>e&&!e.includes(r)?"":qH(r,n)).join("")}function JH(t){return`\x1B]${t.startsWith("4;")?`104;${t.slice(2)}`:`1${t}`}\x1B\\`}function YH(t){let e=new Map;for(let n of t.split("\x1B")){let r=n.match(/^\](\d+(?:;\d+)?);(rgba?:[0-9a-fA-F/]+)/),[,i,s]=r??[];if(i&&s)e.set(i,s)}return e}function _y(t){return`#${t.slice(t.indexOf(":")+1).split("/").slice(0,3).map((n)=>n.slice(0,2).padStart(2,"0")).join("")}`}function By(t){return pn.map((e)=>{let n=t.get(e);return n?_y(n):void 0})}function cl(t,e=[...t.keys()],n=!1){return e.map((r)=>{let i=t.get(r);return i?`\x1B]${r};${n?_y(i):i}\x1B\\`:JH(r)}).join("")}function ul(t,e){return`\x1B]50;ColorScheme=${t};UseCustomCursorColor=true;customCursorColor=${e}\x07`}function km(t=pn,e="\x1B[5n"){return`${t.map((n)=>`\x1B]${n};?\x1B\\`).join("")}${e}`}function VH(t){return t.includes("\x1B[0n")}async function ym(t=pn){let e,n;try{e=KH("/dev/tty","r+"),n=new DH(e),n.setRawMode(!0)}catch{return new Map}try{zH(e,km(t));let r="";return await new Promise((i)=>{let s=setTimeout(i,120);n.on("data",(o)=>{if(r+=o.toString(),VH(r))clearTimeout(s),i()})}),YH(r)}finally{n.setRawMode(!1),n.destroy()}}function Mm(t){if(t.NVIM)return"nvim";if(t.VIM_TERMINAL)return"vim";if(t.INSIDE_EMACS)return"emacs";return t.TERM_PROGRAM==="vscode"?"vscode":void 0}function Vt(t){if(Mm(t))return"editor";if(t.TERM_PROGRAM==="WarpTerminal")return"warp";if(t.GHOSTTY_RESOURCES_DIR||t.TERM_PROGRAM==="ghostty")return"ghostty";if(t.KITTY_WINDOW_ID)return"kitty";if(t.WEZTERM_PANE)return"wezterm";if(t.ALACRITTY_WINDOW_ID)return"alacritty";if(t.KONSOLE_VERSION)return"konsole";if(t.ITERM_SESSION_ID||t.TERM_PROGRAM==="iTerm.app")return"iterm2";if(t.TERM_PROGRAM==="Apple_Terminal")return"terminal-app";if(t.WT_SESSION&&!t.TERM_PROGRAM)return"windows-terminal";if(t.TERM?.startsWith("foot"))return"foot";return"unknown"}var Ee={ghostty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},kitty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},iterm2:{links:!0,pictures:!0,bands:!0,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1]},wezterm:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!1,paints:!0,wipes:!0,views:!0},alacritty:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"windows-terminal":{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},konsole:{links:!1,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1],hex:!0,schemes:!0},foot:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"terminal-app":{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},warp:{links:!0,pictures:!0,bands:!0,files:!1,moves:!1,layers:!1,paints:!1},editor:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!1},unknown:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0}};function vm(t,e,n){let r="";for(let i of t.split(`
|
|
373
|
+
`)){let s=i.trim();if(s.startsWith("[")&&s.endsWith("]"))r=s.slice(1,-1);else if(r===e&&s.startsWith(`${n}=`))return s.slice(n.length+1)}return}function XH(t){let e=t.XDG_CONFIG_HOME??Ji(Uy(),".config"),n=Ji(e,"konsolerc"),r=ll(n)?vm(Em(n,"utf8"),"Desktop Entry","DefaultProfile"):void 0;for(let i=0;i<8&&r&&r!=="FALLBACK/";i++){let s=r.endsWith(".profile")?r:`${r}.profile`,o=Dy(t).map((u)=>Ji(u,s)).find((u)=>ll(u));if(!o)return!1;let a=Em(o,"utf8"),c=vm(a,"Interaction Options","AllowEscapedLinks");if(c!==void 0)return c==="true";r=vm(a,"General","Parent")}return!1}function Wy(t){let e=Vt(t);return e==="konsole"?XH(t):Ee[e].links}function Mo(t,e){let n=Vt(t),r=Ee[n];return r.pictures&&!t.TMUX&&(!r.views||e.includes(n))}function fl(t){return Ee[Vt(t)].bands}function dl(t){return Ee[Vt(t)].files}function xo(t){return Ee[Vt(t)].layers}function Ky(t){return Ee[Vt(t)].moves}function zy(t){return Ee[Vt(t)].wipes===!0}function Yi(t){return Ee[Vt(t)].views===!0}function Vi(t){return`\x1B]1337;SetUserVar=ttheme_view=${Buffer.from(t).toString("base64")}\x07`}var Zi="\x1B[H\x1B[K\x1B[2H\x1B[J\x1B[H",xm=120,Sm=4,QH=40;function tF(t){let e=t.TTHEME_ITERM_SHOWN;return t.TTHEME_ITERM_SWITCH==="1"&&t.TTHEME_ITERM_DYED==="0"&&e?`ttheme · ${e}`:void 0}function eF(t,e){let n=Ee.iterm2.repaint??[],r=[...pn.keys()].filter((c)=>!n.includes(c)),i=new Set(n),s=tF(t),o=[],a=()=>{for(let c of o)clearTimeout(c);o=[]};return{slots:n,paint(c){a();for(let u=0;u<r.length;u+=Sm){let f=r.slice(u,u+Sm),l=setTimeout(()=>{for(let d of f)i.add(d);e(br(c,f))},xm+u/Sm*QH);l.unref?.(),o.push(l)}return br(c,n)},wear:(c)=>br(c),saved:()=>ym(),restore(c){a();let u=pn.filter((f,l)=>i.has(l));return s?`\x1B[?2026h${cl(new Map,u)}\x1B]1337;SetProfile=${s}\x07\x1B[?2026l`:cl(c,u)},stop:a}}var nF=3,rF=/^(Wallpaper|FillStyle|Anchor|WallpaperOpacity|WallpaperFlipType)=/;function Dy(t){return[t.XDG_DATA_HOME??Ji(Uy(),".local","share"),...(t.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((e)=>Ji(e,"konsole"))}function iF(t,e){let n=/(?:^|;)ColorScheme=([^;]+)/.exec(e)?.[1],r=n&&t.map((c)=>Ji(c,`${n}.colorscheme`)).find((c)=>ll(c));if(!r)return["Wallpaper="];let i=Em(r,"utf8").split(`
|
|
374
|
+
`),s=i.findIndex((c)=>c.trim()==="[General]"),o=i.findIndex((c,u)=>u>s&&c.trimStart().startsWith("[")),a=s<0?[]:i.slice(s+1,o<0?void 0:o).filter((c)=>rF.test(c));return a.length>0?a:["Wallpaper="]}function sF(t,e){let n=Dy(t),r=n[0],i=iF(n,e),s=[],o=(c,u,f)=>{let l=bm(u,`ttheme · ${c}`,i).join(`
|
|
375
|
+
`),d=`${j("view")}.${ZH("sha1").update(l).digest("hex").slice(0,10)}`,h=Ji(r,`${d}.colorscheme`);if(!ll(h))C(h,l);if(!s.includes(h))s.push(h);for(let m of s.splice(0,Math.max(0,s.length-nF)))Gy(m,{force:!0});return ul(d,f)},a=()=>{for(let c of s.splice(0))Gy(c,{force:!0})};return{slots:[],paint:(c)=>o(c.name,c,c.cursor),wear:(c,u)=>u.includes("konsole")?ul(j(c.name),c.cursor):void 0,saved:async()=>new Map,restore:()=>{return a(),`\x1B]50;${e}\x07`},stop:a}}function qy(t,e,n=(r)=>{process.stdout.write(r)}){let r=Vt(t),i=Ee[r];if(!e||Ft(t)||t.TMUX||!i.paints)return;if(r==="iterm2")return eF(t,n);if(r==="konsole"&&t.TTHEME_KONSOLE_LOOK)return sF(t,t.TTHEME_KONSOLE_LOOK);let s=i.repaint??[...pn.keys()],o=pn.filter((a,c)=>s.includes(c));return{slots:s,paint:(a)=>br(a,s),wear:(a,c)=>!i.schemes?br(a):c.includes(r)?ul(j(a.name),a.cursor):void 0,saved:()=>ym(o),restore:(a)=>cl(a,o,i.hex===!0)}}var ie=["ghostty","kitty","alacritty","wezterm","iterm2","windows-terminal","warp","konsole","terminal-app"];var oF=[{section:"tab",title:"This tab"},{section:"startup",title:"New tabs"},{section:"palettes",title:"Palettes"},{section:"own",title:"Your own"},{section:"setup",title:"Setup"},{section:"support",title:"Support"}],Po=[{name:"use",args:["<palette>"],about:"Paint this tab — a unique prefix works: ttheme use ho",section:"tab",shell:!0},{name:"default",args:["<palette>"],about:"Make a palette the one new tabs open with",section:"startup"},{name:"on",args:[],about:"Wear the default palette in new tabs again",section:"startup"},{name:"off",args:[],about:"Take the palette and picture off every tab — the terminal's own colors until `ttheme on`",section:"startup"},{name:"pin",args:["[dir|ssh:<host>]"],about:"Pin a palette to a directory or an ssh host — the pin covers everything below it, or its whole repository; cd or ssh in repaints, leaving restores",section:"tab",shell:!0},{name:"unpin",args:["[dir|ssh:<host>]"],about:"Drop a pin — this directory's, every one below it, the one above that paints it, or an ssh host's",section:"tab",shell:!0},{name:"pins",args:[],about:"Map every pin as a file tree — the pinned directories in their palettes' colors, every ssh host, and the pin that covers this one",section:"tab",shell:!0},{name:"config",args:[],about:"Edit settings in $EDITOR — they apply in new tabs",section:"startup",shell:!0},{name:"browse",args:[],about:"Pick palettes and marketplaces in a live picker — one list with every marketplace as a row, which ctrl+s narrows to one marketplace at a time",section:"palettes",hidden:!0},{name:"add",args:["<palette...>"],about:"Install palettes — from your marketplaces, or from a share link: ttheme add https://ttheme.vercel.app/p/tt2:…",section:"palettes"},{name:"update",args:["[marketplace...]"],about:"Update ttheme and refresh your marketplaces — official palettes come with ttheme; an installed palette from another marketplace keeps its colors until ctrl+r on it in Browse takes its update",section:"palettes"},{name:"marketplace",args:["<action>","[source]"],about:"Add or drop a marketplace — Browse also finds them on GitHub and switches their auto-update; init makes one of your own",actions:[["add <source>","Add a marketplace — a repository (alice/ttheme-pastel, #v1 pins a tag or branch), a folder, or official; asks whether it updates on its own"],["remove <marketplace>","Drop one by its name (alice@pastel) — the palettes you installed from it keep working"],["init [name]","Make a marketplace of your own — <you>@<name>, in ~/.config/ttheme/marketplace/<name> or a folder you give"],["check [dir]","Check a marketplace's folder before you push it — ttheme-marketplace.toml, every palette, the renames and the gate; nothing is written"]],section:"palettes"},{name:"new",args:["<name>"],about:"Make a palette of your own in the palette editor — <you>@<marketplace>/<name>, from blank, installed at once",section:"own",flags:{from:{type:"string",value:"<palette>",about:"Start from this palette's colors instead of blank"},in:{type:"string",value:"<marketplace>",about:"The local marketplace to put it in — when you have more than one"}}},{name:"edit",args:["[palette]"],about:"Change a palette in the palette editor — your own in its file, any other as your tone over its marketplace's colors, which R and s in the editor put back; with none named, asks to edit the one this tab wears",section:"own"},{name:"check",args:["[palette]"],about:"Measure a palette against the contrast gate — where it misses, suggest colors that pass; with none named, asks to check the one this tab wears",section:"own",more:!0,flags:{fix:{type:"boolean",about:"Write the suggested colors into your palette"}}},{name:"share",args:["[palette]"],about:"Print a share link and its QR code — the page shows the palette, and ttheme add <link> installs it anywhere, pictures included; with none named, asks to share the one this tab wears — or shares it without asking when the link goes to a pipe",section:"own",flags:{tone:{type:"string",value:"<tuned|original>",choices:["tuned","original"],about:"Share it as you tuned it, or as it was — asked when you tuned it and omit this"}}},{name:"init",args:[],about:"Install the shell layer and wire your terminals",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Accept every default without prompting"}}},{name:"uninstall",args:[],about:"Remove ttheme — its block comes out of every terminal config and what it wrote is deleted",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Remove without asking"}}},{name:"wire",args:["<terminal>"],about:"Wire one more terminal into this setup, after showing what it edits — the shell offers it in a terminal that paints only through the config init would have wired",section:"setup",hidden:!0},{name:"info",args:[],about:"Print what a bug report needs — version, OS, shell, terminal and the settings you changed",section:"support",more:!0},{name:"build",args:[],about:"Emit dist/ for every terminal, plus the zsh palette table — from a checkout",section:"setup",hidden:!0,flags:{only:{type:"string",multiple:!0,value:"<terminal>",choices:ie,about:"Rebuild just this terminal — repeat it for more"}}},{name:"find",args:["<palette>"],about:"Pick a booru background for a palette — preview opens this on tab",section:"setup",hidden:!0},{name:"image",args:["<palette>","<action>","[picture]"],about:"Show one of a palette's saved backgrounds, remove one, draw one in its palette's tone or its own colors (or get the other ready before it is asked for), or pass on tuning — preview calls this",section:"setup",hidden:!0},{name:"flatten",args:["<source>","<out>","<background>","<opacity>","[canvas]","[place]","[into]"],about:"Lay a picture on a background color at an opacity, placed on a canvas when given one, for Warp, which fades the window instead, and Terminal.app, which takes it written into the file its profile points at and renamed to the out — preview calls this",section:"setup",hidden:!0},{name:"bake",args:["<source>","<out>","<canvas>","<place>"],about:"Place a picture on a transparent canvas where preview's tuning puts it — preview calls this for a size the terminal cannot scale and for the bands iTerm2 shows",section:"setup",hidden:!0},{name:"tone",args:["<palette>","<action>","[width]"],about:"Print a palette's colors for preview's panel at its width, open them in the palette editor, or reset them to its marketplace's — preview calls this",section:"setup",hidden:!0},{name:"sync",args:[],about:"Write every wired terminal's config again from what is installed and config.zsh — ttheme config and preview call this when TTHEME_TAB_PALETTE changed",section:"setup",hidden:!0},{name:"redraw",args:[],about:"Draw the background pictures again after TTHEME_BG_BLUR changed — ttheme config and preview call this",section:"setup",hidden:!0},{name:"latest",args:[],about:"Ask npm for the newest ttheme — any command starts this in the background once a day",section:"setup",hidden:!0},{name:"names",args:[],about:"Download aninames' character names when its release changed and index them — any command starts this in the background once a day",section:"setup",hidden:!0}];function aF(t){let e=Object.entries(t.flags??{}).map(([n,{value:r}])=>`[--${n}${r?` ${r}`:""}]`);return[t.name,...e,...t.args].join(" ")}function Oo(t,e=cF){return t.map(([n,r])=>` ${n.padEnd(e)} ${r}`)}function Jy(t){return t.split(" — ")[0]}function Vy(t){return Object.entries(t.flags??{}).map(([e,{short:n,value:r,about:i}])=>[`${n?`-${n}, `:""}--${e}${r?` ${r}`:""}`,i])}function Zy(t,e){let n=e?[...t.actions??[],...Vy(t)]:[];return[[[t.name,...t.args].join(" "),Jy(t.about)],...n.map(([r,i])=>[` ${r}`,Jy(i)])]}var Xy=[`ttheme ${lt.version}`,lt.description,"Usage: ttheme <command> [options] [args]"],Qy=[["ttheme help","The everyday commands"],["ttheme help all","Every command with its options, and examples"],["ttheme help <command>","One command in full"]],t1=[["-h, --help","Show help — after a command, that command's"],["-v, --version","Print the version"]],cF=Math.max(...[...Qy,...t1,...Po.filter((t)=>!t.hidden).flatMap((t)=>Zy(t,!0))].map(([t])=>t.length)),Yy=[["npx @kecan0406/ttheme init -y","Wire the terminals found here, no prompts"],["ttheme add homura madoka","Install two palettes"],["ttheme use homura","Paint this tab with one"],["ttheme marketplace add alice/ttheme-pastel","alice's marketplace, alice@pastel — ttheme add alice@pastel/dusk"],["ttheme new rei --from rei","Your own rei, <you>@<marketplace>/rei, to edit and share"]];function e1(){return[...Xy,"","Use --help to list every command, or init to set ttheme up"].join(`
|
|
376
|
+
`)}function Om(t){let e=Vy(t);return[`Usage: ttheme ${aF(t)}`,"",t.about,...t.actions?["","Actions:",...Oo(t.actions)]:[],...e.length>0?["","Options:",...Oo(e)]:[]].join(`
|
|
377
|
+
`)}function Ja(t,e=!1){let n=Po.filter((i)=>!i.hidden&&(t||!i.more)&&!(e&&i.section==="setup")),r=oF.filter(({section:i})=>n.some((s)=>s.section===i));return[...Xy,"ttheme alone opens Preview and Browse as tabs — Browse installs and removes palettes; tab and shift+tab move between them","","Getting help:",...Oo(Qy),"","Global options:",...Oo(t1),...r.flatMap(({section:i,title:s})=>["",`${s}:`,...Oo(n.filter((o)=>o.section===i).flatMap((o)=>Zy(o,t)))]),...t?["","Examples:",...Oo(Yy,Math.max(...Yy.map(([i])=>i.length)))]:[],"","https://ttheme.vercel.app"].join(`
|
|
378
|
+
`)}import{readFileSync as uF}from"node:fs";import{join as lF}from"node:path";var Pm="# ttheme begin",Im="# ttheme end",Xi=/# ttheme begin\n[\s\S]*?# ttheme end\n?/,Me="Managed by ttheme — npx @kecan0406/ttheme@latest uninstall takes it out",_n="Generated by ttheme — rewritten on every add, remove and default; do not edit.";function ti(t,e,n){return t.startsWith(`${e}/`)?`${n}${t.slice(e.length)}`:void 0}function ei(t,e){let n=`${Pm}
|
|
381
379
|
${e}
|
|
382
|
-
${
|
|
383
|
-
`;if(
|
|
380
|
+
${Im}
|
|
381
|
+
`;if(Xi.test(t))return t.replace(Xi,n);if(t==="")return n;return`${t.replace(/\n*$/,`
|
|
384
382
|
`)}
|
|
385
383
|
${n}`}function Bn(t){let e=t.replace(/\n?# ttheme begin\n[\s\S]*?# ttheme end(?=\n|$)/,"");if(e===t)return t;return e.trim()===""?"":e.replace(/\n*$/,`
|
|
386
|
-
`)}function
|
|
387
|
-
[[ -r ${
|
|
384
|
+
`)}function Io(t,e){let n=t.replace(Xi,"");return new RegExp(String.raw`^[ \t]*${e}(?:[ \t]*=|[ \t]+\S)`,"m").test(n)}var hl='"${XDG_CONFIG_HOME:-$HOME/.config}/ttheme/ttheme.zsh"';function n1(){return`# ${Me}
|
|
385
|
+
[[ -r ${hl} ]] && source ${hl}`}var fF="# ttheme settings — uncomment a line to change it; exported variables win over this file",Ro={TTHEME_TAB_PALETTE:{doc:"# new tabs: off keeps the configured terminal theme, seq rotates through the palettes (default off)",default:"off"},TTHEME_ANNOUNCE:{doc:'# the palette notice under "Last login:": 1 shows it, 0 silences it (default 1)',default:"1"},TTHEME_FX:{doc:"# search hint animation: typewriter, decode or glitch (default typewriter)",default:"typewriter"},TTHEME_SORT:{doc:"# catalogs and palettes in ttheme and preview: abc sorts them by name, catalog keeps the order they were added (default abc)",default:"abc"},TTHEME_MOUSE:{doc:"# clicks, the wheel and drags in preview, browse, the palette editor and find: on, or off to leave the mouse to the terminal, so a drag selects text again without a modifier (default on)",default:"on"},TTHEME_BG_BLUR:{doc:"# soften the background pictures behind the text: a blur radius in screen pixels, 0 keeps them sharp — changing it draws every picture again (default 0)",default:"0"},TTHEME_BG_COLORS:{doc:"# the colors new background pictures are drawn in: tone tints a picture in one color of its palette, original keeps its own — preview switches each picture later (default tone)",default:"tone"},TTHEME_WARP_FAST:{doc:"# Warp tab switches: on keeps Warp rereading its settings while it is in front with tabs of different palettes, so the tab you switch to shows its palette in about 0.2 s instead of 0.6 s — about 8% CPU meanwhile; off leaves it to Warp (default on)",default:"on"},TTHEME_NAMES:{doc:"# character names in every language for searching palettes and find's search box, from aninames' weekly release: on downloads them (about 7 MB) and checks once a day in the background; off leaves them as they are (default on)",default:"on"},TTHEME_AUTO_UPDATE:{doc:"# checks in the background: on refreshes the marketplaces you set to update on their own once a day and says when a newer ttheme is out; off leaves both to ttheme update (default on)",default:"on"},TTHEME_MARKETPLACE_LOOKUP:{doc:"# GitHub lookups in browse: on downloads the list of marketplaces carrying the ttheme-marketplace topic when Search marketplace opens; off waits for space (default on)",default:"on"},TTHEME_FIND_RATING:{doc:"# the ratings find lists, any of safe, questionable and explicit, each booru read in its own rating vocabulary (default safe)",default:"safe"},TTHEME_FIND_BLOCK:{doc:'# the posts find drops by tag: nudity, underwear, both, or none to keep them all (default "nudity underwear")',default:"nudity underwear"},TTHEME_FIND_POSTS:{doc:"# what find lists first: all is every post of the character, cutouts are the transparent ones (default all)",default:"all"},TTHEME_FIND_SOLO:{doc:"# on keeps the posts tagged solo, the character alone, by danbooru or zerochan; off lists every post (default on)",default:"on"},TTHEME_FIND_CUTOUTS:{doc:'# the tags find calls a transparent cutout, per site as key=tag,tag pairs — e.g. "konachan=transparent,vector yande=transparent_png" (default the built-in tags)',default:""},TTHEME_FIND_ORDER:{doc:"# the order find lists posts in: fit ranks each page by how well it makes a backdrop, newest or score (default fit)",default:"fit"},TTHEME_FIND_SETS:{doc:"# runs of the same picture at the same size from one uploader: fold shows them as one tile, show lists each (default fold)",default:"fold"},TTHEME_FIND_REMOVE_BG:{doc:"# an opaque picture tried on in find: on cuts the character out with macOS Vision, off leaves it as it is (default on)",default:"on"},TTHEME_FIND_MIN_SCORE:{doc:"# the lowest score find lists: off, or a number such as 5, 10, 25, 50 or 100 — danbooru, konachan and yande.re filter by it, zerochan keeps no score (default off)",default:"off"},TTHEME_FIND_MIN_SIZE:{doc:"# the shortest side a picture find lists must reach, in pixels: off, or a number such as 720, 1080, 1440, 1800 or 2560 (default off)",default:"off"},TTHEME_FIND_SITES:{doc:"# the sites find mixes in its all tab: any of danbooru, konachan, yande.re and zerochan (default all four)",default:"danbooru konachan yande.re zerochan"},TTHEME_FIND_HIDE:{doc:"# the kinds of picture find leaves out by tag: comic, monochrome, sketch, chibi, or none to keep them all (default none)",default:"none"},TTHEME_FIND_HIDE_TAGS:{doc:'# more tags find leaves out, spaced — e.g. "cosplay multiple_girls" (default none)',default:""},TTHEME_FIND_PNG:{doc:"# on lists PNG originals only — a zerochan post counts only where danbooru holds the same file (default off)",default:"off"},TTHEME_FIND_HOSTS:{doc:'# send a find site somewhere else, as key=https://host pairs — e.g. "danbooru=https://danbooru.donmai.us" (default none)',default:""}};function Ya(t){return Ro[t]?.default}function Rm(t,e){let n=`: \${${t}:=${e}}`;return Ya(t)===e?`# ${n}`:n}function r1(t){return new RegExp(String.raw`^#? ?: \$\{${t}[^\n]*$`,"m")}function dF(t,e){if(r1(e).test(t))return t;let n=Ro[e];return`${t.replace(/\n*$/,`
|
|
388
386
|
`)}
|
|
389
387
|
${n.doc}
|
|
390
|
-
${
|
|
391
|
-
`}var
|
|
392
|
-
${
|
|
388
|
+
${Rm(e,n.default)}
|
|
389
|
+
`}var ml=Object.keys(Ro),hF=8;function Ao(t,e){let n="";try{n=uF(lF(t,"ttheme","config.zsh"),"utf8")}catch{}return(new RegExp(String.raw`^: \$\{${e}:=([^}\n]*)\}`,"m").exec(n)?.[1]??Ro[e].default).replace(/^(["'])(.*)\1$/,"$2")}function ni(t){let e=Number(Ao(t,"TTHEME_BG_BLUR"));return Number.isFinite(e)?Math.min(hF,Math.max(0,e)):0}function pl(t){return Ao(t,"TTHEME_BG_COLORS")==="original"?"original":"tone"}function Am(){let t=Object.entries(Ro).map(([e,n])=>`${n.doc}
|
|
390
|
+
${Rm(e,n.default)}`);return`${[fF,...t].join(`
|
|
393
391
|
|
|
394
392
|
`)}
|
|
395
|
-
`}function
|
|
393
|
+
`}function gl(t,e,n){let r=Rm(e,n),i=r1(e);if(i.test(t))return t.replace(i,r);return`${t.replace(/\n*$/,`
|
|
396
394
|
`)}
|
|
397
395
|
${r}
|
|
398
|
-
`}function
|
|
399
|
-
`)}function
|
|
400
|
-
`)}var
|
|
401
|
-
`).filter((n)=>n!==""&&!n.startsWith("#"));return[...new Set(e.map((n)=>n.split(/[ =]/)[0]))].join(", ")}function gn(t,e){let n=
|
|
402
|
-
`)}var
|
|
403
|
-
`);return[{path:`alacritty/themes/${j(t.name)}.toml`,content:e}]}};var
|
|
404
|
-
`);return[{path:`ghostty/themes/${j(t.name)}`,content:e}]}};function
|
|
405
|
-
`}function
|
|
406
|
-
`)}var
|
|
407
|
-
`);return[{path:`iterm2/${j(t.name)}.itermcolors`,content:e}]}};var
|
|
408
|
-
`);return[{path:`kitty/themes/${j(t.name)}.conf`,content:e}]}};function
|
|
409
|
-
`)}function
|
|
410
|
-
`}]}};var
|
|
411
|
-
${n.toLowerCase()}`,"utf8"))r=Math.imul(r^i,16777619)>>>0;return`${j(t)}.${r.toString(16).padStart(8,"0")}.png`}function Za(t,e){return e?
|
|
412
|
-
`)}var
|
|
413
|
-
`);return[{path:`wezterm/colors/${j(t.name)}.toml`,content:e}]}},
|
|
414
|
-
`)}var
|
|
415
|
-
`}var
|
|
416
|
-
`}]},emitShared(t){return[{path:"windows-terminal/ttheme.json",content:
|
|
396
|
+
`}function i1(t){if(t==="")return Am();return Object.keys(Ro).reduce(dF,t)}var bl=/["$`\\]/;function mF(t){return t.replace(/_\([^)]*\)$/,"").replaceAll("_"," ")}function Nm(t,e,n=[],r={},i=[]){for(let l of t)for(let d of[l.name,l.catalog??"",l.native??"",...l.nativeNames??[],l.ansiSource])if(bl.test(d))throw Error(`${l.name}: "${d}" contains a character that breaks zsh quoting`);let s=Math.max(0,...t.map((l)=>l.name.length)),o=(l,d)=>` ${l.name.padEnd(s)} "${d}"`,a=(l)=>l.map((d)=>d.name).join(" "),c=_t(t),u=(l)=>`'${l.replaceAll("'","'\\''")}'`,f=Po.filter((l)=>l.section!=="setup"&&!l.hidden);return["# Generated by `mise run build` — do not edit.","# Source of truth: themes/palettes/<catalog>/*.toml in the ttheme repo.","",`typeset -g TTHEME_VERSION=${lt.version}`,"",'# the palette new tabs open with, which the iTerm2 "ttheme · default" profile wears',`typeset -g TTHEME_STARTUP=${e??""}`,"","# the terminals ttheme is wired into: a picture change reaches every one of them, from whichever runs the shell",`typeset -ga TTHEME_TERMINALS=(${n.join(" ")})`,...Object.keys(r).length>0?["","# what a wired terminal's adapter needs to know of it (src/terminals/)",...Object.entries(r).map(([l,d])=>`typeset -g ${l}=${u(d)}`)]:[],"","# the commands the shell layer knows (src/verbs.ts): help, completion and argument checks read them",`typeset -ga TTHEME_VERBS=(${f.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_TAB_VERBS=(${f.filter((l)=>l.section==="tab").map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_SHELL_VERBS=(${f.filter((l)=>l.shell).map((l)=>l.name).join(" ")})`,"typeset -gA TTHEME_VERB_ARGS=(",...f.map((l)=>` ${l.name} ${u(l.args.join(" "))}`),")","typeset -gA TTHEME_VERB_ABOUT=(",...f.map((l)=>` ${l.name} ${u(l.about)}`),")",`typeset -g TTHEME_HELP=${u(Ja(!1,!0))}`,`typeset -g TTHEME_HELP_ALL=${u(Ja(!0,!0))}`,"","# the screens the bare ttheme switches between (src/hub.ts): the exit status of a screen run by the CLI says where it went",`typeset -ga TTHEME_HUB_TABS=(${hr.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_HUB_TITLES=(${hr.map((l)=>l.title).join(" ")})`,`typeset -gi TTHEME_HUB_CLOSED=${Ju} TTHEME_HUB_SWITCH=${Yu}`,"","# the settings config.zsh holds, handed to the CLI on every call",`typeset -ga TTHEME_SETTINGS=(${ml.join(" ")})`,"","# seed for `ttheme config` when no config.zsh exists yet",`typeset -g TTHEME_CONFIG_TEMPLATE='${Am().trimEnd().replaceAll("'","'\\''")}'`,"","typeset -gA TTHEME_PALETTE=(",...t.map((l)=>o(l,[l.background,l.foreground,l.cursor,l.selection,...l.ansi].join(" "))),")","","# the palettes whose colors your tone moves off their marketplace's (tone.json): lists mark them, and preview's panel offers to reset them",`typeset -ga TTHEME_TUNED=(${t.flatMap((l)=>i.includes(l.name)?[l.name]:[]).join(" ")})`,"","# the order palettes were added: new tabs cycle through it and TTHEME_SORT=catalog lists it — the default role stays applyable but unlisted",`typeset -ga TTHEME_ORDER=(${a(c)})`,"","# the same palettes by catalog name, then palette name: TTHEME_SORT=abc lists them this way",`typeset -ga TTHEME_ABC=(${a(Qs(c))})`,"","# the marketplace a palette came from, for every one but the official palettes, whose catalogs head the lists","typeset -gA TTHEME_MARKETPLACE=(",...t.flatMap((l)=>{let d=rt(l.name);return d?[o(l,d)]:[]}),")","","# the catalog a palette sits in — the folder under its marketplace's palettes/, one level below a marketplace in every list","typeset -gA TTHEME_CATALOG=(",...t.flatMap((l)=>l.catalog?[o(l,l.catalog)]:[]),")","","# the catalog's original-language title, rendered dim next to it","typeset -gA TTHEME_NATIVE=(",...t.flatMap((l)=>l.native?[o(l,l.native)]:[]),")","","# the character's names in its original language, |-separated, and as its booru tag spells it: preview searches both","typeset -gA TTHEME_NATIVE_NAMES=(",...t.flatMap((l)=>l.nativeNames?[o(l,l.nativeNames.join("|"))]:[]),")","typeset -gA TTHEME_CHARACTER=(",...t.flatMap((l)=>l.booru&&!bl.test(l.booru)?[o(l,mF(l.booru))]:[]),")","","# the example scenes preview draws beside the list (src/scenes.ts), each line as «role»text runs",`typeset -ga TTHEME_SCENES=(${Yt.map((l)=>l.name).join(" ")})`,...Yt.flatMap((l,d)=>[`typeset -ga TTHEME_SCENE_${d+1}=(`,...l.lines.map((h)=>` ${u(h)}`),")"]),"","# each booru's ANSI color, which marks a link to one of its posts",`typeset -gA TTHEME_SITE_ANSI=(${Y.map((l)=>`${l.name} ${l.ansi}`).join(" ")})`,"","# the terminals that open OSC 8 links (src/terminal.ts)",`typeset -ga TTHEME_LINKS=(${Object.entries(Ee).flatMap(([l,d])=>d.links?[l]:[]).join(" ")})`,"","# the six colors a list row shows: foreground, the signature, then red and green","typeset -gA TTHEME_SWATCH=(",...t.map((l)=>o(l,oo(l).join(" "))),")","","# where each palette's 16 ANSI colors came from","typeset -gA TTHEME_SRC=(",...t.map((l)=>o(l,l.ansiSource)),")",""].join(`
|
|
397
|
+
`)}function s1(t){let e=Object.entries(t).flatMap(([r,i])=>{let s=i.filter((o)=>!bl.test(o)&&!o.includes("|"));return s.length>0&&!bl.test(r)?[[r,s.join("|")]]:[]}),n=Math.max(0,...e.map(([r])=>r.length));return["# the character's other names in every language, |-separated, from the aninames index in the cache: preview reads this when it opens and searches them too","typeset -gA TTHEME_ALIASES=(",...e.map(([r,i])=>` ${r.padEnd(n)} "${i}"`),")",""].join(`
|
|
398
|
+
`)}var Tm={id:"shell",emitShared(t){return[{path:"shell/palettes.zsh",content:Nm(t.map(dn))}]}};import{execFileSync as pF}from"node:child_process";import{existsSync as o1,readdirSync as gF,readFileSync as bF}from"node:fs";import{join as a1}from"node:path";function ct(t){return o1(t)?bF(t,"utf8"):""}function dt(t,e){return t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}function wl(t){let e=t.split(`
|
|
399
|
+
`).filter((n)=>n!==""&&!n.startsWith("#"));return[...new Set(e.map((n)=>n.split(/[ =]/)[0]))].join(", ")}function gn(t,e){let n=ct(t),r=e(n);return r===n?[]:[{file:t,content:r}]}function Va(t){return process.env.XDG_DATA_HOME??a1(t,".local","share")}function No(t){return o1(t)?gF(t).flatMap((e)=>e.startsWith(j(""))?[a1(t,e)]:[]):[]}function Hm(t,e){if(!t.shelf)return[];let n=`${[t.id,t.shelf.from].filter(Boolean).join("/")}/`;return(t.emitter.emit?.(e)??[]).flatMap((r)=>{let i=r.path.startsWith(n)?r.path.slice(n.length):"";return i!==""&&!i.includes("/")?[{file:i,content:r.content}]:[]})}function tn(){return{platform:process.platform,env:process.env,run:(t,e)=>{try{return pF(t,[...e],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5000}).trim()}catch{return}}}}import{existsSync as Qa}from"node:fs";import{join as ii}from"node:path";var wF=["black","red","green","yellow","blue","magenta","cyan","white"];function c1(t,e){return[t,...wF.map((n,r)=>`${n} = '${e[r]}'`),""].join(`
|
|
400
|
+
`)}var Fm={id:"alacritty",limits:"no runtime color API (OSC only)",emit(t){let e=[...Qr(t),"","[colors.primary]",`background = '${t.background}'`,`foreground = '${t.foreground}'`,"","[colors.cursor]",`cursor = '${t.cursor}'`,`text = '${t.background}'`,"","[colors.selection]",`background = '${t.selectionBackground}'`,`text = '${t.foreground}'`,"",c1("[colors.normal]",t.ansi.slice(0,8)),c1("[colors.bright]",t.ansi.slice(8,16))].join(`
|
|
401
|
+
`);return[{path:`alacritty/themes/${j(t.name)}.toml`,content:e}]}};var Lm={id:"ghostty",emit(t){let e=[...Qr(t),`background = ${t.background}`,`foreground = ${t.foreground}`,`cursor-color = ${t.cursor}`,`selection-background = ${t.selectionBackground}`,`selection-foreground = ${t.foreground}`,...t.ansi.map((n,r)=>`palette = ${r}=${n}`),"","macos-icon = custom-style",`macos-icon-ghost-color = ${t.ghostty.iconGhost}`,`macos-icon-screen-color = ${t.ghostty.iconScreen.join(",")}`,"macos-icon-frame = chrome",""].join(`
|
|
402
|
+
`);return[{path:`ghostty/themes/${j(t.name)}`,content:e}]}};function ri(t){let[e,n,r]=st(t);return{"Alpha Component":1,"Blue Component":r/255,"Color Space":"P3","Green Component":n/255,"Red Component":e/255}}function l1(t){return{...Object.fromEntries(t.ansi.map((e,n)=>[`Ansi ${n} Color`,ri(e)])),"Background Color":ri(t.background),"Bold Color":ri(t.foreground),"Cursor Color":ri(t.cursor),"Cursor Text Color":ri(t.background),"Foreground Color":ri(t.foreground),"Selected Text Color":ri(t.foreground),"Selection Color":ri(t.selectionBackground)}}function u1(t){return t?{"Background Image Location":t.image,"Background Image Mode":t.cover?2:3,Blend:t.opacity}:{"Background Image Location":""}}function f1(t,e,n,r,i=!1){let s=(c,u)=>({Name:`ttheme · ${u}`,Guid:j(u),...r?{"Dynamic Profile Parent GUID":r}:{},"Use Separate Colors for Light and Dark Mode":!1,...u1(e.get(c.name)),...l1(c)}),o={Name:"ttheme · default",Guid:j("default"),"Dynamic Profile Parent GUID":r,...u1(void 0)},a=[...n?[s(n,"default")]:i&&r?[o]:[],...t.map((c)=>s(c,c.name))];return`${JSON.stringify({Profiles:a},null,2)}
|
|
403
|
+
`}function $F(t,e){return[` <key>${t}</key>`,"\t<dict>",...Object.entries(e).flatMap(([n,r])=>[` <key>${n}</key>`,typeof r==="string"?` <string>${r}</string>`:` <real>${r}</real>`]),"\t</dict>"].join(`
|
|
404
|
+
`)}var Cm={id:"iterm2",limits:"colors are Display P3, the space iTerm2 reads OSC colors in",emit(t){let e=['<?xml version="1.0" encoding="UTF-8"?>','<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">','<plist version="1.0">',"<dict>",...Object.entries(l1(t)).map(([n,r])=>$F(n,r)),"</dict>","</plist>",""].join(`
|
|
405
|
+
`);return[{path:`iterm2/${j(t.name)}.itermcolors`,content:e}]}};var jm={id:"kitty",emit(t){let e=[...Qr(t),`background ${t.background}`,`foreground ${t.foreground}`,`cursor ${t.cursor}`,`cursor_text_color ${t.background}`,`selection_background ${t.selectionBackground}`,`selection_foreground ${t.foreground}`,...t.ansi.map((n,r)=>`color${r} ${n}`),""].join(`
|
|
406
|
+
`);return[{path:`kitty/themes/${j(t.name)}.conf`,content:e}]}};function d1(t){return[`# ${_n}`,"import os","",`THEMES = ${JSON.stringify(t.themes)}`,`BACKGROUNDS = ${JSON.stringify(t.backgrounds)}`,"PLACES = {"," 'top-left': 'top-left', 'top-center': 'top', 'top-right': 'top-right',"," 'center-left': 'left', 'center': 'center', 'center-center': 'center', 'center-right': 'right',"," 'bottom-left': 'bottom-left', 'bottom-center': 'bottom', 'bottom-right': 'bottom-right',","}","","shown = {}","faded = {}","worn = {}","","","def locate(path):"," if path.startswith('~/'):"," return os.path.expanduser(path)"," return path if os.path.isabs(path) else os.path.join(BACKGROUNDS, path)","","","def read(path, into):"," try:"," with open(path, encoding='utf-8') as f:"," lines = f.read().splitlines()"," except OSError:"," return False"," for line in lines:"," key, sep, value = line.partition('=')"," key, value = key.strip(), value.strip()"," if not sep or not key or key.startswith('#'):"," continue"," if key == 'config-file':"," read(locate(value.lstrip('?')), into)"," else:"," into[key] = value"," return True","","","def logo(palette):"," c = {}"," if not palette or not read(os.path.join(BACKGROUNDS, palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf'), c):"," return None"," image = c.get('background-image', '')"," try:"," opacity = min(float(c.get('background-image-opacity', '1')), 1.0)"," except ValueError:"," opacity = 1.0"," if not image or opacity <= 0:"," return None"," return locate(image), PLACES.get(c.get('background-image-position', 'center'), 'center'), opacity","","","def fade(path, opacity):"," key = f'{path}#{opacity}'"," if key not in faded:"," from kitty.fast_data_types import load_png_data, png_from_32bit_rgba_data"," with open(path, 'rb') as f:"," rgba, width, height = load_png_data(f.read())"," data = bytearray(rgba)"," data[3::4] = data[3::4].translate(bytes(round(a * opacity) for a in range(256)))"," if len(faded) > 8:"," faded.clear()"," faded[key] = png_from_32bit_rgba_data(bytes(data), width, height)"," return key, faded[key]","","","def show(window):"," want = logo(window.user_vars.get('ttheme_shown') or '')"," if window.id in shown and shown[window.id] == want:"," return"," shown[window.id] = want"," try:"," if want is None:"," window.set_logo('')"," elif want[2] < 1:"," key, png = fade(want[0], want[2])"," window.set_logo(key, want[1], 1, png)"," else:"," window.set_logo(want[0], want[1], 1)"," except Exception:"," shown.pop(window.id, None)","","","def theme(palette):"," path = os.path.join(THEMES, 'ttheme-' + palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf')"," if not palette or not os.path.exists(path):"," return None"," from kitty.colors import parse_colors"," return parse_colors([path])","","","def wear(palette):"," colors = theme(palette) if worn.get('startup') != palette else None"," if colors is None:"," return"," from kitty.colors import patch_colors"," patch_colors(colors[0], colors[1], True, ())"," worn['startup'] = palette","","","def rewear(boss):"," from kitty.colors import patch_colors"," for window in tuple(boss.all_windows):"," colors = theme(window.user_vars.get('ttheme_worn') or '')"," if colors is not None:"," patch_colors(colors[0], colors[1], False, (window,))","","","def on_load(boss, data):"," if getattr(boss, 'ttheme_rewears', False):"," return"," load = boss.load_config_file",""," def reload(*args, **kwargs):"," load(*args, **kwargs)"," worn.pop('startup', None)"," rewear(boss)",""," boss.load_config_file = reload"," boss.ttheme_rewears = True","","","def on_set_user_var(boss, window, data):"," if data['key'] == 'ttheme_shown':"," show(window)"," elif data['key'] == 'ttheme_startup':"," wear(data['value'] or '')","","","def on_focus_change(boss, window, data):"," if data['focused']:"," show(window)","","","def on_close(boss, window, data):"," shown.pop(window.id, None)",""].join(`
|
|
407
|
+
`)}function kF(t){let[e]=t;if(!e)throw Error("manifest needs at least one theme");return{...Iu(),palettes:t.map(dn)}}var _m={id:"meta",emitShared(t){return[{path:"manifest.json",content:`${JSON.stringify(kF(t),null,2)}
|
|
408
|
+
`}]}};var Bm={id:"terminal-app",limits:"profiles go into its own settings at init, so the archive carries none"};import{createHash as yF}from"node:crypto";var vF=["black","red","green","yellow","blue","magenta","cyan","white"];function h1(t,e){return[` ${t}:`,...vF.map((n,r)=>` ${n}: "${e[r]}"`)]}function SF(t,e,n){let r=yF("sha1");for(let i of e)r.update(i);return`${j(t)}.${r.digest("hex").slice(0,8)}.${n}`}function m1(t,e,n){let r=2166136261;for(let i of Buffer.from(`${e}
|
|
409
|
+
${n.toLowerCase()}`,"utf8"))r=Math.imul(r^i,16777619)>>>0;return`${j(t)}.${r.toString(16).padStart(8,"0")}.png`}function Za(t,e){return e?SF(t,[e.image,String(p1(e))],"yaml"):`${j(t)}.yaml`}function p1(t){return Math.max(0,Math.min(100,Math.round(t.opacity*100)))}function Xa(t,e){return[`name: "${t.name}"`,`background: "${t.background}"`,`foreground: "${t.foreground}"`,`accent: "${t.cursor}"`,`cursor: "${t.cursor}"`,`details: ${Mt(t.background)<0.18?"darker":"lighter"}`,...e?["background_image:",` path: "${e.image}"`,` opacity: ${p1(e)}`]:[],"terminal_colors:",...h1("normal",t.ansi.slice(0,8)),...h1("bright",t.ansi.slice(8,16)),""].join(`
|
|
410
|
+
`)}var Gm={id:"warp",limits:"no selection color, and Warp paints one theme app-wide",emit(t){return[{path:`warp/themes/${Za(t.name)}`,content:Xa(t)}]}};var g1=(t)=>`[${t.map((e)=>`"${e}"`).join(", ")}]`,Um={id:"wezterm",limits:"OSC repaints per pane, pictures show per window",emit(t){let e=["[metadata]",`name = "${j(t.name)}"`,`origin_url = "${t.ansiSource}"`,"","[colors]",`foreground = "${t.foreground}"`,`background = "${t.background}"`,`cursor_bg = "${t.cursor}"`,`cursor_border = "${t.cursor}"`,`cursor_fg = "${t.background}"`,`selection_bg = "${t.selectionBackground}"`,`selection_fg = "${t.foreground}"`,"",`ansi = ${g1(t.ansi.slice(0,8))}`,`brights = ${g1(t.ansi.slice(8,16))}`,""].join(`
|
|
411
|
+
`);return[{path:`wezterm/colors/${j(t.name)}.toml`,content:e}]}},To=(t)=>JSON.stringify(t);function b1(t){return[`-- ${_n}`,"local wezterm = require 'wezterm'","",`local MODULE = ${To(t.path)}`,`local COLORS = ${To(t.colors)}`,`local BACKGROUNDS = ${To(t.backgrounds)}`,`local STARTUP = ${t.startup?To(j(t.startup)):"nil"}`,"local PALETTES = {",...t.palettes.map((e)=>` [${To(e.name)}] = ${To(e.background)},`),"}","","local X = { left = 'Left', center = 'Center', right = 'Right' }","local Y = { top = 'Top', center = 'Middle', bottom = 'Bottom' }","local SIZE = { cover = 'Cover', contain = 'Contain', stretch = '100%' }","","local function locate(path)"," if path:sub(1, 2) == '~/' then"," return os.getenv('HOME') .. path:sub(2)"," elseif path:sub(1, 1) == '/' or path:match('^%a:[/\\\\]') then"," return path"," end"," return BACKGROUNDS .. '/' .. path","end","","local function read(path, into)"," local f = io.open(path, 'r')"," if not f then"," return false"," end"," for line in f:lines() do"," local key, value = line:match('^%s*([%w%-]+)%s*=%s*(.-)%s*$')"," if key == 'config-file' then"," read(locate((value:gsub('^%?', ''))), into)"," elseif key then"," into[key] = value"," end"," end"," f:close()"," return true","end","","local function layers(palette)"," local color = PALETTES[palette]"," local c = {}"," if not color or not read(BACKGROUNDS .. '/' .. ((palette:gsub('@', '--', 1)):gsub('/', '--', 1)) .. '.conf', c) then"," return nil, 'none'"," end"," local image = c['background-image'] or ''"," local opacity = tonumber(c['background-image-opacity'] or '1') or 1"," if image == '' or opacity <= 0 then"," return nil, 'none'"," end"," local fit = c['background-image-fit'] or 'contain'"," local position = c['background-image-position'] or 'center'"," local y, x = position:match('^(%a+)-(%a+)$')"," local rep = c['background-image-repeat'] == 'true' and 'Repeat' or 'NoRepeat'"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = locate(image) },"," opacity = opacity,"," width = SIZE[fit],"," height = SIZE[fit],"," horizontal_align = X[x or 'center'],"," vertical_align = Y[y or 'center'],"," repeat_x = rep,"," repeat_y = rep,"," },"," }, table.concat({ color, image, opacity, fit, position, rep }, '|')","end","","local function framed(window, view)"," local color, image, opacity, W, H, w, h, x, y, at ="," view:match('^([^|]*)|([^|]*)|([^|]*)|(%d+)|(%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%d)$')"," if not image or image == '' or tonumber(W) == 0 or tonumber(H) == 0 then"," return nil, 'none'"," end"," local d = window:get_dimensions()"," local k = math.max(d.pixel_width / W, d.pixel_height / H)"," local n = tonumber(at) - 1"," local ax, ay = n % 3, n // 3"," local px = function(n) return string.format('%.2fpx', n) end"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = image },"," opacity = tonumber(opacity) or 1,"," width = px(w * k),"," height = px(h * k),"," horizontal_align = 'Left',"," vertical_align = 'Top',"," horizontal_offset = px(ax * (d.pixel_width - W * k) / 2 + x * k),"," vertical_offset = px(ay * (d.pixel_height - H * k) / 2 + y * k),"," repeat_x = 'NoRepeat',"," repeat_y = 'NoRepeat',"," },"," }, table.concat({ view, d.pixel_width, d.pixel_height }, '|')","end","","local shown = {}","","local function show(window, pane)"," local vars = pane:get_user_vars()"," local id = window:window_id()"," local background, key"," if vars.ttheme_view and vars.ttheme_view ~= '' then"," background, key = framed(window, vars.ttheme_view)"," elseif vars.ttheme_shown and vars.ttheme_shown ~= '' then"," background, key = layers(vars.ttheme_shown)"," elseif shown[id] == nil then"," return"," end"," if shown[id] == key then"," return"," end"," shown[id] = key"," local overrides = window:get_config_overrides() or {}"," overrides.background = background"," window:set_config_overrides(overrides)","end","","wezterm.on('user-var-changed', function(window, pane, name)"," if name == 'ttheme_shown' or name == 'ttheme_view' then"," show(window, pane)"," end","end)","wezterm.on('update-status', show)","","return function(config)"," local dirs = config.color_scheme_dirs or {}"," table.insert(dirs, COLORS)"," config.color_scheme_dirs = dirs"," if STARTUP then"," config.color_scheme = STARTUP"," end"," wezterm.add_to_config_reload_watch_list(MODULE)","end",""].join(`
|
|
412
|
+
`)}var w1=["black","red","green","yellow","blue","purple","cyan","white"];function $1(t){return{name:j(t.name),background:t.background,foreground:t.foreground,cursorColor:t.cursor,selectionBackground:t.selectionBackground,...Object.fromEntries(w1.map((e,n)=>[e,t.ansi[n]])),...Object.fromEntries(w1.map((e,n)=>[`bright${e[0]?.toUpperCase()}${e.slice(1)}`,t.ansi[n+8]]))}}function Wm(t,e,n){let r={...e&&n?{profiles:[{updates:e,colorScheme:j(n)}]}:{},schemes:t.map($1)};return`${JSON.stringify(r,null,2)}
|
|
413
|
+
`}var Km={id:"windows-terminal",limits:"a picture belongs to a profile, which a pane cannot change, so none; OSC repaints per pane",emit(t){return[{path:`windows-terminal/schemes/${j(t.name)}.json`,content:`${JSON.stringify($1(t),null,2)}
|
|
414
|
+
`}]},emitShared(t){return[{path:"windows-terminal/ttheme.json",content:Wm(t)}]}};function EF(t){let e=t.replace(Xi,"");return/^[ \t]*\[colors[\].]/m.test(e)||/^[ \t]*colors[ \t]*[.=]/m.test(e)}var MF=/^[ \t]*\[general\][ \t]*(?:#.*)?\r?$/m,k1=/^[ \t]*\[/m,y1=/^[ \t]*import[ \t]*=/m,xF=/^[ \t]*general[ \t]*[.=]/m;function qm(t){return`import = [${JSON.stringify(t)}]`}function zm(t,e){let n=t.replace(Xi,""),r=MF.exec(n);if(!r){let a=n.search(k1),c=a<0?n:n.slice(0,a);if(xF.test(n)||y1.test(c))return;return ei(t,`# ${Me}
|
|
417
415
|
[general]
|
|
418
|
-
${
|
|
419
|
-
${
|
|
416
|
+
${qm(e)}`)}let i=r.index+r[0].length,s=n.slice(i),o=s.search(k1);if(y1.test(o<0?s:s.slice(0,o)))return;return`${n.slice(0,i)}
|
|
417
|
+
${Pm}
|
|
420
418
|
# ${Me}
|
|
421
|
-
${
|
|
422
|
-
${
|
|
423
|
-
`)}function
|
|
424
|
-
config-file = ?${
|
|
425
|
-
`)}function
|
|
426
|
-
include ${
|
|
427
|
-
`)}function tc(t){return
|
|
428
|
-
`),i=
|
|
429
|
-
`),r=
|
|
419
|
+
${qm(e)}
|
|
420
|
+
${Im}${s}`}function v1(t){return[...new Set([ii(t.configHome,"alacritty","alacritty.toml"),ii(t.configHome,"alacritty.toml"),ii(t.home,".config","alacritty","alacritty.toml"),ii(t.home,".alacritty.toml")])]}function OF(t){let e=ct(t);return Xi.test(e)&&Bn(e)===""&&!Qa(la(t))}function Dm(t){let e=v1(t),n=e.filter(OF),r=e.find((s)=>Qa(s)&&!n.includes(s)),i=r?void 0:e.map((s)=>s.replace(/\.toml$/,".yml")).find((s)=>Qa(s));if(!r&&!i)return{file:n[0]??e[0]};return{file:r??e[0],...i?{yaml:i}:{},...n.length>0?{leftover:n}:{}}}function Jm(t){return ii(t,"ttheme","alacritty.toml")}function PF(t){return[`# ${_n}`,...t?["[general]",qm(t)]:[],""].join(`
|
|
421
|
+
`)}function $l(t){let e=Jm(t.configHome);return ti(e,t.home,"~")??e}function S1(t){return ii(t.configHome,"alacritty","themes")}function IF(t){return t.startup?ii(S1(t),`${j(t.startup)}.toml`):void 0}var Ym={id:"alacritty",name:"Alacritty",emitter:Fm,shelf:{from:"themes",dir:S1},offered:()=>!0,present:(t)=>Qa(ii(t.configHome,"alacritty")),sync(t,e){e.themes(Ym),e.write(Jm(t.configHome),PF(IF(t)));let n=Dm(t);for(let i of n.leftover??[])e.remove(i);let r=n.yaml?void 0:zm(ct(n.file),$l(t));if(r!==void 0)e.wire(n.file,r)},plan(t){let e=Dm(t);return!e.yaml&&zm(ct(e.file),$l(t))!==void 0?[`Edit ${dt(e.file,t.home)} — a ttheme block: general.import`,`Write ${dt(Jm(t.configHome),t.home)} — general.import`]:[]},notes(t){let e=Dm(t),n=(e.leftover??[]).map((i)=>`${dt(i,t.home)} held only ttheme's import and hid ${dt(e.yaml??e.file,t.home)} from Alacritty — ttheme removed it`);if(e.yaml)return[...n,`${dt(e.yaml,t.home)} is the config Alacritty reads, and ttheme edits TOML only — \`alacritty migrate\` converts it, and ttheme wires the TOML at its next add, remove or default`];let r=ct(e.file);return[...n,...Qa(e.file)&&zm(r,$l(t))===void 0?[`${dt(e.file,t.home)} already imports files under [general] — ttheme left it alone; add ${$l(t)} to that import list yourself`]:[],...t.startup&&EF(r)?[`${dt(e.file,t.home)} sets its own colors, which win over an imported palette — remove them to open with ttheme's`]:[]]},next:()=>["Alacritty Reloads its config by itself"],unwire:(t)=>({edits:v1(t).flatMap((e)=>gn(e,Bn)),removals:[],touches:[]})};import{existsSync as RF}from"node:fs";import{join as bn}from"node:path";var AF=["background","foreground","palette","cursor-color","cursor-text","selection-background","selection-foreground"];function kl(t){return bn(t,"ghostty","config")}function E1(t){return bn(t,"ttheme","ghostty.conf")}function NF(t,e=process.platform){let n=bn(t.home,"Library","Application Support","com.mitchellh.ghostty");return[kl(t.configHome),bn(t.configHome,"ghostty","config.ghostty"),...e==="darwin"?[bn(n,"config"),bn(n,"config.ghostty")]:[]]}function yl(t,e){return NF(t).find((n)=>Io(ct(n),e))}function TF(t,e){let n=bn(t,"ghostty.conf");return`# ${Me}
|
|
422
|
+
config-file = ?${ti(n,e,"~")??n}`}function HF(t,e,n,r){return[`# ${_n}`,...n?[`command = ${t}/launch-tab.zsh`,...r?["shell-integration = zsh"]:[]]:[],...e?[`theme = ${j(e)}`]:[],"config-file = ?backgrounds/shown.conf",""].join(`
|
|
423
|
+
`)}function x1(t){return Ao(t.configHome,"TTHEME_TAB_PALETTE")!=="off"}function M1(t){return HF(bn(t.configHome,"ttheme"),t.startup,x1(t)&&yl(t,"command")===void 0,yl(t,"shell-integration")===void 0)}var Vm={id:"ghostty",name:"Ghostty",emitter:Lm,shelf:{from:"themes",dir:(t)=>bn(t.configHome,"ghostty","themes")},offered:()=>!0,present:(t)=>RF(bn(t.configHome,"ghostty")),sync(t,e){e.themes(Vm),e.write(E1(t.configHome),M1(t));let n=kl(t.configHome);e.wire(n,ei(ct(n),TF(bn(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${dt(kl(t.configHome),t.home)} — a ttheme block: config-file`,`Write ${dt(E1(t.configHome),t.home)} — ${wl(M1(t))}`]},notes(t){let e=yl(t,"command"),n=t.startup?AF.map((r)=>yl(t,r)).find(Boolean):void 0;return[...e&&x1(t)?[`${dt(e,t.home)} sets its own command — ttheme leaves it, so a new tab takes its palette once zsh starts`]:[],...n?[`${dt(n,t.home)} sets its own colors, which win over a theme — remove them to open with ttheme's`]:[]]},next:()=>["Restart Ghostty New tabs pick up its config"],unwire:(t)=>({edits:gn(kl(t.configHome),Bn),removals:[],touches:[]})};import{existsSync as O1}from"node:fs";import{join as R1}from"node:path";var Zm="ttheme-default";function Ho(t){return R1(t,"Library","Application Support","iTerm2","DynamicProfiles","ttheme.json")}function A1(t){return t.itermBase!==void 0&&t.palettes.length>0}function P1(t){let e=V(t.configHome),n=new Map;for(let i of t.themes){let s=Fe(e,i.name,t.home);if(s)n.set(i.name,s)}let r=new Set(_t(t.entries).map((i)=>i.name));return f1(t.themes.filter((i)=>r.has(i.name)),n,t.themes.find((i)=>i.name===t.startup),t.state.itermBase,A1(t.state))}function Xm(t){return t.env.TTHEME_ITERM_SUITE??"com.googlecode.iterm2"}function I1(t){return t.run("defaults",["read",Xm(t),"Default Bookmark Guid"])||void 0}function FF(t){return t.run("defaults",["read",Xm(t),"PreventEscapeSequenceFromChangingProfile"])==="0"}var LF={key:"itermBase",profile:()=>"ttheme · default",base(t){let e=I1(t.host);return e&&!e.startsWith("ttheme-")?{...t.state,itermBase:e}:t.state},point(t,e){let n=I1(t.host),r=t.startup?e||n===Zm?Zm:void 0:n===Zm&&!A1(t.state)?t.state.itermBase:void 0;if(!r||r===n)return;return t.host.run("defaults",["write",Xm(t.host),"Default Bookmark Guid","-string",r]),{restart:Boolean(t.host.run("pgrep",["-x","iTerm2"]))}}},N1={id:"iterm2",name:"iTerm2",emitter:Cm,bakes:!0,offered:(t,e)=>e.platform==="darwin",present:(t)=>O1(R1(t.home,"Library","Application Support","iTerm2")),sync(t,e){e.write(Ho(t.home),P1(t))},pictures(t,e){e.write(Ho(t.home),P1(t))},layer:(t,e)=>({TTHEME_ITERM_SWITCH:FF(e)?"1":"",TTHEME_ITERM_PROFILES:Ho(t.home)}),plan:(t)=>[`Write ${dt(Ho(t.home),t.home)} — a "ttheme · <palette>" profile per palette`],notes:()=>[],next(t,e){let n=['iTerm2 profiles A "ttheme · <palette>" per palette in Settings › Profiles'];if(t.startup)n.push(e?.restart?`Restart iTerm2 New tabs open on "ttheme · default", which wears ${t.startup}`:`iTerm2 default "ttheme · default" wears ${t.startup} and follows \`ttheme default\``);return n},unwire:(t)=>({edits:[],removals:O1(Ho(t.home))?[Ho(t.home)]:[],touches:[]}),defaults:LF};import{existsSync as CF}from"node:fs";import{join as si}from"node:path";function jF(t,e){let n=si(t,"kitty.conf");return`# ${Me}
|
|
424
|
+
include ${ti(n,e,"~")??n}`}function _F(t,e,n=""){return[`# ${_n}`,...t?[`include ${t}`]:[],`watcher ${e}`,...["window_logo_scale 100","window_logo_alpha 1"].filter((r)=>!Io(n,r.split(" ")[0])),""].join(`
|
|
425
|
+
`)}function tc(t){return si(t,"kitty","kitty.conf")}function T1(t){return si(t,"ttheme","kitty.conf")}function F1(t){return si(t,"ttheme","kitty.py")}function Qm(t){return si(t.configHome,"kitty","themes")}function H1(t){return _F(t.startup&&si(Qm(t),`${j(t.startup)}.conf`),F1(t.configHome),ct(tc(t.configHome)))}var tp={id:"kitty",name:"kitty",emitter:jm,shelf:{from:"themes",dir:Qm},offered:()=>!0,present:(t)=>CF(si(t.configHome,"kitty")),sync(t,e){e.themes(tp),e.write(F1(t.configHome),d1({themes:Qm(t),backgrounds:V(t.configHome)})),e.write(T1(t.configHome),H1(t));let n=tc(t.configHome);e.wire(n,ei(ct(n),jF(si(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${dt(tc(t.configHome),t.home)} — a ttheme block: include`,`Write ${dt(T1(t.configHome),t.home)} — ${wl(H1(t))}`]},notes(t){let e=ct(tc(t.configHome));return Io(e,"window_logo_scale")||Io(e,"window_logo_alpha")?["kitty.conf sets its own window_logo_scale or window_logo_alpha — pictures are drawn with them"]:[]},next:()=>["New kitty window Pictures follow it — kitty reloads its colors by itself"],unwire:(t)=>({edits:gn(tc(t.configHome),Bn),removals:[],touches:[]})};import{createHash as BF}from"node:crypto";import{existsSync as vl}from"node:fs";import{basename as C1,isAbsolute as GF,join as Qi}from"node:path";function Fo(t){return Qi(Va(t),"konsole")}function ec(t){return Qi(t,"konsolerc")}function j1(t){return`${j(t)}.profile`}function nc(t){return`ttheme · ${t}`}function _1(t,e){let n=t.findIndex((i)=>i.trim()===`[${e}]`);if(n<0)return;let r=t.findIndex((i,s)=>s>n&&i.trimStart().startsWith("["));return[n,r<0?t.length:r]}function ep(t){return new RegExp(String.raw`^\s*${t}\s*=`)}function oi(t,e,n){let r=t.split(`
|
|
426
|
+
`),i=_1(r,e);return(i&&r.slice(i[0]+1,i[1]).find((o)=>ep(n).test(o)))?.replace(ep(n),"").trim()}function B1(t,e){let n=t.split(`
|
|
427
|
+
`),r=_1(n,"Desktop Entry"),i=e===void 0?[]:[`DefaultProfile=${e}`];if(!r)return e===void 0?t:`${t===""?"":t.replace(/\n*$/,`
|
|
430
428
|
|
|
431
429
|
`)}[Desktop Entry]
|
|
432
430
|
${i[0]}
|
|
433
|
-
`;let s=n.findIndex((a,c)=>c>r[0]&&c<r[1]&&
|
|
434
|
-
`)}function
|
|
435
|
-
`)}var
|
|
431
|
+
`;let s=n.findIndex((a,c)=>c>r[0]&&c<r[1]&&ep("DefaultProfile").test(a));if(s>=0)n.splice(s,1,...i);else n.splice(r[0]+1,0,...i);let o=r[1]+i.length-(s>=0?1:0);if(n.slice(r[0]+1,o).every((a)=>a.trim()==="")){let a=r[0]>0&&n[r[0]-1]?.trim()===""?r[0]-1:r[0],c=o===n.length&&n[o-1]===""?o-1:o;n.splice(a,c-a)}return n.join(`
|
|
432
|
+
`)}function UF(t){if(t&&be(t.toLowerCase()))return t.toLowerCase();let e=t?.split(",").map((n)=>Number(n.trim()));if(!e||e.length<3||e.slice(0,3).some((n)=>!Number.isInteger(n)||n<0||n>255))return;return`#${e.slice(0,3).map((n)=>n.toString(16).padStart(2,"0")).join("")}`}function G1(t,e){let n=e.endsWith(".profile")?e:`${e}.profile`;if(GF(n))return vl(n)?n:void 0;let r=n.includes("/")?n:Qi("konsole",n);return[Va(t.home),...(process.env.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((s)=>Qi(s,r)).find((s)=>vl(s))}function U1(t,e,n=0){let r=e&&e!=="FALLBACK/"&&n<8?G1(t,e):void 0;if(!r)return{};let i=ct(r),s=U1(t,oi(i,"General","Parent"),n+1);return{scheme:oi(i,"Appearance","ColorScheme")||s.scheme,use:oi(i,"Cursor Options","UseCustomCursorColor")??s.use,cursor:oi(i,"Cursor Options","CustomCursorColor")??s.cursor}}function WF(t,e){let n=U1(t,e),r=n.use==="true"?UF(n.cursor):void 0;return[`ColorScheme=${n.scheme??"Breeze"}`,`UseCustomCursorColor=${r?"true":"false"}`,...r?[`customCursorColor=${r}`]:[]].join(";")}function KF(t,e){return["[Appearance]",`ColorScheme=${j(t.name)}`,"","[Cursor Options]",`CustomCursorColor=${st(t.cursor).join(",")}`,`CustomCursorTextColor=${st(t.background).join(",")}`,"UseCustomCursorColor=true","","[General]",`Name=${nc(t.name)}`,`Parent=${e}`,""].join(`
|
|
433
|
+
`)}var W1=/^ttheme-(.+)\.([0-9a-f]{8})\.colorscheme$/;function zF(t){return BF("sha1").update(t).digest("hex").slice(0,8)}function L1(t,e){let n=Fo(t.home),r=V(t.configHome),i=new Set;for(let s of t.themes){let o=wm(s,Fe(r,s.name,t.home)),a=Qi(n,`${j(s.name)}.${zF(o)}.colorscheme`);i.add(a),e.write(Qi(n,`${j(s.name)}.colorscheme`),o),e.write(a,o)}for(let s of No(n))if(W1.test(C1(s))&&!i.has(s))e.remove(s)}function DF(t){return No(t).flatMap((e)=>{let[,n,r]=W1.exec(C1(e))??[];return n&&r?[`${n} ${r}`]:[]}).sort().join(" ")}function qF(t){let e=new Set(_t(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}var np=["--session","--print-reply","--reply-timeout=2000"];function JF(t){return[...(t.run("dbus-send",[...np,"--dest=org.freedesktop.DBus","/org/freedesktop/DBus","org.freedesktop.DBus.ListNames"])??"").matchAll(/string "(org\.kde\.konsole(?:-\d+)?)"/g)].flatMap(([,n=""])=>{let i=t.run("dbus-send",[...np,`--dest=${n}`,"/Windows","org.freedesktop.DBus.Introspectable.Introspect"])?.match(/<node name="(\d+)"/)?.[1];return i?[{service:n,window:`/Windows/${i}`}]:[]})}function YF(t,{service:e,window:n},r){let i=(s,...o)=>t.run("dbus-send",[...np,`--dest=${e}`,n,`org.kde.konsole.Window.${s}`,...o]);return i("setDefaultProfile",`string:${r}`),i("defaultProfile")?.includes(`string "${r}"`)===!0}function VF(t,e){let n=G1(t,e);return n?oi(ct(n),"General","Name"):void 0}function ZF(t){return oi(ct(ec(t)),"Desktop Entry","DefaultProfile")}var XF={key:"konsoleBase",profile:nc,base(t){let e=ZF(t.configHome);return e&&!e.startsWith(j(""))?{...t.state,konsoleBase:e}:t.state},point(t,e){let n=ec(t.configHome),r=ct(n),i=oi(r,"Desktop Entry","DefaultProfile"),s=i?.startsWith(j(""))===!0,o=t.startup?e||s?j1(t.startup):void 0:s?t.state.konsoleBase??"":void 0;if(o===void 0||o===(i??"")&&!e)return;if(o!==(i??""))On(n,B1(r,o||void 0));let a=t.startup?nc(t.startup):o?VF(t,o):void 0,c=JF(t.host),u=a!==void 0&&c.every((f)=>YF(t.host,f,a));return{restart:c.length>0&&!u}}},K1={id:"konsole",name:"Konsole",emitter:$m,shelf:{from:"",dir:(t)=>Fo(t.home)},offered:(t,e)=>e.platform!=="darwin"&&e.platform!=="win32",present:(t)=>vl(Fo(t.home))||vl(ec(t.configHome)),sync(t,e){L1(t,e);let n=Fo(t.home),r=t.state.konsoleBase??"FALLBACK/",i=new Set;for(let s of qF(t)){let o=Qi(n,j1(s.name));i.add(o),e.write(o,KF(s,r))}for(let s of No(n))if(s.endsWith(".profile")&&!i.has(s))e.remove(s)},pictures:L1,layer:(t)=>({TTHEME_KONSOLE_BASE:WF(t,t.state.konsoleBase),TTHEME_KONSOLE_SCHEMES:DF(Fo(t.home))}),plan(t){return[`Write ${dt(Fo(t.home),t.home)}/${j("*")}.profile — a "ttheme · <palette>" profile per palette, on top of your own`,...t.startup?[`Edit ${dt(ec(t.configHome),t.home)} — DefaultProfile; \`ttheme off\` puts yours back`]:[]]},notes:()=>[],next(t,e){let n=['Konsole profiles A "ttheme · <palette>" per palette in its profile list'];if(t.startup)n.push(e?.restart?`Restart Konsole New tabs open on "${nc(t.startup)}"`:`Konsole default "${nc(t.startup)}", which follows \`ttheme default\``);return n},unwire(t,e){let n=ec(t.configHome),r=ct(n),i=oi(r,"Desktop Entry","DefaultProfile")?.startsWith(j(""))===!0;return{edits:i?[{file:n,content:B1(r,e?.konsoleBase)}]:[],removals:i?[]:ou(n),touches:[]}},defaults:XF};import{createHash as QF}from"node:crypto";import{existsSync as q1,readdirSync as tL,readFileSync as eL,rmSync as nL}from"node:fs";import{join as ts}from"node:path";var J1="com.apple.Terminal",rc="ttheme · ";function wn(t){return`${rc}${t}`}function Sl(t){return ts(t,"ttheme","terminal-app.js")}function Lo(t){return ts(t,"ttheme","terminal-app")}function rL(t,e){return ts(t.XDG_STATE_HOME??ts(e,".local","state"),"ttheme","terminal-app.window")}var iL=`ObjC.import('AppKit')
|
|
436
434
|
|
|
437
435
|
const OURS = '${rc}'
|
|
438
436
|
const IMAGE = 'BackgroundImageBookmark'
|
|
@@ -618,68 +616,69 @@ function run(argv) {
|
|
|
618
616
|
}
|
|
619
617
|
return changed ? 'wrote' : 'same'
|
|
620
618
|
}
|
|
621
|
-
`;function
|
|
622
|
-
`),n=
|
|
623
|
-
`),r=
|
|
619
|
+
`;function rp(t,e,n){return t.run("osascript",["-l","JavaScript",Sl(e),...n])}function ip(t){return t.run("defaults",["read",J1,"Default Window Settings"])||void 0}function sL(t){return[t.background,t.foreground,t.cursor,t.selectionBackground,...t.ansi]}function Y1(t){let e=new Set(_t(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}function sp(t,e){let n=ip(e);return t.terminalBase??(n&&!n.startsWith(rc)?n:"Basic")}function op(t,e){let n=/^(\d+)x(\d+)$/.exec(ct(rL(t,e)).trim());return n?{width:Number(n[1])*2,height:Number(n[2])*2}:void 0}function ap(t,e,n,r){let i=r?.width??t,s=r?.height??e,o=Dt.indexOf(n.position)+1||5,a=so(t,e,i,s,100,o,n.cover),c=Math.min(1,t/Math.max(1,a.w));return{width:Math.max(1,Math.round(i*c)),height:Math.max(1,Math.round(s*c)),at:{x:Math.round(a.x*c),y:Math.round(a.y*c),w:Math.round(a.w*c),h:Math.round(a.h*c)}}}var V1=/^ttheme-(.+)\.([0-9a-z-]+)\.png$/;function El(t){let e=new Map;for(let n of q1(t)?tL(t):[]){let[,r]=V1.exec(n)??[];if(r)e.set(r,[...e.get(r)??[],n])}return e}function oL(t){return[...El(t)].map(([e,n])=>`${e} ${(V1.exec(n[0])??[])[2]}`).sort().join(" ")}function z1(t){let e=Lo(t.configHome),n=El(e),r=op(t.host.env,t.home),i=new Map,s=(o)=>{for(let a of o)nL(ts(e,a),{force:!0})};for(let o of Y1(t)){let a=n.get(de(o.name))??[];n.delete(de(o.name));let c=Fe(V(t.configHome),o.name,t.home),u=c&&q1(c.image)?new Uint8Array(eL(c.image)):void 0,f=u&&Rn(u);if(!c||!u||!f||c.opacity<=0){s(a);continue}let l=ap(f.width,f.height,c,r),d=QF("sha1").update(u).update(JSON.stringify([o.background.toLowerCase(),c.opacity,l])).digest("hex").slice(0,8),h=`${j(o.name)}.${d}.png`,m=ts(e,h);if(!a.includes(h)){let p;try{p=Br(jr(Ut(u),o.background,c.opacity,l))}catch{s(a);continue}let[b,...$]=a;if(b)Pi(ts(e,b),m,p);else C(m,p);s($)}else s(a.filter((p)=>p!==h));i.set(o.name,m)}for(let o of n.values())s(o);return i}function D1(t,e){rp(t.host,t.configHome,["write",sp(t.state,t.host),...Y1(t).flatMap((n)=>[wn(n.name),...sL(n),e.get(n.name)??"-"])])}var aL={key:"terminalBase",profile:wn,base(t){let e=ip(t.host);return e&&!e.startsWith(rc)?{...t.state,terminalBase:e}:t.state},point(t,e){let n=ip(t.host),r=n?.startsWith(rc)===!0;if(t.state.palettes.length===0)rp(t.host,t.configHome,["drop"]);let i=t.startup?e||r?wn(t.startup):void 0:r?sp(t.state,t.host):void 0;if(i===void 0||i===n&&!e)return;for(let o of["Default Window Settings","Startup Window Settings"])t.host.run("defaults",["write",J1,o,"-string",i]);return{restart:Boolean(t.host.run("pgrep",["-x","Terminal"]))&&rp(t.host,t.configHome,["loaded",i])!=="1"}}},Z1={id:"terminal-app",name:"Terminal.app",emitter:Bm,offered:(t,e)=>e.platform==="darwin",present:()=>!1,sync(t,e){e.write(Sl(t.configHome),iL),D1(t,z1(t))},pictures(t){D1(t,z1(t))},layer:(t,e)=>({TTHEME_TERMINAL_APP_BASE:sp(t.state,e),TTHEME_TERMINAL_PICTURES:oL(Lo(t.configHome))}),plan:(t)=>[`Add a "${wn("<palette>")}" profile per palette to Terminal.app's settings — a copy of your own profile in the palette's colors, with its picture`,...t.startup?[`Make "${wn(t.startup)}" Terminal.app's default — \`ttheme off\` puts yours back`]:[]],notes:()=>[],next(t,e){let n=[`Terminal.app A "${wn("<palette>")}" profile per palette in Settings › Profiles`];if(t.startup)n.push(e?.restart?`Restart Terminal New windows and tabs open on "${wn(t.startup)}"`:`Terminal default "${wn(t.startup)}", which follows \`ttheme default\``);return n},unwire:()=>({edits:[],removals:[],touches:[]}),defaults:aL};import{spawn as cL}from"node:child_process";import{randomUUID as uL}from"node:crypto";import{existsSync as ai,mkdirSync as X1,readdirSync as cp,readFileSync as up,realpathSync as lL,rmSync as Q1,writeFileSync as tv}from"node:fs";import{dirname as lp,join as xe}from"node:path";function es(t){return process.platform==="darwin"?xe(t,".warp","themes"):xe(Va(t),"warp-terminal","themes")}function ci(t,e){return process.platform==="darwin"?xe(t,".warp","settings.toml"):xe(e,"warp-terminal","settings.toml")}var xl='"dark"';function Ol(t){return xe(t,"ttheme","warp.base")}function fL(t){return xe(t,"ttheme","warp.later")}var iv="[appearance.themes]";function sv(t){let e=t.findIndex((r)=>r.trim()===iv);if(e<0)return;let n=t.findIndex((r,i)=>i>e&&r.trimStart().startsWith("["));return[e,n<0?t.length:n]}function ui(t){let e=t.split(`
|
|
620
|
+
`),n=sv(e);if(!n)return;return e.slice(n[0]+1,n[1]).find((i)=>/^theme\s*=/.test(i))?.replace(/^theme\s*=\s*/,"").trim()}function fp(t,e=`${j(t)}.yaml`){return`{ custom = { name = "${t}", path = "${e}" } }`}function dL(t){return t?.includes(`path = "${j("")}`)===!0?/name = "([^"]+)"/.exec(t)?.[1]:void 0}function Pl(t,e){let n=t.split(`
|
|
621
|
+
`),r=sv(n);if(!r)return e===void 0?t:`${t.replace(/\n*$/,`
|
|
624
622
|
`)}
|
|
625
|
-
${
|
|
623
|
+
${iv}
|
|
626
624
|
theme = ${e}
|
|
627
625
|
`;let i=n.findIndex((s,o)=>o>r[0]&&o<r[1]&&/^theme\s*=/.test(s));if(i>=0)n.splice(i,1,...e===void 0?[]:[`theme = ${e}`]);else if(e!==void 0)n.splice(r[0]+1,0,`theme = ${e}`);return n.join(`
|
|
628
|
-
`)}function
|
|
629
|
-
do local path = ${r} local file = io.open(path) if file then file:close() dofile(path)(config) end end`}var
|
|
626
|
+
`)}function Ml(t){return ui(t)?.includes(`path = "${j("")}`)===!0}var hL="setTimeout(() => { const fs = require('node:fs'); const [file, next, seen, theme, later, token] = process.argv.slice(-6); if (!fs.existsSync(later) || fs.readFileSync(later, 'utf8') !== token || fs.readFileSync(file, 'utf8') !== seen || !fs.existsSync(theme)) return; const tmp = file + '.ttheme-' + process.pid; fs.writeFileSync(tmp, next); fs.chmodSync(tmp, fs.statSync(file).mode & 0o7777); fs.renameSync(tmp, file) }, 500)";function ov(t,e,n){return{image:xe(t,m1(e.name,n.image,e.background)),opacity:n.opacity}}function ev(t){let e=es(t.home),n=V(t.configHome),r=new Map,i=new Set;for(let s of t.themes){let o=Fe(n,s.name,t.home),a=Za(s.name,o&&ov(e,s,o));r.set(s.name,a);for(let c of new Set([a,Za(s.name)]))if(!ai(xe(e,c)))i.add(c)}return{files:r,fresh:i}}function nv(t,e,n){let r=es(t.home),i=V(t.configHome),s=new Set(n.values()),o=ui(ct(ci(t.home,t.configHome)))??"";for(let u of t.themes){let f=Fe(i,u.name,t.home),l=n.get(u.name);if(f&&l){let d=ov(r,u,f);if(!ai(d.image))try{let h=Ut(new Uint8Array(up(f.image)));C(d.image,Br(jr(h,u.background,1)))}catch{n.set(u.name,Za(u.name));continue}e.write(xe(r,l),Xa(u,d))}}if(!ai(r))return;let a=(u,f)=>u.startsWith(j(""))&&new RegExp(`\\.[0-9a-f]{8}\\.${f}$`).test(u);for(let u of cp(r))if(a(u,"yaml")&&!s.has(u)&&!o.includes(`path = "${u}"`))e.remove(xe(r,u));let c=new Set(cp(r).values().filter((u)=>u.startsWith(j(""))&&u.endsWith(".yaml")).map((u)=>/^ {2}path: "(.+)"$/m.exec(ct(xe(r,u)))?.[1]).filter((u)=>u!==void 0));for(let u of cp(r))if(a(u,"png")&&!c.has(xe(r,u)))e.remove(xe(r,u))}function mL(t,e){let n=process.env.TTHEME_WARP_WEARS;return t!==void 0&&n!==void 0&&e.files.has(n)?n:t}function rv(t,e,n,r=!1){let i=ci(t.home,t.configHome);if(!ai(i))return;let s=Ol(t.configHome),o=up(i,"utf8"),a=r?dL(ui(o)):e;if(r&&(a===void 0||!n.files.has(a)))return;let c=fL(t.configHome);Q1(c,{force:!0});let u;if(a){if(!Ml(o)&&!ai(s))X1(lp(s),{recursive:!0}),tv(s,ui(o)??"");u=fp(a,n.files.get(a))}else{if(!Ml(o))return;u=ai(s)&&up(s,"utf8")||xl,Q1(s,{force:!0})}let f=Pl(o,u);if(f===o)return;let l=a===void 0?void 0:n.files.get(a)??`${j(a)}.yaml`;if(l!==void 0&&n.fresh.has(l)){pd(i);let d=uL();X1(lp(c),{recursive:!0}),tv(c,d),cL(process.execPath,["-e",hL,lL(i),f,o,xe(es(t.home),l),c,d],{detached:!0,stdio:"ignore"}).unref()}else On(i,f);return i}var dp={id:"warp",name:"Warp",emitter:Gm,shelf:{from:"themes",dir:(t)=>es(t.home)},bakes:!0,offered:(t,e)=>e.platform!=="win32",present:(t)=>ai(lp(es(t.home))),sync(t,e){let n=ev(t);e.themes(dp),nv(t,e,n.files);let r=rv(t,mL(t.startup,n),n);if(r)e.note(r)},pictures(t,e){let n=ev(t);nv(t,e,n.files),rv(t,void 0,n,!0)},plan(t){let e=ci(t.home,t.configHome);return t.startup&&ai(e)?[`Edit ${dt(e,t.home)} — [appearance.themes] theme; \`ttheme off\` puts yours back`]:[]},notes:()=>["Warp wears one theme for the whole app, set through its settings.toml — a tab that takes a palette (`ttheme use`, a pin, preview) switches it, and switching tabs puts on the palette of the tab in front, read from Warp’s session database with sqlite3"],next:()=>[],unwire(t){let e=ci(t.home,t.configHome),n=ct(e);return{edits:Ml(n)?[{file:e,content:Pl(n,ct(Ol(t.configHome))||xl)}]:[],removals:Ml(n)?[]:ou(e),touches:[]}}};import{existsSync as Al}from"node:fs";import{join as Co}from"node:path";var av=/-- ttheme begin\n[\s\S]*?-- ttheme end\n?/,pL=/^return config[ \t]*$/gm;function gL(t,e){let n=ti(t,e,""),r=n===void 0?JSON.stringify(t):`require('wezterm').home_dir .. ${JSON.stringify(n)}`;return`-- ${Me}
|
|
627
|
+
do local path = ${r} local file = io.open(path) if file then file:close() dofile(path)(config) end end`}var uv=`local wezterm = require 'wezterm'
|
|
630
628
|
local config = wezterm.config_builder()
|
|
631
629
|
|
|
632
|
-
`;function
|
|
633
|
-
`?"":e}function
|
|
630
|
+
`;function bL(t){let e=t.replace(/-- ttheme begin\n[\s\S]*?-- ttheme end\n\n?/,"");return e===`${uv}return config
|
|
631
|
+
`?"":e}function hp(t,e){let n=`-- ttheme begin
|
|
634
632
|
${e}
|
|
635
633
|
-- ttheme end
|
|
636
|
-
`;if(
|
|
634
|
+
`;if(av.test(t))return t.replace(av,n);if(t==="")return`${uv}${n}
|
|
637
635
|
return config
|
|
638
|
-
`;let r=[...t.matchAll(
|
|
639
|
-
${t.slice(r.index)}`}function
|
|
640
|
-
`)}function
|
|
636
|
+
`;let r=[...t.matchAll(pL)].at(-1);if(r?.index===void 0)return;return`${t.slice(0,r.index)}${n}
|
|
637
|
+
${t.slice(r.index)}`}function Il(t,e){let n=Co(e,".wezterm.lua");return Al(n)?n:Co(t,"wezterm","wezterm.lua")}function cv(t){return Co(t.configHome,"wezterm","colors")}function Rl(t){return Co(t.configHome,"ttheme","wezterm.lua")}var mp={id:"wezterm",name:"WezTerm",emitter:Um,shelf:{from:"colors",dir:cv},offered:()=>!0,present:(t)=>Al(Co(t.configHome,"wezterm"))||Al(Co(t.home,".wezterm.lua")),sync(t,e){e.themes(mp),e.write(Rl(t),b1({path:Rl(t),colors:cv(t),backgrounds:V(t.configHome),...t.startup?{startup:t.startup}:{},palettes:t.themes}));let n=Il(t.configHome,t.home),r=hp(ct(n),gL(Rl(t),t.home));if(r!==void 0)e.wire(n,r)},plan(t){let e=Il(t.configHome,t.home);return hp(ct(e),"")!==void 0?[`Edit ${dt(e,t.home)} — a ttheme block before \`return config\`: color_scheme_dirs, color_scheme, pictures`]:[]},notes(t){let e=Il(t.configHome,t.home);return Al(e)&&hp(ct(e),"")===void 0?[`${e} has no \`return config\` line — ttheme left it alone; call \`dofile("${Rl(t)}")(config)\` from it yourself`]:[]},next:()=>["WezTerm Reloads its config by itself"],unwire:(t)=>({edits:gn(Il(t.configHome,t.home),bL),removals:[],touches:[]})};import{existsSync as fv,readFileSync as wL,utimesSync as $L}from"node:fs";import{dirname as kL,join as Nl}from"node:path";function pp(t){return Nl(t,"Microsoft","Windows Terminal","Fragments","ttheme","ttheme.json")}function lv(t){return[Nl(t,"Packages","Microsoft.WindowsTerminal_8wekyb3d8bbwe","LocalState","settings.json"),Nl(t,"Packages","Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe","LocalState","settings.json"),Nl(t,"Microsoft","Windows Terminal","settings.json")].filter((e)=>fv(e))}function yL(t){return t.values().map((e)=>/"defaultProfile"\s*:\s*"(\{[0-9a-fA-F-]+\})"/.exec(wL(e,"utf8"))?.[1]).find((e)=>e!==void 0)}function dv(t){if(t.platform==="win32")return t.env.LOCALAPPDATA;if(!t.env.WSL_DISTRO_NAME)return;let e=t.run("cmd.exe",["/d","/c","echo %LOCALAPPDATA%"]);return e&&t.run("wslpath",["-u",e])||void 0}var hv={id:"windows-terminal",name:"Windows Terminal",emitter:Km,offered:(t)=>t.wtHome!==void 0,present:(t)=>t.wtHome!==void 0,installs:(t)=>({wtHome:t.wtHome,wtProfile:t.wtProfile}),sync(t,e){let{wtHome:n,wtProfile:r}=t.state;if(!n)return;let i=lv(n);if(e.write(pp(n),Wm(t.themes,r??yL(i),t.startup))){let s=new Date;for(let o of i)$L(o,s,s);if(i.length>0)e.repaint()}},plan:(t)=>t.state.wtHome?[`Write ${pp(t.state.wtHome)} — its schemes, and touch settings.json so it reloads`]:[],notes:(t)=>t.state.wtHome?[]:["Windows Terminal: %LOCALAPPDATA% was not found — drop the release fragment into its Fragments folder yourself"],next:()=>["Windows Terminal Reloads its settings by itself"],unwire(t,e){let n=e?.wtHome,r=n?kL(pp(n)):void 0;return{edits:[],removals:r&&fv(r)?[r]:[],touches:n?lv(n):[]}}};var wr={ghostty:Vm,kitty:tp,alacritty:Ym,wezterm:mp,iterm2:N1,"windows-terminal":hv,warp:dp,konsole:K1,"terminal-app":Z1};function vt(t=ie){return t.map((e)=>wr[e])}function rs(t){return t.startup&&t.palettes.includes(t.startup)?t.startup:t.palettes[0]}function Ue(t){return t.off?void 0:rs(t)}function X(){return process.env.XDG_CONFIG_HOME??jo($n(),".config")}var ns=(t)=>typeof t==="string"&&t!==""?t:void 0,vL={author:ns,startup:ns,off:(t)=>t?!0:void 0,itermBase:ns,konsoleBase:ns,terminalBase:ns,wtHome:ns,wtProfile:ns,marketplaces:(t)=>Array.isArray(t)?t.filter((e)=>typeof e==="string"):void 0,updates:(t)=>t&&typeof t==="object"?Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]==="boolean")):void 0};function D(t){let e=cr(t);if(!Tl(e))throw Error(`nothing installed yet at ${e} — run \`ttheme init\` first`);let n=JSON.parse(mv(e,"utf8"));if(!Array.isArray(n?.palettes)||!Array.isArray(n.terminals))throw Error(`${e} has no palettes or terminals`);return{terminals:n.terminals.filter((r)=>ie.includes(r)),...Object.fromEntries(Object.entries(vL).flatMap(([r,i])=>{let s=i(n[r]);return s===void 0?[]:[[r,s]]})),palettes:n.palettes}}function en(t,e){C(cr(t),`${JSON.stringify(e,null,2)}
|
|
638
|
+
`)}function pv(t,e){let n=new Map(t.palettes.map((s)=>[s.name,s])),r=e.filter((s)=>!n.has(s));if(r.length>0){let s=new Set(t.palettes.flatMap((c)=>rt(c.name)??[])),o=[...new Set(r.flatMap((c)=>rt(c)??[])).difference(s)],a=o.length>0?`add ${o.join(", ")} first — the Browse tab of \`ttheme\` finds a marketplace's repository`:Kh(_t(t.palettes),r);throw Error(`not in any marketplace: ${r.join(", ")} — ${a}`)}let i=new Set(e);return t.palettes.filter((s)=>i.has(s.name))}function ic(t,e,n){return{configHome:t,home:n,state:e,startup:Ue(e)}}function gv(t,e,n,r,i){return{...ic(t,n,r),entries:e,themes:e.map(Le),host:i}}function bv(t){let e=[],n={written:e,repainted:!1,write(r,i){if(e.push(r),Tl(r)&&mv(r,"utf8")===i)return!1;return C(r,i),!0},wire(r,i){e.push(r),On(r,i)},note(r){e.push(r)},remove(r){gp(r,{force:!0})},themes(r){let i=r.shelf?.dir(t);if(!i)return;for(let s of t.themes)for(let{file:o,content:a}of Hm(r,s))n.write(jo(i,o),a)},repaint(){n.repainted=!0}};return n}function SL(t,e){return Object.assign({},...vt(t.state.terminals).map((n)=>n.layer?.(t,e)??{}))}function zt(t,e,n,r=$n(),i=tn()){Nt(V(t));let s=pv(fr(t,e),n.palettes),o=Cu(s,ne(t));V$(t,new Map(o.map((u)=>[u.name,no(u)]))),_$(t),$o(t,s);let a=gv(t,o,n,r,i),c=bv(a);for(let u of vt(n.terminals))u.sync(a,c);return c.written.push(kv(a,i,c.repainted)),$v(t,o,r),c.written}function wv(t,e=$n()){if(!Tl(jo(t,"ttheme","palettes.zsh")))return;let n=new Set(D(t).palettes);$v(t,ye(t).palettes.filter((r)=>n.has(r.name)),e)}function $v(t,e,n){let r=jo(t,"ttheme","aliases.zsh"),i=s1(EL(e,n));if(ct(r)!==i)C(r,i)}function EL(t,e){let n=t.flatMap((s)=>s.booru?[s.booru]:[]),r=Mh(n,e),i={};for(let s of t){let o=new Set(s.nativeNames??[]),a=(s.booru?r.get(s.booru)??[]:[]).filter((c)=>!o.has(c));if(a.length>0)i[s.name]=a}return i}function kv(t,e,n){let r=jo(t.configHome,"ttheme","palettes.zsh"),i=Nm(t.entries,t.startup,t.state.terminals,SL(t,e),Object.keys(ne(t.configHome)));if(n||ct(r)!==i)C(r,i),gp(`${r}.zwc`,{force:!0});return r}function We(t,e=$n(),n=tn()){let r=D(t),i=vt(r.terminals).filter((a)=>a.pictures);if(i.length===0)return;let s=gv(t,pv(ye(t),r.palettes),r,e,n),o=bv(s);for(let a of i)a.pictures?.(s,o);kv(s,n,!1)}function is(t){return!vt(t).some((e)=>e.bakes)}function Hl(t,e,n=$n()){let r=ic(t,e,n);return vt(e.terminals).flatMap((i)=>[...i.shelf?[`Write ${dt(i.shelf.dir(r),n)}/${j("*")} — a theme file per palette`]:[],...i.plan(r)])}function Fl(t,e,n=$n()){let r=ic(t,e,n);return vt(e.terminals).flatMap((i)=>i.notes(r))}function Ll(t,e,n,r=$n()){let i=ic(t,e,r);return vt(e.terminals).flatMap((s)=>s.next(i,n.get(s.id)))}function Cl(t,e,n,r,i=$n()){let s=[],o=Jt(t,e,!1).palettes.filter((a)=>r.includes(a.name));for(let a of vt(n)){let c=a.shelf?.dir({configHome:t,home:i});if(!c)continue;for(let u of o)for(let{file:f}of Hm(a,Le(u))){let l=jo(c,f);if(Tl(l))gp(l,{force:!0}),s.push(l)}}return s}function yv(t,e,n,r){return{...ic(t,e,r),host:n}}function sc(t,e,n,r=$n()){return vt(e.terminals).reduce((i,s)=>s.defaults?.base(yv(t,i,n,r))??i,e)}function ss(t,e,n,r,i=$n()){let s=new Map;for(let o of vt(e.terminals)){let a=o.defaults?.point(yv(t,e,r,i),n);if(a)s.set(o.id,a)}return s}function kn(t,e,n,r,i=!1,s=tn(),o=$n()){let a=i||!Ue(n)&&Ue(r)!==void 0,c=a?sc(t,r,s,o):r;return zt(t,e,c,o,s),en(t,c),a||Ue(n)!==Ue(r)?ss(t,c,a,s,o):new Map}import{performance as vv}from"node:perf_hooks";var ML=16,bp=80,Sv="\x1B[?2026h",Ev="\x1B[?2026l";class os{shown=[];pointer=new Xh;cursor="";wipe="";immediate;delayed;ticker;last=Number.NEGATIVE_INFINITY;stopped=!1;write;view;beat;constructor(t){this.write=t.write,this.view=t.view,this.beat=t.beat??(()=>{})}request(){if(this.stopped||this.immediate||this.delayed)return;let t=this.last+ML-vv.now();if(t>0)this.delayed=setTimeout(this.paint,t);else this.immediate=setImmediate(this.paint)}soon(){if(this.stopped||this.immediate)return;clearTimeout(this.delayed),this.delayed=void 0,this.immediate=setImmediate(this.paint)}now(){this.cancel(),this.paint()}reset(t=""){this.shown=[],this.cursor="",this.wipe=t}stop(){this.stopped=!0,this.cancel(),clearInterval(this.ticker),this.ticker=void 0}point(t){return this.pointer.point(t)}drop(){this.pointer.drop()}cancel(){clearImmediate(this.immediate),clearTimeout(this.delayed),this.immediate=void 0,this.delayed=void 0}paint=()=>{if(this.immediate=void 0,this.delayed=void 0,this.stopped)return;let{drawn:t,targets:e}=oy(()=>this.view());if(!t)return;this.last=vv.now();let{lines:n,zones:r}=cy(t.lines,e);this.pointer.zones=[...t.zones??[],...r];let i=this.wipe;this.wipe="";let s=new Set,o=Math.max(n.length,this.shown.length);for(let f=0;f<o;f++){let l=n[f];if(l!==this.shown[f])i+=`\x1B[${f+1};1H${ve}\x1B[2K${l??""}`,s.add(f)}this.shown=n;let a=t.after?.(s)??"",c=t.cursor??"",u=c!==""&&(i!==""||a!==""||c!==this.cursor);if(this.cursor=c,i||a||u)this.write(`${Sv}${i}${a}${ve}${u?c:""}${Ev}`);this.tick(t.ticking===!0)};tick(t){if(t&&!this.ticker)this.ticker=setInterval(()=>{this.beat(),this.request()},bp);else if(!t&&this.ticker)clearInterval(this.ticker),this.ticker=void 0}}class wp{shown=[];write;cols;constructor(t,e){this.write=t,this.cols=e}draw(t){this.put(t,"")}redraw(t){let e=`${this.shown.length>1?`\x1B[${this.shown.length-1}A`:""}${this.shown.length>0?"\r\x1B[J":""}`;this.shown=[],this.put(t,e)}end(t){this.put(t,""),this.write(`
|
|
641
639
|
`),this.shown=[]}put(t,e){let n=t.map((s)=>tt(s,this.cols()-1,!1)),r=0;while(r<n.length&&r<this.shown.length&&n[r]===this.shown[r])r++;if(r===n.length&&n.length===this.shown.length)return;if(r===n.length)r=Math.max(0,n.length-1);let i="";if(this.shown.length===0)i=n.join(`
|
|
642
640
|
`);else if(r>=this.shown.length)i=`
|
|
643
641
|
${n.slice(r).join(`
|
|
644
642
|
`)}`;else{let s=this.shown.length-1-r;i=`${s>0?`\x1B[${s}A`:""}\r\x1B[J${n.slice(r).join(`
|
|
645
|
-
`)}`}this.shown=n,this.write(`${
|
|
643
|
+
`)}`}this.shown=n,this.write(`${Sv}${e}${i}${Ev}`)}}var xL=300;function jl(t){return t>=1e6?`${(t/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(t/1000))} KB`}function _l(t,e){if(!e)return jl(t);return e>=1e6?`${(t/1e6).toFixed(1)}/${(e/1e6).toFixed(1)} MB`:`${Math.round(t/1000)}/${Math.round(e/1000)} KB`}var _o;async function Mv(t,e){_o=t;try{return await e()}finally{_o=void 0}}function Gn(t){if(_o)_o.say(t);else console.log(t)}function li(t=""){if(_o){let u=_o;return u.set(t),{set:(f)=>u.set(f),say:(f)=>u.say(f),done:()=>u.set("")}}let e=process.stdout;if(!e.isTTY||process.env.TERM==="dumb")return{set(){},say:(u)=>console.log(u),done(){}};let[n,r]=Ft()?["",""]:[wt("dim"),zh("dim")],i=0,s=!1,o,a=()=>{e.write(`\r\x1B[2K${n}${tt(`${mn[i%mn.length]} ${t}`,(e.columns||80)-1,!1)}${r}`)},c=setTimeout(()=>{s=!0,a(),o=setInterval(()=>{i++,a()},bp),o.unref()},xL);return c.unref(),{set(u){if(t=u,s)a()},say(u){if(s)e.write("\r\x1B[2K");if(console.log(u),s)a()},done(){if(clearTimeout(c),clearInterval(o),s)e.write("\r\x1B[2K"),s=!1}}}import{existsSync as xp,mkdirSync as Dv,readFileSync as qv,statSync as KL,utimesSync as zL}from"node:fs";import{homedir as DL}from"node:os";import{dirname as qL,join as Kv}from"node:path";function Bl(t){if(t.length>0&&process.stderr.isTTY)process.stderr.write(`${t.join(`
|
|
644
|
+
`)}
|
|
645
|
+
`)}import{existsSync as OL,readFileSync as PL}from"node:fs";import{join as IL}from"node:path";function RL(t){return IL(t,"ttheme","pins")}function xv(t,e,n){let r=RL(t);if(!OL(r))return;let i=PL(r,"utf8"),o=i.split(`
|
|
646
646
|
`).flatMap((a)=>{let c=/^((?:[~/]|ssh:).*\s)(\S+)(\s*)$/.exec(a);if(!c)return[a];let[,u,f,l]=c;if(n.includes(f))return[];let d=e.get(f);return[d?`${u}${d}${l}`:a]}).join(`
|
|
647
|
-
`);if(o!==i)C(r,o)}import{execFile as
|
|
648
|
-
`)}function
|
|
649
|
-
`).find((f)=>/\S/.test(f))?.replace(/^npm (error|ERR!) /,""),{code:c,killed:u}=r;n(Error(c==="ENOENT"?"cannot run npm":u?`npm did not answer within ${t/1000} s`:`npm could not ask its registry — ${a??"it gave no reason"}`));return}let o=i.trim();if(!
|
|
650
|
-
`)}function
|
|
651
|
-
`)}function
|
|
652
|
-
The Browse tab of \`ttheme\` picks them, or \`ttheme add ${r}/<palette>\``)}function
|
|
653
|
-
`);let s=n.filter((u)=>!t||Kp(u,t));if(s.length===0){console.log(`No marketplace carries the ${Di} topic${t?` and matches ${t}`:""} yet`);return}let o=new Set(Yt(D(e).marketplaces).map(Jr)),a=Math.max(...s.map((u)=>u.id.length)),c=Math.max(...s.map((u)=>u.source.length));for(let u of s){let f=`★${u.stars}`.padStart(5);console.log(` ${o.has(u.source)?"●":"○"} ${u.id.padEnd(a)} ${u.source.padEnd(c)} ${f} ${qt(u.palettes.length)} ${u.about}`)}console.log("\n`ttheme marketplace add <owner/repo>` adds one")}function sS({name:t}){return`ttheme-${t}`}function kC(t,e){oC(Cu(t),{recursive:!0}),C(fc(t,ft),fk(e)),C(fc(t,"README.md"),`# ${ye(e)}
|
|
647
|
+
`);if(o!==i)C(r,o)}import{execFile as AL,spawn as NL,spawnSync as $p}from"node:child_process";import{mkdirSync as TL,readFileSync as HL,realpathSync as Ov}from"node:fs";import{homedir as FL,tmpdir as Pv}from"node:os";import{dirname as LL,join as kp}from"node:path";var oc=`npx ${lt.name}@latest init`,Sp=86400000,CL=3600000,jL=1e4,yp=/^(\d+)\.(\d+)\.(\d+)$/;function Iv(t,e){let n=yp.exec(t),r=yp.exec(e);if(!n||!r)return!1;return([1,2,3].map((s)=>Number(n[s])-Number(r[s])).find((s)=>s!==0)??0)>0}function Go(t=process.env){return t.TTHEME_AUTO_UPDATE!=="off"&&(t.CI===void 0||t.CI===""||t.CI==="false")}function vp(){return kp(process.env.XDG_STATE_HOME??kp(FL(),".local","state"),"ttheme","release.json")}function ac(){try{let t=JSON.parse(HL(vp(),"utf8"));return{checked:typeof t.checked==="number"?t.checked:0,...typeof t.latest==="string"?{latest:t.latest}:{},...typeof t.told==="number"?{told:t.told}:{}}}catch{return{checked:0}}}function Bo(t){TL(LL(vp()),{recursive:!0}),C(vp(),`${JSON.stringify(t)}
|
|
648
|
+
`)}function Rv(t=jL){return new Promise((e,n)=>{AL("npm",["view",`${lt.name}@latest`,"version","--prefer-online"],{cwd:Pv(),encoding:"utf8",timeout:t,env:{...process.env,npm_config_update_notifier:"false"}},(r,i,s)=>{if(r){let a=s.split(`
|
|
649
|
+
`).find((f)=>/\S/.test(f))?.replace(/^npm (error|ERR!) /,""),{code:c,killed:u}=r;n(Error(c==="ENOENT"?"cannot run npm":u?`npm did not answer within ${t/1000} s`:`npm could not ask its registry — ${a??"it gave no reason"}`));return}let o=i.trim();if(!yp.test(o)){n(Error("the npm registry named no version"));return}e(o)})})}function Av(t=Date.now()){let e=ac();if(!Go()||t-e.checked<Sp)return;try{Bo({...e,checked:t}),NL(process.execPath,[process.argv[1],"latest"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}async function Nv(){let t=ac();try{return Bo({...t,checked:Date.now(),latest:await Rv()}),0}catch{return Bo({...t,checked:Date.now()-Sp+CL}),1}}function Tv(t=X()){return kp(t,"ttheme","ttheme.js")}function Hv(){try{return Ov(process.argv[1])===Ov(Tv())}catch{return!1}}function _L(){return Hv()?"`ttheme update` updates it":`\`${oc}\` updates it`}function Fv(t,e=lt.version){return`ttheme ${t} is out, you have ${e} — ${_L()}`}function Lv(t=Date.now()){let e=ac();if(!Go()||!e.latest||!Iv(e.latest,lt.version)||t-(e.told??0)<Sp)return;if(process.stderr.isTTY)Bo({...e,told:t});Bl([Fv(e.latest)])}function Cv(t,e){console.log(`Updating ttheme ${lt.version} → ${t}`);let n=$p("npx",["--yes",`${lt.name}@${t}`,"init","--yes"],{cwd:Pv(),stdio:"inherit",env:{...process.env,npm_config_prefer_online:"true"}});if(n.error)throw Error(`cannot run npx — ${n.error.message}; \`${oc}\` updates ttheme once npm is there`);if(n.status!==0)throw Error(`npx stopped with status ${n.status} — ttheme ${lt.version} is still installed`);let r=Tv(),i=$p(process.execPath,[r,"--version"],{encoding:"utf8"}).stdout?.trim();if(i!==t)throw Error(`${r} is ${i||"unreadable"} after the update, not ${t} — \`${oc}\` tries again`);let s=ac();return Bo({...s,latest:t}),$p(process.execPath,[r,"update",...e],{stdio:"inherit",env:{...process.env,TTHEME_UPDATED:t}}).status??1}async function jv(){if(process.env.TTHEME_UPDATED)return{note:` ttheme ${lt.version} — updated`};let t;try{t=await Rv()}catch(e){return{note:` ttheme ${lt.version} — could not check for a newer one: ${e.message}`}}if(Bo({...ac(),checked:Date.now(),latest:t}),!Iv(t,lt.version))return{note:` ttheme ${lt.version} — up to date`};return Hv()?{latest:t,note:""}:{note:` ${Fv(t)}`}}function _v(t,e){let n=e,r=new Set;while(Object.hasOwn(t,n)&&!r.has(n)){r.add(n);let i=t[n];if(i===!1)return!1;n=i}return r.has(n)||n===e?void 0:n}function Bv(t,e,n,r,i){let s=`${t}/`;for(let o of r){let a=o.startsWith(s)?o.slice(s.length):void 0;if(a===void 0||n.has(a))continue;let c=_v(e.renames,a);if(c===!1)i.removed.push(o);else if(c!==void 0&&n.has(c))i.renamed.set(o,`${s}${c}`);else if(e.forceRemove)i.removed.push(o)}}function Gv(t,e){let n=[],r=[];for(let i of Object.keys(t)){if(e.has(i)){r.push(`renames.${i}: ${i} is still a palette here, so the rename never applies`);continue}let s=_v(t,i);if(s===void 0)n.push(`renames.${i}: the chain comes back to a name it already passed`);else if(s!==!1&&!e.has(s))n.push(`renames.${i}: the chain ends at ${s}, which is not a palette here — end it at one, or at false`)}return{errors:n,warnings:r}}import{gunzipSync as BL}from"node:zlib";var as=512,Uv=67108864,Ep=new TextDecoder;function Uo(t,e,n){let r=t.subarray(e,e+n),i=r.indexOf(0);return Ep.decode(i<0?r:r.subarray(0,i))}function GL(t){if((t[124]??0)&128)throw Error("the archive holds a file too large to be a palette");let e=Number.parseInt(Uo(t,124,12).trim()||"0",8);if(!Number.isFinite(e)||e<0)throw Error("the archive has a header that does not read");return e}function UL(t){let e=0,n;while(e<t.length){let r=t.indexOf(32,e),i=r<0?Number.NaN:Number.parseInt(Ep.decode(t.subarray(e,r)),10);if(!Number.isFinite(i)||i<=0)break;let s=Ep.decode(t.subarray(r+1,e+i-1)),o=s.indexOf("=");if(s.slice(0,o)==="path")n=s.slice(o+1);e+=i}return n}function WL(t){if(t[0]!==31||t[1]!==139)return t;try{return BL(t,{maxOutputLength:Uv})}catch(e){throw Error(e instanceof RangeError?`the archive unpacks to more than ${Uv/1024/1024} MB`:"the archive is not a gzip file that reads")}}function Wv(t){let e=WL(t),n=new Map,r,i=0;while(i+as<=e.length){let s=e.subarray(i,i+as);if(s.every((l)=>l===0))break;let o=GL(s),a=e.subarray(i+as,i+as+o);i+=as+Math.ceil(o/as)*as;let c=String.fromCharCode(s[156]??0);if(c==="x"){r=UL(a)??r;continue}if(c==="L"){r=Uo(a,0,a.length);continue}let u=Uo(s,257,5)==="ustar"?Uo(s,345,155):"",f=r??(u?`${u}/${Uo(s,0,100)}`:Uo(s,0,100));if(r=void 0,c==="0"||c==="\x00")n.set(f.split("/").slice(1).join("/"),a)}return n}var JL=86400000,YL=3600000,Op=5000;function Mp(){return Kv(process.env.XDG_STATE_HOME??Kv(DL(),".local","state"),"ttheme","marketplaces.json")}function fi(){try{let t=JSON.parse(qv(Mp(),"utf8"));return Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]?.at==="number"&&typeof e[1].error==="string"))}catch{return{}}}function zv(t,e){let n=fi();if(e===void 0){if(!(t in n))return;delete n[t]}else n[t]={at:Date.now(),error:e};Dv(qL(Mp()),{recursive:!0}),C(Mp(),`${JSON.stringify(n,null,2)}
|
|
650
|
+
`)}function Pp(t,e){let n=yt(e)?ur(t,e):void 0;try{return n?KL(n).mtimeMs:void 0}catch{return}}function VL(t,e,n,r){return t&&(e===void 0||r-e>=JL)&&(n===void 0||r-n>=YL)}function Ip(t,e,n=Date.now()){let r=fi();return me(e.marketplaces).filter((i)=>VL(Gi(i,e.updates),Pp(t,i),r[i]?.at,n))}function ZL(t,e){let n=new TextDecoder,r=Object.fromEntries(Wv(t).entries().filter(([i])=>i===ft||i.startsWith("palettes/")&&i.endsWith(".toml")).map(([i,s])=>[i,n.decode(s)]));return{...e?{etag:e}:{},files:r}}async function Rp(t,e,n,r){let i;try{i=await Ua(pk(t),e,n,r?{"if-none-match":r}:{})}catch(s){if(s instanceof Bu){let o=Ta(t);throw Error(`${at(t)}${o?` has no ${o}`:" is not there"} — is the repository public?`)}throw s}if(i.status===304)return;return ZL(new Uint8Array(await i.arrayBuffer()),i.headers.get("etag"))}function Ap(t,e,n){let{id:r,info:i,entries:s}=Ga(t,e,n,Ce(!1));return{source:t,id:r,entries:s,archive:e,info:i}}function cc(t){return Ko(t,Q)}async function uc(t,e,n,r){if(e===Q){if(!xp(Wi(t)))throw Error(`the official marketplace is not on this machine — \`${oc}\` puts it back`);return{source:e,id:Q,entries:Ko(t,Q)}}let i=await Rp(e,n,r);if(!i)throw Error(`${at(e)} answered as if nothing had changed`);return Ap(e,i,cc(t))}function Wo(t,e){if(!("archive"in e))return;Dv(Ph(t),{recursive:!0}),C(ur(t,e.source),`${JSON.stringify(e.archive)}
|
|
651
|
+
`)}function XL(t,e){try{return qr(t,e)}catch{return}}function Ko(t,e){try{if(e===Q)return Ki(qv(Wi(t),"utf8")).palettes;return Ga(e,qr(t,e),cc(t),Ce(!1)).entries}catch{return[]}}function QL(t,e){let n=new Map(t.map((i)=>[i.name,JSON.stringify(i)])),r=new Map(e.map((i)=>[i.name,JSON.stringify(i)]));return{added:[...r.keys()].filter((i)=>!n.has(i)),changed:[...r.keys()].filter((i)=>n.has(i)&&n.get(i)!==r.get(i)),gone:[...n.keys()].filter((i)=>!r.has(i))}}async function tC(t,e,n){if(!yt(e))return uc(t,e,n);let r=XL(t,e),i=await Rp(e,n,void 0,r?.etag);return i&&Ap(e,i,cc(t))}async function Np(t,e,n){let r=Ko(t,e),i;try{i=await tC(t,e,n)}catch(o){throw zv(e,o.message),o}if(i)Wo(t,i);else{let o=new Date;zL(ur(t,e),o,o)}zv(e,void 0);let s=i?.entries??r;return{source:e,id:i?.id??_u(e,qr(t,e)),count:_t(s).length,change:QL(r,s)}}async function Tp(t,e,n){try{return{source:e,refreshed:await Np(t,e,n)}}catch(r){return{source:e,failure:r instanceof Error?r:Error(String(r))}}}function Jv(t,e){return`${at(t)}: ${e.message}`}function se(t){return`${t} palette${t===1?"":"s"}`}function lc(t,e=Date.now()){let n=Math.floor(Math.max(0,e-t)/60000);if(n<1)return"just now";if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<48?`${r}h ago`:`${Math.floor(r/24)}d ago`}function Yv({added:t,changed:e,gone:n}){return[t.length>0?`${t.length} new`:"",e.length>0?`${e.length} changed`:"",n.length>0?`${n.length} gone`:""].filter(Boolean).join(", ")}function Hp(t){let e=Yv(t.change);return`${t.id} — ${se(t.count)}${e?` (${e})`:""}`}function Fp(t){return Yv(t.change)?`Updated ${Hp(t)}`:void 0}function Lp(t,e,n=cc(t)){try{if(qt(e)){let r=Ve(e),i=ke(r);return{id:i,info:r,entries:lr(e,i,n,Ce(!1))}}return yt(e)?Ga(e,qr(t,e),n,Ce(!1)):void 0}catch{return}}function eC(t){if(!xp(cr(t)))return[];let e=D(t),n=cc(t),r={renamed:new Map,removed:[]};for(let u of me(e.marketplaces)){let f=Lp(t,u,n);if(f)Bv(f.id,f.info,new Set(f.entries.map((l)=>we(l.name))),e.palettes,r)}if(r.renamed.size===0&&r.removed.length===0)return[];let i=ut(t,!1);Cl(t,i,e.terminals,[...r.renamed.keys(),...r.removed]),Tk(t,r.renamed,r.removed),B$(t,r.renamed),xv(t,r.renamed,r.removed);let s=[...new Set(e.palettes.filter((u)=>!r.removed.includes(u)).map((u)=>r.renamed.get(u)??u))],{startup:o,...a}=e,c=o&&!r.removed.includes(o)?r.renamed.get(o)??o:void 0;return kn(t,i,e,{...a,palettes:s,...c?{startup:c}:{}}),[...[...r.renamed].map(([u,f])=>`${u} is ${f} now — its marketplace renamed it`),...r.removed.map((u)=>`${u} was removed from its marketplace`)]}function Cp(t){let e=ko(t,ut(t,!1)).map((n)=>n.name);if(e.length===0)return;return`${e.join(", ")} ${e.length===1?"has":"have"} an update from ${e.length===1?"its marketplace":"their marketplaces"} — ctrl+r on a palette marked ↑ in Browse (\`ttheme\`) takes it`}function cs(t,e){let n=eC(t),r=D(t),i=new Set(e.flatMap((o)=>o.change.gone)),s=r.palettes.filter((o)=>i.has(o)).map((o)=>`${o} left its marketplace — ttheme keeps the copy you have`);return[...n,...s]}async function Vv(t=X()){try{if(!Go()||!xp(cr(t)))return;let e=Ip(t,D(t));if(e.length===0)return;let n=li(`Checking ${e.map(at).join(", ")} for updates`),r=await Promise.all(e.map((o)=>Tp(t,o,Op)));n.done();let i=r.flatMap((o)=>("refreshed"in o)?[o.refreshed]:[]),s=i.flatMap((o)=>Fp(o)??[]);if(s.length===0)return;Bl([...s,...cs(t,i),...[Cp(t)??[]].flat()])}catch{return}}var eS=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,oC=["add","remove","init","check"];function Gp(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function aC(){try{let t=nC("gh",["api","user","--jq",".login"],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4}).trim().toLowerCase();return eS.test(t)?t:void 0}catch{return}}async function cC(t,e){if(e.author)return e.author;let n=aC();if(!n){if(!Gp())throw Error("your palettes are named after your GitHub handle — log in with `gh auth login`, or run this in a terminal");let r=await gm({message:"Your GitHub handle — your palettes are named <handle>@<marketplace>/<palette>",validate:(i)=>eS.test((i??"").toLowerCase())&&(i??"").length<=39?void 0:"that is not a GitHub handle"});if(re(r))throw Error("no handle given");n=r.toLowerCase()}return en(t,{...e,author:n}),console.log(`Your palettes are named ${n}@<marketplace>/<palette>`),n}function us(t,e){if(e===Q)return Q;return qt(e)?ke(Ve(e)):_u(e,qr(t,e))}function _p(t,e){try{return us(t,e)}catch{return}}function uC(t){return rt(t)??Q}function Up(t){return ut(t).palettes.filter((e)=>rt(e.name)===void 0)}function lC(t){let e=fc(import.meta.dirname,"..","dist","manifest.json");return Gl(e)?Ki(jp(e,"utf8")).palettes:Up(t)}function dc(t,e,n){let{updates:r,...i}=t,s=Object.entries(n).filter(([o,a])=>yt(o)&&e.includes(o)&&a!==Gi(o,{}));return{...i,marketplaces:e,...s.length>0?{updates:Object.fromEntries(s)}:{}}}function nS(t,e,n,r){return e.find((i)=>i!==n&&!Bi(i,n)&&_p(t,i)===r)}function Bp(t,e,n,r){let i=D(t),s=me(i.marketplaces),o=nS(t,s,e,n);if(o)throw Error(`${n} already names the marketplace at ${at(o)} — \`ttheme marketplace remove ${n}\` first`);let a=r===void 0?{...i.updates}:{...i.updates,[e]:r};en(t,dc(i,s.includes(e)?s:[...s,e],a))}async function fC(t){if(!Gp())return!1;let e=await Ge({message:`Update ${t} on its own when its author changes it? ttheme checks once a day, when you run it`,initialValue:!1});if(re(e))throw Error("no answer given — nothing was added");return e}async function rS(t,e){let n=li(`Fetching ${at(e)}`);try{return await uc(t,e)}finally{n.done()}}async function dC(t,e,n){let r=await rS(t,n),i=D(t),s=me(i.marketplaces),o=nS(t,s,n,r.id);if(o)throw Error(`${r.id} already names the marketplace at ${at(o)} — \`ttheme marketplace remove ${r.id}\` first`);let{[e]:a,...c}=i.updates??{},u=a===void 0?c:{...c,[n]:a};return en(t,dc(i,s.map((f)=>f===e?n:f),u)),Wo(t,r),r}async function hC(t,e){let n=hn(e),r=me(D(t).marketplaces);if(r.includes(n))return console.log(`${at(n)} is already added`),{source:n,id:us(t,n),fresh:!1};let i=yt(n)?r.find((c)=>yt(c)&&Bi(c,n)):void 0;if(i){let c=await dC(t,i,n);return console.log(`Moved ${c.id} to ${Ta(n)??"its default branch"} · ${at(n)} — ${se(_t(c.entries).length)}`),{source:n,id:c.id,fresh:!1}}if(qt(n)){let c=ke(Ve(n));Bp(t,n,c);let u=lr(n,c,Up(t)).length;return console.log(`Added ${c} · ${at(n)} — ${se(u)}, read in place`),{source:n,id:c,fresh:!0}}let s=await rS(t,n),o=n===Q?void 0:await fC(s.id);Bp(t,n,s.id,o),Wo(t,s);let a=se(_t(s.entries).length);return console.log(n===Q?`Added the official marketplace — ${a}`:`Added ${s.id} · ${at(n)} — ${a}${o?", updating on its own":""}`),{source:n,id:s.id,fresh:!0}}async function mC(t){let e=X(),{source:n,id:r,fresh:i}=await hC(e,t);if(!i)return;if(qt(n))console.log("\nThe Browse tab of `ttheme` picks them · once the folder is on GitHub, `ttheme marketplace add <owner>/<repo>` adds it anywhere");else if(n===Q)console.log("\nThe Browse tab of `ttheme` picks them");else console.log(`
|
|
652
|
+
The Browse tab of \`ttheme\` picks them, or \`ttheme add ${r}/<palette>\``)}function Wp(t,e){if(yt(e))sC(ur(t,e),{force:!0})}function Kp(t){return`${se(t.length)} installed from it keep${t.length===1?"s":""} working: ${t.join(", ")} — the Browse tab of \`ttheme\` drops ${t.length===1?"it":"them"}`}function pC(t){let e=X(),n=D(e),r=me(n.marketplaces),i=r.find((u)=>_p(e,u)===t)??r.find((u)=>u===iS(t));if(!i)throw Error(`no marketplace named ${t} — the Browse tab of \`ttheme\` lists them`);let s=_p(e,i),o=n.palettes.filter((u)=>uC(u)===s),a=r.filter((u)=>u!==i),c=dc(n,a,n.updates??{});if(en(e,c),Wp(e,i),zt(e,ut(e),c),console.log(`Removed ${s??t} · ${at(i)}`),o.length>0)console.log(Kp(o))}function iS(t){try{return hn(t)}catch{return}}function sS(t,e,n=fi(),r=Date.now()){if(qt(e))return"read in place";if(e===Q)return"comes with ttheme";let i=n[e],s=Pp(t,e);if(i&&(s===void 0||i.at>s))return`update failed ${lc(i.at,r)}`;return s===void 0?"never updated":`updated ${lc(s,r)}`}function oS(t,e){return fo([t.id,t.source,t.about,...t.palettes.flatMap((n)=>[n.name,n.catalog??""])],e)}function aS({name:t}){return`ttheme-${t}`}function gC(t,e){rC(Lu(t),{recursive:!0}),C(fc(t,ft),bk(e)),C(fc(t,"README.md"),`# ${ke(e)}
|
|
654
653
|
|
|
655
654
|
A [ttheme](https://github.com/kecan0406/ttheme) marketplace:
|
|
656
655
|
|
|
657
656
|
\`\`\`sh
|
|
658
|
-
ttheme marketplace add ${e.owner}/${
|
|
657
|
+
ttheme marketplace add ${e.owner}/${aS(e)}
|
|
659
658
|
ttheme
|
|
660
659
|
\`\`\`
|
|
661
|
-
`)}function
|
|
660
|
+
`)}function cS(t){return ee(`x@${t}/x`)?"takes lowercase letters, digits and single hyphens":void 0}async function uS(){if(!Gp())throw Error("name the marketplace: ttheme marketplace init <name>, or --in <name> on new");let t=await gm({message:"Your marketplace's name — its palettes are <you>@<name>/<palette>",validate:(e)=>cS((e??"").toLowerCase())});if(re(t))throw Error("no marketplace name given");return t.toLowerCase()}async function lS(t,e){let n=Ui(t);if(e){let o=n.find((a)=>a.name===e||a.id===e||a.dir===iS(e));if(!o)throw Error(`${e} is not one of your local marketplaces — \`ttheme marketplace init ${e}\` makes it one`);return o}let[r,...i]=n;if(r&&i.length===0)return r;if(r)throw Error(`you have ${n.length} local marketplaces — --in names one: ${n.map((o)=>o.name).join(", ")}`);let s=await uS();return fS(t,Ih(t,s),s)}async function fS(t,e,n){let r=!Gl(fc(e,ft)),i;if(r){let o=cS(n);if(o)throw Error(`the marketplace name ${n} ${o}`);if(Gl(e)&&iC(e).length>0)throw Error(`${e} is not empty — pick a new folder for the marketplace`);i={owner:await cC(t,D(t)),name:n},gC(e,i)}else i=Ve(e);let s=ke(i);return Bp(t,e,s),console.log(`${r?"Made":"Added"} your marketplace ${s} · ${at(e)}`),{dir:e,...i,id:s}}function Xv(t){return t.startsWith(".")||t.startsWith("/")||t.startsWith("~")}async function bC(t){let e=X(),n=t&&!Xv(t)?t.toLowerCase():t?tS(hn(t)).toLowerCase():await uS(),r=t&&Xv(t)?hn(t):Ih(e,n),i=await fS(e,r,n),s=`${i.owner}/${aS(i)}`;console.log(`
|
|
662
661
|
\`ttheme new <palette> --from <palette>\` puts palettes in it, and a folder under palettes/ shelves them in a catalog — others see them once it is on GitHub:
|
|
663
662
|
|
|
664
|
-
cd ${
|
|
663
|
+
cd ${at(r)}
|
|
665
664
|
git init -b main && git add -A && git commit -m "${i.id}"
|
|
666
665
|
gh repo create ${s} --public --source . --push
|
|
667
|
-
gh repo edit ${s} --add-topic ${
|
|
666
|
+
gh repo edit ${s} --add-topic ${po}
|
|
668
667
|
|
|
669
|
-
Every push is the marketplace: \`ttheme marketplace add ${s}\` works anywhere`)}function
|
|
668
|
+
Every push is the marketplace: \`ttheme marketplace add ${s}\` works anywhere`)}function wC(t){let e=t?hn(t):process.cwd(),n=fc(e,ft);if(!Gl(n))throw Error(`${at(e)} has no ${ft} — \`ttheme marketplace init ${at(e)}\` makes one`);let r=[],i=[],s=jp(n,"utf8"),o;try{o=Ve(e)}catch(h){return console.error(` ✗ ${h.message}`),1}let a=Hi(s),c=a.owner;for(let h of Object.keys(a).filter((m)=>!dk.includes(m)))i.push(`${ft}: unknown key ${h} — ttheme ignores it`);for(let h of Object.keys(c).filter((m)=>!hk.includes(m)))i.push(`${ft}: unknown key owner.${h} — ttheme ignores it`);for(let[h,m]of(Array.isArray(a.catalog)?a.catalog:[]).entries())for(let p of Object.keys(m).filter((b)=>!mk.includes(b)))i.push(`${ft}: unknown key catalog[${h}].${p} — ttheme ignores it`);if(!o.description)i.push(`${ft}: no description — Browse and the marketplace page show one`);let u=ke(o),f=lr(e,u,lC(X()),(h,m)=>r.push(`${Zv(e,h)}: ${m.replace(`${tS(h)}: `,"")}`));for(let h of bo(e)){let m;try{m=b$(h.path,jp(h.path,"utf8"))}catch{m=[]}for(let p of m)i.push(`${Zv(e,h.path)}: unknown key ${p} — ttheme ignores it`)}for(let h of o.catalogs){let m=f.filter((p)=>p.catalog===h.name);if(m.length===0)i.push(`${ft}: catalog ${h.name} has no folder under palettes/ — ttheme ignores it`);else if(h.lead&&!m.some((p)=>we(p.name)===h.lead))i.push(`${ft}: catalog ${h.name} leads with ${h.lead}, which is not in it — its first palette leads instead`)}let l=Gv(o.renames,new Set(f.map((h)=>we(h.name))));r.push(...l.errors.map((h)=>`${ft}: ${h}`)),i.push(...l.warnings.map((h)=>`${ft}: ${h}`));for(let h of f){let m=La(h).filter((b)=>b.startsWith(" ✗")),p=h.catalog?`${h.catalog}/${we(h.name)}`:we(h.name);console.log(` ${p}${m.length>0?`
|
|
670
669
|
${m.join(`
|
|
671
670
|
`)}`:" passes the gate"}`)}for(let h of r)console.error(` ✗ ${h}`);for(let h of i)console.log(` ! ${h}`);let d=(h,m)=>`${h} ${m}${h===1?"":"s"}`;return console.log(`
|
|
672
|
-
${u} · ${qt(f.length)} · ${d(r.length,"error")} · ${d(i.length,"warning")}`),r.length>0?1:0}async function lS(t,e){switch(t){case void 0:wC();return;case"add":await pC(Xv(t,e));return;case"remove":gC(Xv(t,e));return;case"search":await $C(e);return;case"init":await yC(e);return;case"check":return vC(e);default:throw Error(`unknown marketplace action ${t} — ${uC.join(", ")}, or none to list them`)}}function Xv(t,e){if(!e)throw Error(t==="add"?"marketplace add takes a repository or a folder: ttheme marketplace add alice/ttheme-dust":"marketplace remove takes a marketplace name — `ttheme marketplace` lists them");return e}function fS(t,e){let n=mi(t,e);return`${n} — ${qt(Fn(e,n,dc(t),me(!1)).length)}, read in place`}function dS(t){return[...t].length===1&&t>=" "&&t!==""}function SC(t){return[...t.replace(/[\r\n\t]+/g," ")].filter(dS).join("")}function ms(t,e,n=()=>!0){if(e==="backspace")return[...Zh(t)].slice(0,-1).map((r)=>r.segment).join("");if(e==="ctrl-u")return"";if(e==="ctrl-w"||e==="alt-backspace")return t.replace(/\S*\s*$/,"");return dS(e)&&n(e)?t+e:void 0}class ps{value;constructor(t=""){this.value=t}key(t){let e=ms(this.value,t);if(e===void 0)return!1;return this.value=e,!0}paste(t){this.value+=SC(t)}}import{performance as EC}from"node:perf_hooks";import{StringDecoder as MC}from"node:string_decoder";var xC=30,OC=50,PC=500,IC=5,qo=Buffer.from("\x1B[M"),zl="\x1B]1337;ReportCellSize\x07\x1B[16t\x1B[14t\x1B[18t",kS="\x1B[?1016$p\x1B[16t",yS={A:"up",B:"down",C:"right",D:"left",H:"home",F:"end","1~":"home","7~":"home","3~":"delete","4~":"end","8~":"end","5~":"pgup","6~":"pgdn",I:"focus-in",O:"focus-out",Z:"shift-tab","1;2C":"shift-right","1;2D":"shift-left"},RC={"\r":"enter","\n":"enter","\t":"tab","\b":"backspace","":"backspace","\x1B":"esc","\x00":"ctrl-space"},hS=/\[([0-?]*)([ -/]*)([@-~])/y,AC=/^\[[0-?]*[ -/]*$/,mS=/\[(<-?\d+;-?\d+;-?\d+)([Mm])/y,NC=/^\[<[-\d;]*$/,pS=/\](\d+)/y,TC=/^\]\d*$/,gS=/\]\d+;/y,HC=/^1337;ReportCellSize=([\d.]+);([\d.]+)(?:;([\d.]+))?$/,FC=/^(1[0-2]|17|4;\d{1,3});(rgba?:[0-9a-fA-F/]+)$/,vS="\x1B[200~",Kl="\x1B[201~";function LC(t){let e=RC[t];if(e)return e;let n=t.codePointAt(0)??0;if(n<27)return`ctrl-${String.fromCharCode(n+96)}`;return n<32?void 0:t}function Jo(t){return{kind:"key",key:t}}function Yo(t){return{events:[Jo("esc")],end:t+1}}function CC(t){let e={};for(let n of t.split(":")){let r=n.indexOf("=");if(r>0)e[n.slice(0,r)]=n.slice(r+1)}return e}var jC=["left","middle","right",void 0];function zp(t,e,n,r){if(!Number.isInteger(t)||t<0||t>=128||!(e>=0)||!(n>=0))return;let i=t&3,s={kind:"mouse",row:n,col:e,shift:(t&4)!==0,alt:(t&8)!==0,ctrl:(t&16)!==0};if(t&64)return{...s,action:"wheel",button:void 0,wheel:i%2===0?-1:1,sideways:i>=2,count:0};let o=jC[i],a=t&32?o?"drag":"move":r||!o?"release":"press";return{...s,action:a,button:o,wheel:0,sideways:!1,count:a==="press"?1:0}}function _C(t,e,n){let r=[],i=e;while(r.length<3&&i<t.length){let u=t.codePointAt(i);r.push(u),i+=u>65535?2:1}if(r.length<3)return n?{events:[],end:t.length}:void 0;let[s=0,o=0,a=0]=r,c=Math.max(s,o,a)<128?zp(s-32,o-33,a-33,!1):void 0;return{events:c?[c]:[],end:i}}function BC(t,e,n,r,i){let s=Math.max(0,e)/i.w,o=Math.max(0,n)/i.h,a=Math.floor(s),c=Math.floor(o),u=zp(t,a,c,r);return u&&{...u,fx:s-a,fy:o-c}}function bS(t,e,n,r){if((n==="M"||n==="m")&&e===""&&t.startsWith("<")){let[s=-1,o=0,a=0]=t.slice(1).split(";").map(Number),c=r?BC(s,o,a,n==="m",r):zp(s,o-1,a-1,n==="m");return c?[c]:[]}if(n==="t"&&e===""){let[s,o=0,a=0]=t.split(";").map(Number),c=s===6?"cell":s===4?"window":s===8?"grid":void 0;return c?[{kind:"size",of:c,h:o,w:a}]:[]}if(n==="y"&&e==="$"&&t.startsWith("?")){let[s=0,o=0]=t.slice(1).split(";").map(Number);return[{kind:"mode",mode:s,value:o}]}if(n==="c"&&t.startsWith("?"))return[{kind:"attributes"}];let i=e===""?yS[`${t}${n}`]:void 0;return i?[Jo(i)]:[]}function GC(t,e,n,r){mS.lastIndex=e+1;let i=mS.exec(t);if(i)return{events:bS(i[1],"",i[2],r),end:e+1+i[0].length};hS.lastIndex=e+1;let s=hS.exec(t);if(!s){let l=t.slice(e+1);return!n&&(AC.test(l)||NC.test(l))?void 0:Yo(e)}let[o,a="",c="",u=""]=s,f=e+1+o.length;if(a===""&&c===""&&u==="M")return _C(t,f,n);if(a==="200"&&u==="~"){let l=t.indexOf(Kl,f);if(l===-1)return n?{events:[{kind:"paste",text:t.slice(f)}],end:t.length}:void 0;return{events:[{kind:"paste",text:t.slice(f,l)}],end:l+Kl.length}}return{events:bS(a,c,u,r),end:f}}function UC(t){let e=HC.exec(t);if(e){let o=Number(e[3]??1);return[{kind:"size",of:"cell",h:Math.round(Number(e[1])*o),w:Math.round(Number(e[2])*o)}]}let n=FC.exec(t);if(n)return[{kind:"color",code:n[1],value:n[2]}];let[r="",i="",...s]=t.split(";");return[{kind:"osc",code:r,meta:CC(i),payload:s.join(";")}]}function WC(t,e,n){pS.lastIndex=e+1;let r=pS.exec(t),i=r?t[e+1+r[0].length]:void 0;if(i!==";"&&i!=="\x07"&&i!=="\x1B")return!n&&TC.test(t.slice(e+1))?void 0:Yo(e);let s=[t.indexOf("\x07",e),t.indexOf("\x1B\\",e+2)].filter((a)=>a!==-1);if(s.length===0)return n?{events:[],end:t.length}:void 0;let o=Math.min(...s);return{events:UC(t.slice(e+2,o)),end:o+(t[o]==="\x07"?1:2)}}function KC(t,e,n){let r=t[e+2];if(r===void 0)return n?Yo(e):void 0;if(!/^[A-Za-z]$/.test(r))return Yo(e);let i=yS[r];return{events:i?[Jo(i)]:[],end:e+3}}function zC(t,e,n,r){let i=t[e+1];if(i===void 0)return n?Yo(e):void 0;if(i==="[")return GC(t,e,n,r);if(i==="]")return WC(t,e,n);if(i==="O")return KC(t,e,n);if(i==="")return{events:[Jo("alt-backspace")],end:e+2};if(/^[a-z]$/.test(i))return{events:[Jo(`alt-${i}`)],end:e+2};return Yo(e)}function wS(t,e=!1,n){let r=[],i=0;while(i<t.length){if(t[i]==="\x1B"){let a=zC(t,i,e,n);if(!a)return{events:r,rest:t.slice(i)};r.push(...a.events),i=a.end;continue}let s=String.fromCodePoint(t.codePointAt(i)),o=LC(s);if(o)r.push(Jo(o));i+=s.length}return{events:r,rest:""}}function DC(t,e){for(let n=Math.min(qo.length-1,t.length-e);n>0;n--)if(t.subarray(t.length-n).equals(qo.subarray(0,n)))return t.length-n;return t.length}function qC(t){let e=[],n=0,r=t.indexOf(qo);while(r!==-1&&r+6<=t.length){e.push(t.subarray(n,r));let[s=0,o=0,a=0]=t.subarray(r+3,r+6);if(o>32&&a>32)e.push(Buffer.from(`\x1B[<${s-32};${o-32};${a-32}M`));n=r+6,r=t.indexOf(qo,n)}let i=r===-1?DC(t,n):r;return e.push(t.subarray(n,i)),{bytes:Buffer.concat(e),carry:i<t.length?t.subarray(i):void 0}}function $S(t){return gS.lastIndex=1,t.startsWith(vS)||t.startsWith("\x1B]")&&gS.test(t)}function JC(t,e){let n=t.slice(-Kl.length)+e;return t.startsWith(vS)?n.includes(Kl):n.includes("\x07")||n.includes("\x1B\\")}class Dp{held="";timer;carry;pressed;wheeled;utf8=new MC("utf8");burst;cell;take;constructor(t,e=()=>!1,n=()=>{return}){this.burst=e,this.cell=n,this.take=(r)=>{let i=this.counted(r);if(i.length>0)t(i)}}counted(t){let e=EC.now();return t.filter((n)=>{if(n.kind!=="mouse")return!0;if(n.action==="wheel"){let s=n.wheel*(n.sideways?2:1),o=this.wheeled;if(o!==void 0&&o.way===s&&e-o.at<IC)return!1;return this.wheeled={at:e,way:s},!0}if(n.action==="release")n.count=this.pressed?.count??0;if(n.action!=="press"||!n.button)return!0;let r=this.pressed,i=r!==void 0&&r.button===n.button&&r.row===n.row&&Math.abs(r.col-n.col)<=1&&e-r.at<=PC;return n.count=i?r.count+1:1,this.pressed={at:e,button:n.button,row:n.row,col:n.col,count:n.count},!0})}feed(t){clearTimeout(this.timer);let e=typeof t==="string"?t:this.bytes(t);if(!this.held&&!e.includes("\x1B")&&this.burst(e)){this.settle(),this.take([{kind:"paste",text:e}]);return}if($S(this.held)&&!JC(this.held,e)){this.held+=e;return}let{events:n,rest:r}=wS(this.held+e,!1,this.cell());if(this.held=r,this.settle(),n.length>0)this.take(n)}settle(){let t=this.held.length+(this.carry?.length??0);if(t>0&&!$S(this.held))this.wait(t===1?xC:OC)}bytes(t){let{bytes:e,carry:n}=qC(this.carry?Buffer.concat([this.carry,t]):t);return this.carry=n,this.utf8.write(e)}wait(t){clearTimeout(this.timer),this.timer=setTimeout(()=>this.flush(),t)}flush(){clearTimeout(this.timer);let t=this.carry;this.carry=void 0;let e=t&&!t.subarray(0,qo.length).equals(qo)?this.utf8.write(t):"",{events:n}=wS(this.held+e,!0,this.cell());if(this.held="",n.length>0)this.take(n)}stop(){clearTimeout(this.timer),this.held="",this.carry=void 0}}class mc{window;grid;see(t){if(t.kind!=="size")return;if(t.of==="cell")return{w:t.w,h:t.h};if(t.of==="window")this.window=t;else this.grid=t;let e=this.window,n=this.grid;return e&&n&&n.h>0&&n.w>0?{h:Math.floor(e.h/n.h),w:Math.floor(e.w/n.w)}:void 0}}class qp{known=!1;cell;see(t){if(t.kind==="mode"&&t.mode===1016)this.known=t.value===1||t.value===2;else if(t.kind==="size"&&t.of==="cell"&&t.w>0&&t.h>0)this.cell={w:t.w,h:t.h};else if(t.kind==="attributes")return{cell:this.known?this.cell:void 0};return}}var ql={on:"\x1B[?1049h",off:"\x1B[?1049l"},Wn={on:"\x1B[?25l",off:"\x1B[?25h"},pi={on:"\x1B[?7l",off:"\x1B[?7h"},yr={on:"\x1B[?2004h",off:"\x1B[?2004l"},PS={on:"\x1B[?1004h",off:"\x1B[?1004l"},YC={on:"\x1B[?1000h\x1B[?1002h\x1B[?1006h",off:"\x1B[?1006l\x1B[?1002l\x1B[?1000l"},SS={on:"\x1B[?1016h",off:"\x1B[?1016l\x1B[?1006h"};function gi(t=process.env){return t.TTHEME_MOUSE==="off"?[]:[YC]}var IS={SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGTERM:15},VC=3000;class gc extends Error{exit;constructor(t){super(t);this.exit=128+IS[t]}}var Un=[],gs=new Map,pc=new Map,ES;function MS(t){return Un.findLast((e)=>e.input===t)}var xS;function RS(t){for(let e of Un.toReversed())e.abort(t);if(!xS)xS=setTimeout(()=>{AS(),process.exit(t instanceof gc?t.exit:1)},VC).unref()}var ZC=Object.fromEntries(Object.keys(IS).map((t)=>[t,()=>RS(new gc(t))]));function AS(){for(let t of Un.toReversed())t.close()}function XC(){for(let t of Un)t.reassert();Un.at(-1)?.redraw()}function OS(t){let e=t?"on":"off";for(let[n,r]of Object.entries(ZC))process[e](n,r);if(process[e]("uncaughtException",RS),process[e]("exit",AS),process.platform!=="win32")process[e]("SIGCONT",XC)}function Dl(){}class NS{input;output;failed;modes=[];assumed;owned=[];keys;tty;take;resized;queued=[];asking;reject=Dl;open=!0;aborted=!1;constructor(t={}){if(this.input=t.input??process.stdin,this.output=t.output??process.stdout,this.tty=this.output.isTTY===!0&&this.input.isTTY===!0,this.assumed=t.assume??[],this.keys=new Dp((r)=>this.deliver(r),t.burst,()=>gs.has(SS)?ES:void 0),this.failed=new Promise((r,i)=>{this.reject=i}),this.failed.catch(Dl),this.tty&&!Un.some((r)=>r.tty))OS(!0);Un.push(this);let e="";for(let r of this.assumed)if(!gs.has(r))e+=r.on;for(let r of t.modes??[])e+=this.claim(r);this.write(e);let n=pc.get(this.input)??0;if(n===0)this.input.setRawMode?.(!0);pc.set(this.input,n+1),this.input.on("data",this.received),this.input.resume(),this.output.on("resize",this.resizing),this.output.on("error",Dl)}hold(t){this.write(this.claim(t))}pixels(t){ES=t,this.hold(SS)}get cols(){return this.output.columns||80}get rows(){return this.output.rows||24}write(t){if(t&&this.open)this.output.write(t)}listen(t){this.take=t;let e=this.queued;if(this.queued=[],e.length>0)t(e)}onResize(t){this.resized=t}until(t){return Promise.race([t,this.failed])}loop(t,e=()=>{}){return this.until(new Promise((n)=>{let r=!1;this.listen((i)=>{for(let s of i){let o=r?void 0:t(s);if(o!==void 0)r=!0,n(o)}if(!r)e()})}))}ask(t,e,n,r=!0){return new Promise((i)=>{let s={hold:r,pick:(c)=>{let u=e(c);if(u===void 0)return!1;return o(u),!0}},o=(c)=>{if(clearTimeout(a),this.asking===s)this.asking=void 0;i(c),this.release()},a=setTimeout(()=>o(void 0),n);this.asking=s,this.write(t)})}abort(t){if(this.aborted)return;this.aborted=!0,this.keys.stop(),this.reject(t)}redraw(){this.resized?.()}reassert(){if(this.open)this.input.setRawMode?.(!0),this.write([...this.assumed,...this.owned].map((t)=>t.on).join(""))}close(){if(!this.open)return;this.keys.stop(),this.input.off("data",this.received),this.output.off("resize",this.resizing);let t="";for(let n of this.modes.toReversed()){let r=(gs.get(n)??1)-1;if(r===0)gs.delete(n),t+=n.off;else gs.set(n,r)}this.write(t),this.open=!1;let e=(pc.get(this.input)??1)-1;if(e===0)pc.delete(this.input),this.input.setRawMode?.(!1),this.input.pause();else pc.set(this.input,e);if(this.output.off("error",Dl),Un.splice(Un.indexOf(this),1),this.tty&&!Un.some((n)=>n.tty))OS(!1)}received=(t)=>{if(MS(this.input)===this&&!this.aborted)this.keys.feed(t)};resizing=()=>{if(MS(this.input)===this)this.resized?.()};claim(t){this.modes.push(t);let e=gs.get(t)??0;if(gs.set(t,e+1),e>0)return"";return this.owned.push(t),t.on}deliver(t){let e=this.asking,n=e?t.filter((r)=>!e.pick(r)):t;if(n.length===0)return;if(!this.take||this.asking?.hold){this.queued.push(...n);return}this.take(n)}release(){if(this.take&&this.queued.length>0){let t=this.queued;this.queued=[],this.take(t)}}}async function bi(t,e){let n=new NS(t);try{return await e(n)}finally{n.close()}}var QC=3,FS={catalogs:{top:no,shelf:(t)=>et(t.name)?t.catalog:void 0},marketplaces:{top:(t)=>et(t.name)??Y,shelf:(t)=>t.catalog}};function bc(t,e){return`${t}/${e}`}function TS(t){return et(t.name)?$e(t.name):t.name}function Jl(t,e){let n=e.shelf(t);return n===void 0?void 0:bc(e.top(t),n)}function Yl(t){if(t?.kind==="palette")return`palette ${t.entry.name}`;if(t?.kind==="top")return`top ${t.name}`;if(t?.kind==="catalog")return`catalog ${bc(t.top,t.name)}`;if(t?.kind==="extra")return`extra ${t.extra.key}`;return t?.kind??""}function bs(t){return t?.kind==="rule"}function Vl(t,e){return Wi([t.name,et(t.name)??"",t.native??"",t.catalog??"",...t.nativeNames??[],...Nu(t.booru)],e)}function LS(t,e,n,r="catalogs",i=[],s="tree"){let o=FS[r],a=n.trim(),c=[],u=(l)=>({kind:"palette",entry:l}),f=Map.groupBy(t.filter((l)=>!l.default),(l)=>o.top(l));for(let[l,d]of f){let h=d[0],m=a?d.filter(($)=>Vl($,a)):d;if(a&&m.length===0)continue;let p=s==="inside"||s==="tree"&&(a.length>0||e.has(l));if(s!=="inside")c.push({kind:"top",name:l,...!et(h.name)&&l===h.catalog&&h.native?{native:h.native}:{},lead:d.find(($)=>$.lead)??h,expanded:p,count:m.length});if(!p)continue;let b=m.filter(($)=>o.shelf($)!==void 0);for(let[$,k]of Map.groupBy(b,(v)=>o.shelf(v))){let v=k.find((M)=>M.lead)??k[0],S=a.length>0||e.has(bc(l,$));if(c.push({kind:"catalog",top:l,name:$,...v.native?{native:v.native}:{},lead:v,expanded:S,count:k.length}),S)c.push(...k.map(u))}c.push(...m.filter(($)=>o.shelf($)===void 0).map(u))}for(let l of i)if(!f.has(l)&&(a===""||Wi([l],a)))c.push({kind:"top",name:l,expanded:e.has(l),count:0});return c}function t8(t,e){let n=e.trim(),r=new Set(t.values().filter((i)=>!i.default&&(n===""||Vl(i,n))).map(no));return LS(t,new Set,"").filter((i)=>i.kind==="top"&&r.has(i.name))}function e8(t){return t.includes("@")}function HS(t,e,n,r,i=!0){let s=n-1;if(s<0)return t;let o;if(!Number.isFinite(e))o=e>0?s:0;else if(e>0)o=t>=s?i?0:s:Math.min(s,t+e);else o=t<=0?i?s:0:Math.max(0,t+e);if(!r(o))return o;let a=Math.sign(e),c=o+a;if(c>=0&&c<=s)return c;return i&&Math.abs(e)===1?c<0?s:0:o-a}function wc(t,e){let n={home:Number.NEGATIVE_INFINITY,end:Number.POSITIVE_INFINITY,pgup:-e,pgdn:e};return t===void 0?void 0:n[t]}function n8(t){let e=t.findIndex((n)=>n.kind==="top"&&e8(n.name));return e>0&&t.slice(0,e).some((n)=>n.kind==="top")?t.toSpliced(e,0,{kind:"rule"}):t}function r8(t){let e=t.findIndex((n)=>n.kind==="palette");return e===-1?0:e}function Zl(t){return t==="decode"||t==="glitch"?t:"typewriter"}function wi(t,e,n,r){return Ye({kind:"row",at:t,part:e,...r?{pane:r}:{}},n)}class Vo{picked;scope;maxItems;focus="lit";named=[];catalogs=[];layout;mode;pane;place;color;p;onFocus;note;badge;about;tops;heads;extras;pinned;entries=[];catalogPad=0;namePad=0;expanded=new Set;rows=[];fixed=0;cursor=0;top=0;span=1;filter="";lastFocused="";constructor(t){this.picked=t.picked,this.scope=t.scope??"palette",this.layout=t.layout??"catalogs",this.mode=t.mode??"tree",this.pane=t.pane,this.place=FS[this.layout],this.maxItems=t.maxItems??12,this.color=t.color??!0,this.p=Ce(this.color),this.onFocus=t.onFocus,this.note=t.note,this.badge=t.badge,this.about=t.about,this.tops=t.tops,this.heads=t.heads,this.extras=t.extras,this.pinned=t.pinned,this.load(t.entries),this.rebuild("first")}load(t){this.entries=t,this.named=t.filter((e)=>!e.default),this.catalogs=[...new Set(this.named.map(no))],this.catalogPad=Math.max(0,...this.catalogs.map((e)=>e.length)),this.namePad=Math.max(0,...this.named.map((e)=>this.indent(e).length+TS(e).length))}lead(){return this.mode==="inside"?"":" "}indent(t){return this.place.shelf(t)===void 0?this.lead():`${this.lead()} `}setEntries(t){this.load(t),this.rebuild("stay")}setFilter(t){if(t!==this.filter)this.filter=t,this.rebuild("keep")}clear(){let t=this.rows[this.cursor];if(t?.kind==="palette"&&!t.entry.default){this.expanded.add(this.place.top(t.entry));let e=Jl(t.entry,this.place);if(e!==void 0)this.expanded.add(e)}this.setFilter("")}focusedRow(){return this.rows[this.cursor]}refocus(){this.lastFocused="",this.sync()}refresh(){this.rebuild("stay")}select(t){let e=this.rows.findIndex((n)=>Yl(n)===t);if(e===-1)return!1;return this.cursor=e,this.sync(),!0}members(t,e){let n=this.scope==="palette"?this.filter.trim():"";return this.under(t,e).filter((r)=>n===""||Vl(r,n))}under(t,e){return this.named.filter((n)=>this.place.top(n)===t&&(e===void 0||this.place.shelf(n)===e))}inside(t){return t.kind==="palette"?[t.entry]:t.kind==="top"?this.under(t.name):t.kind==="catalog"?this.under(t.top,t.name):[]}everyone(t){return t.flatMap((e)=>e.kind==="top"?this.members(e.name):[])}pick(){let t=this.rows[this.cursor],e=t?.kind==="palette"?[t.entry.name]:t?.kind==="top"?this.members(t.name).map((r)=>r.name):t?.kind==="catalog"?this.members(t.top,t.name).map((r)=>r.name):t?.kind==="all"?this.everyone(this.rows).map((r)=>r.name):[];if(e.length===0)return;let n=e.some((r)=>!this.picked.has(r));for(let r of e)if(n)this.picked.add(r);else this.picked.delete(r)}pickedIn(t,e){return this.members(t,e).filter((n)=>this.picked.has(n.name)).length}pickedCount(){if(this.scope==="palette")return this.named.filter((t)=>this.picked.has(t.name)).length;return this.catalogs.filter((t)=>this.members(t).every((e)=>this.picked.has(e.name))).length}total(){return this.scope==="catalog"?this.catalogs.length:this.named.length}matched(){let t=this.filter.trim();if(this.scope==="catalog")return this.rows.filter((e)=>e.kind==="top").length;return t?this.named.filter((e)=>Vl(e,t)).length:this.named.length}sync(){let t=this.rows[this.cursor],e=t?.kind==="palette"?t.entry:t?.kind==="top"&&this.scope==="catalog"?t.lead:void 0;if(e&&e.name!==this.lastFocused)this.lastFocused=e.name,this.onFocus?.(e)}rebuild(t){let e=this.rows[this.cursor],n=this.scope==="catalog"?t8(this.entries,this.filter):LS(this.entries,this.expanded,this.filter,this.layout,this.tops?.()??[],this.mode),r=this.layout==="marketplaces"||n.length===0?n:n8([{kind:"all",count:this.allCount(n)},...n]),i=(a)=>(a??[]).map((c)=>({kind:"extra",extra:c})),s=i(this.pinned?.());this.fixed=s.length,this.rows=[...i(this.heads?.()),...r,...i(this.extras?.()),...s];let o=n.length>0?this.rows.indexOf(n[this.mode==="inside"&&!this.filter.trim()?0:r8(n)]):Math.max(0,this.rows.findIndex((a)=>!bs(a)&&!(a.kind==="extra"&&a.extra.idle)));if(t==="first")this.cursor=o;else if(t==="keep"||t==="stay"){let a=Yl(e),c=e?.kind==="palette"||t==="stay"?this.rows.findIndex((f)=>Yl(f)===a):-1,u=e?.kind==="extra"&&t==="stay";this.cursor=c!==-1?c:u?Math.min(this.cursor,this.rows.length-1):o}else if(this.cursor>=this.rows.length)this.cursor=Math.max(0,this.rows.length-1);this.settle(),this.sync()}settle(){if(!bs(this.rows[this.cursor]))return;let t=this.rows.findIndex((n,r)=>r>this.cursor&&!bs(n)),e=this.rows.findLastIndex((n,r)=>r<this.cursor&&!bs(n));this.cursor=t!==-1?t:e!==-1?e:this.cursor}allCount(t){return this.scope==="catalog"?t.length:this.everyone(t).length}move(t,e=!0){let n=this.rows.length-this.fixed,r=this.fixed>0&&n>0&&Math.abs(t)!==1;this.cursor=r?HS(Math.min(this.cursor,n-1),t,n,(i)=>bs(this.rows[i]),e):HS(this.cursor,t,this.rows.length,(i)=>bs(this.rows[i]),e),this.sync()}point(t){let e=this.rows[t];if(!e||bs(e))return!1;return this.cursor=t,this.sync(),!0}size(){return this.rows.length}outer(){let t=this.rows[this.cursor];return this.mode==="inside"&&(this.filter.trim()!==""||t===void 0||t.kind==="extra"||t.kind==="catalog"&&!t.expanded||t.kind==="palette"&&Jl(t.entry,this.place)===void 0)}flip(){let t=this.rows[this.cursor];if(t?.kind==="top"||t?.kind==="catalog")this.fold(!t.expanded)}foldable(){let t=this.rows[this.cursor];return(t?.kind==="catalog"||t?.kind==="top"&&this.mode==="tree")&&this.scope==="palette"&&!this.filter}open(){if(this.foldable())this.flip();else this.pick()}toggle(t){if(this.expanded.has(t))this.expanded.delete(t);else this.expanded.add(t);this.rebuild("clamp")}climb(t,e){this.expanded.delete(t),this.rebuild("clamp"),this.reach(e)}reach(t){this.cursor=Math.max(0,this.rows.findIndex((e)=>Yl(e)===t)),this.sync()}fold(t){if(this.filter||this.scope==="catalog")return;let e=this.rows[this.cursor];if(e?.kind==="top"){if(t!==e.expanded)this.toggle(e.name)}else if(e?.kind==="catalog"){if(t!==e.expanded)this.toggle(bc(e.top,e.name));else if(!t&&this.mode==="tree")this.reach(`top ${e.top}`)}else if(e?.kind==="palette"&&!t&&!e.entry.default){let n=Jl(e.entry,this.place);if(n===void 0){if(this.mode==="tree"){let r=this.place.top(e.entry);this.climb(r,`top ${r}`)}}else this.climb(n,`catalog ${n}`)}}page(){return this.span}pins(){let t=this.rows.length-this.fixed;return this.rows.slice(t).flatMap((e,n)=>this.renderRow(e,t+n))}window(){let t=this.rows.length-this.fixed,e=this.rows.slice(0,t).map((u,f)=>this.renderRow(u,f)),n=(u)=>e[u]?.length??0,r=Math.max(1,this.maxItems),i=Math.max(0,Math.min(this.cursor,t-1));this.top=Math.min(this.top,i);let s=0;for(let u=this.top;u<=i;u++)s+=n(u);while(this.top<i&&s>r)s-=n(this.top),this.top+=1;let o=0;for(let u=this.top;u<e.length;u++)o+=n(u);while(this.top>0&&o+n(this.top-1)<=r)this.top-=1,o+=n(this.top);let a=[],c=this.top;while(c<e.length&&(c===this.top||a.length+n(c)<=r))a.push(...e[c]??[]),c+=1;return this.span=Math.max(1,c-this.top),a.push(...e[c]??[]),{lines:a.slice(0,r),above:this.top,below:e.length-c}}renderRow(t,e){if(t.kind==="rule")return[` ${this.p.dim("── Marketplaces ──────────")}`];return(t.kind==="extra"?t.extra.text(e===this.cursor&&this.focus==="lit",e):this.rowText(t,e)).split(`
|
|
673
|
-
`).map((r)=>r?
|
|
674
|
-
`)}return u(`${l(t.expanded)}${v} ${s(`(${this.pickedIn(t.name)}/${t.count})`)}${S}${M}`)}if(t.kind==="catalog"){let v=d?.kind==="palette"&&Jl(d.entry,this.place)===bc(t.top,t.name),S=s(`(${this.pickedIn(t.top,t.name)}/${t.count})`),M=t.native?` ${s(t.native)}`:"";return u(`${this.lead()}${l(t.expanded)}${h(v,t.name)} ${S}${M}`)}let m=t.entry,p=this.indent(m),b=TS(m),$=this.color?b.padEnd(this.namePad-p.length):b,k=n?o($):$;return u(`${p}${f(this.picked.has(m.name))}${k}${a(m)}${this.note?.(m)??""}`)}}function Jp(t){let e=t.named[Math.floor(Math.random()*t.named.length)],n=t.catalogs[Math.floor(Math.random()*t.catalogs.length)];return e&&n?`${e.name} | ${n}`:""}class Xl{fx;make;redraw;roller;example="";step=0;seed=0;timer;constructor(t,e,n){this.fx=t,this.make=e,this.redraw=n,this.roll(),this.roller=setInterval(()=>{this.roll(),this.step=8,this.redraw()},3000),this.roller.unref?.()}stop(){clearInterval(this.roller),clearTimeout(this.timer)}roll(){let t=this.make();this.example=t.length>30?`${t.slice(0,29)}…`:t,this.seed=Math.floor(Math.random()*997)}text(){if(this.step===0)return this.example;if(!this.timer)this.timer=setTimeout(()=>{this.timer=void 0,this.step-=1,this.redraw()},60),this.timer.unref?.();let t=Math.floor(this.example.length*(8-this.step)/8);if(this.fx==="typewriter")return`${this.example.slice(0,t)}▏`;let e=this.fx==="decode"?"abcdefghijklmnopqrstuvwxyz":"▓▒░#*+=<>?/-_",n=this.fx==="decode"?(r)=>!/[a-z0-9]/i.test(r):(r)=>r===" ";return[...this.example].map((r,i)=>i+(i*7+this.seed)%3<t||n(r)?r:e[Math.floor(Math.random()*e.length)]??r).join("")}}var i8=5;class Yp{picked;list;scope;color;required;most;hint;field=new ps;input;output;state="active";error="";redraw=()=>{};constructor(t){this.scope=t.scope??"palette",this.picked=new Set(t.installed??[]),this.color=t.color??!0,this.required=t.required??!1,this.most=t.maxItems??12,this.input=t.input,this.output=t.output,this.list=new Vo({entries:t.entries,picked:this.picked,scope:this.scope,maxItems:this.most,color:this.color,...t.onFocus?{onFocus:t.onFocus}:{}}),this.hint=new Xl(t.fx??"typewriter",()=>Jp(this.list),()=>this.redraw())}prompt(){return bi({input:this.input,output:this.output,modes:[Wn,yr]},async(t)=>{let e=new $p((r)=>t.write(r),()=>t.cols),n=()=>{return this.list.maxItems=Math.max(QC,Math.min(this.most,t.rows-i8)),this.draw()};this.redraw=()=>e.draw(n()),t.onResize(()=>e.redraw(n())),this.redraw();try{let r=await t.loop((i)=>{return this.take(i),this.state==="submit"||this.state==="cancel"?this.state:void 0},()=>this.redraw());return this.redraw=()=>{},e.end(this.draw()),r}finally{this.hint.stop()}})}take(t){if(t.kind==="paste"){this.field.paste(t.text),this.list.setFilter(this.field.value);return}if(t.kind!=="key")return;let e=t.key;if(this.state==="error")this.state="active";let n=wc(e,this.list.maxItems);if(e==="esc"||e==="ctrl-c")this.state="cancel";else if(e==="enter")if(this.required&&this.picked.size===0)this.error=`Pick at least one ${this.scope}`,this.state="error";else this.state="submit";else if(e==="up"||e==="down")this.list.move(e==="up"?-1:1);else if(e==="left"||e==="right")this.list.fold(e==="right");else if(n!==void 0)this.list.move(n);else if(e===" ")this.list.pick();else if(this.field.key(e))this.list.setFilter(this.field.value)}draw(){let{dim:t,accent:e,warn:n}=Ce(this.color),r=this.scope==="catalog"?"Catalogs":"Palettes";if(this.state==="submit")return[`${t("◇")} ${r} ${t(`· ${this.list.pickedCount()} picked`)}`];if(this.state==="cancel")return[`${t(`◇ ${r} · cancelled`)}`];let i=this.field.value,s=`${e("◆")} ${r} ${t(`(${this.list.matched()}/${this.list.total()} · ${this.list.pickedCount()} picked)`)}`,o=this.hint.text(),a=`${e("│")} ${i?`${i}_`:t(`Search…${o?` e.g. ${o}`:""}`)}`,{lines:c,below:u}=this.list.window(),f=c.length>0?c.map((p)=>`${e("│")} ${p}`):[`${e("│")} ${t(`No ${this.scope==="catalog"?"catalogs":"palettes"} match '${i}'`)}`];while(f.length<this.list.maxItems)f.push(e("│"));let l=u>0?`${e("│")} ${t(`↓ ${u} more`)}`:e("│"),d=this.scope==="catalog"?"":" · ←→ fold",h=this.scope==="catalog"?"continue":"install",m=this.state==="error"?`${e("└")} ${n(this.error)}`:`${e("└")} ${t(`↑↓ move${d} · space pick · type to filter · enter ${h} · esc cancel`)}`;return[s,a,...f,l,m]}}var s8=40,o8=60,a8=42,c8=94,u8=22,CS=40,jS=10,$c=3,l8=20,_S={title:"",lines:[],brief:""};function f8(t){let e=t.trim();if(e!==Y&&!e.includes("/")&&!e.startsWith("~"))return;try{return hn(e)}catch{return}}function Vp(t){return t===Y?"Built in":yt(t)?t:ot(t)}function Zp(t){return t.charAt(0).toUpperCase()+t.slice(1)}class Xp{picked;field=new ps;query=new ps;address=new ps;adds=new Map;removes=new Set;want=new Map;renew=new Set;updates;tuned;busy=new Map;failed=new Map;fetched=new Map;staging=new Set;refreshed=[];inflight=new Set;marketplaces;kept;installed;startup;io;order;color;p;hub;owns;input;output;maxItems=12;paint;list;inside;results;side="cards";showing="browse";landing;open;split=0;hint;screen;state="active";phase="browse";offset=0;started=!1;log=[];working="";stopped;beat=0;removing;adding;formError;leaving;goto;listing;loading=!1;loadError;help=!1;live;constructor(t){this.marketplaces=t.marketplaces,this.kept=t.kept,this.installed=new Set(t.installed),this.updates=new Set(t.updates??[]),this.tuned=new Set(t.tuned??[]),this.startup=t.startup,this.io=t.io,this.order=t.order??((e)=>e),this.color=t.color??!0,this.p=Ce(this.color),this.hub=t.hub,this.owns=t.owns??!1,this.input=t.input,this.output=t.output,this.live=t.lookups??!0,this.paint=t.onFocus,this.picked=new Set(t.installed),this.list=new Vo({entries:this.entries(),picked:this.picked,layout:"marketplaces",mode:"cards",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),badge:(e)=>this.badge(e),about:(e,n,r)=>this.about(e,n,r),tops:()=>this.tops(),heads:()=>this.heads(),onFocus:(e)=>this.focus(e)}),this.inside=new Vo({entries:[],picked:this.picked,layout:"marketplaces",mode:"inside",pane:"panel",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),pinned:()=>this.actions(),onFocus:(e)=>{if(this.side==="panel")this.focus(e)}}),this.inside.focus="off",this.results=new Vo({entries:[],picked:new Set,layout:"marketplaces",mode:"cards",color:this.color,maxItems:this.maxItems,heads:()=>[this.row({kind:"back"},!0)],extras:()=>this.found()}),this.follow(),this.hint=new Xl(t.fx??"typewriter",()=>Jp(this.list),()=>this.redraw());for(let e of t.due)this.update(e)}run(){let t=[...this.owns?[ql,Wn,pi]:[],yr,...gi()],e=this.owns?[]:[Wn,pi];return bi({input:this.input,output:this.output,modes:t,assume:e},async(n)=>{let r=new fs({write:(i)=>n.write(i),view:()=>this.state==="active"?{lines:this.view(),ticking:this.phase==="applying"||this.fetching()}:void 0,beat:()=>{this.beat+=1}});this.screen=r,n.onResize(()=>{r.reset(),r.request()}),r.now();try{return await n.loop((i)=>{if(i.kind==="key")this.key(i.key);else if(i.kind==="paste")this.pasted(i.text);else if(i.kind==="mouse")this.mouse(i,r);return this.state==="active"?void 0:this.state},()=>r.soon())}finally{r.stop(),this.screen=void 0,this.hint.stop()}})}applied(){return this.started}lines(){return this.log}failure(){return this.stopped}next(){return this.goto}async idle(){await Promise.allSettled(this.inflight)}result(){let t=new Set(this.entries().map((e)=>e.name));return{picked:new Set(this.picked.values().filter((e)=>t.has(e))),adds:[...this.adds.values()],removes:[...this.removes],auto:Object.fromEntries(this.want),renew:[...this.renew].filter((e)=>this.updates.has(e)&&this.picked.has(e)&&t.has(e)),refreshed:this.refreshed}}key(t){if(t==="ctrl-c"){this.state="cancel";return}if(this.help){if(t==="?"||t==="esc")this.help=!1;return}if(this.leaving!==void 0){if(t==="esc")this.leaving=void 0;else if(/^[yn]$/i.test(t)){if(t.toLowerCase()==="y")this.begin();else this.goto=this.leaving,this.state="cancel";this.leaving=void 0}return}if(this.removing){if(t==="esc")this.removing=void 0;else if(/^[yn]$/i.test(t))this.answer(t.toLowerCase()==="y");return}if(this.phase!=="browse"){this.steer(t);return}if(this.showing==="search"){this.searchKey(t);return}if(this.side==="form"){this.formKey(t);return}let e=this.side==="panel",n=e?void 0:this.focusedFound(),r=n?.kind==="new"||n?.kind==="search",i=wc(t,(e?this.inside:this.list).page());if(t==="enter")if(this.onAction())this.act();else if(e&&this.inside.foldable())this.inside.flip();else if(!e&&this.list.focusedRow()?.kind==="top")this.enter();else if(r)this.activate();else this.finish();else if((t==="esc"||t==="ctrl-u")&&this.field.value)this.clear();else if(t==="esc")if(e)this.back();else this.state="cancel";else if(t==="?")this.help=!0;else if(i!==void 0)this.move(i);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="right")if(e)this.inside.fold(!0);else if(r)this.activate();else this.enter();else if(t==="left"){if(e&&this.inside.outer())this.back();else if(e)this.inside.fold(!1)}else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Vu(this.hub,t==="tab"?1:-1))}else if(t===" ")if(this.onAction())this.act();else if(e)this.inside.pick();else this.activate();else if(t==="ctrl-r"){if(e)this.toggleRenew()}else if(this.field.key(t))this.typed()}searchKey(t){let e=wc(t,this.results.page());if(t==="enter"||t===" ")this.take(t==="enter");else if((t==="esc"||t==="ctrl-u")&&this.query.value)this.query.value="",this.searchTyped();else if(t==="esc"||t==="left")this.closeSearch();else if(t==="?")this.help=!0;else if(e!==void 0)this.move(e);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Vu(this.hub,t==="tab"?1:-1))}else if(t==="ctrl-r")this.loadIndex();else if(this.query.key(t))this.searchTyped()}formKey(t){if(t==="esc"||t==="left")this.back();else if(t==="?")this.help=!0;else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Vu(this.hub,t==="tab"?1:-1))}else if(this.fetching())return;else if(t==="enter")this.submit();else if(this.address.key(t))this.edited()}openForm(){let t=this.field.value.trim();if(!this.address.value&&f8(t))this.address.value=t;this.side="form",this.list.focus="held"}edited(){this.formError=void 0,this.adding=void 0}submit(){let t=this.address.value.trim();if(!t){this.formError="type a repository or a folder";return}let e;try{e=hn(t)}catch(r){this.formError=r.message;return}let n=this.known(e);if(n){this.address.value="",this.reveal(n.id);return}this.adding=e,this.load(e)}fetching(){return this.adding!==void 0&&this.busy.has(this.adding)}reveal(t){if(this.back(),this.field.value)this.clear();this.list.select(`top ${t}`),this.enter()}take(t){let e=this.focusedFound();if(e?.kind==="back"){this.closeSearch();return}if(e?.kind==="state"){this.loadIndex();return}let n=e?.kind==="listed"?e.listed.source:void 0;if(n===void 0)return;let r=this.known(n);if(!r)this.landing=t?n:void 0,this.load(n);else if(t)this.closeSearch(),this.list.select(`top ${r.id}`);else if(this.adds.has(r.source))this.adds.delete(r.source),this.want.delete(r.source),this.reload()}openSearch(){let t=this.field.value.trim();if(t)this.query.value=t;if(this.showing="search",this.results.setFilter(this.query.value),this.results.refresh(),this.live&&!this.listing)this.loadIndex()}closeSearch(){this.showing="browse",this.landing=void 0,this.follow()}searchTyped(){this.results.setFilter(this.query.value)}loadIndex(){if(this.loading)return;this.loading=!0,this.loadError=void 0,this.redraw(),this.track(this.io.index()).then((t)=>{this.loading=!1,this.listing=t,this.results.refresh(),this.redraw()},(t)=>{this.loading=!1,this.loadError=t.message,this.results.refresh(),this.redraw()})}finish(){if(this.dirty())this.phase="review",this.offset=0}enter(){if(this.follow(),this.side==="panel")return!0;if(this.list.focusedRow()?.kind!=="top"||this.inside.size()===0)return!1;return this.side="panel",this.list.focus="held",this.inside.focus="lit",this.inside.refocus(),!0}back(){if(this.side==="form"&&this.adding!==void 0)this.staging.delete(this.adding);this.side="cards",this.list.focus="lit",this.inside.focus="off"}follow(t=!1){let e=this.list.focusedRow(),n=e?.kind==="top"?e.name:void 0;if(t||n!==this.open)this.open=n,this.inside.setEntries(n===void 0?[]:this.membersOf(n));if(this.side==="panel"&&this.inside.size()===0)this.back()}membersOf(t){return this.entries().filter((e)=>(et(e.name)??Y)===t)}pasted(t){if(this.phase!=="browse"||this.help||this.removing||this.leaving!==void 0)return;if(this.showing==="search")this.query.paste(t),this.searchTyped();else if(this.side==="form"){if(!this.fetching())this.address.paste(t),this.edited()}else this.field.paste(t),this.typed()}mouse(t,e){if(this.help){if(t.action==="release")this.help=!1;return}let n=e.point(t),r=n?.target,i=this.phase==="browse"&&this.leaving===void 0&&!this.removing;if(t.action==="wheel"){if(!t.sideways&&(i||this.phase!=="browse"))this.wheel(t.wheel,this.split>0&&t.col>=this.split);return}if(!r)return;if(t.action==="press"&&t.button==="left"){if(i&&r.kind==="row")this.point(r);else if(i&&r.kind==="form")this.openForm()}else if(t.action==="release"&&n?.inside){if(r.kind==="key")this.key(r.key);else if(r.kind==="page"){if(this.phase!=="browse")this.scroll(r.step*this.span());else if(i&&this.side===(r.pane?"panel":"cards"))this.move(r.step*(r.pane?this.inside:this.current()).page())}else if(r.kind==="hub"){if(i&&this.hub&&r.tab!==this.hub)this.leave(ay(r.tab))}else if(r.kind==="row"&&i)this.openRow(r,t.count)}}point(t){if(this.showing==="search"){this.results.point(t.at);return}if(t.pane){if(this.enter())this.inside.point(t.at);return}this.back(),this.list.point(t.at)}wheel(t,e){if(this.phase!=="browse"){this.scroll(t);return}if(this.showing==="search"){this.move(t,!1);return}if(e&&!this.enter())return;if(!e)this.back();this.move(t,!1)}openRow(t,e){if(this.showing==="search"){if(t.part==="box"||e===2)this.take(e===2)}else if(t.pane){if(this.onAction()){if(t.part==="box"||e===2)this.act()}else if(t.part==="box")this.inside.pick();else if(t.part==="fold")this.inside.flip();else if(e===2)this.inside.open()}else if(this.list.focusedRow()?.kind==="extra"){if(t.part==="box"||e===2)this.activate()}else if(t.part==="fold"||e===2)this.enter()}typed(){let t=this.field.value,e=this.list.focusedRow();if(this.list.setFilter(t),e?.kind==="top")this.list.select(`top ${e.name}`);if(this.inside.setFilter(t),this.follow(),t.trim()&&this.list.focusedRow()?.kind==="top"&&this.inside.matched()>0)this.enter();else if(t.trim())this.back()}clear(){this.field.value="";let t=this.list.focusedRow();if(this.inside.clear(),this.list.setFilter(""),t?.kind==="top")this.list.select(`top ${t.name}`);this.follow()}redraw(){if(this.state==="active")this.screen?.request()}focus(t){if(this.state!=="submit"&&this.state!=="cancel")this.paint?.(t)}track(t){this.inflight.add(t);let e=()=>this.inflight.delete(t);return t.then(e,e),t}active(){return[...this.marketplaces.filter((t)=>!this.removes.has(t.source)),...this.adds.values()]}entries(){let t=this.active().flatMap((i)=>i.entries),e=new Set(t.map((i)=>i.name)),n=new Map,r=this.marketplaces.filter((i)=>this.removes.has(i.source)).flatMap((i)=>i.entries);for(let i of[...this.kept,...r])if(this.installed.has(i.name)&&!e.has(i.name))n.set(i.name,i);return this.order([...t,...n.values()])}reload(){this.list.setEntries(this.entries()),this.follow(!0)}tops(){return this.active().map((t)=>t.id)}marketplaceNamed(t){return this.active().find((e)=>e.id===t)}focusedMarketplace(){let t=this.list.focusedRow();return t?.kind==="top"?this.marketplaceNamed(t.name):void 0}current(){return this.showing==="search"?this.results:this.list}move(t,e=!0){(this.side==="panel"?this.inside:this.current()).move(t,e)}autoUpdate(t){let e=!(this.want.get(t.source)??t.auto);if(e===t.auto)this.want.delete(t.source);else this.want.set(t.source,e)}onAction(){return this.side==="panel"&&this.inside.focusedRow()?.kind==="extra"}act(){let t=this.inside.focusedRow(),e=this.focusedMarketplace(),n=t?.kind==="extra"?t.extra.action:void 0;if(!e||n===void 0)return;if(n==="update")this.update(e.source);else if(n==="auto")this.autoUpdate(e);else if(this.adds.has(e.source))this.adds.delete(e.source),this.want.delete(e.source),this.back(),this.reload();else this.removing=e}activate(){let t=this.list.focusedRow();if(t?.kind!=="extra"){this.list.pick();return}let e=t.extra.found;if(e?.kind==="new")this.openForm();else if(e?.kind==="search")this.openSearch()}remove(t){let e=this.tops().indexOf(t.id);this.removes.add(t.source),this.want.delete(t.source),this.back(),this.reload();let n=this.tops()[Math.min(e,this.tops().length-1)];if(n!==void 0)this.list.select(`top ${n}`)}known(t){return[...this.marketplaces,...this.adds.values()].find((e)=>qi(e.source,t))}load(t){let e=this.fetched.get(t);if(e){this.arrive(t,e);return}if(this.staging.add(t),this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Fetching…"),this.track(this.io.fetch(t)).then((n)=>{if(this.busy.delete(t),this.fetched.set(t,n),this.staging.delete(t))this.arrive(t,n);this.redraw()},(n)=>{this.busy.delete(t),this.staging.delete(t),this.failed.set(t,n.message),this.landing=void 0,this.redraw()})}arrive(t,e){let n=this.active().find((r)=>r.id===e.id);if(n)this.failed.set(t,`${e.id} already names the marketplace at ${n.shown}`),this.landing=void 0;else this.stage(e);this.redraw()}focusedFound(){let t=this.current().focusedRow();return t?.kind==="extra"?t.extra.found:void 0}answer(t){let e=this.removing;if(this.removing=void 0,e&&t)this.remove(e)}stage(t){if(this.adds.set(t.source,t),this.reload(),this.adding!==void 0&&qi(this.adding,t.source)){this.address.value="",this.adding=void 0,this.reveal(t.id);return}if(this.list.select(`top ${t.id}`),this.landing!==void 0&&qi(this.landing,t.source))this.closeSearch();else this.results.refresh()}update(t){if(this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Updating…"),this.track(this.io.refresh(t)).then(({marketplace:e,refreshed:n,updates:r})=>{this.busy.delete(t),this.updates=new Set(r),this.marketplaces=this.marketplaces.map((i)=>i.source===t?e:i),this.refreshed.push(n),this.reload(),this.redraw()},(e)=>{this.busy.delete(t),this.failed.set(t,`Update failed: ${e.message}`),this.redraw()})}row(t,e=!1){return{key:t.kind==="listed"?`listed ${t.listed.source}`:t.kind,...e?{idle:e}:{},found:t,text:(n,r)=>this.foundLine(t,n,r)}}actions(){let t=this.open===void 0?void 0:this.marketplaceNamed(this.open);if(!t)return[];let{source:e}=t,n=yt(e),r=(i)=>({key:i,action:i,text:(s,o)=>this.actionLine(i,e,s,o)});return[...n&&!this.adds.has(e)?[r("update")]:[],...n?[r("auto")]:[],r("remove")]}actionLine(t,e,n,r){let[i,s]=this.actionText(t,e);return this.button(r,n,this.actionMark(t,e),i.padEnd(l8),s?` ${this.p.dim(s)}`:"",{pane:"panel",off:t==="update"&&this.busy.has(e),danger:t==="remove"&&!this.adds.has(e)})}button(t,e,n,r,i,s={}){let o=iy(this.p,`${n} ${r}`,s.off?"off":e?"focus":"idle",s.danger);return`${e?`${I.gutter} `:" "}${wi(t,"box",`${o}${i}`,s.pane)}`}actionMark(t,e){if(t==="update")return I.update;if(t==="auto")return I.auto;return this.adds.has(e)?I.undo:I.remove}actionText(t,e){let n=this.known(e);if(t==="update")return["Update now",this.busy.get(e)??(this.failed.has(e)?"Update failed":n?Zp(n.status):"")];if(t==="auto")return["Auto-update",this.want.get(e)??n?.auto?"on":"off"];return[this.adds.has(e)?"Undo add":"Remove marketplace",""]}actionAbout(t,e){if(t==="update")return["Update now",`Fetch ${Vp(e)} again now`];if(t==="auto")return["Auto-update","Fetch it on its own once a day and say what changed"];return this.adds.has(e)?["Undo add","Drop it before it is added"]:["Remove marketplace","Take it off your list — its installed palettes stay"]}actionVerb(t,e){if(t==="update")return"update";if(t==="auto")return this.want.get(e)??this.known(e)?.auto?"turn off":"turn on";return this.adds.has(e)?"undo add":"remove"}heads(){return[this.row({kind:"new"},!0),this.row({kind:"search"})]}matches(){let t=this.query.value.trim();return(this.listing?.marketplaces??[]).filter((e)=>!t||Kp(e,t))}found(){let t=this.matches();return t.length>0?t.map((e)=>this.row({kind:"listed",listed:e})):[this.row({kind:"state"})]}lit(t,e){return`${t?`${I.gutter} `:" "} ${e}`}status(t){return this.adds.has(t.source)?"Will add":this.busy.get(t.source)??(this.failed.has(t.source)?"Update failed":"")}about(t,e,n){let r=this.marketplaceNamed(t),i=e.filter((c)=>this.installed.has(c.name)).length,s=e.filter((c)=>this.picked.has(c.name)&&!this.installed.has(c.name)).length,o=e.filter((c)=>this.installed.has(c.name)&&!this.picked.has(c.name)).length,a=[...r&&n!==void 0?[`${n} of ${r.entries.filter((c)=>!c.default).length} match`]:[],...r&&n===void 0?[`${r.entries.filter((c)=>!c.default).length} available`]:[],...i>0||!r?[`${i} installed`]:[],...s>0?[`${s} to install`]:[],...o>0?[`${o} to remove`]:[],...r&&r.source!==Y&&!(this.adds.has(r.source)&&yt(r.source))?[Zp(r.status)]:[]];return{added:r!==void 0,lines:[this.p.dim(r?Vp(r.source):"Not added"),this.p.dim(a.join(" · "))]}}badge(t){let e=this.marketplaceNamed(t);if(!e)return"";return[yt(e.source)&&(this.want.get(e.source)??e.auto)?`${I.auto} auto-update`:"",this.status(e)].map((r)=>r?` ${this.p.dim(r)}`:"").join("")}foundLine(t,e,n){let r=(u)=>wi(n,"box",`${u} `),i=(u)=>u?` ${this.p.dim(u)}`:"";if(t.kind==="new")return this.button(n,e,"+","Add marketplace",i("owner/repo or a folder"));if(t.kind==="search")return this.button(n,e,I.search,"Search marketplace",i("find one on GitHub"));if(t.kind==="back")return` ${wi(n,"box",Du(this.p,"← Back",e))}
|
|
675
|
-
`;if(t.kind==="state"){let[u,f]=this.stateOf();return this.button(n,e,I.search,u,i(f))}let s=t.listed,o=this.known(s.source),a=this.failed.get(s.source),c=[`${I.star}${s.stars}`,o?this.addedNote(o):
|
|
676
|
-
`)),this.redraw()},status:(e)=>{this.working=e,this.redraw()}};this.track(this.io.apply(this.result(),t)).then(()=>this.ended(),(e)=>this.ended(e))}ended(t){this.working="",this.stopped=t,this.phase="done",this.offset=0,this.redraw()}pending(){let t=this.entries().filter((e)=>!e.default);return{names:t.filter((e)=>this.picked.has(e.name)&&!this.installed.has(e.name)),dropped:t.filter((e)=>this.installed.has(e.name)&&!this.picked.has(e.name))}}marketplaceChanges(){let t=[];for(let e of this.adds.values()){let n=e.source!==
|
|
677
|
-
`)}keyBar(t,e){let n=`${
|
|
678
|
-
`);return Array.from({length:this.rows()},(e,n)=>t[n]??"")}small(t,e,n){return`Needs ${
|
|
679
|
-
${this.p.dim("esc cancels")}`}draw(){let t=this.columns(),e=this.rows();if(t<
|
|
680
|
-
`)}cards({lines:t,above:e,below:n},r,i,s){let o=t.map((u)=>` ${u}`);while(o.length<this.maxItems)o.push("");let a=[e>0?` ${this.more(-1,`↑ ${e} more`)}`:"",...o,n>0?` ${this.more(1,`↓ ${n} more`)}`:""];if(!r)return[...a.map((u)=>tt(u,i,!1)),tt(` ${this.p.dim(this.detail(i-2).brief)}`,i,!1)];let c=this.panel(s-i-1,a.length);return a.map((u,f)=>`${tt(u,i)} ${c[f]??""}`)}panel(t,e){let n=this.side!=="cards",r=(S)=>n?this.p.accent(S):this.p.dim(S),i=t-4,s=(S)=>`${r("│")} ${tt(S,i)} ${r("│")}`,o=this.detail(i),a=n?this.p.accent(o.title):o.title,c=e-2;if(this.current().focusedRow()?.kind!=="top"){let S=o.lines.length>c?[...o.lines.slice(0,c-1),this.p.dim("…")]:o.lines.slice(0);while(S.length<c)S.push("");return[this.edge(t,"top",a,"",n),...S.map(s),this.edge(t,"bottom","","",n)]}let u=this.inside.pins(),f=u.length>0?u.length+1:0,l=n?this.foot(i):[],d=l.length>0&&c-1-f-(l.length+1)>=$c?l:[],h=f+(d.length>0?d.length+1:0),m=o.lines.slice(0,Math.max(0,c-2-h));this.inside.maxItems=Math.max(1,c-m.length-1-h);let{lines:p,above:b,below:$}=this.inside.window(),k=p.length>0?p:[this.p.dim(" No palettes yet")];while(k.length<this.inside.maxItems)k.push("");let v=$>0?this.more(1,`↓ ${$} more`,"panel"):"";return[this.edge(t,"top",a,"",n),...m.map(s),s(b>0?this.more(-1,`↑ ${b} more`,"panel"):""),...k.map(s),...h>0?[this.edge(t,"mid","",v,n)]:[],...d.map(s),...d.length>0&&f>0?[this.edge(t,"mid","","",n)]:[],...u.map(s),this.edge(t,"bottom","",h>0?"":v,n)]}edge(t,e,n,r,i){let s=(l)=>i?this.p.accent(l):this.p.dim(l),[o="",a=""]=[...Bt(2,e)],c=n?` ${tt(n,t-8,!1)} `:"",u=r?` ${r} `:"",f=Math.max(0,t-3-B(c)-B(u)-(r?1:0));return`${s(`${o}─`)}${c}${s("─".repeat(f))}${u}${s(`${r?"─":""}${a}`)}`}helpRows(){if(this.showing==="search")return[["Move","↑↓ home end pgup pgdn"],["Filter","Any text · bksp · ctrl-u clears"],["Add","space adds it · again to undo"],["","enter adds it and goes back to its card"],["Reload","ctrl+r the list, which GitHub fills every half hour"],["Back","← esc · ← Back"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]];return[["Move","↑↓ home end pgup pgdn"],["Open","→ enter · a marketplace into the panel, a catalog"],["Back","← esc · from the panel to the marketplaces"],["Pick","space · a palette, a catalog, a marketplace"],["Filter","Any text · bksp · ctrl-u clears"],["Marketplace","↓ below its palettes, to its own actions"],["","enter updates it, turns auto-update on or off, removes it"],["Add","enter on + Add marketplace · a repository or a folder, in the panel"],["Search","enter on Search marketplace · finds one on GitHub"],["Update","ctrl+r on a palette marked ↑"],["Apply","enter reviews and applies · esc cancels"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]]}helpBox(t,e,n,r){let i=this.helpRows(),s=Math.max(...i.map(([l])=>l.length))+3,o=Math.min(e-2,6+s+Math.max(...i.map(([,l])=>B(l)))),a=Math.floor((e-o)/2),c=`│${" ".repeat(o-2)}│`,u=[`╭─ Help ${"─".repeat(o-9)}╮`,c,...i.map(([l,d])=>`│${tt(` ${this.p.bold(l.padEnd(s))}${d}`,o-4)} │`),c,`╰${"─".repeat(o-2)}╯`],f=Math.max(0,Math.min(Math.max(r,Math.floor((n-u.length)/2)),n-1-u.length));return t.map((l,d)=>{let h=u[d-f];return h===void 0?l:`${Xk(l,a)}${h}`})}}import{existsSync as T6}from"node:fs";import{existsSync as Jc,mkdirSync as g6,readFileSync as rb}from"node:fs";import{dirname as b6}from"node:path";class be extends Error{}import{closeSync as F5,mkdtempSync as L5,openSync as C5,readSync as j5,rmSync as uM}from"node:fs";import{homedir as _5,tmpdir as B5}from"node:os";import{join as lM}from"node:path";import{readFileSync as d8}from"node:fs";var St={pitch:25,cols:22,rows:9,height:13},$s={cols:25,rows:21},Pe={cols:10,rows:3,pitch:12,top:4},Oe=Pe.top+Pe.rows+1,h8=1073741824,ig=2147483648,m8=-1073741826,p8=1600,g8=56,b8=4,BS=20,w8=50,GS=[["space","unfolds a set of ×N"],["o","opens the artwork page in a browser"],["c","switches between cutouts and every post"],["a","opens the advanced filters"],["1-9","turn a tag of the tags row on or off"],["ctrl+v","tries on a picture from the clipboard — or drop one on the window"]];function sg(t){return Math.max(0,Math.floor((t-1)/Pe.pitch))}function vr(t,e){let n=e-Oe-2;return{perRow:Math.max(1,Math.floor((t-1)/St.pitch)),rowsVis:Math.max(1,Math.floor(n/St.height)),height:n}}function nf(t,e=!0){if(e)return`\x1B_Ga=t,t=f,f=100,i=${t.id},q=2;${Buffer.from(t.path).toString("base64")}\x1B\\`;let n;try{n=d8(t.path).toString("base64")}catch{return}let r=n.match(/.{1,4096}/g)??[""];return r.map((i,s)=>{let o=s<r.length-1?1:0;return s===0?`\x1B_Ga=t,f=100,i=${t.id},m=${o},q=2;${i}\x1B\\`:`\x1B_Gm=${o},q=2;${i}\x1B\\`}).join("")}function YS(t,e){let n=t.crop===void 0?"":`,x=0,y=${t.crop*e.h},w=${t.cols*e.w},h=${t.rows*e.h}`;return`\x1B[${t.row+1};${t.col+1}H\x1B_Ga=p,i=${t.id},p=${t.id}${n},c=${t.cols},r=${t.rows},C=1,z=${t.z},q=2\x1B\\`}function og(t){return`\x1B_Ga=d,d=i,i=${t},p=${t},q=2\x1B\\`}function xc(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}var At=wt("bold"),W=wt("dim"),Sc=wt("ok"),Kn=wt("warn"),yc=hr,ef=Jh,tg=!1;function rf(t){return tg=!0,t.beat}function Zo(t){return mn[rf(t)%mn.length]}function Et(t){return B(t)}function eg(t,e){if(B(t)<=e)return t;let n="";for(let r of t){if(B(n+r)>e)break;n+=r}return n}function $i(t){return Vi(t)}function ag(t){return`${wt("reverse")}${Vi(t)}`}function ki(t,e,n,r){return n?[[`${I.link} `,r,void 0,{kind:"link",url:n}],[t,e,n]]:[[t,e]]}function Qp(t){let e=Qh(t);return e?{kind:"key",key:e}:void 0}function ks(t){return t.reduce((e,[n])=>e+Et(n),0)}function $8(t,e){let n=[],r=e;for(let[i,s,o,a]of t){let c=Et(i);if(c<=r){n.push([i,s,o,a]),r-=c;continue}n.push([`${eg(i,r)}…`,s,o,a]);break}return n}class tf{parts=[];cols;constructor(t){this.cols=t}put(t,e,n="",r,i){let s=e.replace(/\p{Cc}/gu,"");return this.parts.push({col:t,text:s,sgr:n,...r?{link:r}:{},...i?{spot:i}:{}}),t+Et(s)}run(t,e){let n=t;for(let[r,i,s,o]of e)n=this.put(n,r,i,s,o);return n}mark(t,e,n){this.parts.push({col:t,text:" ".repeat(Math.max(0,e)),sgr:"",spot:n,hidden:!0})}zones(t){return this.parts.flatMap(({col:e,text:n,link:r,spot:i})=>{let s=i??(r?{kind:"link",url:r}:void 0),o=e>=0&&e<this.cols?Et(eg(n,this.cols-e)):0;return s&&o>0?[{row:t,col:e,width:o,height:1,target:s}]:[]})}right(t,e){this.run(t-ks(e),e)}center(t,e){this.run(Math.floor((t-ks(e))/2),e)}render(){let t="";for(let{col:e,text:n,sgr:r,link:i,hidden:s}of this.parts){if(s||e>=this.cols||e<0)continue;let o=eg(n,this.cols-e);t+=`\x1B[${e+1}G${r}${zu(o,i)}${r?Se:""}`}return t}}function k8(t){return t.replace(/_\([^)]*\)?$/,"")}function VS(t){return[`${t.reduced?"↓":""}${t.width}×${t.height}`,Math.max(t.width,t.height)<p8?Kn:W]}function Ec(t,e,n){let r=[...n.keys??[]],i=n.lead,s=n.right,o=()=>{let u=[...i?[ks(i)]:[],...r.map(([l,d])=>Et(l)+1+Et(d))];return(n.badge?Et(n.badge)+4:0)+u.reduce((l,d)=>l+d,0)+3*Math.max(0,u.length-1)+(s?3+Et(s[0])+1+Et(s[1]):0)};while(o()>e)if(r.length>2)r.splice(-2,1);else if(s)s=void 0;else if(r.length>1)r.splice(-2,1);else break;if(i&&o()>e)i=$8(i,Math.max(0,ks(i)-(o()-e)-1));let a=0;if(n.badge)a=t.put(0,` ${n.badge} `,wt("pill"))+2;if([...i?[i]:[],...r.map(([u,f])=>[[u,At,void 0,Qp(u)],[` ${f}`,W,void 0,Qp(u)]])].forEach((u,f)=>{a=t.run(a+(f?3:0),u)}),s){let u=Qp(s[0].split(" ")[0]??"");t.right(e,[[s[0],At,void 0,u],[` ${s[1]}`,W,void 0,u]])}}function y8(t,e){if(t==="d")return W;if(t==="b")return At;if(t==="s")return ef(e.colors.selection);if(t==="c")return ef(e.colors.cursor);let n=/^([BK]?)(\d+)$/.exec(t);if(!n)return"";let r=Number(n[2]);if(n[1]==="K")return`${Vi(0)}${Jk(r)}`;return`${n[1]==="B"?At:""}${Vi(r)}`}function v8(t,e,n,r,i){let s=Vt.indexOf(Xi(r.scene)),o=Vt.flatMap((c,u)=>[...u?[[" ",""]]:[],[c.name,u===s?At+i:W,void 0,{kind:"scene",scene:u}]]),a=ks(o)<=n;t?.run(e,a?o:[[Xi(r.scene).name,At+i],[` ${s+1}/${Vt.length}`,W]])}function S8(t,e,n,r,i,s,o){let{ansi:a,cursor:c}=s.colors;v8(t[e-2],n,r,s,o);let u=r<Hy?3:4;if(r>=56)u=Math.min(7,Math.floor((r+1)/8)-1);let f=n;for(let d=0;d<8;d++)f=(t[e]?.put(f,"▀".repeat(u),yc(a[d]??c)+ef(a[d+8]??c))??f)+1;let l=e+2;for(let d of Xi(s.scene).lines){let h=So(d,r);if(!h)continue;if(l>i)return;t[l]?.run(n,h.map(([m,p])=>[m,y8(p,s)])),l++}}function E8(t,e,n){let r=[[]];for(let o of t){let a=r[r.length-1];if(a.length===0||Et([...a,o].join(" "))<=e)a.push(o);else if(r.length<n)r.push([o]);else break}let i=r.reduce((o,a)=>o+a.length,0),s=r[r.length-1];while(i<t.length&&s.length>0&&Et([...s,`+${t.length-i}`].join(" "))>e)s.pop(),i--;if(i<t.length)s.push(`+${t.length-i}`);return r.flatMap((o)=>o.length>0?[o.join(" ")]:[])}function US(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function M8(t,e,n){return t.flatMap((r,i)=>[...i>0?[[" ",""]]:[],[r,""],...(e[r]??[]).flatMap((s)=>[[" ",""],...ki(s.kind,"",s.url,n)])])}function x8(t,e,n,r,i){let s=r.info,o=s?.artists??[],a=$i(r.tiles[r.focus]?.siteAnsi??r.siteAnsi);[["Post",s?.page?ki(US(s.page),"",s.page,a):[["—",W]]],["Source",s?.source?ki(US(s.source),"",s.link,i):[["—",W]]],["Artist",o.length>0?M8(o,s?.profiles??{},i):[["—",W]]]].forEach(([u,f],l)=>{t[e+l]?.put(n,u,W),t[e+l]?.run(n+12,f)})}function O8(t,e,n,r,i,s){let o=s.info,a=s.tiles[s.focus];if(!o||!a)return;let c=s.shown?.id===a.key?s.shown:void 0,u=n+12,f=Math.max(12,r-12),l=[`${a.width}×${a.height}${o.ext?` ${o.ext.toUpperCase()}`:""}`,...c?[jl(c.bytes)]:[]].join(" · "),d=[o.rating??"—",a.score>0?`★${a.score}`:"",o.posted??""].filter(Boolean).join(" · "),h=(b,$)=>b.length>0?E8(b,f,$).map((k)=>[[k,""]]):[[["—",W]]],m=[["Characters",h(o.characters,2)],["Series",h(o.series,1)],["Tags",h(o.tags,3)],["Rating",[[[d,d==="—"?W:""]]]],["File",[[[l,""],...c?[[" ",""]]:[],...c?ZS(c):[]]]],["Uploader",[[o.uploader?[o.uploader,""]:["—",W]]]]],p=e;for(let[b,$]of m){if(p+$.length-1>i)return;t[p]?.put(n,b,W);for(let k of $)t[p]?.run(u,k),p++}}var P8=["Size","Position","Opacity"],I8=[0,3,6];function R8(t,e){let{tune:n,untuned:r}=t;return e===0?n.size!==r.size:e===1?n.at!==r.at:n.opacity!==r.opacity}function A8(t){return t.toFixed(2)}function N8(t,e,n,r,i,s){let o=i.tuning;if(!o)return;let a=i.tiles[i.focus];t[e-3]?.run(n,[[i.palette,At+s],[" Background",W],...a?[[" · ",W],...ki(`${a.site} ${a.id}`,W,a.page||void 0,$i(a.siteAnsi))]:[]]);let c=Math.max(8,r-n-21),u=20,f=Math.max(100,o.fill);for(let[l,d]of P8.entries()){let h=e+I8[l],m=o.field===l,p=m?At:W;if(m)t[h]?.put(n,"▶",s,void 0,{kind:"field",field:l});t[h]?.put(n+2,d,p,void 0,{kind:"field",field:l});let b;if(l===1){for(let $=1;$<=9;$++){let k=$===i.tune.at,v=t[e+2+Math.floor(($-1)/3)],S=n+12+($-1)%3*3;v?.mark(S-1,3,{kind:"place",at:$}),v?.put(S,k?"■":"·",k?At+s:W)}b=Jt[i.tune.at-1]??"center"}else{let $;if(l===0){let{size:k}=i.tune;$=k==="fill"?c-1:Math.floor((k-u)*(c-1)/(f-u+1)),b=k==="fill"?"fill":`${k}%`}else $=Math.floor(Math.round(i.tune.opacity*100)*(c-1)/100),b=A8(i.tune.opacity);$=Math.max(0,Math.min(c-1,$)),t[h]?.run(n+12,[["━".repeat($),s],["●",At],["─".repeat(c-1-$),W]]),t[h]?.mark(n+12,c,{kind:"track",field:l})}if(t[h]?.right(r-2,[[b,p]]),R8(i,l))t[h]?.put(r-1,"↺",m?At+s:W)}}function T8(t,e,n,r,i,s){t[e]?.put(n,`╭${"─".repeat(i-2)}╮`,s);for(let o=e+1;o<e+r-1;o++)t[o]?.put(n,"│",s),t[o]?.put(n+i-1,"│",s);t[e+r-1]?.put(n,`╰${"─".repeat(i-2)}╯`,s)}function ng(t,e=t.site,n=t.siteAnsi){return[` ${e} `,ag(n)]}function vc(t){return`${Z[Math.floor(t/Wr)]?.name??"local"} ${t%Wr}`}function kc(t,e,n){let r=Z[Math.floor(e/Wr)],i=vc(e),s=t.indexOf(i);if(!r||s===-1)return[[t,n]];return[[t.slice(0,s),n],...ki(i,n,r.pageUrl(e%Wr),$i(r.ansi)),[t.slice(s+i.length),n]].filter(([a])=>a!=="")}function H8(t,e,n){let r=[{name:"all",moved:!1},...Z].flatMap((s,o)=>{let a=`${s.name}${s.moved?"*":""}`,[c,u]=s.name===n.site?ng(n,a):[` ${a} `,W],f=[c,u,void 0,{kind:"site",tab:o}];return o?[[" ",""],f]:[f]}),i=ks(r)<=e;t.run(0,i?r:[ng(n)])}function F8(t,e,n,r){if(n.chips.length===0)return;let i=[["tags ",W]],s=Et("tags "),o=n.chips.length;for(let[a,c]of n.chips.entries()){let u=` ${a+1} ${c.name} `;if(s+Et(u)+1>e-2)break;i.push([u,c.on?`${wt("reverse")}${r}`:W,void 0,{kind:"chip",index:a}],[" ",""]),s+=Et(u)+1,o--}if(o>0)i.push([`+${o}`,W]);t.run(0,i)}function L8(t,e,n,r,i){t[Oe-1]?.put(0,"─".repeat(n-1),W);let s=t[Pe.top-1],o=sg(n),a=r.held.length>o?Math.max(0,o-1):r.held.length;for(let[c,u]of r.held.slice(0,a).entries()){let f=c*Pe.pitch,l=u.up?At:"";if(s.run(f+1,u.page?ki(String(u.id),l,u.page,$i(u.ansi)):[["● ",$i(u.ansi)],[String(u.id),l]]),u.up)for(let d=0;d<Pe.rows;d++)t[Pe.top+d]?.put(f,"▌",i);if(u.thumb)e.push({id:h8+c,path:u.thumb,row:Pe.top,col:f+1,cols:Pe.cols,rows:Pe.rows,z:-1})}if(a<r.held.length)s.put(a*Pe.pitch+1,`+${r.held.length-a}`,W)}function C8(t,e,n,r){if(n.editing!==void 0){let c=t.run(0,[["⌕ ",r],[n.editing,""],["█",r]]),u=n.suggest?.length?" ↑↓ pick enter searches":" enter searches";t.put(c,n.editing?u:` A tag, a post URL or an id, or drop a picture or ctrl+v — ${n.tag||"esc leaves"}`,W);return}let i=t.run(0,[["⌕ ",r,void 0,{kind:"query"}],[n.tag||"Nothing yet — / searches, ctrl+v pastes a picture",n.tag?"":W,void 0,{kind:"query"}]]),s=Ti.filter((c)=>!n.block.includes(c)),o=Z.filter((c)=>!n.enabled.includes(c.name)).map((c)=>c.name),a=[n.preset,...n.solo?["solo"]:[],n.order,...n.rating.join("+")==="safe"?[]:[n.rating.join("+")],...s.length>0?[`allows ${s.join("+")}`]:[],...n.narrow.size>0?[`≥${n.narrow.size}px`]:[],...n.narrow.score>0?[`score≥${n.narrow.score}`]:[],...n.narrow.png?["png"]:[],...n.hide.length+n.hideTags.length>0?[`hides ${[...n.hide,...n.hideTags].join("+")}`]:[],...o.length>0?[`all skips ${o.join("+")}`]:[]];if(t.put(i,` ${a.join(" ")}`,W),n.total>0||!n.searching){let c=[[`${n.tiles.length}/${n.checked}`,""]];if(n.checked<n.total)c.push([` of ${n.total}`,W]);t.right(e,c)}}function ZS(t){if(t.cut==="on")return[[`Cut out · ${t.clear}% transparent`,Sc]];if(t.cut==="off")return[["Opaque · x cuts out",Kn]];if(t.cut==="failed")return[["Opaque · no cut-out",Kn]];return[t.clear>0?[`${t.clear}% transparent`,Sc]:["Opaque",Kn]]}function WS(t){return t.site==="all"?"any site":t.site}function rg(t,e){if(t.installing!==void 0)return kc(`${Zo(t)} Installing ${t.palette} ← ${vc(t.installing)}`,t.installing,Kn);if(t.hint)return[[t.hint,Sc]];if(t.error)return[[t.error,Kn]];if(t.waiting!==void 0)return[[`${t.slow??t.site} asked to slow down · ${t.waiting}s`,Kn]];if(t.fetching){let{id:n,got:r,size:i}=t.fetching;return kc(`${Zo(t)} Fetching ${vc(n)} · ${_l(r,i)}`,n,Kn)}if(t.cutting!==void 0)return kc(`${Zo(t)} Cutting out ${vc(t.cutting)}`,t.cutting,Kn);if(t.preparing!==void 0)return kc(`${Zo(t)} Preparing ${vc(t.preparing)}`,t.preparing,Kn);if(e)return[e];if(t.saved)return kc(t.saved.text,t.saved.key,Sc);if(t.note)return[[t.note,W]];return}function XS(t){if(t.ranking)return"Ranking previews by palette colors";if(t.stage==="check")return t.preset==="cutouts"?"Checking PNG headers":"Loading previews";return"Fetching posts"}function QS(t,e){return t.ranking?`${e}${t.ranking.done}/${t.ranking.total}`:""}function j8(t,e,n,r,i){let{background:s,cursor:o,selection:a}=r.colors,{ranking:c}=r,u=c?Math.round(n*c.done/c.total):-1,f=Math.max(6,Math.round(n*0.22)),l=rf(r)%(BS*2)/BS,d=Math.round((n-f)*(0.5-0.5*Math.cos(Math.PI*(l<1?l:2-l)))),h=Nt(s,o,i),m=Nt(s,Nt(a,s,0.15),i),p=Array.from({length:n},($,k)=>{let v=(u>=0?k<u:k>=d&&k<d+f)?h:m;return k===0||k===n-1?Nt(v,s,0.55):v}),b=0;for(let $=1;$<=n;$++)if($===n||p[$]!==p[b])t?.put(e+b," ".repeat($-b),ef(p[b])),b=$}function _8(t,e,n,r,i){let{background:s,foreground:o}=i.colors,a=i.loaderFrom===void 0?0:Math.min(1,(rf(i)-i.loaderFrom)/b8),c=e+(n>=5?Math.floor((n-5)/2):0);t[c]?.center(r,[[XS(i),At+yc(Nt(s,o,a))],[QS(i," "),yc(Nt(s,Nt(o,s,0.45),a))]]);let u=Math.min(g8,r-8);if(j8(t[c+(n>=3?2:1)],Math.floor((r-u)/2),u,i,a),n<5)return;t[c+4]?.center(r,i.sites.flatMap(({name:f,arrived:l},d)=>[...d?[[" · ",yc(Nt(s,o,0.25*a))]]:[],[f,yc(Nt(s,l?Nt(o,s,0.2):o,l?a:0.32*a))]]))}function B8(t,e,n,r,i,s){if(i<=r)return;let o=Math.max(1,Math.round(r*r/i)),a=Math.max(0,Math.min(r-o,Math.round(n.scroll*r/i)));for(let c=0;c<r;c++){let u=c>=a&&c<a+o;t[Oe+c]?.put(e-1,u?"┃":"│",u?s:W)}}function G8(t,e,n){if(e)return[`${Zo(t)} ${XS(t)}${QS(t," · ")}`,W];let r=n.filter((s)=>!s.missing),i=r.filter((s)=>s.thumb).length;return i<r.length?[`${Zo(t)} Loading thumbnails · ${i}/${r.length}`,W]:void 0}function U8(t,e,n,r,i,s,o){let{perRow:a,rowsVis:c,height:u}=vr(r,i);C8(t[0],r,s,o),H8(t[1],r,s),F8(t[2],r,s,o),L8(t,e,r,s,o);let f=t.map((R,T)=>T>=Oe&&T<Oe+u?R:void 0),l=Math.floor(s.scroll/St.height),d=Math.floor((s.scroll+u-1)/St.height),h=[];for(let R=l;R<=d;R++){let T=Oe+R*St.height-s.scroll;for(let _=0;_<a;_++){let K=R*a+_,G=_*St.pitch,L=s.tiles[K];if(!L)continue;h.push(L);let gt=Math.max(T,Oe),Xt=Math.min(T+St.height,Oe+u);if(Xt>gt)n.push({row:gt,col:G,width:St.pitch-1,height:Xt-gt,target:{kind:"tile",index:K}});let it=K===s.focus;if(it)T8(f,T,G,St.height,St.pitch-1,o);let Ar=T+1,We=Math.max(Ar,Oe),Sn=Math.min(Ar+St.rows,Oe+u);if(L.thumb&&Sn>We)e.push({id:L.key,path:L.thumb,row:We,col:G+1,cols:St.cols,rows:Sn-We,...Sn-We<St.rows?{crop:We-Ar}:{},z:-1});let Hs=[...s.installed.includes(L.key)?[["✓ ",Sc]]:[],...L.page||s.site!=="all"?ki(String(L.id),it?At:"",L.page||void 0,$i(L.siteAnsi)):[["● ",$i(L.siteAnsi)],[String(L.id),it?At:""]],[" ",""],VS(L)],tu=St.cols-(L.mates.length>0?1:0);if(f[T+10]?.run(G+1,ks(Hs)>tu?Hs.map(([Qf,td,ed])=>[Qf.replace(/^(\S) $/,"$1"),td,ed]):Hs),L.mates.length>0)f[T+10]?.put(G+St.cols,"≈",o);f[T+11]?.put(G+1,L.artist?k8(L.artist).slice(0,St.cols-8):"—",W);let Ei=[];if(L.score>0)Ei.push([`★${L.score}`,W]);if(L.variants>1)Ei.push([` ×${L.variants}`,o]);if(Ei.length>0)f[T+11]?.right(G+St.cols+1,Ei)}}let m=Math.ceil(s.tiles.length/a)*St.height;B8(t,r,s,u,m,o);let p=Math.max(Oe,Oe+m-s.scroll),b=Oe+u-p,$=s.searching&&b>=2;if($)_8(f,p,b,r-1,s);let k=s.searching&&s.tiles.length===0;if(k&&!s.error){let[R,T]=GS[Math.floor(rf(s)/w8)%GS.length];t[i-2]?.run(0,[["Tip ",W],[R,At],[` ${T}`,W]])}let v=s.top*a,S=s.tiles.length-(s.top+c)*a,M=[...v>0?[`↑ ${v} above`]:[],...S>0?[`↓ ${S} more`]:[]];if(M.length>0)t[i-2]?.put(0,M.join(" "),W);if(!s.searching&&s.tiles.length===0&&!s.error&&s.tag)t[Oe+1]?.put(0,s.preset==="cutouts"?`No transparent cutouts of ${s.tag} on ${WS(s)} — c searches every post, tab tries ${s.nextSite}`:`No posts of ${s.tag} on ${WS(s)} — tab tries ${s.nextSite}`,W);let x=G8(s,$,h),N=rg(s,x);return Ec(t[i-1],r,{badge:"IMAGE SEARCH",lead:N,keys:k&&N?.[0]===x?[]:[["←↑↓→","move"],["enter","try on"],["tab","site"],["ctrl+v","picture"],["s","settings"],["/","search"],["?","keys"]],right:["esc","back"]}),$}function W8(t,e,n,r,i,s){let o=i.tiles[i.focus];if(!o)return;let a=i.shown?.id===o.key?i.shown:void 0,c=[ng(i,o.site,o.siteAnsi),[" ",""],...ki(String(o.id),At,o.page||void 0,$i(o.siteAnsi)),[" ",""],VS(o)];if(o.score>0)c.push([` · ★${o.score}`,W]);if(a)c.push([` · ${jl(a.bytes)}`,W]);if(a){if(c.push([" ",""],...ZS(a)),i.coloring==="original")c.push([" · own colors",W])}if(t[0]?.run(0,c),o.mates.length>0)t[0]?.right(n,[["≈ ",s],[o.mates.join(" "),W]]);if(x8(t,1,2,i,s),i.tuning)N8(t,8,2,2+Math.min(n-4,60),i,s);else if(i.details)O8(t,5,2,Math.min(n-4,Math.max(48,Math.floor(n*0.55))),r-2,i);else S8(t,7,2,n-4,r-2,i,s);if(i.shown)e.push({id:ig+i.shown.id,path:i.shown.path,row:0,col:0,cols:n,rows:r,z:m8});if(i.tuning){Ec(t[r-1],n,{badge:"IMAGE EDIT",lead:rg(i),keys:[["↑↓","field"],["←→","step"],["=","reset"],["+","reset all"],i.tuning.field===1?["1-9","place"]:["⇧←→","×10"],["c","colors"],["enter","keep"]],right:["esc","undo"]});return}let u=rg(i);Ec(t[r-1],n,{badge:"IMAGE PREVIEW",lead:u,keys:i.installing===void 0?[["←→","browse"],["enter","install"],["t","tune"],["c","colors"],["i","details"],...i.details?[]:[["⇧←→","example"]],...i.shown?.cut==="on"||i.shown?.cut==="off"?[["x","cut out"]]:[],["?","keys"]]:[],right:i.installing===void 0?["esc","grid"]:void 0})}var K8=[["Field","↑↓ size, position, opacity"],["Step","←→ · ⇧←→ ×10"],["Place","1-9 the nine positions"],["Reset","= this field back to its default · + every field"],["Colors","c the palette's tone or its own colors, opacity back to its default"],["Keep","enter back to try, installed with the picture"],["Undo","esc"],["Close","? esc"]],z8={grid:[["Move","←↑↓→ j k home end pgup pgdn"],["Try on","enter"],["Site",`tab shift+tab all, ${Z.map((t)=>t.name).join(", ")}`],["Posts","c cutouts or every post"],["Search","/ a tag, a post URL or an id"],["Tags","1-9 turn a tag of the tags row on or off — the palette's own, then danbooru's related characters"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window or paste its link"],["Unfold","space a set of ×N"],["Open","o the artwork page in a browser · O the post page"],["Settings","s rating, block, posts, solo, order, sets, remove bg"],["Advanced","a or Advanced › in settings min score, min size, sites, hide, hide tags, PNG only"],["Back","esc returns to preview"],["Close","? esc"]],try:[["Browse","←→"],["Install","enter"],["Tune","t size, position and opacity, installed with the picture"],["Colors","c the palette's tone or its own colors, installed with the picture"],["Details","i characters, series, tags, rating and file, under Post, Source and Artist"],["Example",`⇧←→ ${Vt.map((t)=>t.name.toLowerCase()).join(", ")}`],["Cut out","x the background off or on, on an opaque picture"],["Open","o the artwork page in a browser · O the post page"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window"],["Grid","esc"],["Close","? esc"]]},cg=6,D8=24;function Mc(t){return[...t.settings.flatMap((e,n)=>Boolean(e.advanced)===t.advanced?[n]:[]),t.settings.length]}function q8(t){return t.replace(/^[A-Z](?=[a-z])/,(e)=>e.toLowerCase())}function KS(t){let e=t.settings.filter((n)=>Boolean(n.advanced)!==t.advanced).map((n)=>q8(n.label));return`${t.advanced?"Back to":"More filters:"} ${e.join(", ")} — enter opens the page, or a from any row`}function tE(t,e,n){let r=t.indexOf(e);if(r!==-1)return t[(r+n+t.length)%t.length];let i=Number(e)||0;return(n>0?t.find((o)=>(Number(o)||0)>i):t.findLast((o)=>(Number(o)||0)<i))??t[n>0?0:t.length-1]}function ws(t,e){let n=[],r="";for(let i of t.split(" "))if(r&&Et(r)+1+Et(i)>e)n.push(r),r=i;else r=r?`${r} ${i}`:i;return r?[...n,r]:n}function J8(t){if(t.entry!=="number"||t.choices.includes(t.value))return t.choices;let e=t.choices.findIndex((n)=>(Number(n)||0)>Number(t.value));return e===-1?[...t.choices,t.value]:t.choices.toSpliced(e,0,t.value)}function Y8(t,e,n,r){let i=ag(r),s=e&&n!==void 0;if(t.entry==="text")return[{text:` ${s?`${n}█`:t.value||"none"} `,sgr:s||e&&t.value?i:t.value?"":W}];let o=s?[]:t.value.split(" "),a=(s?t.choices:J8(t)).map((c,u)=>{let f=o.includes(c),l=t.multi&&e&&u===t.cursor?wt("under"):"";return{text:t.multi?` ${f?"[x]":"[ ]"} ${c} `:` ${c} `,sgr:f?e?`${l}${i}`:"":l?`${l}${W}`:W,choice:c}});return s?[...a,{text:` ${n}█ `,sgr:i}]:a}function zS(t){if(t.entry==="text")return[{text:" ".repeat(D8),sgr:""}];let e=t.choices.map((n)=>({text:t.multi?` [x] ${n} `:` ${n} `,sgr:""}));return t.entry==="number"?[...e,{text:` ${"0".repeat(cg)}█ `,sgr:""}]:e}function V8(t){return t.reduce((e,n)=>e+Et(n.text)+1,0)-1}function DS(t,e){let n=[[]],r=0;for(let i of t){let s=Et(i.text)>e?{...i,text:` …${Array.from(i.text).slice(-(e-2)).join("")}`}:i;if(r>0&&r+Et(s.text)>e)n.push([]),r=0;n[n.length-1]?.push(s),r+=Et(s.text)+1}return n}function qS(t){if(t.multi&&t.choices.every((e)=>t.default.split(" ").includes(e)))return"Default all";return`Default ${t.default&&t.default!==t.multi?.none?t.default:"none"}`}function JS(t){if(!t.tag)return"";if(!t.counts)return`${t.tag}: counting…`;let e=t.counts.map(({site:n,count:r})=>`${n} ${r===void 0?"no count":r.toLocaleString("en-US")}`);return`${t.tag}: ${e.join(" · ")}`}function Z8(t,e){let n=t.advanced?"basic":"advanced";if(!e)return{keys:[["↑↓","setting"],["enter",n],["s","save"]],right:["esc","undo"]};if(t.typing!==void 0)return{keys:[["⌫","erase"],["enter","done"]],right:["esc","cancel"]};if(e.entry)return{keys:[["↑↓","setting"],...e.entry==="number"?[["←→","step"]]:[],["a",n],["enter","type"],["s","save"]],right:["esc","undo"]};return{keys:[["↑↓","setting"],["←→","value"],["a",n],...e.multi?[["space","toggle"]]:[],["enter","save"]],right:["esc","undo"]}}function X8(t,e,n,r,i){let s=r.panel??0,o=r.settings.length,c=6+Math.max(...r.settings.map((L)=>Et(L.label))),u=Math.max(...r.settings.map((L)=>Et(qS(L)))),f=c+Math.max(...r.settings.map((L)=>V8(zS(L))))+u+5,l=Math.min(e-2,Math.max(48,f)),d=l-c-u-5,h=l-7,m=[!1,!0].map((L)=>({advanced:L,rows:Mc({settings:r.settings,advanced:L}).slice(0,-1)})),p=r.settings.map((L)=>DS(zS(L),d).length),b=Math.max(...m.map((L)=>L.rows.reduce((gt,Xt)=>gt+p[Xt],0))),$=Math.max(...m.map((L)=>ws(KS({settings:r.settings,advanced:L.advanced}),h).length),...r.settings.map((L)=>ws(L.about,h).length)),k=`${r.tag}: ${Z.map((L)=>`${L.name} 0,000,000`).join(" · ")}`,v=r.tag?Math.max(ws(k,h).length,ws(JS(r),h).length):0,S=b+$+v+8,M=Math.floor((e-l)/2),x=Math.max(1,Math.floor((n-1-S)/2)),N=ag(r.siteAnsi);t[x]?.put(M,`╭─ Settings ${"─".repeat(Math.max(0,l-13))}╮`);for(let L=x+1;L<x+S-1;L++)t[L]?.put(M,`│${" ".repeat(l-2)}│`);let R=x+2;for(let L of Mc(r).slice(0,-1)){let gt=r.settings[L],Xt=L===s;if(Xt)t[R]?.put(M+2,"▶",i);if(t[R]?.mark(M+2,c-3,{kind:"setting",index:L}),t[R]?.put(M+4,gt.label,Xt?At:""),gt.value!==gt.default)t[R]?.right(M+l-3,[[qS(gt),W]]);DS(Y8(gt,Xt,r.typing,r.siteAnsi),d).forEach((it,Ar)=>{let We=M+c;for(let Sn of it)We=(t[R+Ar]?.put(We,Sn.text,Sn.sgr,void 0,{kind:"choice",index:L,choice:Sn.choice})??We)+1}),R+=p[L]}let T=m.find((L)=>L.advanced!==r.advanced)?.rows??[],_=t[x+3+b];if(_){if(s===o)_.put(M+2,"▶",i);let L=_.put(M+3,r.advanced?" ‹ Basic ":" Advanced › ",s===o?N:At,void 0,{kind:"setting",index:o});if(T.some((gt)=>r.settings[gt]?.value!==r.settings[gt]?.default))_.put(L+1,"•",W)}t[x+5+b]?.put(M+2,"─".repeat(l-4),W),ws(r.settings[s]?.about??KS(r),h).forEach((L,gt)=>{t[x+6+b+gt]?.put(M+4,L)}),ws(JS(r),h).forEach((L,gt)=>{t[x+6+b+$+gt]?.put(M+4,L,W)}),t[x+S-1]?.put(M,`╰${"─".repeat(l-2)}╯`);let{keys:K,right:G}=Z8(r,r.settings[s]);Ec(t[n-1],e,{keys:K,right:G})}function Q8(t,e,n,r){let i=r.tuning?K8:z8[r.mode],s=Math.min(e-2,Math.max(50,...i.map(([,l])=>Et(l)+16))),o=i.map(([l,d])=>({label:l,parts:ws(d,s-16)})),a=o.reduce((l,{parts:d})=>l+d.length,0)+4,c=Math.floor((e-s)/2),u=Math.max(2,Math.floor((n-a)/2));t[u]?.put(c,`╭─ Help ${"─".repeat(s-9)}╮`);for(let l=u+1;l<u+a-1;l++)t[l]?.put(c,`│${" ".repeat(s-2)}│`);let f=u+2;for(let{label:l,parts:d}of o){t[f]?.put(c+3,l,At);for(let h of d)t[f]?.put(c+13,h),f++}t[u+a-1]?.put(c,`╰${"─".repeat(s-2)}╯`),Ec(t[n-1],e,{badge:"HELP",right:["? esc","close"]})}function t3(t,e,n){let r=e.suggest??[],i=r.map((a)=>a.alias??(a.count>0?String(a.count):a.palette??"0")),s=Math.max(...r.map((a)=>Et(a.value))),o=Math.max(7,...i.map(Et));r.forEach((a,c)=>{let u=c===e.pick,f=t[1+c];f?.run(0,[[u?"▸ ":" ",n,void 0,{kind:"suggest",index:c}],[a.value,u?At+n:"",void 0,{kind:"suggest",index:c}]]),f?.right(2+s+2+o,[[i[c],W]])})}function Ql(t,e=[]){return[...e,...t.flatMap((n,r)=>n.zones(r))]}function ug(t,e,n){let r=Array.from({length:n},()=>new tf(e)),i=[],s=[],o=wt("accent");if(tg=!1,e<$s.cols||n<$s.rows)return r[0]?.put(0,"ttheme find",At+o),r[1]?.put(0,`Needs ${$s.cols}×${$s.rows} — now ${e}×${n}`),r[2]?.put(0,"esc quits",W,void 0,{kind:"key",key:"esc"}),{lines:r.map((c)=>c.render()),images:i,zones:Ql(r),loader:!1,tick:!1};let a=!1;if(t.mode==="try")W8(r,i,e,n,t,o);else a=U8(r,i,s,e,n,t,o);if(t.mode==="grid"&&t.editing!==void 0&&t.suggest?.length){for(let c=1;c<n-1;c++)r[c]=new tf(e);return t3(r,t,o),{lines:r.map((c)=>c.render()),images:[],zones:Ql(r),loader:!1,tick:!1}}if(t.help||t.panel!==void 0){let c=t.mode==="try"?i:[];for(let u=0;u<n;u++)r[u]=new tf(e);if(t.help)Q8(r,e,n,t);else X8(r,e,n,t,o);return{lines:r.map((u)=>u.render()),images:c,zones:Ql(r),loader:!1,tick:!1}}return{lines:r.map((c)=>c.render()),images:i,zones:Ql(r,s),loader:a,tick:tg}}var e3=130,n3=38,r3=96,i3=28,Pc=[{id:"shell",scenes:["Diff","Logs","Shell"],name:"zsh",tail:!0},{id:"code",scenes:["Editor"],name:"nvim",tail:!1},{id:"monitor",scenes:["Top"],name:"htop",tail:!1}],s3={Shell:[0,1,2,3,4,6,7,9,10,12,14],Diff:[0,1,3,4,6,7,8,9,10,15],Logs:[0,1,2,3,4,5,6,7,8,9,10]},eE=(t)=>Array.from({length:8},(e,n)=>`«K${t+n}» «»`).join(" "),o3=["«2»❯ «»colortest",`«d»0-7 ${eE(0)}`,`«d»8-15 ${eE(8)}`],nE=2;function a3(t){let e=Pc.length;return Pc[(t%e+e)%e]}function sE(){return Pc.map((t)=>t.name)}function Ic(t,e,n){let r=t>=e3&&e>=n3?"full":t>=r3&&e>=i3?"tabs":void 0;if(!r)return;let i=r==="full"?t>=140?47:38:37,s=t-i-1,o=i+1+nE,a=i+s-nE,c=3,u=e-3,f={col:o,row:c,cols:a-o+1,rows:u-c+1},l={col:o+1,row:c+3,cols:f.cols-2,rows:u-c-3},d=[{row:c,col:o,length:f.cols,down:!1},{row:c+2,col:o,length:f.cols,down:!1},{row:u,col:o,length:f.cols,down:!1},{row:c,col:o,length:u-c+1,down:!0},{row:c,col:a,length:u-c+1,down:!0}],h=a3(n);return{tier:r,side:i,width:s,frame:f,title:{col:l.col,row:c+1,cols:l.cols,rows:1},inner:l,rules:d,tiles:[{id:h.id,name:h.name,col:l.col,row:l.row,width:l.cols,rows:l.rows}]}}var Oc="«2»▎ ",rE="«3»▎ ",c3="«1»▁ ",u3=[["","«5»import«» { «4»readFile«» } «5»from «2»'node:fs/promises'"],["","«5»import«» { «5»type «6»Hex«», «4»contrast«» } «5»from «2»'./color.ts'"],["",""],["","«8»/** A palette read from disk and checked against the gate. */"],[Oc,"«5»export interface «6»Palette «»{"],[Oc," name: «6»string"],[Oc," ansi: «6»Hex«»[]"],[Oc," ratio?: «6»number"],[Oc,"}"],["",""],["","«5»const «»SIXTEEN = «3»16"],["","«5»const «»FLOOR = «3»4.5 «8»// WCAG AA for body text"],["",""],["","«5»export async function «4»load«»(path: «6»string«»): «6»Promise«»<«6»Palette«»> {"],[rE," «5»const «»text = «5»await «4»readFile«»(path, «2»'utf8'«»)"],[rE," «5»const «»colors = «s»parse(text)«».colors ?? {}"],[""," «5»if «»(colors.ansi.length !== «K3»SIXTEEN«») { «1»● needs 16 ANSI colors"],[""," «5»throw new «6»Error«»(«2»'expected sixteen colors, got '«» + colors.ansi.length)"],[""," }"],[c3," «5»const «»ratio = «4»contrast«»(colors.ansi[«3»0«»], colors.ansi[«3»7«»]) «3»● ratio is read once"],[""," «5»return «»{ name: path, ...colors, ratio: «c»r«»atio }"],["","}"],["",""],["","«5»export function «4»passes«»(palette: «6»Palette«»): «6»boolean «»{"],[""," «5»return «»(palette.ratio ?? «3»0«») >= FLOOR «8»// TODO: check the bright pairs"],["","}"]],l3=21;function f3(){return["«K4» theme.ts «s» scenes.ts «s» contrast.ts ",...u3.map(([t,e],n)=>{let r=String(n+1).padStart(3);return`${n+1===l3?`«b»${r}`:`«d»${r}`} ${t||"«» "}«»${e}`})]}function lg(t,e,n,r){let i=Math.max(1,r-t.length-2-n.length),s=0,o=`«6»${t}«b»[`;for(let[a,c]of e){let u=Math.min(i-s,Math.round(c*i));o+=`«${a}»${"|".repeat(u)}`,s+=u}return`${o}«»${" ".repeat(i-s)}${n}«b»]`}var d3=[[0.31,0.07,0],[0.22,0.02,0.03],[0.04,0.01,0],[0.52,0.12,0],[0.1,0.02,0],[0.41,0.11,0],[0.02,0,0],[0.15,0.03,0.04]],h3=["«s» 4127 kec 24 0 412G 612M «s»R 38.2 3.7 3:12.44 node dev.js"," 2210 kec 31 0 411G 1.2G «2»R«» 12.0 7.5 1:02.10 «d»/Applications/«b»Ghostty"," 3301 kec 31 0 409G 12M S 4.4 0.1 0:05.61 «b»zsh"," 3302 kec 31 0 409G 9.8M S 0.0 0.1 0:00.42 «d»├─ «b»nvim «»src/theme.ts"," 3310 kec 31 0 410G 88M S 1.2 0.5 0:03.18 «d»│ └─ «b»tsserver"," 3402 kec 24 0 409G 21M «2»R«» 0.6 0.1 0:01.02 «d»└─ «b»htop"," 501 kec 31 «4»10«» 409G 34M S 0.3 0.2 0:02.77 «b»bun «»test --watch"," 1180 kec 31 0 409G 72M «1»D«» 0.0 0.4 0:00.91 «b»rsync «»-a ~/Pictures backup:"," 812 «d»root«» «1» 4 -20«» 410G 1.5G S 3.1 9.4 0:44.02 «d»kernel_task"," 167 «d»root«» 31 0 411G 402M S 0.9 2.5 0:12.80 «d»WindowServer"," 344 «d»_mdns«» 31 0 408G 5.1M S 0.0 0.0 0:00.33 «d»mDNSResponder"],m3=["Help","Setup","Search","Filter","Tree","SortBy","Nice -","Nice +","Kill","Quit"];function p3(t,e,n){return`«${t}»${e}${" ".repeat(Math.max(0,n-B(e)))}`}function g3(t){let e=t-2,n=Math.floor((e-2)/2),r=(i)=>{let[s,o,a]=d3[i],c=`${((s+o+a)*100).toFixed(1)}%`;return lg(String(i).padStart(3),[["2",s],["1",o],["4",a]],c,n)};return[...[0,1,2,3].map((i)=>`${r(i)} ${r(i+4)}`),`${lg("Mem",[["2",0.45],["4",0.1],["3",0.07]],"9.84G/16.0G",n)} «6»Tasks: «b»214«», 1093 thr; «B2»4«» running`,`${lg("Swp",[["1",0.15]],"0.31G/2.00G",n)} «6»Load average: «b»2.14 «»1.87 «d»1.52`,`${" ".repeat(n)} «6»Uptime: «b»3 days, 04:12:55`,"",p3("K2"," PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command",e),...h3.map((i)=>i.startsWith("«s»")?`${i}${" ".repeat(Math.max(0,e-B(i.replace(/«[^»]*»/g,""))))}`:i)]}function b3(t){let e=t-2,n="",r=0;return m3.forEach((i,s)=>{let o=`F${s+1}`,a=i.padEnd(6);if(r+o.length+a.length<=e)n+=`«»${o}«K6»${a}`,r+=o.length+a.length}),`${n}«K6»${" ".repeat(Math.max(0,e-r))}`}function iE(t,e,n){if(t==="Editor")return f3();if(t==="Top")return g3(n);let r=Vt.find((o)=>o.name===t)?.lines??[],i=e?s3[t]:void 0,s=i?i.map((o)=>r[o]??""):r;return t==="Shell"?[...s.slice(0,-1),...o3,...s.slice(-1)]:s}function sf(t,e){return t.values().map((n)=>So(n,e)).filter((n)=>n!==void 0).map((n)=>{let r=0;return n.map(([i,s])=>{let o={text:i,role:s,col:r};return r+=B(i),o})}).toArray()}function w3(t){let r=t-2-B("«K4» NORMAL «s» main src/theme.ts [+] ".replace(/«[^»]*»/g,""))-B("«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% ".replace(/«[^»]*»/g,""));return`${"«K4» NORMAL «s» main src/theme.ts [+] "}${" ".repeat(Math.max(0,r))}${"«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% "}`}function $3(t,e){if(t.id==="code")return[w3(e),'«d»"src/theme.ts" 26L, 912B written'];return t.id==="monitor"?[b3(e)]:[]}function k3(t,e,n){let r=sf($3(t,e),e),i=Math.max(0,n-r.length),s=[];for(let a of t.scenes.toReversed()){let c=sf(iE(a,!1,e),e),u=sf(iE(a,!0,e),e),f=[c,u].find((l)=>s.length+l.length<=i);if(!f){if(s.length===0)s=t.tail?u.slice(u.length-i):u.slice(0,i);break}s=[...f,...s]}if(r.length===0)return s;let o=sf(Array.from({length:i-s.length},()=>t.id==="code"?"«4»~":""),e);return[...s,...o,...r]}function Rc(t){let e=Pc.find((r)=>r.id===t.id),n=t.width-2;return e?k3(e,t.width,t.rows).map((r)=>r.filter((i)=>i.col<n)):[]}function fg(t,e){let{text:n,ground:r}=aE(t);return n===e||r===e}function oE(t,e){let n=t.inner;return Pc.map((r)=>({name:r.name,count:Rc({id:r.id,name:r.name,col:n.col,row:n.row,width:n.cols,rows:n.rows}).flat().filter((i)=>fg(i.role,e)).length}))}function aE(t){if(t==="s")return{text:1,ground:3};if(t==="c")return{text:1,ground:2};let e=/^([BK]?)(\d+)$/.exec(t);if(!e)return{text:1,ground:0};let n=4+Number(e[2]);return e[1]==="K"?{text:4,ground:n}:{text:n,ground:0}}function dg(t,e){if(e>=4){let n=/^([BK]?)(\d+)$/.exec(t);return n!==null&&Number(n[2])===e-4}return e===3&&t==="s"||e===2&&t==="c"}function of(t){return t.tiles.flatMap((e)=>Rc(e).flatMap((n,r)=>n.map((i,s)=>({spot:{pane:e.id,line:r,run:s},col:i.col,text:i.text,role:i.role}))))}function hg(t,e){return t.pane===e.pane&&t.line===e.line&&t.run===e.run}function cE(t,e){let n=of(t);return(n.find((r)=>dg(r.role,e))??n[0])?.spot}function af(t,e){return e&&of(t).find((n)=>hg(n.spot,e))?.spot}function uE(t,e,n){let r=of(t);if(r.length===0)return;let i=e?r.findIndex((d)=>hg(d.spot,e)):-1;if(i<0)return r[0]?.spot;let s=r[i];if(n==="left"||n==="right")return r[(i+(n==="left"?r.length-1:1))%r.length]?.spot;if(n==="next"||n==="previous"){let d=t.tiles.map((p)=>p.id),h=d.indexOf(s.spot.pane),m=d[(h+(n==="next"?1:d.length-1))%d.length];return r.find((p)=>p.spot.pane===m)?.spot}let o=n==="up"?-1:1,a=r.filter((d)=>d.spot.pane===s.spot.pane),c=[...new Set(a.map((d)=>d.spot.line))],u=c[c.indexOf(s.spot.line)+o];if(u===void 0){let d=t.tiles.map((k)=>k.id),h=d.indexOf(s.spot.pane)+o,m=d[(h+d.length)%d.length],p=r.filter((k)=>k.spot.pane===m),b=o<0?p.at(-1)?.spot.line??0:p[0]?.spot.line??0,$=p.filter((k)=>k.spot.line===b);return($.find((k)=>k.col>=s.col)??$.at(-1))?.spot}let f=a.filter((d)=>d.spot.line===u);return(f.find((d)=>d.col<=s.col&&d.col+B(d.text)>s.col)??f.find((d)=>d.col>=s.col)??f.at(-1))?.spot}function lE(t,e){let n=of(t).find((r)=>hg(r.spot,e));return n?aE(n.role):void 0}var y3={lr:"─",du:"│",dr:"╭",dl:"╮",ru:"╰",lu:"╯",dlr:"┬",lru:"┴",dru:"├",dlu:"┤",dlru:"┼"};function fE(t){let e=new Map,n=(i,s,o)=>{let a=e.get(i)??new Map;e.set(i,a);let c=a.get(s)??new Set;a.set(s,c),c.add(o)};for(let i of t)for(let s=0;s<i.length;s++){let o=i.down?i.row+s:i.row,a=i.down?i.col:i.col+s;if(s>0)n(o,a,i.down?"u":"l");if(s<i.length-1)n(o,a,i.down?"d":"r")}let r=(i)=>y3[[...i].sort().join("")]??(i.has("l")||i.has("r")?"─":"│");return new Map(e.entries().map(([i,s])=>[i,new Map(s.entries().map(([o,a])=>[o,r(a)]))]))}import{execFile as v3}from"node:child_process";import{createHash as pE}from"node:crypto";import{existsSync as S3,mkdtempSync as E3,readFileSync as ff,rmSync as M3,statSync as gE,writeFileSync as bE}from"node:fs";import{homedir as x3,tmpdir as O3}from"node:os";import{join as cf}from"node:path";import{fileURLToPath as P3}from"node:url";import{promisify as I3}from"node:util";import{inflateSync as R3}from"node:zlib";var kn=I3(v3),uf=67108864,A3=4096,N3="/System/Library/ColorSync/Profiles/sRGB Profile.icc",gg=["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/heic"],T3=["text/uri-list","text/plain;charset=utf-8","text/plain"],mg=[...gg,"text/uri-list","text/plain"];function H3(t){try{return gE(t).isFile()}catch{return!1}}function F3(t){let e=[],n="",r="",i=!1;for(let s=0;s<t.length;s++){let o=t[s];if(r==="'")if(o==="'")r="";else n+=o;else if(r==='"')if(o==='"')r="";else if(o==="\\"&&'"\\$`'.includes(t[s+1]??""))n+=t[++s];else n+=o;else if(o==="\\"&&s+1<t.length)n+=t[++s],i=!0;else if(o==="'"||o==='"')r=o,i=!0;else if(/\s/.test(o)){if(i)e.push(n);n="",i=!1}else n+=o,i=!0}if(i)e.push(n);return e}function dE(t){if(/^file:\/\//i.test(t))try{return P3(t)}catch{return}if(t.startsWith("~/"))return cf(x3(),t.slice(2));return t.startsWith("/")?t:void 0}function Xo(t,e=H3){return t.replace(/\r\n?/g,`
|
|
671
|
+
${u} · ${se(f.length)} · ${d(r.length,"error")} · ${d(i.length,"warning")}`),r.length>0?1:0}async function dS(t,e){switch(t){case"add":await mC(Qv(t,e));return;case"remove":pC(Qv(t,e));return;case"init":await bC(e);return;case"check":return wC(e);default:throw Error(`unknown marketplace action ${t} — ${oC.join(", ")}`)}}function Qv(t,e){if(!e)throw Error(t==="add"?"marketplace add takes a repository or a folder: ttheme marketplace add alice/ttheme-dust":"marketplace remove takes a marketplace name: ttheme marketplace remove alice@pastel");return e}function hS(t,e){let n=us(t,e);return`${n} — ${se(lr(e,n,Up(t),Ce(!1)).length)}, read in place`}function mS(t){return[...t].length===1&&t>=" "&&t!==""}function $C(t){return[...t.replace(/[\r\n\t]+/g," ")].filter(mS).join("")}function ls(t,e,n=()=>!0){if(e==="backspace")return[...Yh(t)].slice(0,-1).map((r)=>r.segment).join("");if(e==="ctrl-u")return"";if(e==="ctrl-w"||e==="alt-backspace")return t.replace(/\S*\s*$/,"");return mS(e)&&n(e)?t+e:void 0}class fs{value;constructor(t=""){this.value=t}key(t){let e=ls(this.value,t);if(e===void 0)return!1;return this.value=e,!0}paste(t){this.value+=$C(t)}}var pS=16;function Ul(t,e,{share:n=0.4,span:r}={}){let i=t,s=e-i;if(s===0)return e;if(r!==void 0&&Math.abs(s)>2*r)i=e-Math.sign(s)*r,s=e-i;return i+Math.sign(s)*Math.max(1,Math.round(Math.abs(s)*n))}class zp{timer;step;paint;constructor(t,e){this.step=t,this.paint=e}start(){if(this.timer)return;let t=()=>{let e=this.step();this.paint(),this.timer=e?setTimeout(t,16):void 0};this.timer=setTimeout(t,16)}stop(){clearTimeout(this.timer),this.timer=void 0}}import{performance as kC}from"node:perf_hooks";import{StringDecoder as yC}from"node:string_decoder";var vC=30,SC=50,EC=500,MC=5,zo=Buffer.from("\x1B[M"),Kl="\x1B]1337;ReportCellSize\x07\x1B[16t\x1B[14t\x1B[18t",SS="\x1B[?1016$p\x1B[16t",ES="\x1B[?u",MS={A:"up",B:"down",C:"right",D:"left",H:"home",F:"end","1~":"home","7~":"home","3~":"delete","4~":"end","8~":"end","5~":"pgup","6~":"pgdn",I:"focus-in",O:"focus-out",Z:"shift-tab","1;2C":"shift-right","1;2D":"shift-left"},xC={"\r":"enter","\n":"enter","\t":"tab","\b":"backspace","":"backspace","\x1B":"esc","\x00":"ctrl-space"},OC={27:"esc",13:"enter",9:"tab",127:"backspace",32:"space"},PC={"[":"esc",h:"backspace",i:"tab",j:"enter",m:"enter"},IC=56,RC=57344,gS=/\[([0-?]*)([ -/]*)([@-~])/y,AC=/^\[[0-?]*[ -/]*$/,bS=/\[(<-?\d+;-?\d+;-?\d+)([Mm])/y,NC=/^\[<[-\d;]*$/,wS=/\](\d+)/y,TC=/^\]\d*$/,$S=/\]\d+;/y,HC=/^1337;ReportCellSize=([\d.]+);([\d.]+)(?:;([\d.]+))?$/,FC=/^(1[0-2]|17|4;\d{1,3});(rgba?:[0-9a-fA-F/]+)$/,xS="\x1B[200~",Wl="\x1B[201~";function LC(t){let e=xC[t];if(e)return e;let n=t.codePointAt(0)??0;if(n<27)return`ctrl-${String.fromCharCode(n+96)}`;return n<32?void 0:t}function $r(t){return{kind:"key",key:t}}function Do(t){return{events:[$r("esc")],end:t+1}}function CC(t){let e={};for(let n of t.split(":")){let r=n.indexOf("=");if(r>0)e[n.slice(0,r)]=n.slice(r+1)}return e}var jC=["left","middle","right",void 0];function Dp(t,e,n,r){if(!Number.isInteger(t)||t<0||t>=128||!(e>=0)||!(n>=0))return;let i=t&3,s={kind:"mouse",row:n,col:e,shift:(t&4)!==0,alt:(t&8)!==0,ctrl:(t&16)!==0};if(t&64)return{...s,action:"wheel",button:void 0,wheel:i%2===0?-1:1,sideways:i>=2,count:0};let o=jC[i],a=t&32?o?"drag":"move":r||!o?"release":"press";return{...s,action:a,button:o,wheel:0,sideways:!1,count:a==="press"?1:0}}function _C(t,e,n){let r=[],i=e;while(r.length<3&&i<t.length){let u=t.codePointAt(i);r.push(u),i+=u>65535?2:1}if(r.length<3)return n?{events:[],end:t.length}:void 0;let[s=0,o=0,a=0]=r,c=Math.max(s,o,a)<128?Dp(s-32,o-33,a-33,!1):void 0;return{events:c?[c]:[],end:i}}function BC(t,e,n,r,i){let s=Math.max(0,e)/i.w,o=Math.max(0,n)/i.h,a=Math.floor(s),c=Math.floor(o),u=Dp(t,a,c,r);return u&&{...u,fx:s-a,fy:o-c}}function GC(t,e,n,r,i){if(t<32||t>=127&&t<160||t>=RC)return;if(i)return t>127&&n>=33&&n<127?String.fromCharCode(n):String.fromCodePoint(t);let s=String.fromCodePoint(t);return r?Number.isInteger(e)?String.fromCodePoint(e):s.toUpperCase():s}function UC(t){let[e="",n=""]=t.split(";"),[r=Number.NaN,i=Number.NaN,s=Number.NaN]=e.split(":").map((m)=>m===""?Number.NaN:Number(m)),o=(n===""?1:Number(n.split(":")[0]))-1;if(!Number.isInteger(r)||!Number.isInteger(o)||o<0||o&IC)return[];let a=(o&1)!==0,c=(o&2)!==0,u=(o&4)!==0,f=u||c,l=OC[r],d=l??GC(r,i,s,a,f);if(d===void 0)return[];let h=u&&!c&&!a?PC[d]:void 0;if(h!==void 0)return[$r(h)];if(!f&&!(a&&l!==void 0))return[$r(l==="space"?" ":d)];return[$r([u&&"ctrl",c&&"alt",a&&"shift",d].filter(Boolean).join("-"))]}function kS(t,e,n,r){if((n==="M"||n==="m")&&e===""&&t.startsWith("<")){let[s=-1,o=0,a=0]=t.slice(1).split(";").map(Number),c=r?BC(s,o,a,n==="m",r):Dp(s,o-1,a-1,n==="m");return c?[c]:[]}if(n==="t"&&e===""){let[s,o=0,a=0]=t.split(";").map(Number),c=s===6?"cell":s===4?"window":s===8?"grid":void 0;return c?[{kind:"size",of:c,h:o,w:a}]:[]}if(n==="y"&&e==="$"&&t.startsWith("?")){let[s=0,o=0]=t.slice(1).split(";").map(Number);return[{kind:"mode",mode:s,value:o}]}if(n==="c"&&t.startsWith("?"))return[{kind:"attributes"}];if(n==="u"&&e===""){if(t.startsWith("?"))return[{kind:"keyboard",flags:Number(t.slice(1))||0}];if(/^[\d:;]*$/.test(t))return UC(t)}let i=e===""?MS[`${t}${n}`]:void 0;return i?[$r(i)]:[]}function WC(t,e,n,r){bS.lastIndex=e+1;let i=bS.exec(t);if(i)return{events:kS(i[1],"",i[2],r),end:e+1+i[0].length};gS.lastIndex=e+1;let s=gS.exec(t);if(!s){let l=t.slice(e+1);return!n&&(AC.test(l)||NC.test(l))?void 0:Do(e)}let[o,a="",c="",u=""]=s,f=e+1+o.length;if(a===""&&c===""&&u==="M")return _C(t,f,n);if(a==="200"&&u==="~"){let l=t.indexOf(Wl,f);if(l===-1)return n?{events:[{kind:"paste",text:t.slice(f)}],end:t.length}:void 0;return{events:[{kind:"paste",text:t.slice(f,l)}],end:l+Wl.length}}return{events:kS(a,c,u,r),end:f}}function KC(t){let e=HC.exec(t);if(e){let o=Number(e[3]??1);return[{kind:"size",of:"cell",h:Math.round(Number(e[1])*o),w:Math.round(Number(e[2])*o)}]}let n=FC.exec(t);if(n)return[{kind:"color",code:n[1],value:n[2]}];let[r="",i="",...s]=t.split(";");return[{kind:"osc",code:r,meta:CC(i),payload:s.join(";")}]}function zC(t,e,n){wS.lastIndex=e+1;let r=wS.exec(t),i=r?t[e+1+r[0].length]:void 0;if(i!==";"&&i!=="\x07"&&i!=="\x1B")return!n&&TC.test(t.slice(e+1))?void 0:Do(e);let s=[t.indexOf("\x07",e),t.indexOf("\x1B\\",e+2)].filter((a)=>a!==-1);if(s.length===0)return n?{events:[],end:t.length}:void 0;let o=Math.min(...s);return{events:KC(t.slice(e+2,o)),end:o+(t[o]==="\x07"?1:2)}}function DC(t,e,n){let r=t[e+2];if(r===void 0)return n?Do(e):void 0;if(!/^[A-Za-z]$/.test(r))return Do(e);let i=MS[r];return{events:i?[$r(i)]:[],end:e+3}}function qC(t,e,n,r){let i=t[e+1];if(i===void 0)return n?Do(e):void 0;if(i==="[")return WC(t,e,n,r);if(i==="]")return zC(t,e,n);if(i==="O")return DC(t,e,n);if(i==="")return{events:[$r("alt-backspace")],end:e+2};if(/^[a-z]$/.test(i))return{events:[$r(`alt-${i}`)],end:e+2};return Do(e)}function yS(t,e=!1,n){let r=[],i=0;while(i<t.length){if(t[i]==="\x1B"){let a=qC(t,i,e,n);if(!a)return{events:r,rest:t.slice(i)};r.push(...a.events),i=a.end;continue}let s=String.fromCodePoint(t.codePointAt(i)),o=LC(s);if(o)r.push($r(o));i+=s.length}return{events:r,rest:""}}function JC(t,e){for(let n=Math.min(zo.length-1,t.length-e);n>0;n--)if(t.subarray(t.length-n).equals(zo.subarray(0,n)))return t.length-n;return t.length}function YC(t){let e=[],n=0,r=t.indexOf(zo);while(r!==-1&&r+6<=t.length){e.push(t.subarray(n,r));let[s=0,o=0,a=0]=t.subarray(r+3,r+6);if(o>32&&a>32)e.push(Buffer.from(`\x1B[<${s-32};${o-32};${a-32}M`));n=r+6,r=t.indexOf(zo,n)}let i=r===-1?JC(t,n):r;return e.push(t.subarray(n,i)),{bytes:Buffer.concat(e),carry:i<t.length?t.subarray(i):void 0}}function vS(t){return $S.lastIndex=1,t.startsWith(xS)||t.startsWith("\x1B]")&&$S.test(t)}function VC(t,e){let n=t.slice(-Wl.length)+e;return t.startsWith(xS)?n.includes(Wl):n.includes("\x07")||n.includes("\x1B\\")}class qp{held="";timer;carry;pressed;wheeled;utf8=new yC("utf8");burst;cell;take;constructor(t,e=()=>!1,n=()=>{return}){this.burst=e,this.cell=n,this.take=(r)=>{let i=this.counted(r);if(i.length>0)t(i)}}counted(t){let e=kC.now();return t.filter((n)=>{if(n.kind!=="mouse")return!0;if(n.action==="wheel"){let s=n.wheel*(n.sideways?2:1),o=this.wheeled;if(o!==void 0&&o.way===s&&e-o.at<MC)return!1;return this.wheeled={at:e,way:s},!0}if(n.action==="release")n.count=this.pressed?.count??0;if(n.action!=="press"||!n.button)return!0;let r=this.pressed,i=r!==void 0&&r.button===n.button&&r.row===n.row&&Math.abs(r.col-n.col)<=1&&e-r.at<=EC;return n.count=i?r.count+1:1,this.pressed={at:e,button:n.button,row:n.row,col:n.col,count:n.count},!0})}feed(t){clearTimeout(this.timer);let e=typeof t==="string"?t:this.bytes(t);if(!this.held&&!e.includes("\x1B")&&this.burst(e)){this.settle(),this.take([{kind:"paste",text:e}]);return}if(vS(this.held)&&!VC(this.held,e)){this.held+=e;return}let{events:n,rest:r}=yS(this.held+e,!1,this.cell());if(this.held=r,this.settle(),n.length>0)this.take(n)}settle(){let t=this.held.length+(this.carry?.length??0);if(t>0&&!vS(this.held))this.wait(t===1?vC:SC)}bytes(t){let{bytes:e,carry:n}=YC(this.carry?Buffer.concat([this.carry,t]):t);return this.carry=n,this.utf8.write(e)}wait(t){clearTimeout(this.timer),this.timer=setTimeout(()=>this.flush(),t)}flush(){clearTimeout(this.timer);let t=this.carry;this.carry=void 0;let e=t&&!t.subarray(0,zo.length).equals(zo)?this.utf8.write(t):"",{events:n}=yS(this.held+e,!0,this.cell());if(this.held="",n.length>0)this.take(n)}stop(){clearTimeout(this.timer),this.held="",this.carry=void 0}}class hc{window;grid;see(t){if(t.kind!=="size")return;if(t.of==="cell")return{w:t.w,h:t.h};if(t.of==="window")this.window=t;else this.grid=t;let e=this.window,n=this.grid;return e&&n&&n.h>0&&n.w>0?{h:Math.floor(e.h/n.h),w:Math.floor(e.w/n.w)}:void 0}}class Jp{known=!1;cell;see(t){if(t.kind==="mode"&&t.mode===1016)this.known=t.value===1||t.value===2;else if(t.kind==="size"&&t.of==="cell"&&t.w>0&&t.h>0)this.cell={w:t.w,h:t.h};else if(t.kind==="attributes")return{cell:this.known?this.cell:void 0};return}}var Dl={on:"\x1B[?1049h",off:"\x1B[?1049l"},Wn={on:"\x1B[?25l",off:"\x1B[?25h"},di={on:"\x1B[?7l",off:"\x1B[?7h"},kr={on:"\x1B[?2004h",off:"\x1B[?2004l"},NS={on:"\x1B[?1004h",off:"\x1B[?1004l"},ZC={on:"\x1B[?1000h\x1B[?1002h\x1B[?1006h",off:"\x1B[?1006l\x1B[?1002l\x1B[?1000l"},OS={on:"\x1B[?1016h",off:"\x1B[?1016l\x1B[?1006h"},XC={on:"\x1B[>5u",off:"\x1B[<u",stacked:!0};function hi(t=process.env){return t.TTHEME_MOUSE==="off"?[]:[ZC]}var TS={SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGTERM:15},QC=3000;class pc extends Error{exit;constructor(t){super(t);this.exit=128+TS[t]}}var Un=[],ds=new Map,mc=new Map,PS;function IS(t){return Un.findLast((e)=>e.input===t)}var RS;function HS(t){for(let e of Un.toReversed())e.abort(t);if(!RS)RS=setTimeout(()=>{FS(),process.exit(t instanceof pc?t.exit:1)},QC).unref()}var t3=Object.fromEntries(Object.keys(TS).map((t)=>[t,()=>HS(new pc(t))]));function FS(){for(let t of Un.toReversed())t.close()}function e3(){for(let t of Un)t.reassert();Un.at(-1)?.redraw()}function AS(t){let e=t?"on":"off";for(let[n,r]of Object.entries(t3))process[e](n,r);if(process[e]("uncaughtException",HS),process[e]("exit",FS),process.platform!=="win32")process[e]("SIGCONT",e3)}function zl(){}class LS{input;output;failed;modes=[];assumed;owned=[];keys;tty;take;resized;queued=[];asking;reject=zl;open=!0;aborted=!1;enhanced=!1;constructor(t={}){if(this.input=t.input??process.stdin,this.output=t.output??process.stdout,this.tty=this.output.isTTY===!0&&this.input.isTTY===!0,this.assumed=t.assume??[],this.keys=new qp((r)=>this.deliver(r),t.burst,()=>ds.has(OS)?PS:void 0),this.failed=new Promise((r,i)=>{this.reject=i}),this.failed.catch(zl),this.tty&&!Un.some((r)=>r.tty))AS(!0);Un.push(this);let e="";for(let r of this.assumed)if(!ds.has(r))e+=r.on;for(let r of t.modes??[])e+=this.claim(r);this.write(e);let n=mc.get(this.input)??0;if(n===0)this.input.setRawMode?.(!0);if(mc.set(this.input,n+1),this.input.on("data",this.received),this.input.resume(),this.output.on("resize",this.resizing),this.output.on("error",zl),this.tty)this.write(ES)}hold(t){this.write(this.claim(t))}pixels(t){PS=t,this.hold(OS)}get cols(){return this.output.columns||80}get rows(){return this.output.rows||24}write(t){if(t&&this.open)this.output.write(t)}listen(t){this.take=t;let e=this.queued;if(this.queued=[],e.length>0)t(e)}onResize(t){this.resized=t}until(t){return Promise.race([t,this.failed])}loop(t,e=()=>{}){return this.until(new Promise((n)=>{let r=!1;this.listen((i)=>{for(let s of i){let o=r?void 0:t(s);if(o!==void 0)r=!0,n(o)}if(!r)e()})}))}ask(t,e,n,r=!0){return new Promise((i)=>{let s={hold:r,pick:(c)=>{let u=e(c);if(u===void 0)return!1;return o(u),!0}},o=(c)=>{if(clearTimeout(a),this.asking===s)this.asking=void 0;i(c),this.release()},a=setTimeout(()=>o(void 0),n);this.asking=s,this.write(t)})}abort(t){if(this.aborted)return;this.aborted=!0,this.keys.stop(),this.reject(t)}redraw(){this.resized?.()}reassert(){if(this.open)this.input.setRawMode?.(!0),this.write([...this.assumed,...this.owned].filter((t)=>!t.stacked).map((t)=>t.on).join(""))}close(){if(!this.open)return;this.keys.stop(),this.input.off("data",this.received),this.output.off("resize",this.resizing);let t="";for(let n of this.modes.toReversed()){let r=(ds.get(n)??1)-1;if(r===0)ds.delete(n),t+=n.off;else ds.set(n,r)}this.write(t),this.open=!1;let e=(mc.get(this.input)??1)-1;if(e===0)mc.delete(this.input),this.input.setRawMode?.(!1),this.input.pause();else mc.set(this.input,e);if(this.output.off("error",zl),Un.splice(Un.indexOf(this),1),this.tty&&!Un.some((n)=>n.tty))AS(!1)}received=(t)=>{if(IS(this.input)===this&&!this.aborted)this.keys.feed(t)};resizing=()=>{if(IS(this.input)===this)this.resized?.()};claim(t){this.modes.push(t);let e=ds.get(t)??0;if(ds.set(t,e+1),e>0)return"";return this.owned.push(t),t.on}deliver(t){let e=t.filter((i)=>i.kind!=="keyboard");if(e.length<t.length&&this.open&&!this.enhanced)this.enhanced=!0,this.hold(XC);let n=this.asking,r=n?e.filter((i)=>!n.pick(i)):e;if(r.length===0)return;if(!this.take||this.asking?.hold){this.queued.push(...r);return}this.take(r)}release(){if(this.take&&this.queued.length>0){let t=this.queued;this.queued=[],this.take(t)}}}async function mi(t,e){let n=new LS(t);try{return await e(n)}finally{n.close()}}var n3=3,_S={catalogs:{top:Xs,shelf:(t)=>rt(t.name)?t.catalog:void 0},marketplaces:{top:(t)=>rt(t.name)??Q,shelf:(t)=>t.catalog}};function gc(t,e){return`${t}/${e}`}function CS(t){return rt(t.name)?we(t.name):t.name}function ql(t,e){let n=e.shelf(t);return n===void 0?void 0:gc(e.top(t),n)}function Jl(t){if(t?.kind==="palette")return`palette ${t.entry.name}`;if(t?.kind==="top")return`top ${t.name}`;if(t?.kind==="catalog")return`catalog ${gc(t.top,t.name)}`;if(t?.kind==="extra")return`extra ${t.extra.key}`;return t?.kind??""}function hs(t){return t?.kind==="rule"}function Yl(t,e){return fo([t.name,rt(t.name)??"",t.native??"",t.catalog??"",...t.nativeNames??[],...Eh(t.booru)],e)}function BS(t,e,n,r="catalogs",i=[],s="tree"){let o=_S[r],a=n.trim(),c=[],u=(l)=>({kind:"palette",entry:l}),f=Map.groupBy(t.filter((l)=>!l.default),(l)=>o.top(l));for(let[l,d]of f){let h=d[0],m=a?d.filter(($)=>Yl($,a)):d;if(a&&m.length===0)continue;let p=s==="inside"||s==="tree"&&(a.length>0||e.has(l));if(s!=="inside")c.push({kind:"top",name:l,...!rt(h.name)&&l===h.catalog&&h.native?{native:h.native}:{},lead:d.find(($)=>$.lead)??h,expanded:p,count:m.length});if(!p)continue;let b=m.filter(($)=>o.shelf($)!==void 0);for(let[$,k]of Map.groupBy(b,(v)=>o.shelf(v))){let v=k.find((M)=>M.lead)??k[0],S=a.length>0||e.has(gc(l,$));if(c.push({kind:"catalog",top:l,name:$,...v.native?{native:v.native}:{},lead:v,expanded:S,count:k.length}),S)c.push(...k.map(u))}c.push(...m.filter(($)=>o.shelf($)===void 0).map(u))}for(let l of i)if(!f.has(l)&&(a===""||fo([l],a)))c.push({kind:"top",name:l,expanded:e.has(l),count:0});return c}function r3(t,e){let n=e.trim(),r=new Set(t.values().filter((i)=>!i.default&&(n===""||Yl(i,n))).map(Xs));return BS(t,new Set,"").filter((i)=>i.kind==="top"&&r.has(i.name))}function i3(t){return t.includes("@")}function jS(t,e,n,r,i=!0){let s=n-1;if(s<0)return t;let o;if(!Number.isFinite(e))o=e>0?s:0;else if(e>0)o=t>=s?i?0:s:Math.min(s,t+e);else o=t<=0?i?s:0:Math.max(0,t+e);if(!r(o))return o;let a=Math.sign(e),c=o+a;if(c>=0&&c<=s)return c;return i&&Math.abs(e)===1?c<0?s:0:o-a}function bc(t,e){let n={home:Number.NEGATIVE_INFINITY,end:Number.POSITIVE_INFINITY,pgup:-e,pgdn:e};return t===void 0?void 0:n[t]}function s3(t){let e=t.findIndex((n)=>n.kind==="top"&&i3(n.name));return e>0&&t.slice(0,e).some((n)=>n.kind==="top")?t.toSpliced(e,0,{kind:"rule"}):t}function o3(t){let e=t.findIndex((n)=>n.kind==="palette");return e===-1?0:e}function Vl(t){return t==="decode"||t==="glitch"?t:"typewriter"}function pi(t,e,n,r){return Ze({kind:"row",at:t,part:e,...r?{pane:r}:{}},n)}class qo{picked;scope;maxItems;focus="lit";glide=!1;named=[];catalogs=[];layout;mode;pane;place;color;p;onFocus;note;badge;about;tops;heads;extras;pinned;entries=[];catalogPad=0;namePad=0;expanded=new Set;rows=[];fixed=0;cursor=0;top=0;shown=0;placed=!1;span=1;filter="";lastFocused="";constructor(t){this.picked=t.picked,this.scope=t.scope??"palette",this.layout=t.layout??"catalogs",this.mode=t.mode??"tree",this.pane=t.pane,this.place=_S[this.layout],this.maxItems=t.maxItems??12,this.color=t.color??!0,this.p=Se(this.color),this.onFocus=t.onFocus,this.note=t.note,this.badge=t.badge,this.about=t.about,this.tops=t.tops,this.heads=t.heads,this.extras=t.extras,this.pinned=t.pinned,this.load(t.entries),this.rebuild("first")}load(t){this.entries=t,this.named=t.filter((e)=>!e.default),this.catalogs=[...new Set(this.named.map(Xs))],this.catalogPad=Math.max(0,...this.catalogs.map((e)=>e.length)),this.namePad=Math.max(0,...this.named.map((e)=>this.indent(e).length+CS(e).length))}lead(){return this.mode==="inside"?"":" "}indent(t){return this.place.shelf(t)===void 0?this.lead():`${this.lead()} `}setEntries(t){this.load(t),this.rebuild("stay")}setFilter(t){if(t!==this.filter)this.filter=t,this.placed=!1,this.rebuild("keep")}clear(){let t=this.rows[this.cursor];if(t?.kind==="palette"&&!t.entry.default){this.expanded.add(this.place.top(t.entry));let e=ql(t.entry,this.place);if(e!==void 0)this.expanded.add(e)}this.setFilter("")}focusedRow(){return this.rows[this.cursor]}refocus(){this.lastFocused="",this.sync()}refresh(){this.rebuild("stay")}select(t){let e=this.rows.findIndex((n)=>Jl(n)===t);if(e===-1)return!1;return this.cursor=e,this.sync(),!0}members(t,e){let n=this.scope==="palette"?this.filter.trim():"";return this.under(t,e).filter((r)=>n===""||Yl(r,n))}under(t,e){return this.named.filter((n)=>this.place.top(n)===t&&(e===void 0||this.place.shelf(n)===e))}inside(t){return t.kind==="palette"?[t.entry]:t.kind==="top"?this.under(t.name):t.kind==="catalog"?this.under(t.top,t.name):[]}everyone(t){return t.flatMap((e)=>e.kind==="top"?this.members(e.name):[])}pick(){let t=this.rows[this.cursor],e=t?.kind==="palette"?[t.entry.name]:t?.kind==="top"?this.members(t.name).map((r)=>r.name):t?.kind==="catalog"?this.members(t.top,t.name).map((r)=>r.name):t?.kind==="all"?this.everyone(this.rows).map((r)=>r.name):[];if(e.length===0)return;let n=e.some((r)=>!this.picked.has(r));for(let r of e)if(n)this.picked.add(r);else this.picked.delete(r)}pickedIn(t,e){return this.members(t,e).filter((n)=>this.picked.has(n.name)).length}pickedCount(){if(this.scope==="palette")return this.named.filter((t)=>this.picked.has(t.name)).length;return this.catalogs.filter((t)=>this.members(t).every((e)=>this.picked.has(e.name))).length}total(){return this.scope==="catalog"?this.catalogs.length:this.named.length}matched(){let t=this.filter.trim();if(this.scope==="catalog")return this.rows.filter((e)=>e.kind==="top").length;return t?this.named.filter((e)=>Yl(e,t)).length:this.named.length}sync(){let t=this.rows[this.cursor],e=t?.kind==="palette"?t.entry:t?.kind==="top"&&this.scope==="catalog"?t.lead:void 0;if(e&&e.name!==this.lastFocused)this.lastFocused=e.name,this.onFocus?.(e)}rebuild(t){let e=this.rows[this.cursor],n=this.scope==="catalog"?r3(this.entries,this.filter):BS(this.entries,this.expanded,this.filter,this.layout,this.tops?.()??[],this.mode),r=this.layout==="marketplaces"||n.length===0?n:s3([{kind:"all",count:this.allCount(n)},...n]),i=(a)=>(a??[]).map((c)=>({kind:"extra",extra:c})),s=i(this.pinned?.());this.fixed=s.length,this.rows=[...i(this.heads?.()),...r,...i(this.extras?.()),...s];let o=n.length>0?this.rows.indexOf(n[this.mode==="inside"&&!this.filter.trim()?0:o3(n)]):Math.max(0,this.rows.findIndex((a)=>!hs(a)&&!(a.kind==="extra"&&a.extra.idle)));if(t==="first")this.cursor=o;else if(t==="keep"||t==="stay"){let a=Jl(e),c=e?.kind==="palette"||t==="stay"?this.rows.findIndex((f)=>Jl(f)===a):-1,u=e?.kind==="extra"&&t==="stay";this.cursor=c!==-1?c:u?Math.min(this.cursor,this.rows.length-1):o}else if(this.cursor>=this.rows.length)this.cursor=Math.max(0,this.rows.length-1);this.settle(),this.sync()}settle(){if(!hs(this.rows[this.cursor]))return;let t=this.rows.findIndex((n,r)=>r>this.cursor&&!hs(n)),e=this.rows.findLastIndex((n,r)=>r<this.cursor&&!hs(n));this.cursor=t!==-1?t:e!==-1?e:this.cursor}allCount(t){return this.scope==="catalog"?t.length:this.everyone(t).length}move(t,e=!0){let n=this.rows.length-this.fixed,r=this.fixed>0&&n>0&&Math.abs(t)!==1;this.cursor=r?jS(Math.min(this.cursor,n-1),t,n,(i)=>hs(this.rows[i]),e):jS(this.cursor,t,this.rows.length,(i)=>hs(this.rows[i]),e),this.sync()}point(t){let e=this.rows[t];if(!e||hs(e))return!1;return this.cursor=t,this.sync(),!0}size(){return this.rows.length}outer(){let t=this.rows[this.cursor];return this.mode==="inside"&&(this.filter.trim()!==""||t===void 0||t.kind==="extra"||t.kind==="catalog"&&!t.expanded||t.kind==="palette"&&ql(t.entry,this.place)===void 0)}flip(){let t=this.rows[this.cursor];if(t?.kind==="top"||t?.kind==="catalog")this.fold(!t.expanded)}foldable(){let t=this.rows[this.cursor];return(t?.kind==="catalog"||t?.kind==="top"&&this.mode==="tree")&&this.scope==="palette"&&!this.filter}open(){if(this.foldable())this.flip();else this.pick()}toggle(t){if(this.expanded.has(t))this.expanded.delete(t);else this.expanded.add(t);this.rebuild("clamp")}climb(t,e){this.expanded.delete(t),this.rebuild("clamp"),this.reach(e)}reach(t){this.cursor=Math.max(0,this.rows.findIndex((e)=>Jl(e)===t)),this.sync()}fold(t){if(this.filter||this.scope==="catalog")return;let e=this.rows[this.cursor];if(e?.kind==="top"){if(t!==e.expanded)this.toggle(e.name)}else if(e?.kind==="catalog"){if(t!==e.expanded)this.toggle(gc(e.top,e.name));else if(!t&&this.mode==="tree")this.reach(`top ${e.top}`)}else if(e?.kind==="palette"&&!t&&!e.entry.default){let n=ql(e.entry,this.place);if(n===void 0){if(this.mode==="tree"){let r=this.place.top(e.entry);this.climb(r,`top ${r}`)}}else this.climb(n,`catalog ${n}`)}}page(){return this.span}pins(){let t=this.rows.length-this.fixed;return this.rows.slice(t).flatMap((e,n)=>this.renderRow(e,t+n))}window(){let t=this.rows.length-this.fixed,e=this.rows.slice(0,t).map((f,l)=>this.renderRow(f,l)),n=(f)=>e[f]?.length??0,r=Math.max(1,this.maxItems),i=Math.max(0,Math.min(this.cursor,t-1));this.top=Math.min(this.top,i);let s=0;for(let f=this.top;f<=i;f++)s+=n(f);while(this.top<i&&s>r)s-=n(this.top),this.top+=1;let o=0;for(let f=this.top;f<e.length;f++)o+=n(f);while(this.top>0&&o+n(this.top-1)<=r)this.top-=1,o+=n(this.top);if(!this.placed)this.shown=this.top,this.placed=!0;let a=this.glide?Math.max(0,Math.min(this.shown,e.length-1)):this.top,c=[],u=a;while(u<e.length&&(u===a||c.length+n(u)<=r))c.push(...e[u]??[]),u+=1;return this.span=Math.max(1,u-a),c.push(...e[u]??[]),{lines:c.slice(0,r),above:a,below:e.length-u}}moving(){return this.glide&&this.placed&&this.shown!==this.top}step(){if(!this.moving())return!1;return this.shown=Ul(this.shown,this.top,{span:this.span}),this.shown!==this.top}renderRow(t,e){if(t.kind==="rule")return[` ${this.p.dim("── Marketplaces ──────────")}`];return(t.kind==="extra"?t.extra.text(e===this.cursor&&this.focus==="lit",e):this.rowText(t,e)).split(`
|
|
672
|
+
`).map((r)=>r?pi(e,"row",r,this.pane):r)}rowText(t,e){let n=e===this.cursor&&this.focus!=="off",r=t.kind==="palette"?t.entry:t.kind==="all"?void 0:t.lead,i=this.color&&n&&this.focus==="lit"&&r!==void 0,{dim:s,bold:o}=this.p,a=(v)=>this.color?` ${Uu(oo(v),i?dr(v.foreground):$t)}`:"",c=!n?" ":i?`${dr(r.cursor)}${I.gutter}${$t} `:this.focus==="held"?this.color?`${this.p.dim(I.gutter)} `:" ":`${I.gutter} `,u=(v)=>i?`${c}${ny(r.selection,r.foreground)} ${v} ${pe}`:`${c} ${v}`,f=(v)=>pi(e,"box",`${v?I.on:I.off} `,this.pane),l=(v)=>pi(e,"fold",`${v?I.opened:I.closed} `,this.pane);if(t.kind==="all")return u(`${f(this.everyone(this.rows).every((v)=>this.picked.has(v.name)))}Select all ${s(`(${t.count})`)}`);if(t.kind==="top"&&this.scope==="catalog"){let v=`(${t.count})${t.native?` ${t.native}`:""}`;return u(`${f(this.pickedIn(t.name)===t.count)}${o(t.name.padEnd(this.catalogPad))}${t.lead?a(t.lead):""}${this.color?" ":" "}${s(v)}`)}let d=this.rows[this.cursor],h=(v,S)=>this.color&&d?.kind==="palette"&&v?this.p.accent(o(S)):o(S);if(t.kind==="top"){let v=h(d?.kind==="palette"&&this.place.top(d.entry)===t.name,t.name),S=t.native?` ${s(t.native)}`:"",M=this.badge?.(t.name)??"";if(this.about){let x=this.about(t.name,this.under(t.name),this.filter.trim()?t.count:void 0);return[...e>0?[""]:[],u(`${pi(e,"fold",`${x.added?I.on:I.off} `,this.pane)}${v}${S}${M}`),...x.lines.map((N)=>u(` ${N}`))].join(`
|
|
673
|
+
`)}return u(`${l(t.expanded)}${v} ${s(`(${this.pickedIn(t.name)}/${t.count})`)}${S}${M}`)}if(t.kind==="catalog"){let v=d?.kind==="palette"&&ql(d.entry,this.place)===gc(t.top,t.name),S=s(`(${this.pickedIn(t.top,t.name)}/${t.count})`),M=t.native?` ${s(t.native)}`:"";return u(`${this.lead()}${l(t.expanded)}${h(v,t.name)} ${S}${M}`)}let m=t.entry,p=this.indent(m),b=CS(m),$=this.color?b.padEnd(this.namePad-p.length):b,k=n?o($):$;return u(`${p}${f(this.picked.has(m.name))}${k}${a(m)}${this.note?.(m)??""}`)}}function Yp(t){let e=t.named[Math.floor(Math.random()*t.named.length)],n=t.catalogs[Math.floor(Math.random()*t.catalogs.length)];return e&&n?`${e.name} | ${n}`:""}class Zl{fx;make;redraw;roller;example="";step=0;seed=0;timer;constructor(t,e,n){this.fx=t,this.make=e,this.redraw=n,this.roll(),this.roller=setInterval(()=>{this.roll(),this.step=8,this.redraw()},3000),this.roller.unref?.()}stop(){clearInterval(this.roller),clearTimeout(this.timer)}roll(){let t=this.make();this.example=t.length>30?`${t.slice(0,29)}…`:t,this.seed=Math.floor(Math.random()*997)}text(){if(this.step===0)return this.example;if(!this.timer)this.timer=setTimeout(()=>{this.timer=void 0,this.step-=1,this.redraw()},60),this.timer.unref?.();let t=Math.floor(this.example.length*(8-this.step)/8);if(this.fx==="typewriter")return`${this.example.slice(0,t)}▏`;let e=this.fx==="decode"?"abcdefghijklmnopqrstuvwxyz":"▓▒░#*+=<>?/-_",n=this.fx==="decode"?(r)=>!/[a-z0-9]/i.test(r):(r)=>r===" ";return[...this.example].map((r,i)=>i+(i*7+this.seed)%3<t||n(r)?r:e[Math.floor(Math.random()*e.length)]??r).join("")}}var a3=5;class Vp{picked;list;scope;color;required;most;hint;field=new fs;input;output;state="active";error="";redraw=()=>{};constructor(t){this.scope=t.scope??"palette",this.picked=new Set(t.installed??[]),this.color=t.color??!0,this.required=t.required??!1,this.most=t.maxItems??12,this.input=t.input,this.output=t.output,this.list=new qo({entries:t.entries,picked:this.picked,scope:this.scope,maxItems:this.most,color:this.color,...t.onFocus?{onFocus:t.onFocus}:{}}),this.hint=new Zl(t.fx??"typewriter",()=>Yp(this.list),()=>this.redraw())}prompt(){return mi({input:this.input,output:this.output,modes:[Wn,kr]},async(t)=>{let e=new wp((r)=>t.write(r),()=>t.cols),n=()=>{return this.list.maxItems=Math.max(n3,Math.min(this.most,t.rows-a3)),this.draw()};this.redraw=()=>e.draw(n()),t.onResize(()=>e.redraw(n())),this.redraw();try{let r=await t.loop((i)=>{return this.take(i),this.state==="submit"||this.state==="cancel"?this.state:void 0},()=>this.redraw());return this.redraw=()=>{},e.end(this.draw()),r}finally{this.hint.stop()}})}take(t){if(t.kind==="paste"){this.field.paste(t.text),this.list.setFilter(this.field.value);return}if(t.kind!=="key")return;let e=t.key;if(this.state==="error")this.state="active";let n=bc(e,this.list.maxItems);if(e==="esc"||e==="ctrl-c")this.state="cancel";else if(e==="enter")if(this.required&&this.picked.size===0)this.error=`Pick at least one ${this.scope}`,this.state="error";else this.state="submit";else if(e==="up"||e==="down")this.list.move(e==="up"?-1:1);else if(e==="left"||e==="right")this.list.fold(e==="right");else if(n!==void 0)this.list.move(n);else if(e===" ")this.list.pick();else if(this.field.key(e))this.list.setFilter(this.field.value)}draw(){let{dim:t,accent:e,warn:n}=Se(this.color),r=this.scope==="catalog"?"Catalogs":"Palettes";if(this.state==="submit")return[`${t("◇")} ${r} ${t(`· ${this.list.pickedCount()} picked`)}`];if(this.state==="cancel")return[`${t(`◇ ${r} · cancelled`)}`];let i=this.field.value,s=`${e("◆")} ${r} ${t(`(${this.list.matched()}/${this.list.total()} · ${this.list.pickedCount()} picked)`)}`,o=this.hint.text(),a=`${e("│")} ${i?`${i}_`:t(`Search…${o?` e.g. ${o}`:""}`)}`,{lines:c,below:u}=this.list.window(),f=c.length>0?c.map((p)=>`${e("│")} ${p}`):[`${e("│")} ${t(`No ${this.scope==="catalog"?"catalogs":"palettes"} match '${i}'`)}`];while(f.length<this.list.maxItems)f.push(e("│"));let l=u>0?`${e("│")} ${t(`↓ ${u} more`)}`:e("│"),d=this.scope==="catalog"?"":" · ←→ fold",h=this.scope==="catalog"?"continue":"install",m=this.state==="error"?`${e("└")} ${n(this.error)}`:`${e("└")} ${t(`↑↓ move${d} · space pick · type to filter · enter ${h} · esc cancel`)}`;return[s,a,...f,l,m]}}var c3=40,u3=60,l3=42,f3=94,d3=22,GS=40,US=10,wc=3,h3=20,WS={title:"",lines:[],brief:""};function m3(t){let e=t.trim();if(e!==Q&&!e.includes("/")&&!e.startsWith("~"))return;try{return hn(e)}catch{return}}function Zp(t){return t===Q?"Built in":yt(t)?t:at(t)}function Xp(t){return t.charAt(0).toUpperCase()+t.slice(1)}class Qp{picked;field=new fs;query=new fs;address=new fs;adds=new Map;removes=new Set;want=new Map;renew=new Set;updates;tuned;busy=new Map;failed=new Map;fetched=new Map;staging=new Set;refreshed=[];inflight=new Set;marketplaces;kept;installed;startup;io;order;color;p;hub;owns;input;output;maxItems=12;paint;list;inside;results;side="cards";showing="browse";landing;open;split=0;hint;screen;state="active";phase="browse";offset=0;started=!1;log=[];working="";stopped;beat=0;removing;adding;formError;leaving;goto;listing;loading=!1;loadError;help=!1;live;constructor(t){this.marketplaces=t.marketplaces,this.kept=t.kept,this.installed=new Set(t.installed),this.updates=new Set(t.updates??[]),this.tuned=new Set(t.tuned??[]),this.startup=t.startup,this.io=t.io,this.order=t.order??((e)=>e),this.color=t.color??!0,this.p=Se(this.color),this.hub=t.hub,this.owns=t.owns??!1,this.input=t.input,this.output=t.output,this.live=t.lookups??!0,this.paint=t.onFocus,this.picked=new Set(t.installed),this.list=new qo({entries:this.entries(),picked:this.picked,layout:"marketplaces",mode:"cards",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),badge:(e)=>this.badge(e),about:(e,n,r)=>this.about(e,n,r),tops:()=>this.tops(),heads:()=>this.heads(),onFocus:(e)=>this.focus(e)}),this.inside=new qo({entries:[],picked:this.picked,layout:"marketplaces",mode:"inside",pane:"panel",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),pinned:()=>this.actions(),onFocus:(e)=>{if(this.side==="panel")this.focus(e)}}),this.inside.focus="off",this.results=new qo({entries:[],picked:new Set,layout:"marketplaces",mode:"cards",color:this.color,maxItems:this.maxItems,heads:()=>[this.row({kind:"back"},!0)],extras:()=>this.found()}),this.follow(),this.hint=new Zl(t.fx??"typewriter",()=>Yp(this.list),()=>this.redraw());for(let e of t.due)this.update(e)}run(){let t=[...this.owns?[Dl,Wn,di]:[],kr,...hi()],e=this.owns?[]:[Wn,di];return mi({input:this.input,output:this.output,modes:t,assume:e},async(n)=>{let r=[this.list,this.inside,this.results];for(let o of r)o.glide=!0;let i=new zp(()=>r.map((o)=>o.step()).includes(!0),()=>this.screen?.request()),s=new os({write:(o)=>n.write(o),view:()=>{if(this.state!=="active")return;let o=this.view();if(r.some((a)=>a.moving()))i.start();return{lines:o,ticking:this.phase==="applying"||this.fetching()}},beat:()=>{this.beat+=1}});this.screen=s,n.onResize(()=>{s.reset(),s.request()}),s.now();try{return await n.loop((o)=>{if(o.kind==="key")this.key(o.key);else if(o.kind==="paste")this.pasted(o.text);else if(o.kind==="mouse")this.mouse(o,s);return this.state==="active"?void 0:this.state},()=>s.soon())}finally{i.stop(),s.stop(),this.screen=void 0,this.hint.stop()}})}applied(){return this.started}lines(){return this.log}failure(){return this.stopped}next(){return this.goto}async idle(){await Promise.allSettled(this.inflight)}result(){let t=new Set(this.entries().map((e)=>e.name));return{picked:new Set(this.picked.values().filter((e)=>t.has(e))),adds:[...this.adds.values()],removes:[...this.removes],auto:Object.fromEntries(this.want),renew:[...this.renew].filter((e)=>this.updates.has(e)&&this.picked.has(e)&&t.has(e)),refreshed:this.refreshed}}key(t){if(t==="ctrl-c"){this.state="cancel";return}if(this.help){if(t==="?"||t==="esc")this.help=!1;return}if(this.leaving!==void 0){if(t==="esc")this.leaving=void 0;else if(/^[yn]$/i.test(t)){if(t.toLowerCase()==="y")this.begin();else this.goto=this.leaving,this.state="cancel";this.leaving=void 0}return}if(this.removing){if(t==="esc")this.removing=void 0;else if(/^[yn]$/i.test(t))this.answer(t.toLowerCase()==="y");return}if(this.phase!=="browse"){this.steer(t);return}if(this.showing==="search"){this.searchKey(t);return}if(this.side==="form"){this.formKey(t);return}let e=this.side==="panel",n=e?void 0:this.focusedFound(),r=n?.kind==="new"||n?.kind==="search",i=bc(t,(e?this.inside:this.list).page());if(t==="enter")if(this.onAction())this.act();else if(e&&this.inside.foldable())this.inside.flip();else if(!e&&this.list.focusedRow()?.kind==="top")this.enter();else if(r)this.activate();else this.finish();else if((t==="esc"||t==="ctrl-u")&&this.field.value)this.clear();else if(t==="esc")if(e)this.back();else this.state="cancel";else if(t==="?")this.help=!0;else if(i!==void 0)this.move(i);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="right")if(e)this.inside.fold(!0);else if(r)this.activate();else this.enter();else if(t==="left"){if(e&&this.inside.outer())this.back();else if(e)this.inside.fold(!1)}else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Vu(this.hub,t==="tab"?1:-1))}else if(t===" ")if(this.onAction())this.act();else if(e)this.inside.pick();else this.activate();else if(t==="ctrl-r"){if(e)this.toggleRenew()}else if(this.field.key(t))this.typed()}searchKey(t){let e=bc(t,this.results.page());if(t==="enter"||t===" ")this.take(t==="enter");else if((t==="esc"||t==="ctrl-u")&&this.query.value)this.query.value="",this.searchTyped();else if(t==="esc"||t==="left")this.closeSearch();else if(t==="?")this.help=!0;else if(e!==void 0)this.move(e);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Vu(this.hub,t==="tab"?1:-1))}else if(t==="ctrl-r")this.loadIndex();else if(this.query.key(t))this.searchTyped()}formKey(t){if(t==="esc"||t==="left")this.back();else if(t==="?")this.help=!0;else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Vu(this.hub,t==="tab"?1:-1))}else if(this.fetching())return;else if(t==="enter")this.submit();else if(this.address.key(t))this.edited()}openForm(){let t=this.field.value.trim();if(!this.address.value&&m3(t))this.address.value=t;this.side="form",this.list.focus="held"}edited(){this.formError=void 0,this.adding=void 0}submit(){let t=this.address.value.trim();if(!t){this.formError="type a repository or a folder";return}let e;try{e=hn(t)}catch(r){this.formError=r.message;return}let n=this.known(e);if(n){this.address.value="",this.reveal(n.id);return}this.adding=e,this.load(e)}fetching(){return this.adding!==void 0&&this.busy.has(this.adding)}reveal(t){if(this.back(),this.field.value)this.clear();this.list.select(`top ${t}`),this.enter()}take(t){let e=this.focusedFound();if(e?.kind==="back"){this.closeSearch();return}if(e?.kind==="state"){this.loadIndex();return}let n=e?.kind==="listed"?e.listed.source:void 0;if(n===void 0)return;let r=this.known(n);if(!r)this.landing=t?n:void 0,this.load(n);else if(t)this.closeSearch(),this.list.select(`top ${r.id}`);else if(this.adds.has(r.source))this.adds.delete(r.source),this.want.delete(r.source),this.reload()}openSearch(){let t=this.field.value.trim();if(t)this.query.value=t;if(this.showing="search",this.results.setFilter(this.query.value),this.results.refresh(),this.live&&!this.listing)this.loadIndex()}closeSearch(){this.showing="browse",this.landing=void 0,this.follow()}searchTyped(){this.results.setFilter(this.query.value)}loadIndex(){if(this.loading)return;this.loading=!0,this.loadError=void 0,this.redraw(),this.track(this.io.index()).then((t)=>{this.loading=!1,this.listing=t,this.results.refresh(),this.redraw()},(t)=>{this.loading=!1,this.loadError=t.message,this.results.refresh(),this.redraw()})}finish(){if(this.dirty())this.phase="review",this.offset=0}enter(){if(this.follow(),this.side==="panel")return!0;if(this.list.focusedRow()?.kind!=="top"||this.inside.size()===0)return!1;return this.side="panel",this.list.focus="held",this.inside.focus="lit",this.inside.refocus(),!0}back(){if(this.side==="form"&&this.adding!==void 0)this.staging.delete(this.adding);this.side="cards",this.list.focus="lit",this.inside.focus="off"}follow(t=!1){let e=this.list.focusedRow(),n=e?.kind==="top"?e.name:void 0;if(t||n!==this.open)this.open=n,this.inside.setEntries(n===void 0?[]:this.membersOf(n));if(this.side==="panel"&&this.inside.size()===0)this.back()}membersOf(t){return this.entries().filter((e)=>(rt(e.name)??Q)===t)}pasted(t){if(this.phase!=="browse"||this.help||this.removing||this.leaving!==void 0)return;if(this.showing==="search")this.query.paste(t),this.searchTyped();else if(this.side==="form"){if(!this.fetching())this.address.paste(t),this.edited()}else this.field.paste(t),this.typed()}mouse(t,e){if(this.help){if(t.action==="release")this.help=!1;return}let n=e.point(t),r=n?.target,i=this.phase==="browse"&&this.leaving===void 0&&!this.removing;if(t.action==="wheel"){if(!t.sideways&&(i||this.phase!=="browse"))this.wheel(t.wheel,this.split>0&&t.col>=this.split);return}if(!r)return;if(t.action==="press"&&t.button==="left"){if(i&&r.kind==="row")this.point(r);else if(i&&r.kind==="form")this.openForm()}else if(t.action==="release"&&n?.inside){if(r.kind==="key")this.key(r.key);else if(r.kind==="page"){if(this.phase!=="browse")this.scroll(r.step*this.span());else if(i&&this.side===(r.pane?"panel":"cards"))this.move(r.step*(r.pane?this.inside:this.current()).page())}else if(r.kind==="hub"){if(i&&this.hub&&r.tab!==this.hub)this.leave(ly(r.tab))}else if(r.kind==="row"&&i)this.openRow(r,t.count)}}point(t){if(this.showing==="search"){this.results.point(t.at);return}if(t.pane){if(this.enter())this.inside.point(t.at);return}this.back(),this.list.point(t.at)}wheel(t,e){if(this.phase!=="browse"){this.scroll(t);return}if(this.showing==="search"){this.move(t,!1);return}if(e&&!this.enter())return;if(!e)this.back();this.move(t,!1)}openRow(t,e){if(this.showing==="search"){if(t.part==="box"||e===2)this.take(e===2)}else if(t.pane){if(this.onAction()){if(t.part==="box"||e===2)this.act()}else if(t.part==="box")this.inside.pick();else if(t.part==="fold")this.inside.flip();else if(e===2)this.inside.open()}else if(this.list.focusedRow()?.kind==="extra"){if(t.part==="box"||e===2)this.activate()}else if(t.part==="fold"||e===2)this.enter()}typed(){let t=this.field.value,e=this.list.focusedRow();if(this.list.setFilter(t),e?.kind==="top")this.list.select(`top ${e.name}`);if(this.inside.setFilter(t),this.follow(),t.trim()&&this.list.focusedRow()?.kind==="top"&&this.inside.matched()>0)this.enter();else if(t.trim())this.back()}clear(){this.field.value="";let t=this.list.focusedRow();if(this.inside.clear(),this.list.setFilter(""),t?.kind==="top")this.list.select(`top ${t.name}`);this.follow()}redraw(){if(this.state==="active")this.screen?.request()}focus(t){if(this.state!=="submit"&&this.state!=="cancel")this.paint?.(t)}track(t){this.inflight.add(t);let e=()=>this.inflight.delete(t);return t.then(e,e),t}active(){return[...this.marketplaces.filter((t)=>!this.removes.has(t.source)),...this.adds.values()]}entries(){let t=this.active().flatMap((i)=>i.entries),e=new Set(t.map((i)=>i.name)),n=new Map,r=this.marketplaces.filter((i)=>this.removes.has(i.source)).flatMap((i)=>i.entries);for(let i of[...this.kept,...r])if(this.installed.has(i.name)&&!e.has(i.name))n.set(i.name,i);return this.order([...t,...n.values()])}reload(){this.list.setEntries(this.entries()),this.follow(!0)}tops(){return this.active().map((t)=>t.id)}marketplaceNamed(t){return this.active().find((e)=>e.id===t)}focusedMarketplace(){let t=this.list.focusedRow();return t?.kind==="top"?this.marketplaceNamed(t.name):void 0}current(){return this.showing==="search"?this.results:this.list}move(t,e=!0){(this.side==="panel"?this.inside:this.current()).move(t,e)}autoUpdate(t){let e=!(this.want.get(t.source)??t.auto);if(e===t.auto)this.want.delete(t.source);else this.want.set(t.source,e)}onAction(){return this.side==="panel"&&this.inside.focusedRow()?.kind==="extra"}act(){let t=this.inside.focusedRow(),e=this.focusedMarketplace(),n=t?.kind==="extra"?t.extra.action:void 0;if(!e||n===void 0)return;if(n==="update")this.update(e.source);else if(n==="auto")this.autoUpdate(e);else if(this.adds.has(e.source))this.adds.delete(e.source),this.want.delete(e.source),this.back(),this.reload();else this.removing=e}activate(){let t=this.list.focusedRow();if(t?.kind!=="extra"){this.list.pick();return}let e=t.extra.found;if(e?.kind==="new")this.openForm();else if(e?.kind==="search")this.openSearch()}remove(t){let e=this.tops().indexOf(t.id);this.removes.add(t.source),this.want.delete(t.source),this.back(),this.reload();let n=this.tops()[Math.min(e,this.tops().length-1)];if(n!==void 0)this.list.select(`top ${n}`)}known(t){return[...this.marketplaces,...this.adds.values()].find((e)=>Bi(e.source,t))}load(t){let e=this.fetched.get(t);if(e){this.arrive(t,e);return}if(this.staging.add(t),this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Fetching…"),this.track(this.io.fetch(t)).then((n)=>{if(this.busy.delete(t),this.fetched.set(t,n),this.staging.delete(t))this.arrive(t,n);this.redraw()},(n)=>{this.busy.delete(t),this.staging.delete(t),this.failed.set(t,n.message),this.landing=void 0,this.redraw()})}arrive(t,e){let n=this.active().find((r)=>r.id===e.id);if(n)this.failed.set(t,`${e.id} already names the marketplace at ${n.shown}`),this.landing=void 0;else this.stage(e);this.redraw()}focusedFound(){let t=this.current().focusedRow();return t?.kind==="extra"?t.extra.found:void 0}answer(t){let e=this.removing;if(this.removing=void 0,e&&t)this.remove(e)}stage(t){if(this.adds.set(t.source,t),this.reload(),this.adding!==void 0&&Bi(this.adding,t.source)){this.address.value="",this.adding=void 0,this.reveal(t.id);return}if(this.list.select(`top ${t.id}`),this.landing!==void 0&&Bi(this.landing,t.source))this.closeSearch();else this.results.refresh()}update(t){if(this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Updating…"),this.track(this.io.refresh(t)).then(({marketplace:e,refreshed:n,updates:r})=>{this.busy.delete(t),this.updates=new Set(r),this.marketplaces=this.marketplaces.map((i)=>i.source===t?e:i),this.refreshed.push(n),this.reload(),this.redraw()},(e)=>{this.busy.delete(t),this.failed.set(t,`Update failed: ${e.message}`),this.redraw()})}row(t,e=!1){return{key:t.kind==="listed"?`listed ${t.listed.source}`:t.kind,...e?{idle:e}:{},found:t,text:(n,r)=>this.foundLine(t,n,r)}}actions(){let t=this.open===void 0?void 0:this.marketplaceNamed(this.open);if(!t)return[];let{source:e}=t,n=yt(e),r=(i)=>({key:i,action:i,text:(s,o)=>this.actionLine(i,e,s,o)});return[...n&&!this.adds.has(e)?[r("update")]:[],...n?[r("auto")]:[],r("remove")]}actionLine(t,e,n,r){let[i,s]=this.actionText(t,e);return this.button(r,n,this.actionMark(t,e),i.padEnd(h3),s?` ${this.p.dim(s)}`:"",{pane:"panel",off:t==="update"&&this.busy.has(e),danger:t==="remove"&&!this.adds.has(e)})}button(t,e,n,r,i,s={}){let o=Ka(this.p,`${n} ${r}`,s.off?"off":e?"focus":"idle",s.danger);return`${e?`${I.gutter} `:" "}${pi(t,"box",`${o}${i}`,s.pane)}`}actionMark(t,e){if(t==="update")return I.update;if(t==="auto")return I.auto;return this.adds.has(e)?I.undo:I.remove}actionText(t,e){let n=this.known(e);if(t==="update")return["Update now",this.busy.get(e)??(this.failed.has(e)?"Update failed":n?Xp(n.status):"")];if(t==="auto")return["Auto-update",this.want.get(e)??n?.auto?"on":"off"];return[this.adds.has(e)?"Undo add":"Remove marketplace",""]}actionAbout(t,e){if(t==="update")return["Update now",`Fetch ${Zp(e)} again now`];if(t==="auto")return["Auto-update","Fetch it on its own once a day and say what changed"];return this.adds.has(e)?["Undo add","Drop it before it is added"]:["Remove marketplace","Take it off your list — its installed palettes stay"]}actionVerb(t,e){if(t==="update")return"update";if(t==="auto")return this.want.get(e)??this.known(e)?.auto?"turn off":"turn on";return this.adds.has(e)?"undo add":"remove"}heads(){return[this.row({kind:"new"},!0),this.row({kind:"search"})]}matches(){let t=this.query.value.trim();return(this.listing?.marketplaces??[]).filter((e)=>!t||oS(e,t))}found(){let t=this.matches();return t.length>0?t.map((e)=>this.row({kind:"listed",listed:e})):[this.row({kind:"state"})]}lit(t,e){return`${t?`${I.gutter} `:" "} ${e}`}status(t){return this.adds.has(t.source)?"Will add":this.busy.get(t.source)??(this.failed.has(t.source)?"Update failed":"")}about(t,e,n){let r=this.marketplaceNamed(t),i=e.filter((c)=>this.installed.has(c.name)).length,s=e.filter((c)=>this.picked.has(c.name)&&!this.installed.has(c.name)).length,o=e.filter((c)=>this.installed.has(c.name)&&!this.picked.has(c.name)).length,a=[...r&&n!==void 0?[`${n} of ${r.entries.filter((c)=>!c.default).length} match`]:[],...r&&n===void 0?[`${r.entries.filter((c)=>!c.default).length} available`]:[],...i>0||!r?[`${i} installed`]:[],...s>0?[`${s} to install`]:[],...o>0?[`${o} to remove`]:[],...r&&r.source!==Q&&!(this.adds.has(r.source)&&yt(r.source))?[Xp(r.status)]:[]];return{added:r!==void 0,lines:[this.p.dim(r?Zp(r.source):"Not added"),this.p.dim(a.join(" · "))]}}badge(t){let e=this.marketplaceNamed(t);if(!e)return"";return[yt(e.source)&&(this.want.get(e.source)??e.auto)?`${I.auto} auto-update`:"",this.status(e)].map((r)=>r?` ${this.p.dim(r)}`:"").join("")}foundLine(t,e,n){let r=(u)=>pi(n,"box",`${u} `),i=(u)=>u?` ${this.p.dim(u)}`:"";if(t.kind==="new")return this.button(n,e,"+","Add marketplace",i("owner/repo or a folder"));if(t.kind==="search")return this.button(n,e,I.search,"Search marketplace",i("find one on GitHub"));if(t.kind==="back")return` ${pi(n,"box",Du(this.p,"← Back",e))}
|
|
674
|
+
`;if(t.kind==="state"){let[u,f]=this.stateOf();return this.button(n,e,I.search,u,i(f))}let s=t.listed,o=this.known(s.source),a=this.failed.get(s.source),c=[`${I.star}${s.stars}`,o?this.addedNote(o):se(s.palettes.length),this.busy.get(s.source)??""].filter(Boolean);return this.lit(e,`${r(o?I.on:I.off)}${s.id}${i(c.join(" · "))}${a?` ${this.p.error(a)}`:""}`)}stateOf(){let t=this.query.value.trim();return this.loading?["Loading the marketplace list…",""]:this.loadError?["The marketplace list did not load","space retries"]:!this.listing?["Load the marketplace list","space loads it"]:t?[`No marketplace matches "${t}"`,""]:["No marketplace yet",""]}addedNote(t){return this.adds.has(t.source)?"Will add":"Added"}changes(){return this.adds.size+this.removes.size+this.want.size}dirty(){let{picked:t,renew:e}=this.result();return this.changes()>0||e.length>0||t.size!==this.installed.size||!t.isSubsetOf(this.installed)}mark(t){let e=this.tuned.has(t.name)?` ${this.p.warn(I.on)}`:"";if(!this.updates.has(t.name)||!this.installed.has(t.name))return e;return`${e}${this.renew.has(t.name)?` ${this.p.bold(`${I.update} update`)}`:` ${this.p.dim(I.update)}`}`}toggleRenew(){let t=this.inside,e=t.focusedRow(),n=(e?t.inside(e):[]).map((i)=>i.name).filter((i)=>this.updates.has(i)&&this.installed.has(i));if(n.length===0)return;let r=n.some((i)=>!this.renew.has(i));for(let i of n)if(r)this.renew.add(i);else this.renew.delete(i)}leave(t){if(this.dirty()){this.leaving=t;return}this.goto=t,this.state="cancel"}steer(t){if(this.phase==="review"){if(t==="enter")this.begin();else if(t==="esc")this.phase="browse"}else if(this.phase==="done"&&(t==="enter"||t==="esc"))this.state="submit";let e=t==="up"?-1:t==="down"?1:bc(t,this.span());if(e!==void 0)this.scroll(e)}scroll(t){this.offset=Number.isFinite(t)?Math.max(0,this.offset+t):t>0?Number.MAX_SAFE_INTEGER:0,this.redraw()}span(){return Math.max(wc,this.rows()-(this.hub?1:0)-4)}begin(){this.phase="applying",this.started=!0,this.offset=0,this.log=[],this.working="";let t={say:(e)=>{this.log.push(...e.split(`
|
|
675
|
+
`)),this.redraw()},status:(e)=>{this.working=e,this.redraw()}};this.track(this.io.apply(this.result(),t)).then(()=>this.ended(),(e)=>this.ended(e))}ended(t){this.working="",this.stopped=t,this.phase="done",this.offset=0,this.redraw()}pending(){let t=this.entries().filter((e)=>!e.default);return{names:t.filter((e)=>this.picked.has(e.name)&&!this.installed.has(e.name)),dropped:t.filter((e)=>this.installed.has(e.name)&&!this.picked.has(e.name))}}marketplaceChanges(){let t=[];for(let e of this.adds.values()){let n=e.source!==Q&&(this.want.get(e.source)??e.auto)?"updates on its own":"";t.push(`+ ${e.id} ${this.p.dim([e.source===Q?"The official marketplace":e.shown,se(e.entries.filter((r)=>!r.default).length),n].filter(Boolean).join(" · "))}`)}for(let e of this.removes){let n=this.marketplaces.find((i)=>i.source===e),r=(n?.entries??[]).filter((i)=>!i.default&&this.installed.has(i.name)&&this.picked.has(i.name));t.push(`- ${n?.id??e} ${this.p.dim([n?.shown??at(e),r.length>0?`its ${se(r.length)} installed keep working`:""].filter(Boolean).join(" · "))}`)}for(let[e,n]of this.want){let r=this.marketplaces.find((i)=>i.source===e);if(r)t.push(`${I.auto} ${r.id} ${this.p.dim(n?"updates on its own from now":"stops updating on its own")}`)}return t}reviewLines(){let t=this.marketplaceChanges(),{names:e,dropped:n}=this.pending(),r=new Set(this.result().renew),i=this.entries().filter((c)=>r.has(c.name)),s=Math.max(0,...[...e,...n,...i].map((c)=>c.name.length)),o=(c,u)=>` ${c} ${u.name.padEnd(s)} ${this.p.dim(u.catalog??"")}`,a=[e.length>0?`${e.length} to install`:"",n.length>0?`${n.length} to remove`:"",i.length>0?`${i.length} to update`:""].filter(Boolean);return[...t.length>0?[` ${this.p.bold("Marketplaces")} ${this.p.dim(`(${t.length})`)}`,...t.map((c)=>` ${c}`),""]:[],...a.length>0?[` ${this.p.bold("Palettes")} ${this.p.dim(`(${a.join(" · ")})`)}`,...e.map((c)=>o("+",c)),...n.map((c)=>o("-",c)),...i.map((c)=>o(I.update,c))]:[]]}summary(){let{names:t,dropped:e}=this.pending(),n=this.adds.size;return[n>0?`${n} marketplace${n===1?"":"s"} added`:"",this.removes.size>0?`${this.removes.size} removed`:"",t.length>0?`${t.length} installed`:"",e.length>0?`${e.length} removed`:"",this.result().renew.length>0?`${this.result().renew.length} updated`:""].filter(Boolean).join(" · ")}progressLines(){let t=this.log.map((e)=>` ${e}`);if(this.phase==="applying"){let e=mn[this.beat%mn.length];t.push(` ${this.p.dim(`${e} ${this.working||"Working…"}`)}`)}else if(this.stopped)t.push("",...Ht(this.stopped.message,Math.max(20,this.columns()-6)).map((e,n)=>` ${n===0?this.p.error(I.miss):" "} ${e}`));return t}frame(t,e){let n=t-1,r=this.phase==="review",i=r?this.reviewLines():this.progressLines(),s=this.phase==="review"?`${this.p.bold("Review changes")}`:this.phase==="applying"?this.p.bold("Applying changes"):this.stopped?`${this.p.error(I.miss)} ${this.p.bold("Stopped")}`:`${this.p.bold(`${I.ok} Applied`)} ${this.p.dim(this.summary()?`(${this.summary()})`:"")}`,o=this.span(),a=Math.max(0,i.length-o),c=this.phase==="applying"?a:Math.min(this.offset,a);this.offset=c;let u=i.slice(c,c+o),f=i.length-c-u.length,l=[c>0?` ${this.more(-1,`↑ ${c} more`)}`:"",...u];while(l.length<o+1)l.push("");l.push(f>0?` ${this.more(1,`↓ ${f} more`)}`:"");let d=a>0?[["↑↓","scroll"]]:[],h=r?{badge:"BROWSE (APPLY)",keys:[...d,["enter","apply"]],right:["esc","back"]}:this.phase==="applying"?{badge:"BROWSE (APPLY)",note:"Keys wait until it ends",keys:[]}:{badge:"BROWSE (APPLY)",keys:d,right:["enter","close"]};return[...this.hub?[tt(tm(this.hub,this.color),n,!1)]:[],tt(` ${s}`,n,!1),...l.map((m)=>tt(m,n,!1)),` ${this.keyBar(h,n-1)}`].slice(0,e).join(`
|
|
676
|
+
`)}keyBar(t,e){let n=`${Xe(this.p,t.badge)}${this.color?" ":" "}`,r=([a,c])=>So(this.p,a,c),{note:i,keys:s,right:o}=t;for(;;){let a=`${n}${[t.lead??"",i?this.p.dim(i):"",...s.map(r)].filter(Boolean).join(" ")}`,c=o?r(o):"";if(z(a)+(o?3+z(c):0)<=e)return o?It(a,c,e):tt(a,e,!1);if(i)i=void 0;else if(s.length>2||!o&&s.length>1)s=s.toSpliced(-2,1);else if(o)o=void 0;else return tt(a,e,!1)}}more(t,e,n){return this.p.dim(Ze({kind:"page",step:t,...n?{pane:n}:{}},e))}counts(){if(this.showing==="search"){let i=[...this.loading?["Loading…"]:[],...this.listing?[`${this.matches().length} found`]:[],...this.listing?.offline?[`offline, from ${lc(this.listing.at)}`]:[]];return i.length>0?i.join(" · "):"on GitHub"}let t=this.busy.values().some((i)=>i==="Updating…")?"Updating… · ":"",e=this.list,n=this.removes.size,r=n>0?` · ${n} marketplace${n===1?"":"s"} to remove`:"";return`${t}${e.matched()}/${e.total()} · ${e.pickedCount()} picked${r}`}searchText(){let t=(this.showing==="search"?this.query:this.field).value;if(t)return`${t}_`;if(this.showing==="search")return this.p.dim("Search… a marketplace or a palette");let e=this.hint.text();return this.p.dim(`Search…${e?` e.g. ${e}`:""}`)}heading(){let t=this.showing==="search"?"Search marketplace":"Browse";return`${this.p.bold(t)} ${this.p.dim(`(${this.counts()})`)}`}searchBox(t){return this.framed(t,`${this.p.dim(I.search)} ${this.searchText()}`)}framed(t,e){let n=(i,s)=>this.p.dim(`${i}${"─".repeat(t-2)}${s}`),r=this.p.dim("│");return[n("╭","╮"),`${r} ${tt(e,t-4)} ${r}`,n("╰","╯")]}paletteState(t){let e=this.picked.has(t.name),n=this.installed.has(t.name),r=e&&n?"Installed":e?"Will install":n?"Will remove":"Not installed",i=e&&n&&this.updates.has(t.name)?this.renew.has(t.name)?" · Will update":" · Update ready":"";return`${r}${i}${this.startup===t.name?" · Default":""}`}detail(t){let e=this.current().focusedRow();if(e?.kind==="extra")return e.extra.found?this.foundDetail(e.extra.found,t):WS;if(e?.kind!=="top")return WS;let n=this.marketplaceNamed(e.name);if(n)return this.marketplaceDetail(n,t);let r="In no marketplace you added — its installed palettes stay";return{title:this.p.bold(e.name),lines:Ht(r,t),brief:r}}foot(t){let e=this.inside.focusedRow();if(e?.kind==="catalog"){let c=this.inside.inside(e),u=c.filter((f)=>this.installed.has(f.name)).length;return[`${this.p.bold(e.name)}${e.native?` ${this.p.dim(e.native)}`:""}`,this.p.dim(`${se(c.length)} · ${u} installed`),""]}if(e?.kind==="extra"&&e.extra.action){let[c,u]=this.actionAbout(e.extra.action,this.focusedMarketplace()?.source??"");return[this.p.bold(c),this.p.dim(u),""]}if(e?.kind!=="palette")return["","",""];let n=e.entry,r=Wa(n),i=`Gate ${Ne.length-r.length}/${Ne.length}`,s=n.pictures?.length??0,o=[...s>0?[`${s} picture${s===1?"":"s"}`]:[],...n.base?[`Base ${n.base}`]:[]].join(" · "),a=r.length>1?` · +${r.length-1}`:"";return[`${this.color?this.p.bold(`${dr(n.cursor)}${n.name}${$t}`):n.name} ${this.p.dim(this.paletteState(n))}`,r[0]===void 0?this.p.dim(`${i} · passes`):`${i} · ${this.p.bold(I.miss)} ${r[0]}${a}`,tt(this.p.dim(o),t)]}marketplaceDetail(t,e){let n=yt(t.source)?`Auto-update ${this.want.get(t.source)??t.auto?"on":"off"}`:Xp(t.status),r=this.failed.get(t.source),i=this.adds.has(t.source)?["Will add"]:this.want.has(t.source)?[`Auto-update turns ${this.want.get(t.source)?"on":"off"}`]:[];return{title:this.p.bold(t.id),lines:[...t.description?[...Ht(t.description,e).map((s)=>this.p.dim(s)),""]:[],...yt(t.source)?[]:[n],...r?Ht(r,e).map((s)=>this.p.error(s)):[],...i.length>0?["",...i.flatMap((s)=>Ht(s,e))]:[]],brief:[n,...i].join(" · ")}}foundDetail(t,e){if(t.kind==="new")return{title:this.p.bold("Add marketplace"),lines:this.formLines(e),brief:"enter adds a repository or a folder"};if(t.kind==="search"){let s=`The marketplaces anyone publishes on GitHub with the ${po} topic, listed every half hour`;return{title:this.p.bold("Search marketplace"),lines:[...Ht(s,e),"",...Ht("enter opens the search",e)],brief:"enter searches the marketplaces on GitHub"}}if(t.kind==="back")return{title:this.p.bold("Back"),lines:["Back to your marketplaces"],brief:"enter goes back"};if(t.kind==="state"){let[s,o]=this.stateOf(),a=`Repositories with the ${po} topic, read every half hour into one list`;return{title:this.p.bold("Marketplaces"),lines:[...Ht(a,e),"",...Ht([s,o].filter(Boolean).join(" · "),e),...this.loadError?Ht(this.loadError,e).map((c)=>this.p.error(c)):[],"",...Ht("Not listed yet? + Add marketplace adds one by its owner/repo",e)],brief:[s,o].filter(Boolean).join(" · ")}}let n=t.listed,r=this.known(n.source),i=r?this.addedNote(r):this.busy.get(n.source)??this.failed.get(n.source)??"space adds it, enter adds it and goes back";return{title:this.p.bold(n.id),lines:[this.p.dim(n.source),...Ht(n.about,e).map((s)=>this.p.dim(s)),this.p.dim([`★ ${n.stars}`,...n.updated?[`updated ${n.updated}`]:[]].join(" · ")),"",...Ht(i,e),"",...this.paletteLines(n,e)],brief:[se(n.palettes.length),i].join(" · ")}}paletteLines(t,e){let n=Math.min(Math.max(...t.palettes.map((i)=>z(i.name))),Math.max(8,e-16)),r;return t.palettes.flatMap((i)=>{let s=i.catalog!==r&&i.catalog?[this.p.dim(i.catalog)]:[];r=i.catalog;let o=this.color?` ${Uu(oo(i))}`:"";return[...s,` ${tt(i.name,n)}${o}`]})}formLines(t){let e=this.side==="form",n=this.address.value,r=n?`${n}${e?"_":""}`:e?"_":this.p.dim("owner/repo or a folder"),i=this.formError??(this.adding===void 0?void 0:this.failed.get(this.adding)),s=this.adding!==void 0&&this.fetching()?[this.p.dim(`${mn[this.beat%mn.length]} Fetching ${Zp(this.adding)}…`)]:i?Ht(i,t).map((o)=>this.p.error(o)):[];return["Enter marketplace source:",this.p.dim("Examples:"),...["owner/repo (GitHub)","owner/repo#v1 (a tag or branch)","~/path/to/marketplace (a folder)"].map((o)=>this.p.dim(` · ${o}`)),"",...this.framed(t,r).map((o)=>Ze({kind:"form"},o)),...s.length>0?["",...s]:[]]}footer(){if(this.help)return{badge:"HELP",keys:[],right:["? esc","close"]};if(this.leaving!==void 0)return{badge:"BROWSE",lead:"Apply your changes before you leave?",keys:[["y","apply"],["n","discard"]],right:["esc","stay"]};if(this.removing)return{badge:"BROWSE",lead:`Remove ${this.removing.id}? Its installed palettes stay installed`,keys:[["y","remove"],["n","keep"]],right:["esc","back"]};if(this.showing==="search")return{badge:"SEARCH",keys:[...this.searchKeys(),...this.query.value?[["bksp","edit"]]:[],["?","keys"]],right:this.query.value?["esc","clear search"]:["esc","back"]};if(this.side==="form")return{badge:"BROWSE (ADD)",keys:[...this.fetching()?[]:[["enter","add"],...this.address.value?[["bksp","edit"]]:[]],["?","keys"]],right:["esc","cancel"]};let t=this.field.value,e=this.dirty()?[["enter","apply"]]:[],n=[...t?[["bksp","edit"]]:[],["?","keys"]];return{badge:t?"BROWSE (FILTER)":"BROWSE",keys:[...this.side==="panel"?this.panelKeys(e):this.cardKeys(e),...n],right:t?["esc","clear filter"]:this.side==="panel"?["esc","back"]:["esc","cancel"]}}panelKeys(t){let e=this.inside,n=e.focusedRow();if(n?.kind==="extra"&&n.extra.action)return[["enter",this.actionVerb(n.extra.action,this.focusedMarketplace()?.source??"")]];if(n?.kind==="catalog"&&e.foldable())return[n.expanded?["←","close"]:["→","open"],["space","pick"]];let r=n?.kind==="palette"&&this.updates.has(n.entry.name)&&this.installed.has(n.entry.name);return[["space","pick"],...r?[["ctrl+r",this.renew.has(n.entry.name)?"keep":"update"]]:[],...t]}searchKeys(){let t=this.focusedFound();if(t?.kind==="back")return[["enter","back"]];if(t?.kind==="state")return this.loading?[]:[["space","load"]];let e=t?.kind==="listed"?t.listed.source:void 0;if(e===void 0)return[];let n=this.known(e);if(!n)return[["space","add"],["enter","add and go back"]];return[...this.adds.has(n.source)?[["space","undo"]]:[],["enter","go to it"]]}cardKeys(t){let e=this.list.focusedRow();if(e?.kind==="extra")return[["enter","open"]];if(e?.kind!=="top")return t;return[...this.inside.size()>0?[["→","open"]]:[],["space","pick"]]}columns(){return(this.output??process.stdout).columns??100}rows(){return(this.output??process.stdout).rows??24}fitItems(t){let e=Math.max(wc,this.rows()-t);this.maxItems=e,this.list.maxItems=e,this.results.maxItems=e}view(){let t=this.draw().split(`
|
|
677
|
+
`);return Array.from({length:this.rows()},(e,n)=>t[n]??"")}small(t,e,n){return`Needs ${GS}×${n} — now ${t}×${e}
|
|
678
|
+
${this.p.dim("esc cancels")}`}draw(){let t=this.columns(),e=this.rows();if(t<GS||e<US)return this.small(t,e,US);if(this.phase!=="browse")return this.frame(t,e);this.follow();let n=t>=f3,r=t-1,i=e>=d3?[` ${this.heading()}`,...this.searchBox(t-3).map((d)=>` ${d}`)]:[It(` ${this.p.dim(I.search)} ${this.searchText()}`,this.p.dim(this.counts()),r)],s=i.length+3+(n?0:1)+(this.hub?1:0);if(e<s+wc)return this.small(t,e,s+wc);this.fitItems(s);let o=this.current().window(),a=(d)=>yo(d).flatMap((h)=>h.sequence?[]:[h.text]).join("").trimEnd(),c=Math.max(0,...o.lines.map((d)=>z(a(d))+3)),u=n?Math.min(u3,r-l3-1,Math.max(c3,c)):r;this.split=n?u+1:0;let f=!n&&this.side!=="cards"?this.panel(r-1,this.maxItems+3).map((d)=>` ${d}`):this.cards(o,n,u,r),l=[...this.hub?[tt(tm(this.hub,this.color),r,!1)]:[],...i.map((d)=>tt(d,r,!1)),...f,` ${this.keyBar(this.footer(),r-1)}`];return(this.help?this.helpBox(l,t,e,l.length-f.length-1):l).join(`
|
|
679
|
+
`)}cards({lines:t,above:e,below:n},r,i,s){let o=t.map((u)=>` ${u}`);while(o.length<this.maxItems)o.push("");let a=[e>0?` ${this.more(-1,`↑ ${e} more`)}`:"",...o,n>0?` ${this.more(1,`↓ ${n} more`)}`:""];if(!r)return[...a.map((u)=>tt(u,i,!1)),tt(` ${this.p.dim(this.detail(i-2).brief)}`,i,!1)];let c=this.panel(s-i-1,a.length);return a.map((u,f)=>`${tt(u,i)} ${c[f]??""}`)}panel(t,e){let n=this.side!=="cards",r=(S)=>n?this.p.accent(S):this.p.dim(S),i=t-4,s=(S)=>`${r("│")} ${tt(S,i)} ${r("│")}`,o=this.detail(i),a=n?this.p.accent(o.title):o.title,c=e-2;if(this.current().focusedRow()?.kind!=="top"){let S=o.lines.length>c?[...o.lines.slice(0,c-1),this.p.dim("…")]:o.lines.slice(0);while(S.length<c)S.push("");return[this.edge(t,"top",a,"",n),...S.map(s),this.edge(t,"bottom","","",n)]}let u=this.inside.pins(),f=u.length>0?u.length+1:0,l=n?this.foot(i):[],d=l.length>0&&c-1-f-(l.length+1)>=wc?l:[],h=f+(d.length>0?d.length+1:0),m=o.lines.slice(0,Math.max(0,c-2-h));this.inside.maxItems=Math.max(1,c-m.length-1-h);let{lines:p,above:b,below:$}=this.inside.window(),k=p.length>0?p:[this.p.dim(" No palettes yet")];while(k.length<this.inside.maxItems)k.push("");let v=$>0?this.more(1,`↓ ${$} more`,"panel"):"";return[this.edge(t,"top",a,"",n),...m.map(s),s(b>0?this.more(-1,`↑ ${b} more`,"panel"):""),...k.map(s),...h>0?[this.edge(t,"mid","",v,n)]:[],...d.map(s),...d.length>0&&f>0?[this.edge(t,"mid","","",n)]:[],...u.map(s),this.edge(t,"bottom","",h>0?"":v,n)]}edge(t,e,n,r,i){let s=(l)=>i?this.p.accent(l):this.p.dim(l),[o="",a=""]=[...Ct(2,e)],c=n?` ${tt(n,t-8,!1)} `:"",u=r?` ${r} `:"",f=Math.max(0,t-3-z(c)-z(u)-(r?1:0));return`${s(`${o}─`)}${c}${s("─".repeat(f))}${u}${s(`${r?"─":""}${a}`)}`}helpRows(){if(this.showing==="search")return[["Move","↑↓ home end pgup pgdn"],["Filter","Any text · bksp · ctrl-u clears"],["Add","space adds it · again to undo"],["","enter adds it and goes back to its card"],["Reload","ctrl+r the list, which GitHub fills every half hour"],["Back","← esc · ← Back"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]];return[["Move","↑↓ home end pgup pgdn"],["Open","→ enter · a marketplace into the panel, a catalog"],["Back","← esc · from the panel to the marketplaces"],["Pick","space · a palette, a catalog, a marketplace"],["Filter","Any text · bksp · ctrl-u clears"],["Marketplace","↓ below its palettes, to its own actions"],["","enter updates it, turns auto-update on or off, removes it"],["Add","enter on + Add marketplace · a repository or a folder, in the panel"],["Search","enter on Search marketplace · finds one on GitHub"],["Update","ctrl+r on a palette marked ↑"],["Apply","enter reviews and applies · esc cancels"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]]}helpBox(t,e,n,r){let i=this.helpRows(),s=Math.max(...i.map(([l])=>l.length))+3,o=Math.min(e-2,6+s+Math.max(...i.map(([,l])=>z(l)))),a=Math.floor((e-o)/2),c=`│${" ".repeat(o-2)}│`,u=[`╭─ Help ${"─".repeat(o-9)}╮`,c,...i.map(([l,d])=>`│${tt(` ${this.p.bold(l.padEnd(s))}${d}`,o-4)} │`),c,`╰${"─".repeat(o-2)}╯`],f=Math.max(0,Math.min(Math.max(r,Math.floor((n-u.length)/2)),n-1-u.length));return t.map((l,d)=>{let h=u[d-f];return h===void 0?l:`${iy(l,a)}${h}`})}}import{existsSync as L6}from"node:fs";import{existsSync as qc,mkdirSync as $6,readFileSync as cb}from"node:fs";import{dirname as k6}from"node:path";class ge extends Error{}import{closeSync as j5,mkdtempSync as _5,openSync as B5,readSync as G5,rmSync as hM}from"node:fs";import{homedir as U5,tmpdir as W5}from"node:os";import{join as mM}from"node:path";import{readFileSync as p3}from"node:fs";var St={pitch:25,cols:22,rows:9,height:13},ps={cols:25,rows:21},Pe={cols:10,rows:3,pitch:12,top:4},Oe=Pe.top+Pe.rows+1,g3=1073741824,sg=2147483648,b3=-1073741826,w3=1600,$3=56,k3=4,KS=20,y3=50,zS=[["space","unfolds a set of ×N"],["o","opens the artwork page in a browser"],["c","switches between cutouts and every post"],["a","opens the advanced filters"],["1-9","turn a tag of the tags row on or off"],["ctrl+v","tries on a picture from the clipboard — or drop one on the window"]];function og(t){return Math.max(0,Math.floor((t-1)/Pe.pitch))}function yr(t,e){let n=e-Oe-2;return{perRow:Math.max(1,Math.floor((t-1)/St.pitch)),rowsVis:Math.max(1,Math.floor(n/St.height)),height:n}}function ef(t,e=!0){if(e)return`\x1B_Ga=t,t=f,f=100,i=${t.id},q=2;${Buffer.from(t.path).toString("base64")}\x1B\\`;let n;try{n=p3(t.path).toString("base64")}catch{return}let r=n.match(/.{1,4096}/g)??[""];return r.map((i,s)=>{let o=s<r.length-1?1:0;return s===0?`\x1B_Ga=t,f=100,i=${t.id},m=${o},q=2;${i}\x1B\\`:`\x1B_Gm=${o},q=2;${i}\x1B\\`}).join("")}function QS(t,e){let n=t.crop===void 0?"":`,x=0,y=${t.crop*e.h},w=${t.cols*e.w},h=${t.rows*e.h}`;return`\x1B[${t.row+1};${t.col+1}H\x1B_Ga=p,i=${t.id},p=${t.id}${n},c=${t.cols},r=${t.rows},C=1,z=${t.z},q=2\x1B\\`}function ag(t){return`\x1B_Ga=d,d=i,i=${t},p=${t},q=2\x1B\\`}function Mc(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}var Rt=wt("bold"),U=wt("dim"),vc=wt("ok"),Kn=wt("warn"),kc=dr,tf=Dh,eg=!1;function nf(t){return eg=!0,t.beat}function Jo(t){return mn[nf(t)%mn.length]}function Et(t){return z(t)}function ng(t,e){if(z(t)<=e)return t;let n="";for(let r of t){if(z(n+r)>e)break;n+=r}return n}function gi(t){return zi(t)}function cg(t){return`${wt("reverse")}${zi(t)}`}function bi(t,e,n,r){return n?[[`${I.link} `,r,void 0,{kind:"link",url:n}],[t,e,n]]:[[t,e]]}function tg(t){let e=Zh(t);return e?{kind:"key",key:e}:void 0}function gs(t){return t.reduce((e,[n])=>e+Et(n),0)}function v3(t,e){let n=[],r=e;for(let[i,s,o,a]of t){let c=Et(i);if(c<=r){n.push([i,s,o,a]),r-=c;continue}n.push([`${ng(i,r)}…`,s,o,a]);break}return n}class Ql{parts=[];cols;constructor(t){this.cols=t}put(t,e,n="",r,i){let s=e.replace(/\p{Cc}/gu,"");return this.parts.push({col:t,text:s,sgr:n,...r?{link:r}:{},...i?{spot:i}:{}}),t+Et(s)}run(t,e){let n=t;for(let[r,i,s,o]of e)n=this.put(n,r,i,s,o);return n}mark(t,e,n){this.parts.push({col:t,text:" ".repeat(Math.max(0,e)),sgr:"",spot:n,hidden:!0})}zones(t){return this.parts.flatMap(({col:e,text:n,link:r,spot:i})=>{let s=i??(r?{kind:"link",url:r}:void 0),o=e>=0&&e<this.cols?Et(ng(n,this.cols-e)):0;return s&&o>0?[{row:t,col:e,width:o,height:1,target:s}]:[]})}right(t,e){this.run(t-gs(e),e)}center(t,e){this.run(Math.floor((t-gs(e))/2),e)}render(){let t="";for(let{col:e,text:n,sgr:r,link:i,hidden:s}of this.parts){if(s||e>=this.cols||e<0)continue;let o=ng(n,this.cols-e);t+=`\x1B[${e+1}G${r}${Ku(o,i)}${r?ve:""}`}return t}}function S3(t){return t.replace(/_\([^)]*\)?$/,"")}function tE(t){return[`${t.reduced?"↓":""}${t.width}×${t.height}`,Math.max(t.width,t.height)<w3?Kn:U]}function Sc(t,e,n){let r=[...n.keys??[]],i=n.lead,s=n.right,o=()=>{let u=[...i?[gs(i)]:[],...r.map(([l,d])=>Et(l)+1+Et(d))];return(n.badge?Et(n.badge)+4:0)+u.reduce((l,d)=>l+d,0)+3*Math.max(0,u.length-1)+(s?3+Et(s[0])+1+Et(s[1]):0)};while(o()>e)if(r.length>2)r.splice(-2,1);else if(s)s=void 0;else if(r.length>1)r.splice(-2,1);else break;if(i&&o()>e)i=v3(i,Math.max(0,gs(i)-(o()-e)-1));let a=0;if(n.badge)a=t.put(0,` ${n.badge} `,wt("pill"))+2;if([...i?[i]:[],...r.map(([u,f])=>[[u,Rt,void 0,tg(u)],[` ${f}`,U,void 0,tg(u)]])].forEach((u,f)=>{a=t.run(a+(f?3:0),u)}),s){let u=tg(s[0].split(" ")[0]??"");t.right(e,[[s[0],Rt,void 0,u],[` ${s[1]}`,U,void 0,u]])}}function E3(t,e){if(t==="d")return U;if(t==="b")return Rt;if(t==="s")return tf(e.colors.selection);if(t==="c")return tf(e.colors.cursor);let n=/^([BK]?)(\d+)$/.exec(t);if(!n)return"";let r=Number(n[2]);if(n[1]==="K")return`${zi(0)}${ty(r)}`;return`${n[1]==="B"?Rt:""}${zi(r)}`}function M3(t,e,n,r,i){let s=Yt.indexOf(qi(r.scene)),o=Yt.flatMap((c,u)=>[...u?[[" ",""]]:[],[c.name,u===s?Rt+i:U,void 0,{kind:"scene",scene:u}]]),a=gs(o)<=n;t?.run(e,a?o:[[qi(r.scene).name,Rt+i],[` ${s+1}/${Yt.length}`,U]])}function x3(t,e,n,r,i,s,o){let{ansi:a,cursor:c}=s.colors;M3(t[e-2],n,r,s,o);let u=r<Cy?3:4;if(r>=56)u=Math.min(7,Math.floor((r+1)/8)-1);let f=n;for(let d=0;d<8;d++)f=(t[e]?.put(f,"▀".repeat(u),kc(a[d]??c)+tf(a[d+8]??c))??f)+1;let l=e+2;for(let d of qi(s.scene).lines){let h=Eo(d,r);if(!h)continue;if(l>i)return;t[l]?.run(n,h.map(([m,p])=>[m,E3(p,s)])),l++}}function O3(t,e,n){let r=[[]];for(let o of t){let a=r[r.length-1];if(a.length===0||Et([...a,o].join(" "))<=e)a.push(o);else if(r.length<n)r.push([o]);else break}let i=r.reduce((o,a)=>o+a.length,0),s=r[r.length-1];while(i<t.length&&s.length>0&&Et([...s,`+${t.length-i}`].join(" "))>e)s.pop(),i--;if(i<t.length)s.push(`+${t.length-i}`);return r.flatMap((o)=>o.length>0?[o.join(" ")]:[])}function DS(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function P3(t,e,n){return t.flatMap((r,i)=>[...i>0?[[" ",""]]:[],[r,""],...(e[r]??[]).flatMap((s)=>[[" ",""],...bi(s.kind,"",s.url,n)])])}function I3(t,e,n,r,i){let s=r.info,o=s?.artists??[],a=gi(r.tiles[r.focus]?.siteAnsi??r.siteAnsi);[["Post",s?.page?bi(DS(s.page),"",s.page,a):[["—",U]]],["Source",s?.source?bi(DS(s.source),"",s.link,i):[["—",U]]],["Artist",o.length>0?P3(o,s?.profiles??{},i):[["—",U]]]].forEach(([u,f],l)=>{t[e+l]?.put(n,u,U),t[e+l]?.run(n+12,f)})}function R3(t,e,n,r,i,s){let o=s.info,a=s.tiles[s.focus];if(!o||!a)return;let c=s.shown?.id===a.key?s.shown:void 0,u=n+12,f=Math.max(12,r-12),l=[`${a.width}×${a.height}${o.ext?` ${o.ext.toUpperCase()}`:""}`,...c?[jl(c.bytes)]:[]].join(" · "),d=[o.rating??"—",a.score>0?`★${a.score}`:"",o.posted??""].filter(Boolean).join(" · "),h=(b,$)=>b.length>0?O3(b,f,$).map((k)=>[[k,""]]):[[["—",U]]],m=[["Characters",h(o.characters,2)],["Series",h(o.series,1)],["Tags",h(o.tags,3)],["Rating",[[[d,d==="—"?U:""]]]],["File",[[[l,""],...c?[[" ",""]]:[],...c?eE(c):[]]]],["Uploader",[[o.uploader?[o.uploader,""]:["—",U]]]]],p=e;for(let[b,$]of m){if(p+$.length-1>i)return;t[p]?.put(n,b,U);for(let k of $)t[p]?.run(u,k),p++}}var A3=["Size","Position","Opacity"],N3=[0,3,6];function T3(t,e){let{tune:n,untuned:r}=t;return e===0?n.size!==r.size:e===1?n.at!==r.at:n.opacity!==r.opacity}function H3(t){return t.toFixed(2)}function F3(t,e,n,r,i,s){let o=i.tuning;if(!o)return;let a=i.tiles[i.focus];t[e-3]?.run(n,[[i.palette,Rt+s],[" Background",U],...a?[[" · ",U],...bi(`${a.site} ${a.id}`,U,a.page||void 0,gi(a.siteAnsi))]:[]]);let c=Math.max(8,r-n-21),u=20,f=Math.max(100,o.fill);for(let[l,d]of A3.entries()){let h=e+N3[l],m=o.field===l,p=m?Rt:U;if(m)t[h]?.put(n,"▶",s,void 0,{kind:"field",field:l});t[h]?.put(n+2,d,p,void 0,{kind:"field",field:l});let b;if(l===1){for(let $=1;$<=9;$++){let k=$===i.tune.at,v=t[e+2+Math.floor(($-1)/3)],S=n+12+($-1)%3*3;v?.mark(S-1,3,{kind:"place",at:$}),v?.put(S,k?"■":"·",k?Rt+s:U)}b=Dt[i.tune.at-1]??"center"}else{let $;if(l===0){let{size:k}=i.tune;$=k==="fill"?c-1:Math.floor((k-u)*(c-1)/(f-u+1)),b=k==="fill"?"fill":`${k}%`}else $=Math.floor(Math.round(i.tune.opacity*100)*(c-1)/100),b=H3(i.tune.opacity);$=Math.max(0,Math.min(c-1,$)),t[h]?.run(n+12,[["━".repeat($),s],["●",Rt],["─".repeat(c-1-$),U]]),t[h]?.mark(n+12,c,{kind:"track",field:l})}if(t[h]?.right(r-2,[[b,p]]),T3(i,l))t[h]?.put(r-1,"↺",m?Rt+s:U)}}function L3(t,e,n,r,i,s){t[e]?.put(n,`╭${"─".repeat(i-2)}╮`,s);for(let o=e+1;o<e+r-1;o++)t[o]?.put(n,"│",s),t[o]?.put(n+i-1,"│",s);t[e+r-1]?.put(n,`╰${"─".repeat(i-2)}╯`,s)}function rg(t,e=t.site,n=t.siteAnsi){return[` ${e} `,cg(n)]}function yc(t){return`${Y[Math.floor(t/Ur)]?.name??"local"} ${t%Ur}`}function $c(t,e,n){let r=Y[Math.floor(e/Ur)],i=yc(e),s=t.indexOf(i);if(!r||s===-1)return[[t,n]];return[[t.slice(0,s),n],...bi(i,n,r.pageUrl(e%Ur),gi(r.ansi)),[t.slice(s+i.length),n]].filter(([a])=>a!=="")}function C3(t,e,n){let r=[{name:"all",moved:!1},...Y].flatMap((s,o)=>{let a=`${s.name}${s.moved?"*":""}`,[c,u]=s.name===n.site?rg(n,a):[` ${a} `,U],f=[c,u,void 0,{kind:"site",tab:o}];return o?[[" ",""],f]:[f]}),i=gs(r)<=e;t.run(0,i?r:[rg(n)])}function j3(t,e,n,r){if(n.chips.length===0)return;let i=[["tags ",U]],s=Et("tags "),o=n.chips.length;for(let[a,c]of n.chips.entries()){let u=` ${a+1} ${c.name} `;if(s+Et(u)+1>e-2)break;i.push([u,c.on?`${wt("reverse")}${r}`:U,void 0,{kind:"chip",index:a}],[" ",""]),s+=Et(u)+1,o--}if(o>0)i.push([`+${o}`,U]);t.run(0,i)}function _3(t,e,n,r,i){t[Oe-1]?.put(0,"─".repeat(n-1),U);let s=t[Pe.top-1],o=og(n),a=r.held.length>o?Math.max(0,o-1):r.held.length;for(let[c,u]of r.held.slice(0,a).entries()){let f=c*Pe.pitch,l=u.up?Rt:"";if(s.run(f+1,u.page?bi(String(u.id),l,u.page,gi(u.ansi)):[["● ",gi(u.ansi)],[String(u.id),l]]),u.up)for(let d=0;d<Pe.rows;d++)t[Pe.top+d]?.put(f,"▌",i);if(u.thumb)e.push({id:g3+c,path:u.thumb,row:Pe.top,col:f+1,cols:Pe.cols,rows:Pe.rows,z:-1})}if(a<r.held.length)s.put(a*Pe.pitch+1,`+${r.held.length-a}`,U)}function B3(t,e,n,r){if(n.editing!==void 0){let c=t.run(0,[["⌕ ",r],[n.editing,""],["█",r]]),u=n.suggest?.length?" ↑↓ pick enter searches":" enter searches";t.put(c,n.editing?u:` A tag, a post URL or an id, or drop a picture or ctrl+v — ${n.tag||"esc leaves"}`,U);return}let i=t.run(0,[["⌕ ",r,void 0,{kind:"query"}],[n.tag||"Nothing yet — / searches, ctrl+v pastes a picture",n.tag?"":U,void 0,{kind:"query"}]]),s=Ri.filter((c)=>!n.block.includes(c)),o=Y.filter((c)=>!n.enabled.includes(c.name)).map((c)=>c.name),a=[n.preset,...n.solo?["solo"]:[],n.order,...n.rating.join("+")==="safe"?[]:[n.rating.join("+")],...s.length>0?[`allows ${s.join("+")}`]:[],...n.narrow.size>0?[`≥${n.narrow.size}px`]:[],...n.narrow.score>0?[`score≥${n.narrow.score}`]:[],...n.narrow.png?["png"]:[],...n.hide.length+n.hideTags.length>0?[`hides ${[...n.hide,...n.hideTags].join("+")}`]:[],...o.length>0?[`all skips ${o.join("+")}`]:[]];if(t.put(i,` ${a.join(" ")}`,U),n.total>0||!n.searching){let c=[[`${n.tiles.length}/${n.checked}`,""]];if(n.checked<n.total)c.push([` of ${n.total}`,U]);t.right(e,c)}}function eE(t){if(t.cut==="on")return[[`Cut out · ${t.clear}% transparent`,vc]];if(t.cut==="off")return[["Opaque · x cuts out",Kn]];if(t.cut==="failed")return[["Opaque · no cut-out",Kn]];return[t.clear>0?[`${t.clear}% transparent`,vc]:["Opaque",Kn]]}function qS(t){return t.site==="all"?"any site":t.site}function ig(t,e){if(t.installing!==void 0)return $c(`${Jo(t)} Installing ${t.palette} ← ${yc(t.installing)}`,t.installing,Kn);if(t.hint)return[[t.hint,vc]];if(t.error)return[[t.error,Kn]];if(t.waiting!==void 0)return[[`${t.slow??t.site} asked to slow down · ${t.waiting}s`,Kn]];if(t.fetching){let{id:n,got:r,size:i}=t.fetching;return $c(`${Jo(t)} Fetching ${yc(n)} · ${_l(r,i)}`,n,Kn)}if(t.cutting!==void 0)return $c(`${Jo(t)} Cutting out ${yc(t.cutting)}`,t.cutting,Kn);if(t.preparing!==void 0)return $c(`${Jo(t)} Preparing ${yc(t.preparing)}`,t.preparing,Kn);if(e)return[e];if(t.saved)return $c(t.saved.text,t.saved.key,vc);if(t.note)return[[t.note,U]];return}function nE(t){if(t.ranking)return"Ranking previews by palette colors";if(t.stage==="check")return t.preset==="cutouts"?"Checking PNG headers":"Loading previews";return"Fetching posts"}function rE(t,e){return t.ranking?`${e}${t.ranking.done}/${t.ranking.total}`:""}function G3(t,e,n,r,i){let{background:s,cursor:o,selection:a}=r.colors,{ranking:c}=r,u=c?Math.round(n*c.done/c.total):-1,f=Math.max(6,Math.round(n*0.22)),l=nf(r)%(KS*2)/KS,d=Math.round((n-f)*(0.5-0.5*Math.cos(Math.PI*(l<1?l:2-l)))),h=At(s,o,i),m=At(s,At(a,s,0.15),i),p=Array.from({length:n},($,k)=>{let v=(u>=0?k<u:k>=d&&k<d+f)?h:m;return k===0||k===n-1?At(v,s,0.55):v}),b=0;for(let $=1;$<=n;$++)if($===n||p[$]!==p[b])t?.put(e+b," ".repeat($-b),tf(p[b])),b=$}function U3(t,e,n,r,i){let{background:s,foreground:o}=i.colors,a=i.loaderFrom===void 0?0:Math.min(1,(nf(i)-i.loaderFrom)/k3),c=e+(n>=5?Math.floor((n-5)/2):0);t[c]?.center(r,[[nE(i),Rt+kc(At(s,o,a))],[rE(i," "),kc(At(s,At(o,s,0.45),a))]]);let u=Math.min($3,r-8);if(G3(t[c+(n>=3?2:1)],Math.floor((r-u)/2),u,i,a),n<5)return;t[c+4]?.center(r,i.sites.flatMap(({name:f,arrived:l},d)=>[...d?[[" · ",kc(At(s,o,0.25*a))]]:[],[f,kc(At(s,l?At(o,s,0.2):o,l?a:0.32*a))]]))}function W3(t,e,n,r,i,s){if(i<=r)return;let o=Math.max(1,Math.round(r*r/i)),a=Math.max(0,Math.min(r-o,Math.round(n.scroll*r/i)));for(let c=0;c<r;c++){let u=c>=a&&c<a+o;t[Oe+c]?.put(e-1,u?"┃":"│",u?s:U)}}function K3(t,e,n){if(e)return[`${Jo(t)} ${nE(t)}${rE(t," · ")}`,U];let r=n.filter((s)=>!s.missing),i=r.filter((s)=>s.thumb).length;return i<r.length?[`${Jo(t)} Loading thumbnails · ${i}/${r.length}`,U]:void 0}function z3(t,e,n,r,i,s,o){let{perRow:a,rowsVis:c,height:u}=yr(r,i);B3(t[0],r,s,o),C3(t[1],r,s),j3(t[2],r,s,o),_3(t,e,r,s,o);let f=t.map((R,T)=>T>=Oe&&T<Oe+u?R:void 0),l=Math.floor(s.scroll/St.height),d=Math.floor((s.scroll+u-1)/St.height),h=[];for(let R=l;R<=d;R++){let T=Oe+R*St.height-s.scroll;for(let _=0;_<a;_++){let W=R*a+_,B=_*St.pitch,L=s.tiles[W];if(!L)continue;h.push(L);let gt=Math.max(T,Oe),Zt=Math.min(T+St.height,Oe+u);if(Zt>gt)n.push({row:gt,col:B,width:St.pitch-1,height:Zt-gt,target:{kind:"tile",index:W}});let it=W===s.focus;if(it)L3(f,T,B,St.height,St.pitch-1,o);let Rr=T+1,ze=Math.max(Rr,Oe),En=Math.min(Rr+St.rows,Oe+u);if(L.thumb&&En>ze)e.push({id:L.key,path:L.thumb,row:ze,col:B+1,cols:St.cols,rows:En-ze,...En-ze<St.rows?{crop:ze-Rr}:{},z:-1});let Rs=[...s.installed.includes(L.key)?[["✓ ",vc]]:[],...L.page||s.site!=="all"?bi(String(L.id),it?Rt:"",L.page||void 0,gi(L.siteAnsi)):[["● ",gi(L.siteAnsi)],[String(L.id),it?Rt:""]],[" ",""],tE(L)],Qc=St.cols-(L.mates.length>0?1:0);if(f[T+10]?.run(B+1,gs(Rs)>Qc?Rs.map(([Vf,Zf,Xf])=>[Vf.replace(/^(\S) $/,"$1"),Zf,Xf]):Rs),L.mates.length>0)f[T+10]?.put(B+St.cols,"≈",o);f[T+11]?.put(B+1,L.artist?S3(L.artist).slice(0,St.cols-8):"—",U);let yi=[];if(L.score>0)yi.push([`★${L.score}`,U]);if(L.variants>1)yi.push([` ×${L.variants}`,o]);if(yi.length>0)f[T+11]?.right(B+St.cols+1,yi)}}let m=Math.ceil(s.tiles.length/a)*St.height;W3(t,r,s,u,m,o);let p=Math.max(Oe,Oe+m-s.scroll),b=Oe+u-p,$=s.searching&&b>=2;if($)U3(f,p,b,r-1,s);let k=s.searching&&s.tiles.length===0;if(k&&!s.error){let[R,T]=zS[Math.floor(nf(s)/y3)%zS.length];t[i-2]?.run(0,[["Tip ",U],[R,Rt],[` ${T}`,U]])}let v=s.top*a,S=s.tiles.length-(s.top+c)*a,M=[...v>0?[`↑ ${v} above`]:[],...S>0?[`↓ ${S} more`]:[]];if(M.length>0)t[i-2]?.put(0,M.join(" "),U);if(!s.searching&&s.tiles.length===0&&!s.error&&s.tag)t[Oe+1]?.put(0,s.preset==="cutouts"?`No transparent cutouts of ${s.tag} on ${qS(s)} — c searches every post, tab tries ${s.nextSite}`:`No posts of ${s.tag} on ${qS(s)} — tab tries ${s.nextSite}`,U);let x=K3(s,$,h),N=ig(s,x);return Sc(t[i-1],r,{badge:"IMAGE SEARCH",lead:N,keys:k&&N?.[0]===x?[]:[["←↑↓→","move"],["enter","try on"],["tab","site"],["ctrl+v","picture"],["s","settings"],["/","search"],["?","keys"]],right:["esc","back"]}),$}function D3(t,e,n,r,i,s){let o=i.tiles[i.focus];if(!o)return;let a=i.shown?.id===o.key?i.shown:void 0,c=[rg(i,o.site,o.siteAnsi),[" ",""],...bi(String(o.id),Rt,o.page||void 0,gi(o.siteAnsi)),[" ",""],tE(o)];if(o.score>0)c.push([` · ★${o.score}`,U]);if(a)c.push([` · ${jl(a.bytes)}`,U]);if(a){if(c.push([" ",""],...eE(a)),i.coloring==="original")c.push([" · own colors",U])}if(t[0]?.run(0,c),o.mates.length>0)t[0]?.right(n,[["≈ ",s],[o.mates.join(" "),U]]);if(I3(t,1,2,i,s),i.tuning)F3(t,8,2,2+Math.min(n-4,60),i,s);else if(i.details)R3(t,5,2,Math.min(n-4,Math.max(48,Math.floor(n*0.55))),r-2,i);else x3(t,7,2,n-4,r-2,i,s);if(i.shown)e.push({id:sg+i.shown.id,path:i.shown.path,row:0,col:0,cols:n,rows:r,z:b3});if(i.tuning){Sc(t[r-1],n,{badge:"IMAGE EDIT",lead:ig(i),keys:[["↑↓","field"],["←→","step"],["=","reset"],["+","reset all"],i.tuning.field===1?["1-9","place"]:["⇧←→","×10"],["c","colors"],["enter","keep"]],right:["esc","undo"]});return}let u=ig(i);Sc(t[r-1],n,{badge:"IMAGE PREVIEW",lead:u,keys:i.installing===void 0?[["←→","browse"],["enter","install"],["t","tune"],["c","colors"],["i","details"],...i.details?[]:[["⇧←→","example"]],...i.shown?.cut==="on"||i.shown?.cut==="off"?[["x","cut out"]]:[],["?","keys"]]:[],right:i.installing===void 0?["esc","grid"]:void 0})}var q3=[["Field","↑↓ size, position, opacity"],["Step","←→ · ⇧←→ ×10"],["Place","1-9 the nine positions"],["Reset","= this field back to its default · + every field"],["Colors","c the palette's tone or its own colors, opacity back to its default"],["Keep","enter back to try, installed with the picture"],["Undo","esc"],["Close","? esc"]],J3={grid:[["Move","←↑↓→ j k home end pgup pgdn"],["Try on","enter"],["Site",`tab shift+tab all, ${Y.map((t)=>t.name).join(", ")}`],["Posts","c cutouts or every post"],["Search","/ a tag, a post URL or an id"],["Tags","1-9 turn a tag of the tags row on or off — the palette's own, then danbooru's related characters"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window or paste its link"],["Unfold","space a set of ×N"],["Open","o the artwork page in a browser · O the post page"],["Settings","s rating, block, posts, solo, order, sets, remove bg"],["Advanced","a or Advanced › in settings min score, min size, sites, hide, hide tags, PNG only"],["Back","esc returns to preview"],["Close","? esc"]],try:[["Browse","←→"],["Install","enter"],["Tune","t size, position and opacity, installed with the picture"],["Colors","c the palette's tone or its own colors, installed with the picture"],["Details","i characters, series, tags, rating and file, under Post, Source and Artist"],["Example",`⇧←→ ${Yt.map((t)=>t.name.toLowerCase()).join(", ")}`],["Cut out","x the background off or on, on an opaque picture"],["Open","o the artwork page in a browser · O the post page"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window"],["Grid","esc"],["Close","? esc"]]},ug=6,Y3=24;function Ec(t){return[...t.settings.flatMap((e,n)=>Boolean(e.advanced)===t.advanced?[n]:[]),t.settings.length]}function V3(t){return t.replace(/^[A-Z](?=[a-z])/,(e)=>e.toLowerCase())}function JS(t){let e=t.settings.filter((n)=>Boolean(n.advanced)!==t.advanced).map((n)=>V3(n.label));return`${t.advanced?"Back to":"More filters:"} ${e.join(", ")} — enter opens the page, or a from any row`}function iE(t,e,n){let r=t.indexOf(e);if(r!==-1)return t[(r+n+t.length)%t.length];let i=Number(e)||0;return(n>0?t.find((o)=>(Number(o)||0)>i):t.findLast((o)=>(Number(o)||0)<i))??t[n>0?0:t.length-1]}function ms(t,e){let n=[],r="";for(let i of t.split(" "))if(r&&Et(r)+1+Et(i)>e)n.push(r),r=i;else r=r?`${r} ${i}`:i;return r?[...n,r]:n}function Z3(t){if(t.entry!=="number"||t.choices.includes(t.value))return t.choices;let e=t.choices.findIndex((n)=>(Number(n)||0)>Number(t.value));return e===-1?[...t.choices,t.value]:t.choices.toSpliced(e,0,t.value)}function X3(t,e,n,r){let i=cg(r),s=e&&n!==void 0;if(t.entry==="text")return[{text:` ${s?`${n}█`:t.value||"none"} `,sgr:s||e&&t.value?i:t.value?"":U}];let o=s?[]:t.value.split(" "),a=(s?t.choices:Z3(t)).map((c,u)=>{let f=o.includes(c),l=t.multi&&e&&u===t.cursor?wt("under"):"";return{text:t.multi?` ${f?"[x]":"[ ]"} ${c} `:` ${c} `,sgr:f?e?`${l}${i}`:"":l?`${l}${U}`:U,choice:c}});return s?[...a,{text:` ${n}█ `,sgr:i}]:a}function YS(t){if(t.entry==="text")return[{text:" ".repeat(Y3),sgr:""}];let e=t.choices.map((n)=>({text:t.multi?` [x] ${n} `:` ${n} `,sgr:""}));return t.entry==="number"?[...e,{text:` ${"0".repeat(ug)}█ `,sgr:""}]:e}function Q3(t){return t.reduce((e,n)=>e+Et(n.text)+1,0)-1}function VS(t,e){let n=[[]],r=0;for(let i of t){let s=Et(i.text)>e?{...i,text:` …${Array.from(i.text).slice(-(e-2)).join("")}`}:i;if(r>0&&r+Et(s.text)>e)n.push([]),r=0;n[n.length-1]?.push(s),r+=Et(s.text)+1}return n}function ZS(t){if(t.multi&&t.choices.every((e)=>t.default.split(" ").includes(e)))return"Default all";return`Default ${t.default&&t.default!==t.multi?.none?t.default:"none"}`}function XS(t){if(!t.tag)return"";if(!t.counts)return`${t.tag}: counting…`;let e=t.counts.map(({site:n,count:r})=>`${n} ${r===void 0?"no count":r.toLocaleString("en-US")}`);return`${t.tag}: ${e.join(" · ")}`}function t8(t,e){let n=t.advanced?"basic":"advanced";if(!e)return{keys:[["↑↓","setting"],["enter",n],["s","save"]],right:["esc","undo"]};if(t.typing!==void 0)return{keys:[["⌫","erase"],["enter","done"]],right:["esc","cancel"]};if(e.entry)return{keys:[["↑↓","setting"],...e.entry==="number"?[["←→","step"]]:[],["a",n],["enter","type"],["s","save"]],right:["esc","undo"]};return{keys:[["↑↓","setting"],["←→","value"],["a",n],...e.multi?[["space","toggle"]]:[],["enter","save"]],right:["esc","undo"]}}function e8(t,e,n,r,i){let s=r.panel??0,o=r.settings.length,c=6+Math.max(...r.settings.map((L)=>Et(L.label))),u=Math.max(...r.settings.map((L)=>Et(ZS(L)))),f=c+Math.max(...r.settings.map((L)=>Q3(YS(L))))+u+5,l=Math.min(e-2,Math.max(48,f)),d=l-c-u-5,h=l-7,m=[!1,!0].map((L)=>({advanced:L,rows:Ec({settings:r.settings,advanced:L}).slice(0,-1)})),p=r.settings.map((L)=>VS(YS(L),d).length),b=Math.max(...m.map((L)=>L.rows.reduce((gt,Zt)=>gt+p[Zt],0))),$=Math.max(...m.map((L)=>ms(JS({settings:r.settings,advanced:L.advanced}),h).length),...r.settings.map((L)=>ms(L.about,h).length)),k=`${r.tag}: ${Y.map((L)=>`${L.name} 0,000,000`).join(" · ")}`,v=r.tag?Math.max(ms(k,h).length,ms(XS(r),h).length):0,S=b+$+v+8,M=Math.floor((e-l)/2),x=Math.max(1,Math.floor((n-1-S)/2)),N=cg(r.siteAnsi);t[x]?.put(M,`╭─ Settings ${"─".repeat(Math.max(0,l-13))}╮`);for(let L=x+1;L<x+S-1;L++)t[L]?.put(M,`│${" ".repeat(l-2)}│`);let R=x+2;for(let L of Ec(r).slice(0,-1)){let gt=r.settings[L],Zt=L===s;if(Zt)t[R]?.put(M+2,"▶",i);if(t[R]?.mark(M+2,c-3,{kind:"setting",index:L}),t[R]?.put(M+4,gt.label,Zt?Rt:""),gt.value!==gt.default)t[R]?.right(M+l-3,[[ZS(gt),U]]);VS(X3(gt,Zt,r.typing,r.siteAnsi),d).forEach((it,Rr)=>{let ze=M+c;for(let En of it)ze=(t[R+Rr]?.put(ze,En.text,En.sgr,void 0,{kind:"choice",index:L,choice:En.choice})??ze)+1}),R+=p[L]}let T=m.find((L)=>L.advanced!==r.advanced)?.rows??[],_=t[x+3+b];if(_){if(s===o)_.put(M+2,"▶",i);let L=_.put(M+3,r.advanced?" ‹ Basic ":" Advanced › ",s===o?N:Rt,void 0,{kind:"setting",index:o});if(T.some((gt)=>r.settings[gt]?.value!==r.settings[gt]?.default))_.put(L+1,"•",U)}t[x+5+b]?.put(M+2,"─".repeat(l-4),U),ms(r.settings[s]?.about??JS(r),h).forEach((L,gt)=>{t[x+6+b+gt]?.put(M+4,L)}),ms(XS(r),h).forEach((L,gt)=>{t[x+6+b+$+gt]?.put(M+4,L,U)}),t[x+S-1]?.put(M,`╰${"─".repeat(l-2)}╯`);let{keys:W,right:B}=t8(r,r.settings[s]);Sc(t[n-1],e,{keys:W,right:B})}function n8(t,e,n,r){let i=r.tuning?q3:J3[r.mode],s=Math.min(e-2,Math.max(50,...i.map(([,l])=>Et(l)+16))),o=i.map(([l,d])=>({label:l,parts:ms(d,s-16)})),a=o.reduce((l,{parts:d})=>l+d.length,0)+4,c=Math.floor((e-s)/2),u=Math.max(2,Math.floor((n-a)/2));t[u]?.put(c,`╭─ Help ${"─".repeat(s-9)}╮`);for(let l=u+1;l<u+a-1;l++)t[l]?.put(c,`│${" ".repeat(s-2)}│`);let f=u+2;for(let{label:l,parts:d}of o){t[f]?.put(c+3,l,Rt);for(let h of d)t[f]?.put(c+13,h),f++}t[u+a-1]?.put(c,`╰${"─".repeat(s-2)}╯`),Sc(t[n-1],e,{badge:"HELP",right:["? esc","close"]})}function r8(t,e,n){let r=e.suggest??[],i=r.map((a)=>a.alias??(a.count>0?String(a.count):a.palette??"0")),s=Math.max(...r.map((a)=>Et(a.value))),o=Math.max(7,...i.map(Et));r.forEach((a,c)=>{let u=c===e.pick,f=t[1+c];f?.run(0,[[u?"▸ ":" ",n,void 0,{kind:"suggest",index:c}],[a.value,u?Rt+n:"",void 0,{kind:"suggest",index:c}]]),f?.right(2+s+2+o,[[i[c],U]])})}function Xl(t,e=[]){return[...e,...t.flatMap((n,r)=>n.zones(r))]}function lg(t,e,n){let r=Array.from({length:n},()=>new Ql(e)),i=[],s=[],o=wt("accent");if(eg=!1,e<ps.cols||n<ps.rows)return r[0]?.put(0,"ttheme find",Rt+o),r[1]?.put(0,`Needs ${ps.cols}×${ps.rows} — now ${e}×${n}`),r[2]?.put(0,"esc quits",U,void 0,{kind:"key",key:"esc"}),{lines:r.map((c)=>c.render()),images:i,zones:Xl(r),loader:!1,tick:!1};let a=!1;if(t.mode==="try")D3(r,i,e,n,t,o);else a=z3(r,i,s,e,n,t,o);if(t.mode==="grid"&&t.editing!==void 0&&t.suggest?.length){for(let c=1;c<n-1;c++)r[c]=new Ql(e);return r8(r,t,o),{lines:r.map((c)=>c.render()),images:[],zones:Xl(r),loader:!1,tick:!1}}if(t.help||t.panel!==void 0){let c=t.mode==="try"?i:[];for(let u=0;u<n;u++)r[u]=new Ql(e);if(t.help)n8(r,e,n,t);else e8(r,e,n,t,o);return{lines:r.map((u)=>u.render()),images:c,zones:Xl(r),loader:!1,tick:!1}}return{lines:r.map((c)=>c.render()),images:i,zones:Xl(r,s),loader:a,tick:eg}}var i8=130,s8=38,o8=96,a8=28,Oc=[{id:"shell",scenes:["Diff","Logs","Shell"],name:"zsh",tail:!0},{id:"code",scenes:["Editor"],name:"nvim",tail:!1},{id:"monitor",scenes:["Top"],name:"htop",tail:!1}],c8={Shell:[0,1,2,3,4,6,7,9,10,12,14],Diff:[0,1,3,4,6,7,8,9,10,15],Logs:[0,1,2,3,4,5,6,7,8,9,10]},sE=(t)=>Array.from({length:8},(e,n)=>`«K${t+n}» «»`).join(" "),u8=["«2»❯ «»colortest",`«d»0-7 ${sE(0)}`,`«d»8-15 ${sE(8)}`],oE=2;function l8(t){let e=Oc.length;return Oc[(t%e+e)%e]}function uE(){return Oc.map((t)=>t.name)}function Pc(t,e,n){let r=t>=i8&&e>=s8?"full":t>=o8&&e>=a8?"tabs":void 0;if(!r)return;let i=r==="full"?t>=140?47:38:37,s=t-i-1,o=i+1+oE,a=i+s-oE,c=3,u=e-3,f={col:o,row:c,cols:a-o+1,rows:u-c+1},l={col:o+1,row:c+3,cols:f.cols-2,rows:u-c-3},d=[{row:c,col:o,length:f.cols,down:!1},{row:c+2,col:o,length:f.cols,down:!1},{row:u,col:o,length:f.cols,down:!1},{row:c,col:o,length:u-c+1,down:!0},{row:c,col:a,length:u-c+1,down:!0}],h=l8(n);return{tier:r,side:i,width:s,frame:f,title:{col:l.col,row:c+1,cols:l.cols,rows:1},inner:l,rules:d,tiles:[{id:h.id,name:h.name,col:l.col,row:l.row,width:l.cols,rows:l.rows}]}}var xc="«2»▎ ",aE="«3»▎ ",f8="«1»▁ ",d8=[["","«5»import«» { «4»readFile«» } «5»from «2»'node:fs/promises'"],["","«5»import«» { «5»type «6»Hex«», «4»contrast«» } «5»from «2»'./color.ts'"],["",""],["","«8»/** A palette read from disk and checked against the gate. */"],[xc,"«5»export interface «6»Palette «»{"],[xc," name: «6»string"],[xc," ansi: «6»Hex«»[]"],[xc," ratio?: «6»number"],[xc,"}"],["",""],["","«5»const «»SIXTEEN = «3»16"],["","«5»const «»FLOOR = «3»4.5 «8»// WCAG AA for body text"],["",""],["","«5»export async function «4»load«»(path: «6»string«»): «6»Promise«»<«6»Palette«»> {"],[aE," «5»const «»text = «5»await «4»readFile«»(path, «2»'utf8'«»)"],[aE," «5»const «»colors = «s»parse(text)«».colors ?? {}"],[""," «5»if «»(colors.ansi.length !== «K3»SIXTEEN«») { «1»● needs 16 ANSI colors"],[""," «5»throw new «6»Error«»(«2»'expected sixteen colors, got '«» + colors.ansi.length)"],[""," }"],[f8," «5»const «»ratio = «4»contrast«»(colors.ansi[«3»0«»], colors.ansi[«3»7«»]) «3»● ratio is read once"],[""," «5»return «»{ name: path, ...colors, ratio: «c»r«»atio }"],["","}"],["",""],["","«5»export function «4»passes«»(palette: «6»Palette«»): «6»boolean «»{"],[""," «5»return «»(palette.ratio ?? «3»0«») >= FLOOR «8»// TODO: check the bright pairs"],["","}"]],h8=21;function m8(){return["«K4» theme.ts «s» scenes.ts «s» contrast.ts ",...d8.map(([t,e],n)=>{let r=String(n+1).padStart(3);return`${n+1===h8?`«b»${r}`:`«d»${r}`} ${t||"«» "}«»${e}`})]}function fg(t,e,n,r){let i=Math.max(1,r-t.length-2-n.length),s=0,o=`«6»${t}«b»[`;for(let[a,c]of e){let u=Math.min(i-s,Math.round(c*i));o+=`«${a}»${"|".repeat(u)}`,s+=u}return`${o}«»${" ".repeat(i-s)}${n}«b»]`}var p8=[[0.31,0.07,0],[0.22,0.02,0.03],[0.04,0.01,0],[0.52,0.12,0],[0.1,0.02,0],[0.41,0.11,0],[0.02,0,0],[0.15,0.03,0.04]],g8=["«s» 4127 kec 24 0 412G 612M «s»R 38.2 3.7 3:12.44 node dev.js"," 2210 kec 31 0 411G 1.2G «2»R«» 12.0 7.5 1:02.10 «d»/Applications/«b»Ghostty"," 3301 kec 31 0 409G 12M S 4.4 0.1 0:05.61 «b»zsh"," 3302 kec 31 0 409G 9.8M S 0.0 0.1 0:00.42 «d»├─ «b»nvim «»src/theme.ts"," 3310 kec 31 0 410G 88M S 1.2 0.5 0:03.18 «d»│ └─ «b»tsserver"," 3402 kec 24 0 409G 21M «2»R«» 0.6 0.1 0:01.02 «d»└─ «b»htop"," 501 kec 31 «4»10«» 409G 34M S 0.3 0.2 0:02.77 «b»bun «»test --watch"," 1180 kec 31 0 409G 72M «1»D«» 0.0 0.4 0:00.91 «b»rsync «»-a ~/Pictures backup:"," 812 «d»root«» «1» 4 -20«» 410G 1.5G S 3.1 9.4 0:44.02 «d»kernel_task"," 167 «d»root«» 31 0 411G 402M S 0.9 2.5 0:12.80 «d»WindowServer"," 344 «d»_mdns«» 31 0 408G 5.1M S 0.0 0.0 0:00.33 «d»mDNSResponder"],b8=["Help","Setup","Search","Filter","Tree","SortBy","Nice -","Nice +","Kill","Quit"];function w8(t,e,n){return`«${t}»${e}${" ".repeat(Math.max(0,n-z(e)))}`}function $8(t){let e=t-2,n=Math.floor((e-2)/2),r=(i)=>{let[s,o,a]=p8[i],c=`${((s+o+a)*100).toFixed(1)}%`;return fg(String(i).padStart(3),[["2",s],["1",o],["4",a]],c,n)};return[...[0,1,2,3].map((i)=>`${r(i)} ${r(i+4)}`),`${fg("Mem",[["2",0.45],["4",0.1],["3",0.07]],"9.84G/16.0G",n)} «6»Tasks: «b»214«», 1093 thr; «B2»4«» running`,`${fg("Swp",[["1",0.15]],"0.31G/2.00G",n)} «6»Load average: «b»2.14 «»1.87 «d»1.52`,`${" ".repeat(n)} «6»Uptime: «b»3 days, 04:12:55`,"",w8("K2"," PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command",e),...g8.map((i)=>i.startsWith("«s»")?`${i}${" ".repeat(Math.max(0,e-z(i.replace(/«[^»]*»/g,""))))}`:i)]}function k8(t){let e=t-2,n="",r=0;return b8.forEach((i,s)=>{let o=`F${s+1}`,a=i.padEnd(6);if(r+o.length+a.length<=e)n+=`«»${o}«K6»${a}`,r+=o.length+a.length}),`${n}«K6»${" ".repeat(Math.max(0,e-r))}`}function cE(t,e,n){if(t==="Editor")return m8();if(t==="Top")return $8(n);let r=Yt.find((o)=>o.name===t)?.lines??[],i=e?c8[t]:void 0,s=i?i.map((o)=>r[o]??""):r;return t==="Shell"?[...s.slice(0,-1),...u8,...s.slice(-1)]:s}function rf(t,e){return t.values().map((n)=>Eo(n,e)).filter((n)=>n!==void 0).map((n)=>{let r=0;return n.map(([i,s])=>{let o={text:i,role:s,col:r};return r+=z(i),o})}).toArray()}function y8(t){let r=t-2-z("«K4» NORMAL «s» main src/theme.ts [+] ".replace(/«[^»]*»/g,""))-z("«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% ".replace(/«[^»]*»/g,""));return`${"«K4» NORMAL «s» main src/theme.ts [+] "}${" ".repeat(Math.max(0,r))}${"«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% "}`}function v8(t,e){if(t.id==="code")return[y8(e),'«d»"src/theme.ts" 26L, 912B written'];return t.id==="monitor"?[k8(e)]:[]}function S8(t,e,n){let r=rf(v8(t,e),e),i=Math.max(0,n-r.length),s=[];for(let a of t.scenes.toReversed()){let c=rf(cE(a,!1,e),e),u=rf(cE(a,!0,e),e),f=[c,u].find((l)=>s.length+l.length<=i);if(!f){if(s.length===0)s=t.tail?u.slice(u.length-i):u.slice(0,i);break}s=[...f,...s]}if(r.length===0)return s;let o=rf(Array.from({length:i-s.length},()=>t.id==="code"?"«4»~":""),e);return[...s,...o,...r]}function Ic(t){let e=Oc.find((r)=>r.id===t.id),n=t.width-2;return e?S8(e,t.width,t.rows).map((r)=>r.filter((i)=>i.col<n)):[]}function dg(t,e){let{text:n,ground:r}=fE(t);return n===e||r===e}function lE(t,e){let n=t.inner;return Oc.map((r)=>({name:r.name,count:Ic({id:r.id,name:r.name,col:n.col,row:n.row,width:n.cols,rows:n.rows}).flat().filter((i)=>dg(i.role,e)).length}))}function fE(t){if(t==="s")return{text:1,ground:3};if(t==="c")return{text:1,ground:2};let e=/^([BK]?)(\d+)$/.exec(t);if(!e)return{text:1,ground:0};let n=4+Number(e[2]);return e[1]==="K"?{text:4,ground:n}:{text:n,ground:0}}function hg(t,e){if(e>=4){let n=/^([BK]?)(\d+)$/.exec(t);return n!==null&&Number(n[2])===e-4}return e===3&&t==="s"||e===2&&t==="c"}function sf(t){return t.tiles.flatMap((e)=>Ic(e).flatMap((n,r)=>n.map((i,s)=>({spot:{pane:e.id,line:r,run:s},col:i.col,text:i.text,role:i.role}))))}function mg(t,e){return t.pane===e.pane&&t.line===e.line&&t.run===e.run}function dE(t,e){let n=sf(t);return(n.find((r)=>hg(r.role,e))??n[0])?.spot}function of(t,e){return e&&sf(t).find((n)=>mg(n.spot,e))?.spot}function hE(t,e,n){let r=sf(t);if(r.length===0)return;let i=e?r.findIndex((d)=>mg(d.spot,e)):-1;if(i<0)return r[0]?.spot;let s=r[i];if(n==="left"||n==="right")return r[(i+(n==="left"?r.length-1:1))%r.length]?.spot;if(n==="next"||n==="previous"){let d=t.tiles.map((p)=>p.id),h=d.indexOf(s.spot.pane),m=d[(h+(n==="next"?1:d.length-1))%d.length];return r.find((p)=>p.spot.pane===m)?.spot}let o=n==="up"?-1:1,a=r.filter((d)=>d.spot.pane===s.spot.pane),c=[...new Set(a.map((d)=>d.spot.line))],u=c[c.indexOf(s.spot.line)+o];if(u===void 0){let d=t.tiles.map((k)=>k.id),h=d.indexOf(s.spot.pane)+o,m=d[(h+d.length)%d.length],p=r.filter((k)=>k.spot.pane===m),b=o<0?p.at(-1)?.spot.line??0:p[0]?.spot.line??0,$=p.filter((k)=>k.spot.line===b);return($.find((k)=>k.col>=s.col)??$.at(-1))?.spot}let f=a.filter((d)=>d.spot.line===u);return(f.find((d)=>d.col<=s.col&&d.col+z(d.text)>s.col)??f.find((d)=>d.col>=s.col)??f.at(-1))?.spot}function mE(t,e){let n=sf(t).find((r)=>mg(r.spot,e));return n?fE(n.role):void 0}var E8={lr:"─",du:"│",dr:"╭",dl:"╮",ru:"╰",lu:"╯",dlr:"┬",lru:"┴",dru:"├",dlu:"┤",dlru:"┼"};function pE(t){let e=new Map,n=(i,s,o)=>{let a=e.get(i)??new Map;e.set(i,a);let c=a.get(s)??new Set;a.set(s,c),c.add(o)};for(let i of t)for(let s=0;s<i.length;s++){let o=i.down?i.row+s:i.row,a=i.down?i.col:i.col+s;if(s>0)n(o,a,i.down?"u":"l");if(s<i.length-1)n(o,a,i.down?"d":"r")}let r=(i)=>E8[[...i].sort().join("")]??(i.has("l")||i.has("r")?"─":"│");return new Map(e.entries().map(([i,s])=>[i,new Map(s.entries().map(([o,a])=>[o,r(a)]))]))}import{execFile as M8}from"node:child_process";import{createHash as $E}from"node:crypto";import{existsSync as x8,mkdtempSync as O8,readFileSync as lf,rmSync as P8,statSync as kE,writeFileSync as yE}from"node:fs";import{homedir as I8,tmpdir as R8}from"node:os";import{join as af}from"node:path";import{fileURLToPath as A8}from"node:url";import{promisify as N8}from"node:util";import{inflateSync as T8}from"node:zlib";var yn=N8(M8),cf=67108864,H8=4096,F8="/System/Library/ColorSync/Profiles/sRGB Profile.icc",bg=["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/heic"],L8=["text/uri-list","text/plain;charset=utf-8","text/plain"],pg=[...bg,"text/uri-list","text/plain"];function C8(t){try{return kE(t).isFile()}catch{return!1}}function j8(t){let e=[],n="",r="",i=!1;for(let s=0;s<t.length;s++){let o=t[s];if(r==="'")if(o==="'")r="";else n+=o;else if(r==='"')if(o==='"')r="";else if(o==="\\"&&'"\\$`'.includes(t[s+1]??""))n+=t[++s];else n+=o;else if(o==="\\"&&s+1<t.length)n+=t[++s],i=!0;else if(o==="'"||o==='"')r=o,i=!0;else if(/\s/.test(o)){if(i)e.push(n);n="",i=!1}else n+=o,i=!0}if(i)e.push(n);return e}function gE(t){if(/^file:\/\//i.test(t))try{return A8(t)}catch{return}if(t.startsWith("~/"))return af(I8(),t.slice(2));return t.startsWith("/")?t:void 0}function Yo(t,e=C8){return t.replace(/\r\n?/g,`
|
|
681
680
|
`).split(`
|
|
682
|
-
`).flatMap((n)=>{let r=
|
|
681
|
+
`).flatMap((n)=>{let r=gE(n.trim());if(r&&e(r))return[r];return j8(n).flatMap((i)=>{if(/^https?:\/\/\S+$/i.test(i))return[i];let s=gE(i);return s&&e(s)?[s]:[]})})}function bE(t){let e=Cr(t)?Rn(t):Ad(t);if(!e)return;return{ext:Cr(t)?"png":"jpg",width:e.width,height:e.height}}function _8(t){let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength);if(Cr(t)){for(let r=8;r+12<=e.length;){let i=e.readUInt32BE(r),s=e.toString("latin1",r+4,r+8);if(s==="iCCP"){let o=e.subarray(r+8,r+8+i);try{return T8(o.subarray(o.indexOf(0)+2))}catch{return}}if(s==="IDAT")return;r+=12+i}return}let n=[];for(let r=2;r+4<=e.length&&e[r]===255&&e[r+1]!==218;){let i=e.readUInt16BE(r+2);if(e[r+1]===226&&e.toString("latin1",r+4,r+16)==="ICC_PROFILE\x00")n[e[r+16]??0]=e.subarray(r+18,r+2+i);r+=2+i}return n.length>0?Buffer.concat(n.filter(Boolean)):void 0}function B8(t){let e=_8(t);if(!e||e.length<132||e.toString("latin1",16,20)==="GRAY")return!1;for(let n=132,r=e.readUInt32BE(128);r>0&&n+12<=e.length;r--,n+=12)if(e.toString("latin1",n,n+4)==="desc"){let i=e.readUInt32BE(n+4),s=e.toString("latin1",i,i+e.readUInt32BE(n+8)).replaceAll("\x00","");return!/sRGB/i.test(s)}return!0}async function G8(t){let{stdout:e}=await yn("sips",["-g","pixelWidth","-g","pixelHeight",t]).catch(()=>({stdout:""})),n=Number(/pixelWidth: (\d+)/.exec(e)?.[1]),r=Number(/pixelHeight: (\d+)/.exec(e)?.[1]);return n>0&&r>0?{width:n,height:r}:void 0}async function uf(t,e){let n=bE(t),r=process.platform==="darwin";if(n&&n.width*n.height<=fe&&!(r&&B8(t)))return{bytes:t,...n,source:e};if(!r)throw Error(n?`${n.width}×${n.height} is over ${fe/1e6} megapixels`:"only PNG and JPEG pictures work here");let i=O8(af(R8(),"ttheme-attach-"));try{let s=af(i,"in"),o=af(i,"out.png");yE(s,t);let a=n??await G8(s),c=a&&a.width*a.height>fe?["--resampleHeightWidthMax",String(H8)]:[];await yn("sips",["-s","format","png","--matchTo",F8,...c,s,"--out",o]).catch(()=>{throw Error("that is not a picture macOS can read")});let u=new Uint8Array(lf(o)),f=bE(u);if(!f)throw Error("that is not a picture macOS can read");return{bytes:u,...f,source:e}}finally{P8(i,{recursive:!0,force:!0})}}async function wg(t,e){if(/^https?:\/\//i.test(t)){let n=await fetch(t,{headers:{"User-Agent":Gd},signal:e});if(!n.ok)throw Error(`${new URL(t).host} answered ${n.status}`);if(Number(n.headers.get("content-length")??0)>cf)throw Error("that picture is over 64 MB");let r=new Uint8Array(await n.arrayBuffer());if(/^text\/html/i.test(n.headers.get("content-type")??""))throw Error(`${new URL(t).host} sent a web page, not a picture — copy the image address instead`);return uf(r,t)}if(kE(t).size>cf)throw Error("that picture is over 64 MB");return uf(new Uint8Array(lf(t)),t)}var vE=new Map,zn={key:"local",name:"local",origin:"file://",moved:!1,cutouts:"",best:"",tagBudget:0,ors:!1,vouched:!0,scored:!1,ansi:7,ratings:{safe:new Set,questionable:new Set,explicit:new Set},rate:()=>"",narrow:()=>[],postsUrl:()=>"",countUrl:()=>"",postUrl:()=>"",pageUrl:(t)=>vE.get(t)??"",parse:()=>[],count:()=>0};function SE(t){if(/^https?:\/\//i.test(t))return"";return t.split("/").pop()??t}function EE(t,e){vE.set(t,e)}function ME(t){return Number.parseInt($E("sha1").update(t).digest("hex").slice(0,8),16)%Ur}var U8=`ObjC.import('AppKit')
|
|
683
682
|
function run(argv) {
|
|
684
683
|
const pb = $.NSPasteboard.generalPasteboard
|
|
685
684
|
const files = pb.readObjectsForClassesOptions($([$.NSURL]), $({ NSPasteboardURLReadingFileURLsOnlyKey: true }))
|
|
@@ -704,16 +703,16 @@ function run(argv) {
|
|
|
704
703
|
if (web && web.count > 0) return web.objectAtIndex(0).absoluteString.js
|
|
705
704
|
const text = pb.stringForType('public.utf8-plain-text')
|
|
706
705
|
return text && !text.isNil() ? text.js : ''
|
|
707
|
-
}`,
|
|
706
|
+
}`,W8=`Add-Type -AssemblyName System.Windows.Forms,System.Drawing
|
|
708
707
|
$c = [Windows.Forms.Clipboard]
|
|
709
708
|
$f = $c::GetFileDropList(); if ($f.Count) { $f; exit }
|
|
710
709
|
$p = Join-Path $env:TEMP 'ttheme-clipboard.png'
|
|
711
710
|
$s = $c::GetData('PNG'); if ($s -is [IO.MemoryStream]) { [IO.File]::WriteAllBytes($p, $s.ToArray()); $p; exit }
|
|
712
711
|
$i = $c::GetImage(); if ($i) { $i.Save($p, [Drawing.Imaging.ImageFormat]::Png); $p; exit }
|
|
713
|
-
$c::GetText()`;function
|
|
714
|
-
`).map((o)=>o.trim()),i=(o)=>e?
|
|
715
|
-
`).map(async(r)=>/^[A-Za-z]:\\/.test(r)?(await
|
|
716
|
-
`)}}if(process.platform==="linux")return
|
|
712
|
+
$c::GetText()`;function xE(){if(process.platform!=="linux")return!1;try{return/microsoft/i.test(lf("/proc/version","utf8"))}catch{return!1}}async function K8(t){let e=Boolean(process.env.WAYLAND_DISPLAY),n=e?["wl-paste",["--list-types"]]:["xclip",["-selection","clipboard","-t","TARGETS","-o"]],r=(await yn(n[0],n[1])).stdout.split(`
|
|
713
|
+
`).map((o)=>o.trim()),i=(o)=>e?yn("wl-paste",["--no-newline","--type",o],{encoding:"buffer",maxBuffer:cf}):yn("xclip",["-selection","clipboard","-t",o,"-o"],{encoding:"buffer",maxBuffer:cf});if(r.includes("text/uri-list"))return{text:(await i("text/uri-list")).stdout.toString("utf8")};let s=bg.find((o)=>r.includes(o));if(s)return yE(t,(await i(s)).stdout),{image:t};return{text:r.some((o)=>o.startsWith("text/plain")||o==="UTF8_STRING")?(await i(r.includes("text/plain")?"text/plain":"UTF8_STRING")).stdout.toString("utf8"):""}}function $g(){return Boolean(process.env.SSH_CONNECTION||process.env.SSH_TTY)}async function OE(t){if(process.platform==="darwin"){let e=(await yn("osascript",["-l","JavaScript","-e",U8,t])).stdout.trim();return e===t?{image:t}:{text:e}}if(xE()){let e=(await yn("powershell.exe",["-NoProfile","-STA","-Command",W8])).stdout.replace(/\r/g,"").trim(),n=await Promise.all(e.split(`
|
|
714
|
+
`).map(async(r)=>/^[A-Za-z]:\\/.test(r)?(await yn("wslpath",["-u",r])).stdout.trim():r));return n.length===1&&/ttheme-clipboard\.png$/.test(n[0]??"")?{image:n[0]}:{text:n.join(`
|
|
715
|
+
`)}}if(process.platform==="linux")return K8(t);throw Error(`reading the clipboard is not supported on ${process.platform}`)}var z8=`ObjC.import('AppKit')
|
|
717
716
|
function run() {
|
|
718
717
|
const pb = $.NSPasteboard.generalPasteboard
|
|
719
718
|
const files = pb.readObjectsForClassesOptions($([$.NSURL]), $({ NSPasteboardURLReadingFileURLsOnlyKey: true }))
|
|
@@ -725,62 +724,61 @@ function run() {
|
|
|
725
724
|
picture = ['public.png', 'public.tiff', 'public.jpeg', 'public.heic'].some((t) => types.includes(t))
|
|
726
725
|
}
|
|
727
726
|
return pb.changeCount + '\\t' + (picture ? 'picture' : '')
|
|
728
|
-
}`;async function EE(){if(wg())return;if(process.platform==="darwin"){let[t="",e=""]=(await kn("osascript",["-l","JavaScript","-e",U3])).stdout.trim().split("\t");return{stamp:t,picture:e==="picture"}}if(process.platform==="linux"&&!vE()){let e=Boolean(process.env.WAYLAND_DISPLAY)?(await kn("wl-paste",["--list-types"])).stdout:(await kn("xclip",["-selection","clipboard","-t","TARGETS","-o"])).stdout;return{stamp:e,picture:/^image\//m.test(e)}}return}function df(t){return t.length>8&&/^(?:\/|~\/|file:|https?:)/.test(t)}var Ac=(t)=>Buffer.from(t).toString("base64"),pg=(t)=>Buffer.from(t,"base64");function mE(t,e){return e.find((n)=>t.includes(n))}class $g{clipboard=!1;drops=!1;reading;offered=[];dropping;pw=Ac(pE("sha1").update(`${process.pid}:${Date.now()}`).digest("hex"));send;deliver;constructor(t,e){this.send=t,this.deliver=e}start(){let t="";if(this.clipboard)t+="\x1B[?5522h";if(this.drops)t+=`\x1B]72;t=a;${mg.join(" ")}\x1B\\`;this.send(t)}stop(){this.send(`${this.clipboard?"\x1B[?5522l":""}${this.drops?"\x1B]72;t=A\x1B\\":""}`)}ask(){this.reading={mime:".",chunks:[],pw:"",listing:!0},this.send(`\x1B]5522;type=read:name=${Ac("ttheme")}:pw=${this.pw};${Ac(".")}\x1B\\`)}take(t){if(t.code==="5522")this.clip(t.meta,t.payload);else if(t.code==="72")this.drop(t.meta,t.payload)}clip(t,e){if(t.type!=="read")return;let n=t.status??"";if(n==="OK"){if(this.reading??={mime:".",chunks:[],pw:t.pw??"",listing:!0},t.pw)this.reading.pw=t.pw;return}let r=this.reading;if(!r)return;if(n==="DATA"){if(r.mime=t.mime?pg(t.mime).toString("utf8"):r.mime,e)r.chunks.push(pg(e));return}if(this.reading=void 0,n!=="DONE"){this.deliver({kind:"error",message:n==="EPERM"?"The clipboard read was not allowed":`The terminal answered ${n}`});return}let i=Buffer.concat(r.chunks);if(r.listing){let s=i.toString("utf8").split(/\s+/).filter(Boolean),o=mE(s,[...gg,...T3]);if(!o){this.deliver({kind:"text",text:""});return}let a=r.pw||this.pw,c=r.pw?"Paste event":"ttheme";this.reading={mime:o,chunks:[],pw:a,listing:!1},this.send(`\x1B]5522;type=read:name=${Ac(c)}:pw=${a};${Ac(o)}\x1B\\`);return}this.deliver(r.mime.startsWith("image/")?{kind:"bytes",bytes:new Uint8Array(i),source:"clipboard"}:{kind:"text",text:i.toString("utf8")})}drop(t,e){let n=t.t??"";if(n==="m"){if(t.x==="-1"){this.offered=[];return}if(e){this.offered=e.split(" ").filter(Boolean);let a=mg.filter((c)=>this.offered.includes(c));this.send(`\x1B]72;t=m:o=${a.length>0?1:0};${a.join(" ")}\x1B\\`)}return}if(n==="M"){let a=e?e.split(" ").filter(Boolean):this.offered,c=mE(a,mg);if(!c){this.send("\x1B]72;t=r:o=0\x1B\\");return}this.dropping={mimes:a,index:a.indexOf(c)+1,chunks:[]},this.send(`\x1B]72;t=r:x=${this.dropping.index}\x1B\\`);return}let r=this.dropping;if(!r)return;if(n==="R"){this.dropping=void 0,this.send("\x1B]72;t=r:o=0\x1B\\"),this.deliver({kind:"error",message:`The drop failed: ${e.split(":")[0]||"unknown error"}`});return}if(n!=="r"&&n!=="")return;if(e)r.chunks.push(pg(e));if(t.m==="1"||e)return;this.dropping=void 0;let i=Buffer.concat(r.chunks),s=r.mimes[r.index-1]??"",o;if(s.startsWith("image/"))o={kind:"bytes",bytes:new Uint8Array(i),source:"drop"};else{let a=i.toString("utf8"),c=s==="text/uri-list"?Xo(a).find((u)=>S3(u)):void 0;o=c?{kind:"bytes",bytes:new Uint8Array(ff(c)),source:c}:{kind:"text",text:a}}this.send("\x1B]72;t=r:o=1\x1B\\"),this.deliver(o)}}var kg=5,W3=6,ME=0.05,K3=[1,2,3,4,5,6,9,10,11,12,13,14],xE=(t,e)=>(e-t+360)%360<=180?1:-1;function Dn(t,e,n){let r=e*Math.cos(n*Math.PI/180),i=e*Math.sin(n*Math.PI/180),s=[t+0.3963377774*r+0.2158037573*i,t-0.1055613458*r-0.0638541728*i,t-0.0894841775*r-1.291485548*i].map((f)=>f**3),[o,a,c]=s,u=[4.0767416621*o-3.3077115913*a+0.2309699292*c,-1.2684380046*o+2.6097574011*a-0.3413193965*c,-0.0041960863*o-0.7034186147*a+1.707614701*c];if(u.some((f)=>f<-0.0001||f>1.0001))return;return u.map((f)=>{let l=Math.min(1,Math.max(0,f));return Math.round(255*(l<=0.0031308?12.92*l:1.055*l**0.4166666666666667-0.055))})}function Qo(t,e,n){if(Dn(t,n,e)!==void 0)return n;let r=0,i=n;for(let s=0;s<24;s++){let o=(r+i)/2;if(Dn(t,o,e)===void 0)i=o;else r=o}return r}function nn(t,e,n){return`#${(Dn(t,Qo(t,n,e),n)??[0,0,0]).map((i)=>i.toString(16).padStart(2,"0")).join("")}`}function z3(t,e){let{l:n,c:r}=Ot(t);return nn(n,r,(e+360)%360)}function D3(t,e,n){let{l:r,c:i,h:s}=Ot(t),o=Mt(e)<0.18,a=(f)=>nn(o?r+(1-r)*f:r*(1-f),i,s);if(kt(a(1),e)<n+ME)return a(1);let c=0,u=1;for(let f=0;f<30;f++){let l=(c+u)/2;if(kt(a(l),e)>=n+ME)u=l;else c=l}return a(u)}function q3(t,e){let{l:n,c:r,h:i}=Ot(t),s=0,o=n;for(let a=0;a<30;a++){let c=(s+o)/2;if(Mt(nn(c,r,i))<=e-0.005)s=c;else o=c}return nn(s,r,i)}function J3(t,e,n){let r=Re[e],[i,s]=[Ot(t[e]),Ot(t[e+8])],o=(f,l)=>n.has(f)?[l]:Array.from({length:2*r.width+1},(d,h)=>(r.center-r.width+h+360)%360),a=(f,l,d)=>an.every((h)=>{let m=(f>8?8:0)+h;if(m===f)return!0;let p=Ot(t[m]);return p.c<Ri||Ae(p.h,l)>=_s+1||Math.abs(p.l-d)>=Bs}),c,u=Number.POSITIVE_INFINITY;for(let f of o(e,i.h)){if(!n.has(e)&&!a(e,f,i.l))continue;for(let l of o(e+8,s.h)){if(Ae(f,l)>on-kg||!n.has(e+8)&&!a(e+8,l,s.l))continue;let d=Ae(f,i.h)+Ae(l,s.h);if(d<u)u=d,c=[f,l]}}return c}class OE{theme;moves=[];constructor(t){this.theme={...t,ansi:[...t.ansi]}}set(t,e,n){let r=this.get(t);if(n===r)return;if(this.moves.push({slot:t,rule:e,from:r,to:n}),t==="foreground")this.theme.foreground=n;else if(t==="selection")this.theme.selectionBackground=n;else this.theme.ansi[Number(t.slice(4))]=n}get(t){if(t==="foreground")return this.theme.foreground;if(t==="selection")return this.theme.selectionBackground;return this.theme.ansi[Number(t.slice(4))]}rehue(t,e,n){this.set(`ansi${t}`,e,z3(this.theme.ansi[t],n))}roles(){let t=new Set(this.theme.signatureSlots);for(let{slot:n,hue:r}of Tr(this.theme)){let i=Re[En(n)];this.rehue(n,"ansi-role",i.center+xE(i.center,r)*(i.width-kg))}for(let{normal:n,gap:r}of tr(this.theme)){if(r<=on)continue;let[i,s]=t.has(`ansi${n+8}`)?[n+8,n]:[n,n+8],o=Ot(this.theme.ansi[i]).h,a=Ot(this.theme.ansi[s]).h;this.rehue(s,"bright-follows",o+xE(o,a)*(on-kg))}let e=Gs(this.theme);for(let[n,r]of er(this.theme)){let i=En(e.has(r)?n:r),s=J3(this.theme.ansi,i,e);if(s===void 0)continue;this.rehue(i,"distinct",s[0]),this.rehue(i+8,"distinct",s[1])}}readability(){let t=new Set(this.theme.waive),{background:e}=this.theme,n=(r,i,s,o=e)=>{if(t.has(r))return;for(let a of i)if(kt(this.get(a),o)<s)this.set(a,r,D3(this.get(a),o,s))};if(n("foreground",["foreground"],7),n("accents",K3.map((r)=>`ansi${r}`),3),n("light-ansi",["ansi7","ansi15"],7),n("ansi8-visible",["ansi8"],1.6),!t.has("ansi0-dark")&&Mt(this.get("ansi0"))>0.15)this.set("ansi0","ansi0-dark",q3(this.get("ansi0"),0.15));n("selection",["selection"],7,this.theme.foreground)}net(){return[...Map.groupBy(this.moves,(t)=>t.slot)].flatMap(([t,e])=>{let n=e[0].from,r=this.get(t);return n===r?[]:[{slot:t,rule:[...new Set(e.map((i)=>i.rule))].join(", "),from:n,to:r}]})}}function hf(t){let e=new OE(t);for(let n=0;n<W3;n++)if(e.readability(),e.roles(),nr(e.theme).length===0)break;return{theme:e.theme,moves:e.net(),left:nr(e.theme)}}var ys=[{key:"background",label:"Background",min:0,max:0.5,step:0.01,digits:2},{key:"foreground",label:"Foreground",min:0.5,max:1,step:0.01,digits:2},{key:"hue",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0},{key:"tint",label:"Tint",min:0,max:0.1,step:0.005,digits:3},{key:"lightness",label:"Accent lightness",min:0.4,max:0.95,step:0.01,digits:2},{key:"chroma",label:"Accent chroma",min:0,max:0.3,step:0.005,digits:3},{key:"brights",label:"Brights",min:-0.2,max:0.2,step:0.01,digits:2}],Nc={background:0.21,foreground:0.88,hue:265,tint:0.02,lightness:0.72,chroma:0.12,brights:0.06},PE=(t,e,n)=>Math.min(n,Math.max(e,t));function yg(t,e,n){let r=t[e.key]+e.step*n,i=e.wraps?(r%e.max+e.max)%e.max:PE(r,e.min,e.max);return{...t,[e.key]:Math.round(i*1e4)/1e4}}function yi(t){let e=(r,i,s)=>nn(PE(r,0,1),i,s),n=Array.from({length:16},()=>"#000000");n[0]=e(t.background+0.06,t.tint,t.hue),n[8]=e(t.background+0.25,t.tint,t.hue),n[7]=e(t.foreground-0.06,t.tint/2,t.hue),n[15]=e(t.foreground+0.06,t.tint/2,t.hue);for(let r of an){let i=Re[r].center;n[r]=e(t.lightness,t.chroma,i),n[r+8]=e(t.lightness+t.brights,t.chroma,i)}return{background:e(t.background,t.tint,t.hue),foreground:e(t.foreground,t.tint/2,t.hue),cursor:e(t.lightness+t.brights,Math.max(t.chroma,0.08),t.hue),selection:e(t.background+0.1,t.tint*2,t.hue),ansi:n}}var qn=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],F=["Background","Foreground","Cursor","Selection"],vn=["Black","Red","Green","Yellow","Blue","Magenta","Cyan","White"],Y3=["Behind every cell","Plain text","The cursor block","Selected text","Text on colored bars, dark shades","Errors, deleted lines, failed tests","Success, added lines, prompts","Warnings, commit hashes, skipped tests","Directories, info, keywords","Keywords, branches, pictures in ls","Links, diff hunks, types","Light shades, text in some programs","Comments, muted text, suggestions"],vs=F.length+vn.length,yn=[{key:"l",label:"Lightness",min:0,max:1,step:0.01,digits:2},{key:"c",label:"Chroma",min:0,max:0.37,step:0.005,digits:3},{key:"h",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0}],IE=5,V3=5,oe=yn.length,ta=["this","pair","normals","brights","accents"],FE=[1,2,3,4,5,6,9,10,11,12,13,14],RE=an.map((t)=>F.length+t),AE=an.map((t)=>F.length+8+t);function vg(t,e){let n=e-F.length;if(n<0||t==="this")return[e];if(t==="pair")return[F.length+n%8,F.length+8+n%8];let r=t==="normals"?RE:t==="brights"?AE:[...RE,...AE];return r.includes(e)?r:[e]}function Z3(){return Array.from({length:vs},(t,e)=>e<F.length?[e]:[e,e+8]).flat()}function X3(t){let e=t.trim();return/^https?:\/\/\S+$/i.test(e)||Xo(e).length>0}function rn(t){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi]}function ae(t){let[e,n,r,i,...s]=t;return{background:e,foreground:n,cursor:r,selection:i,ansi:s}}function Ue(t){if(t<F.length)return{name:F[t],about:qn[t]};let e=t-F.length,n=vn[e%8];return e<8?{name:n,about:`ANSI ${e}`}:{name:`Bright ${n.toLowerCase()}`,about:`ANSI ${e}`}}function LE(t){let e=t-F.length;if(e>=9&&e<=15)return`Bold or bright ${vn[e-8].toLowerCase()} text`;return Y3[t]}var Ss=(t,e,n)=>Math.min(n,Math.max(e,t));function NE(t){return t.length===1?t.toLowerCase():t}function Q3(t){return Ss(Math.round(t),0,255).toString(16).padStart(2,"0")}function TE(t){let e=t.trim().toLowerCase(),n=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/.exec(e);if(n){let s=n[1];return`#${s.length===3?[...s].map((o)=>o+o).join(""):s}`}let r=/^rgb\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)\s*\)$/.exec(e);if(r)return`#${r.slice(1,4).map((s)=>Q3(Number(s))).join("")}`;let i=/^oklch\(\s*([\d.]+)(%?)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:deg|°)?\s*\)$/.exec(e);if(i){let s=Number(i[1])/(i[2]?100:1);return nn(Ss(s,0,1),Number(i[3]),Number(i[4])%360)}return}function Es(t){let e=Ne.find((n)=>n.rule===t);return e?.min??e?.max??0}function Er(t,e,n){let r=ae(t);return{name:"draft",background:r.background,foreground:r.foreground,selectionBackground:r.selection,ansi:r.ansi,waive:n,signatureSlots:e}}function t5(t,e){let n=t-F.length,r=t<=1?"foreground":t===3?"selection":n===7||n===15?"light-ansi":n===8?"ansi8-visible":FE.includes(n)?"accents":void 0;return{against:t===0||t===3?1:0,floor:r===void 0||e.includes(r)?void 0:Es(r)}}function xg(t,e,n,r){let i=Er(t,e,n),{background:s,foreground:o,selection:a,ansi:c}=ae(t),u=(f,l,d)=>kt(l,d)<Es(r)?[f]:[];if(r==="foreground")return kt(o,s)<Es(r)?[1,0]:[];if(r==="selection")return kt(o,a)<Es(r)?[3,1]:[];if(r==="accents")return FE.flatMap((f)=>u(F.length+f,c[f],s));if(r==="light-ansi")return[7,15].flatMap((f)=>u(F.length+f,c[f],s));if(r==="ansi8-visible")return u(F.length+8,c[8],s);if(r==="ansi0-dark")return Mt(c[0])>Es(r)?[F.length]:[];if(r==="ansi-role")return Tr(i).map(({slot:f})=>F.length+f);if(r==="bright-follows")return tr(i).filter(({gap:f})=>f>on).flatMap(({normal:f})=>[F.length+f,F.length+f+8]);if(r==="distinct")return er(i).flatMap(([f,l])=>[F.length+f,F.length+l]);return[]}function Og(t,e,n){return new Set(qn.keys().filter((r)=>Pg(t,e,n,r).some((i)=>i.ok===!1)))}function Sr(t,e,n,r,i){let s=kt(t,e),o=Es(n);if(i.includes(n))return{ok:void 0,text:`${r} ${s.toFixed(2)}:1 · waived`};return{ok:s>=o,text:`${r} ${s.toFixed(2)}:1 · ≥ ${o}`}}function Pg(t,e,n,r){let i=ae(t),s=Er(t,e,n);if(r===0){let $=[1,2,3,4,5,6,9,10,11,12,13,14].reduce((k,v)=>kt(i.ansi[k],i.background)<=kt(i.ansi[v],i.background)?k:v);return[Sr(i.foreground,i.background,"foreground","Foreground on it",n),Sr(i.ansi[$],i.background,"accents",`Weakest, ANSI ${$},`,n),Sr(i.ansi[8],i.background,"ansi8-visible","ANSI 8 on it",n)]}if(r===1)return[Sr(i.foreground,i.background,"foreground","On background",n),Sr(i.foreground,i.selection,"selection","On the selection",n)];if(r===2)return[{ok:void 0,text:`On background ${kt(i.cursor,i.background).toFixed(2)}:1`}];if(r===3)return[Sr(i.foreground,i.selection,"selection","Foreground on it",n)];let o=r-F.length,a=i.ansi[o];if(o===0){let b=Mt(a),$=Es("ansi0-dark");return[n.includes("ansi0-dark")?{ok:void 0,text:`Luminance ${b.toFixed(3)} · waived`}:{ok:b<=$,text:`Luminance ${b.toFixed(3)} · ≤ ${$}`}]}if(o===7||o===15)return[Sr(a,i.background,"light-ansi","On background",n)];if(o===8)return[Sr(a,i.background,"ansi8-visible","On background",n)];let c=[Sr(a,i.background,"accents","On background",n)],u=Ot(a),f=En(o),l=Re[f],d=`${l.name} ${l.center}±${l.width}°`;if(u.c<Ri)c.push({ok:void 0,text:"Too grey to have a hue"});else if(Gs(s).has(o))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · a signature, free of ${d}`});else if(n.includes("ansi-role"))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · ${d} waived`});else{let b=Ae(u.h,l.center)-l.width;c.push(b>0?{ok:!1,text:`Hue ${u.h.toFixed(0)}° · ${b.toFixed(0)}° outside ${d}`}:{ok:!0,text:`Hue ${u.h.toFixed(0)}° · in ${d}`})}let h=o<8?o+8:o-8,m=tr(s).find((b)=>b.normal===f);if(m)c.push(n.includes("bright-follows")?{ok:void 0,text:`${m.gap.toFixed(0)}° from ANSI ${h} · waived`}:{ok:m.gap<=on,text:`${m.gap.toFixed(0)}° from ANSI ${h} · ≤ ${on}°`});let p=er(s).flatMap(([b,$])=>b===o?[$]:$===o?[b]:[]);if(p.length>0&&!n.includes("distinct"))c.push({ok:!1,text:`Reads as ANSI ${p.join(", ")} · within ${_s}° and ${Bs} lightness`});return c}function Ig(t,e,n){let r=Mn(Er(t,e,n));return Ne.map((i,s)=>{let o=r[s],a=n.includes(i.rule),c=a||Number.isNaN(o)?void 0:(i.min===void 0||o>=i.min)&&(i.max===void 0||o<=i.max);return{ok:c,label:i.label,value:Number.isNaN(o)?"—":Number.isInteger(o)?String(o):o.toFixed(2),bound:a?"waived":i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",slots:c===!1?xg(t,e,n,i.rule):[]}})}var e5=new Set(["reset","reset-all","hex","paste","fix","open","tune","sig","follow"]),CE=yn[1].max;function Mg(t){let[e,n,r]=st(t);return e===n&&n===r}function n5(t,e){let n=Ot(e);if(!Mg(e))return n;let r=[0,1,3,2].map((i)=>t[i]).find((i)=>!Mg(i));return{...n,h:r?Ot(r).h:Nc.hue}}function jE(t,e,n){if(t==="rgb"){let[r,i,s]=st(e);return`rgb(${r} ${i} ${s})`}if(t==="oklch")return`oklch(${n.l.toFixed(3)} ${n.c.toFixed(3)} ${n.h.toFixed(0)})`;return e}function Sg(t,e){return Math.floor(Qo(t,e,CE)*1e4)/1e4}function Eg(t,e){return{l:e.l-t.l,c:e.c-t.c,h:((e.h-t.h)%360+540)%360-180}}function HE(t,e){let n=t.wraps?t.max-t.step:t.max;return Math.min(n,Math.round((t.min+(t.max-t.min)*e)/t.step)*t.step)}class Rg{mode;seeds=Nc;field=0;list;lch;start;original;signature;row=0;col=0;channel=0;scope="this";view="slot";scene=0;typing;overlay;quitting=!1;compare=!1;notice;filter="";pick=0;result;wants;pictures;inspect=!1;spot;format="hex";pic=!0;menu;entry=0;changedOnly=!1;where=!1;size;copied;startPictures;options;fresh;tone;startSignature;seeded=!1;tuneFrom;holds=new Map;clip;history=[];future=[];lastEdit;links=new Map;unlinked=new Set;offsets=new Map;constructor(t){this.options=t,this.tone=t.tone===!0,this.fresh=t.colors===void 0,this.mode=this.fresh?"seeds":"list",this.list=rn(t.colors??yi(this.seeds)),this.lch=this.lchs(),this.start=this.list,this.original=t.original?rn(t.original):this.list,this.signature=[...t.signature],this.startSignature=[...t.signature],this.pictures=t.pictures??0,this.startPictures=this.pictures,this.chain(this.original)}chain(t){this.links=new Map,this.unlinked=new Set,this.offsets=new Map;for(let e=0;e<8;e++){let n=F.length+e,r=n+8,i=this.lchOf(t[n]),s=this.lchOf(t[r]);if(i.c>=Ri&&s.c>=Ri&&Ae(i.h,s.h)<=3)this.links.set(r,n),this.offsets.set(r,Eg(i,s))}}pair(t){if(t<F.length)return;let e=F.length+(t-F.length)%8,n=e+8;return{normal:e,bright:n,on:this.linkOf(n)!==void 0,lift:this.lch[n].l-this.lch[e].l}}linkOf(t){let e=this.links.get(t);return e!==void 0&&!this.unlinked.has(t)?e:void 0}changed(t){return this.list[t]!==this.original[t]}visible(t){return!this.changedOnly||this.changed(t)}changes(){return this.list.filter((t,e)=>this.changed(e)).length}slotAt(t,e){return t<F.length?t:t+(e===1?8:0)}get added(){return Math.max(0,this.pictures-this.startPictures)}found(t){this.pictures=t.count,this.notice=t.note}get waive(){return this.options.waive??[]}get held(){return this.holds.get(this.slot())}colors(){return ae(this.list)}edited(){return{colors:this.colors(),signature:[...this.signature]}}shown(){return this.compare?this.start:this.list}slot(){return this.row<F.length?this.row:this.row+(this.col===1?8:0)}dirty(){return this.seeded||this.pictures!==this.startPictures||this.list.some((t,e)=>t!==this.start[e])||this.signature.join()!==this.startSignature.join()}resettable(){return this.dirty()||this.tone&&this.list.some((t,e)=>t!==this.original[e])}misses(){return Og(this.list,this.signature,this.waive)}failing(){return nr(Er(this.list,this.signature,this.waive))}choices(){let t=this.filter.toLowerCase();return(this.options.palettes??[]).filter((e)=>e.name.toLowerCase().includes(t))}paste(t){if(this.notice=void 0,this.overlay==="open"){this.filter+=t.replace(/\s+/g,"").toLowerCase(),this.pick=0;return}if(this.overlay)return;if(!this.tone&&t.trim()===""){this.findPictures({clipboard:!0});return}if(!this.tone&&X3(t)){this.findPictures({paste:t});return}if(this.mode==="seeds")return;let e=this.options.decode?.(t);if(e){this.remember("open"),this.list=rn(e),this.lch=this.lchs(),this.chain(this.list),this.notice="Took the colors of the share code";return}let n=TE(t);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"paste")}press(t){if(this.notice=void 0,t==="ctrl-c"){this.result="cancelled";return}if(this.quitting){if(this.quitting=!1,t==="y"||t==="Y")this.result="cancelled";return}if(this.typing!==void 0){this.type(t);return}if(this.overlay==="keys"){this.overlay=void 0;return}if(this.overlay==="open"){this.openKey(t);return}if(this.menu){this.menuKey(t);return}if(t==="?"){this.overlay="keys";return}if(this.inspect&&this.mode==="list"&&this.inspectKey(t))return;if(this.tone&&(t==="ctrl-v"||t==="alt-v"||t==="p"))return;if(t==="ctrl-v"||t==="alt-v"){this.findPictures({clipboard:!0});return}if(t==="p"&&this.mode!=="tune"){this.findPictures();return}if(t===" "&&this.mode!=="seeds"){this.compare=!this.compare;return}if(this.compare&&t==="esc"){this.compare=!1;return}if(t==="g"&&this.mode!=="seeds"){this.view=this.view==="slot"?"relations":"slot",this.inspect=!1,this.spot=void 0;return}let e=t==="j"?"down":t==="k"?"up":t;if(this.mode==="seeds")this.seedKey(e);else if(this.mode==="tune")this.tuneKey(e);else this.listKey(e)}select(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;if(this.mode==="tune"){if(t===this.slot())return;this.tuneKey("enter")}this.notice=void 0,this.seat(t),this.lastEdit=void 0}seat(t){if(this.row=t<F.length?t:F.length+(t-F.length)%8,t>=F.length)this.col=t-F.length>=8?1:0}grip(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return!1;if(this.notice=void 0,this.mode==="list")this.tune();return this.channel=t,!0}slide(t,e){if(!this.grip(t))return;let n=Math.min(1,Math.max(0,e));if(t===oe){this.reach(21**n);return}this.put(HE(yn[t],n))}sow(t,e){let n=ys[t];if(this.mode!=="seeds"||this.overlay||this.quitting||!n)return;this.notice=void 0,this.field=t;let r=Math.min(1,Math.max(0,e));this.seeds=yg({...this.seeds,[n.key]:HE(n,r)},n,0),this.list=rn(yi(this.seeds)),this.lch=this.lchs()}scroll(t){let e=(n,r)=>Math.min(r,Math.max(0,n+t));if(this.overlay==="open")this.pick=e(this.pick,Math.max(0,this.choices().length-1));else if(this.overlay||this.quitting||this.typing!==void 0)return;else if(this.mode==="seeds")this.field=e(this.field,ys.length-1);else if(this.mode==="tune")this.channel=0,this.step(-t);else this.row=e(this.row,vs-1),this.lastEdit=void 0}lchOf(t){return n5(this.list,t)}lchs(){return this.list.map((t)=>this.lchOf(t))}seedKey(t){let e=ys.length;if(t==="up"||t==="down")this.field=(this.field+(t==="up"?e-1:1))%e;else if(t==="home"||t==="end")this.field=t==="home"?0:e-1;else if(t==="left"||t==="right"||t==="shift-left"||t==="shift-right"){let n=ys[this.field],r=(t.endsWith("left")?-1:1)*(t.startsWith("shift")?n.wraps?10:IE:1);this.seeds=yg(this.seeds,n,r),this.list=rn(yi(this.seeds)),this.lch=this.lchs()}else if(t==="enter")this.leaveSeeds();else if(t==="o")this.openPalettes();else if(t==="esc")this.leave()}leaveSeeds(){this.start=this.list,this.original=this.list,this.chain(this.original),this.seeded=!0,this.mode="list"}leave(){if(this.dirty())this.quitting=!0;else this.result="cancelled"}findPictures(t){if(!this.options.find){this.notice="Pictures need Ghostty, iTerm2 or kitty, outside tmux";return}this.wants=t?{start:t}:{}}openPalettes(){if((this.options.palettes??[]).length>0)this.overlay="open",this.pick=0;else this.notice="No other palettes to take colors from"}listKey(t){if(t==="up"||t==="down"){let e=t==="up"?-1:1;this.land(this.row+e,e),this.lastEdit=void 0}else if(t==="home"||t==="end")this.land(t==="home"?0:vs-1,t==="home"?1:-1);else if(t==="pgup"||t==="pgdn")this.land(t==="pgup"?0:F.length,1);else if(t==="left"||t==="right"){let e=t==="left"?0:1;if(this.row>=F.length&&this.visible(this.slotAt(this.row,e)))this.col=e,this.lastEdit=void 0}else if(this.builderKey(t))return;else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1;else if(t==="n"||t==="N")this.nextMiss(t==="n"?1:-1);else if(t==="enter"||t==="tab")this.tune();else if(t==="#")this.typing="";else if(t==="c")this.clip=this.list[this.slot()],this.notice=`Copied ${this.clip}`;else if(t==="v")if(this.clip)this.set(this.slot(),this.clip,"paste");else this.notice="Nothing copied yet — c copies a slot";else if(t==="r")this.set(this.slot(),this.original[this.slot()],"reset");else if(t==="R")this.remember("reset-all"),this.list=this.original,this.lch=this.lchs();else if(t==="=")this.follow();else if(t==="*"&&!this.tone)this.mark();else if(t==="f")this.fix();else if(t==="o"&&!this.tone)this.openPalettes();else if(t==="u")this.undo();else if(t==="ctrl-r")this.redo();else if(t==="s"||t==="ctrl-s")this.save();else if(t==="esc")this.leave()}viewport(t,e){this.size={cols:t,rows:e}}layout(){return this.size&&this.view==="slot"?Ic(this.size.cols,this.size.rows,this.scene):void 0}get roomy(){return this.layout()!==void 0}reseat(){if(!this.visible(this.slot()))this.land(this.row,1)}rowShown(t){return this.visible(this.slotAt(t,0))||t>=F.length&&this.visible(this.slotAt(t,1))}land(t,e){for(let n=0;n<vs;n++){let r=((t+e*n)%vs+vs)%vs;if(this.rowShown(r)){if(this.row=r,r>=F.length&&!this.visible(this.slotAt(r,this.col)))this.col=1-this.col;return}}}builderKey(t){if(["i","m","w","x","I"].includes(t)&&!this.roomy)return this.notice=this.view==="relations"?"g goes back to the builder":"The builder needs a window of at least 96×28",!0;if(t==="i")this.startInspect();else if(t==="l")this.linkKey();else if(t==="m")this.changedOnly=!this.changedOnly,this.reseat(),this.notice=this.changedOnly?this.changes()>0?void 0:"Nothing changed yet":void 0;else if(t==="b")this.pic=!this.pic;else if(t==="w")this.where=!this.where;else if(t==="x"&&this.options.exports)this.menu="export",this.entry=0;else if(t==="I")this.menu="import",this.entry=0;else return!1;return!0}menuKey(t){let e=this.menu==="export"?3:2;if(t==="esc")this.menu=void 0;else if(t==="up"||t==="down"||t==="k"||t==="j")this.entry=(this.entry+(t==="up"||t==="k"?e-1:1))%e;else if(t==="enter")this.choose(this.entry)}choose(t){let e=this.menu;if(this.menu=void 0,e==="import"){if(t===0)this.openPalettes();else this.notice=this.options.decode?"Paste a share link or a tt2: code into this window":"Share codes are not read here";return}let n=this.options.exports;if(e!=="export"||!n)return;try{let r=this.edited(),i=n.code(r);this.copied=t===0?i:t===1?`${n.command} ${i}`:n.toml(r),this.notice=`Copied ${t===0?"the share code":t===1?"the add command":"the palette file"} — paste it where you need it`}catch(r){this.notice=r instanceof Error?r.message:String(r)}}startInspect(){let t=this.layout();if(!t){this.notice="The builder needs a window of at least 96×28";return}this.inspect=!0,this.spot=cE(t,this.slot())}inspectKey(t){let e=this.layout();if(!e)return this.inspect=!1,!1;let r={left:"left",right:"right",up:"up",k:"up",down:"down",j:"down",tab:"next","shift-tab":"previous"}[t];if(t==="i"||t==="esc")this.inspect=!1,this.spot=void 0;else if(r)this.spot=uE(e,af(e,this.spot),r);else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1,this.spot=void 0;else if(t==="enter")this.jump();else return!1;return!0}point(t){if(this.mode!=="seeds"&&!this.overlay&&!this.quitting&&this.typing===void 0&&this.layout())this.inspect=!0,this.spot=t}slotsHere(){let t=this.layout();return t&&this.spot?lE(t,this.spot):void 0}jump(){let t=this.slotsHere();if(!t)return;let e=t.ground!==0?t.ground:t.text;this.inspect=!1,this.spot=void 0,this.show(e),this.select(e)}show(t){if(!this.visible(t))this.changedOnly=!1}openSlot(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;let e=this.mode==="tune"&&t===this.slot();if(this.mode==="tune")this.tuneKey("enter");if(e)return;if(this.show(t),this.select(t),this.mode==="list")this.tune()}dismiss(){if(this.mode!=="tune"||this.overlay||this.quitting)return;this.typing=void 0,this.tuneKey("enter")}plane(t,e){if(!this.grip(0))return;this.channel=0,this.put(t),this.channel=1,this.put(e)}linkKey(){let t=this.slot();if(t<F.length){this.notice="l links a bright to its normal — pick an ANSI row";return}let e=F.length+(t-F.length)%8,n=e+8,r=`${Ue(n).name} and ${Ue(e).name.toLowerCase()}`;if(this.mode!=="tune")this.remember("link");if(this.linkOf(n)!==void 0){this.unlinked.add(n),this.notice=`${r} move apart`;return}this.links.set(n,e),this.unlinked.delete(n),this.offsets.set(n,Eg(this.lch[e],this.lch[n])),this.notice=`${r} move together`}nextMiss(t){let e=Z3(),n=this.misses();if(n.size===0){this.notice="The gate passes";return}let r=e.indexOf(this.slot());for(let i=1;i<=e.length;i++){let s=e[((r+t*i)%e.length+e.length)%e.length];if(n.has(s)){this.seat(s);return}}}tune(){this.remember("tune"),this.tuneFrom={list:this.list,lch:this.lch},this.holds=new Map,this.hold(),this.mode="tune"}hold(){for(let t of this.scoped())if(!this.holds.has(t))this.holds.set(t,this.lch[t].c)}scoped(){return vg(this.scope,this.slot())}tuneKey(t){let e=this.channel===oe;if(t==="tab"||t==="shift-tab")this.channel=e?0:oe;else if(t==="up"||t==="down"||t==="pgup"||t==="pgdn")this.channel=0,this.step((t==="up"||t==="pgup"?1:-1)*(t.startsWith("pg")?IE:1));else if(t==="left"||t==="right"){let n=t==="left"?-1:1;if(e)this.reach(this.ratio()+n*0.1);else this.channel=1,this.step(n)}else if(t==="shift-left"||t==="shift-right"){let n=t==="shift-left"?-1:1;if(e)this.reach(this.ratio()+n*0.5);else this.channel=2,this.step(n*V3)}else if((t===","||t===".")&&!e)this.channel=2,this.step(t===","?-1:1);else if(t==="home"||t==="end")if(e)this.reach(t==="home"?this.partner().floor??1:21);else{let n=yn[this.channel];this.put(t==="home"?n.min:n.wraps?n.max-n.step:n.max)}else if(/^[0-9]$/.test(t))if(e){if(t!=="0")this.reach(Number(t))}else{let n=yn[this.channel];this.put(n.min+(n.max-n.min)*Number(t)/10)}else if(t==="a")this.rescope();else if(t==="#")this.typing="";else if(t==="l")this.linkKey();else if(t==="s"||t==="ctrl-s")this.tuneKey("enter"),this.save();else if(t==="enter"){if(this.tuneFrom&&this.list.every((n,r)=>n===this.tuneFrom?.list[r]))this.history.pop();this.endTune()}else if(t==="esc"){if(this.tuneFrom)this.list=this.tuneFrom.list,this.lch=this.tuneFrom.lch,this.history.pop();this.endTune()}}rescope(){if(this.slot()<F.length){this.notice="A base color moves alone";return}let t=ta.indexOf(this.scope);for(let e=1;e<=ta.length;e++){let n=ta[(t+e)%ta.length];if(n==="this"||vg(n,this.slot()).length>1){this.scopeTo(n);return}}}scopeTo(t){if(this.mode!=="tune"||this.typing!==void 0||this.quitting||this.slot()<F.length)return;if(t!=="this"&&vg(t,this.slot()).length<=1)return;this.scope=t,this.hold();let e=this.scoped().length;this.notice=e>1?`${e} slots move together`:"This slot moves alone"}endTune(){this.tuneFrom=void 0,this.holds=new Map,this.mode="list"}partner(){return t5(this.slot(),this.waive)}ratio(){return kt(this.list[this.slot()],this.list[this.partner().against])}origin(){let t=this.slot(),e=this.original[t];if(e===this.list[t])return;return{hex:e,lch:this.lchOf(e),ratio:kt(e,this.original[this.partner().against])}}reach(t){let e=this.slot(),n=this.list[this.partner().against],r=this.lch[e],i=this.holds.get(e)??r.c,s=(d)=>nn(d,Math.min(i,Sg(d,r.h)),r.h),o=(d)=>kt(s(d),n),a=Mt(this.list[e])>=Mt(n),c=Ot(n).l,u=Math.max(1,Math.round(t*100)/100),f=a?1:0,l;if(o(f)<u)l=f,this.notice=`The ratio stops at ${o(f).toFixed(2)}:1 on this side of the color it is read against`;else{let d=c,h=f;for(let m=0;m<24;m++){let p=(d+h)/2;if(o(p)>=u)h=p;else d=p}l=h}this.place(e,l,i,r.h);for(let d=0;d<40&&l!==f&&kt(this.list[e],n)<u;d++)l=a?Math.min(1,l+0.001):Math.max(0,l-0.001),this.place(e,l,i,r.h);this.lch=this.lch.with(e,{...this.lch[e],l:Math.round(l*1e4)/1e4})}step(t){let e=yn[this.channel],n=this.lch[this.slot()][e.key];this.put(n+e.step*t)}put(t){let e=this.slot(),n=yn[this.channel],r=n.wraps?(t%n.max+n.max)%n.max:Ss(t,n.min,n.max),i=Math.round(r*1e4)/1e4,s=this.lch[e],o=this.scoped().filter((u)=>u!==e),a=(u)=>Math.round(u*1e4)/1e4;if(n.key==="c"){let u=Sg(s.l,s.h);if(i>u)this.notice=`Chroma stops at ${u.toFixed(3)}, the sRGB edge for this lightness and hue`;let f=Math.min(i,u),l=f-s.c;this.holds.set(e,f),this.place(e,s.l,f,s.h);for(let d of o){let h=this.lch[d],m=a(Ss((this.holds.get(d)??h.c)+l,0,CE));this.holds.set(d,m),this.place(d,h.l,m,h.h)}this.trail([e,...o]);return}let c=n.key==="h"?((i-s.h)%360+540)%360-180:i-s.l;if(this.place(e,n.key==="l"?i:s.l,this.holds.get(e)??s.c,n.key==="h"?i:s.h),n.key==="h"&&Mg(this.list[e]))this.notice="A grey shows no hue — raise its chroma first";for(let u of o){let f=this.lch[u];this.place(u,n.key==="l"?a(Ss(f.l+c,0,1)):f.l,this.holds.get(u)??f.c,n.key==="h"?a(((f.h+c)%360+360)%360):f.h)}this.trail([e,...o])}trail(t){let e=new Set(t);for(let[n,r]of this.links){if(this.unlinked.has(n))continue;if(e.has(n)&&!e.has(r))this.unlinked.add(n);else if(e.has(r)&&!e.has(n)){let i=this.lch[r],s=this.offsets.get(n);this.place(n,Ss(i.l+s.l,0,1),Math.max(0,i.c+s.c),((i.h+s.h)%360+360)%360)}}}place(t,e,n,r){let i=Math.min(n,Sg(e,r));this.lch=this.lch.with(t,{l:e,c:i,h:r}),this.list=this.list.with(t,nn(e,i,r))}take(t,e){if(this.mode==="tune"){let n=this.slot();this.list=this.list.with(n,t),this.lch=this.lch.with(n,this.lchOf(t)),this.holds.set(n,this.lch[n].c),this.trail([n])}else this.set(this.slot(),t,e)}type(t){let e=this.typing??"";if(t==="esc")this.typing=void 0;else if(t==="enter"){let n=TE(e);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"hex")}else{let n=ms(e,NE(t),(r)=>/^[0-9a-z#(),.% ]$/.test(r)&&e.length<28);if(n!==void 0)this.typing=n}}openKey(t){let e=this.choices();if(t==="esc")this.overlay=void 0,this.filter="";else if(t==="up"||t==="down"){let n=Math.max(1,e.length);this.pick=(this.pick+(t==="up"?n-1:1))%n}else if(t==="home"||t==="end")this.pick=t==="home"?0:Math.max(0,e.length-1);else if(t==="enter"){let n=e[this.pick];if(!n)return;if(this.remember("open"),this.list=rn(n.colors),this.lch=this.lchs(),this.chain(this.list),this.overlay=void 0,this.filter="",this.notice=`Took the colors of ${n.name}`,this.mode==="seeds")this.leaveSeeds()}else{let n=ms(this.filter,NE(t),(r)=>/^[a-z0-9@/-]$/.test(r));if(n!==void 0)this.filter=n,this.pick=0}}snapshot(){return{list:this.list,lch:this.lch,signature:this.signature}}remember(t){if(t!==this.lastEdit||e5.has(t))this.history.push(this.snapshot()),this.future=[];this.lastEdit=t}set(t,e,n){if(!we(e)||this.list[t]===e)return;this.remember(n),this.list=this.list.with(t,e),this.lch=this.lch.with(t,this.lchOf(e)),this.trail([t])}follow(){if(this.row<F.length){this.notice="= works on an ANSI row — the bright takes its normal";return}let t=this.row,e=this.row+8,n=this.lch[t];this.remember("follow"),this.place(e,Ss(n.l+0.06,0,1),n.c,n.h),this.links.set(e,t),this.unlinked.delete(e),this.offsets.set(e,Eg(n,this.lch[e])),this.seat(e),this.notice=`${Ue(e).name} follows ${Ue(t).name.toLowerCase()}`}mark(){let t=qn[this.slot()];this.remember("sig");let e=this.signature.includes(t)?this.signature.filter((r)=>r!==t):[...this.signature,t],n=e.length>3?e[0]:void 0;this.signature=e.slice(-3),this.notice=this.signature.length===3?`Signature: ${this.signature.join(", ")}${n?` — ${n} dropped`:""}`:`The signature needs three slots — ${this.signature.length} marked`}fix(){let t=Er(this.list,this.signature,this.waive),{theme:e,moves:n,left:r}=hf({...t,selectionBackground:t.selectionBackground,signatureSlots:this.signature});if(n.length===0){this.notice=nr(t).length===0?"Already passes the gate":"No color change fixes it";return}this.remember("fix");let i=rn({...this.colors(),foreground:e.foreground,selection:e.selectionBackground,ansi:e.ansi}),s=this.list;this.list=i,this.lch=i.map((o,a)=>o===s[a]?this.lch[a]:this.lchOf(o)),this.notice=`Moved ${n.length} ${n.length===1?"color":"colors"}${r.length===0?" — passes the gate":" closer to the gate"}`}save(){let t=this.options.check(this.edited());if(t){this.notice=t;return}this.result="saved"}undo(){let t=this.history.pop();if(!t){this.notice="Nothing to undo";return}this.future.push(this.snapshot()),this.restore(t)}redo(){let t=this.future.pop();if(!t){this.notice="Nothing to redo";return}this.history.push(this.snapshot()),this.restore(t)}restore(t){this.list=t.list,this.lch=t.lch,this.signature=t.signature,this.lastEdit=void 0}}import{mkdirSync as v5,readFileSync as Tc,writeFileSync as nM}from"node:fs";import{dirname as S5}from"node:path";import{isMainThread as E5,parentPort as rM,Worker as M5}from"node:worker_threads";var r5=new Set(["comic","4koma","monochrome","greyscale","sketch","lineart","speech_bubble"]),i5=new Set(["scenery","landscape","scenic","no_humans","wide_shot","very_wide_shot"]),s5=0.04,o5=0.1,a5=0.05,c5=4096;function u5(t){return new Set(t.cutouts.split(/\s+/).map((e)=>e.replace(/^~/,"")).filter(Boolean))}function l5(t,e,n,r=0){let{site:i,post:s}=t,o=new Set(s.tags),a=!u5(i).isDisjointFrom(o),c=Math.min(s.width,s.height),u=s.width>0&&s.height>0?s.width/s.height/(e.w/e.h):1;return(s.solo?2:0)+(r5.isDisjointFrom(o)?0:-3)+(i5.isDisjointFrom(o)?0:-1.5)+2*Math.min(1,c/e.h)+(a?1.5:-Math.min(1.5,Math.abs(Math.log(u))))+(n>0?1.5*Math.log1p(Math.max(0,s.score))/Math.log1p(n):0)+2*r}function mf(t,e,n=new Map){let r=new Map;for(let{site:i,post:s}of t)r.set(i,Math.max(r.get(i)??0,s.score));return t.map((i,s)=>({pick:i,at:s,score:l5(i,e,r.get(i.site)??0,n.get(i.post))})).sort((i,s)=>s.score-i.score||i.at-s.at).map(({pick:i})=>i)}function BE(t){let e=Map.groupBy(t,(r)=>r.site),n=[];for(let r=0;n.length<t.length;r++)for(let i of e.values()){let s=i[r];if(s)n.push(s)}return n}function Ag(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function _E(t,e,n){let[r,i,s]=[Ag(t),Ag(e),Ag(n)],o=Math.cbrt(0.4122214708*r+0.5363325363*i+0.0514459929*s),a=Math.cbrt(0.2119034982*r+0.6806995451*i+0.1073969566*s),c=Math.cbrt(0.0883024619*r+0.2817188376*i+0.6299787005*s);return[0.2104542553*o+0.793617785*a-0.0040720468*c,1.9779984951*o-2.428592205*a+0.4505937099*c,0.0259040371*o+0.7827717662*a-0.808675766*c]}function GE(t,e){let n=e.values().map((o)=>_E(...st(o))).filter(([,o,a])=>Math.hypot(o,a)>=s5).toArray();if(n.length===0)return 0;let r=Math.max(1,Math.floor(Math.sqrt(t.width*t.height/c5))),i=n.map(()=>0),s=0;for(let o=0;o<t.height;o+=r)for(let a=0;a<t.width;a+=r){let c=(o*t.width+a)*4;if(t.data[c+3]<128)continue;s++;let[u,f,l]=_E(t.data[c],t.data[c+1],t.data[c+2]);n.forEach(([d,h,m],p)=>{if(Math.hypot(u-d,f-h,l-m)<o5)i[p]=i[p]+1})}if(s===0)return 0;return i.reduce((o,a)=>o+Math.min(1,a/s/a5),0)/n.length}import{existsSync as Ng,mkdirSync as UE,readFileSync as ea}from"node:fs";import{homedir as f5}from"node:os";import{dirname as WE,join as Ms}from"node:path";var KE=90000;function gf(t,e){let n=X(t),r=ke(t,e).flatMap((i)=>{let[,s,o]=/^([a-z.]+)_(\d+)$/.exec(i.key)??[];return s&&o&&Z.some((a)=>a.key===s)?[{site:s,id:Number(o),...kh(n,i)}]:[]});return r.length>0?r:void 0}function d5(t,e){let n=new Set(Tt(X(t)).palettes[e.name]?.pictures.map((r)=>r.key));return(e.pictures??[]).filter((r)=>!n.has(he(r)))}function zE(t,e){let n=new Set((e??[]).map((r)=>he(r)));return{...t,pictures:(t.pictures??[]).filter((r)=>!n.has(he(r)))}}async function h5(t,e,n,r,i,s){let o=Z.find(($)=>$.key===n.site);if(!o)throw Error(`no site called ${n.site}`);s("Fetching");let a=await Fi(o,n.id,i);if(!a)throw Error("the post is gone");if(o!==Pt&&a.md5)try{Sa([a],await Ea([a.md5],i))}catch{}let c={},u=(va(o,a)?ya(o,a.id,i).then(($)=>{if($)Zs(a,$)},()=>{}):Promise.resolve()).then(()=>a.named.artist.length>0?gu(a.named.artist,i):new Map).then(($)=>{c=Object.fromEntries($.entries().filter(([,k])=>k.length>0))},()=>{});if(!hu(o,a,Hi(process.env.TTHEME_FIND_RATING))||du(a,Vs(process.env.TTHEME_FIND_BLOCK)).length>0)throw Error("outside your find filters — TTHEME_FIND_RATING and TTHEME_FIND_BLOCK");let f=un(a);if(!f)throw Error("too large to use");let l=Ms(ln(o),"orig",`${n.id}.${f.ext}`),d;if(Ng(l))d=new Uint8Array(ea(l));else{s("Downloading");let $=Kr(o,a,f);d=await pu($.site,$.url,i,(k,v)=>s("Downloading",_l(k,v))),C(l,d)}let h=Pn(d,fe),m=!1;if(rr(h)===0&&Xs()&&process.env.TTHEME_FIND_REMOVE_BG!=="off"){let $=Ms(ln(o),"cut",`${n.id}.png`);try{if(!Ng($))s("Cutting out"),UE(WE($),{recursive:!0}),await Pa(l,$,i);let k=Pn(new Uint8Array(ea($)),fe);if(wu(rr(k)))h=k,m=!0}catch{}}await u;let p=bh(e);s("Drawing"),Pu(t,p,Tn(p,e.signatureSlots),h,{site:o.key,id:n.id,ext:f.ext,bytes:d,from:`${o.name} ${n.id} ${o.pageUrl(n.id)}`,artist:a.named.artist,profiles:c,source:Li(a.source),cut:m},{width:0,height:0},si(t),gl(t));let b=ke(t,e.name).find(($)=>$.key===he(n));if(b)Ta(X(t),b,n,r,f5())}function m5(t,e){let n=Z.find((s)=>s.key===t.site),r=`${n?.name??t.site} ${t.id}`;if(!n||!e)return r;return`${Lt()?I.link:`${Vi(n.ansi)}${I.link}${$t}`} ${zu(r,n.pageUrl(t.id))}`}async function xs(t,e,n){let r=e.flatMap((c)=>d5(t,c).map((u)=>({entry:c,shared:u})));if(r.length===0)return;let i=us(n),s=process.stdout.isTTY&&By(process.env),o=new Set,a=hi();for(let[c,{entry:u,shared:f}]of r.entries()){let l=`${u.name} · ${m5(f,s)}`,d=r.length>1?` · ${c+1}/${r.length}`:"",h=(m,p)=>a.set(`${m} ${l}${p?` · ${p}`:""}${d}`);try{await h5(t,u,f,i,AbortSignal.timeout(KE),h),a.say(` ▣ ${l}`),o.add(u)}catch(m){a.say(` ▢ ${l} — ${m instanceof Error?m.message:String(m)}`)}}a.done();for(let c of o){let u=new Set(ke(t,c.name).map((l)=>l.key)),f=(c.pictures??[]).find((l)=>u.has(he(l)));if(f)ao(t,c.name,he(f))}if(o.size>0)Ge(t)}function DE(t,e,n){if(e.width!==t.width||e.height!==t.height)return!1;for(let r=0;r<t.width*t.height;r++)t.data[r*4+3]=e.data[r*4+n]??0;return!0}async function p5(t,e){let[,n,r]=/^(.+)_(\d+)$/.exec(t)??[],i=Ms(Nn(),n??"local","cut",`${r??t}.png`);if(!Ng(i)){if(!Xs())return;UE(WE(i),{recursive:!0}),await Pa(e,i,AbortSignal.timeout(KE))}return Pn(new Uint8Array(ea(i)),fe)}function g5(t,e){try{return rr(Wt(new Uint8Array(ea(Ms(t,`${e.stem}.png`)))))>0}catch{return!1}}function pf(t,e){return()=>Pn(new Uint8Array(ea(Ms(t,e.original))),fe)}function qE(t,e){let n=pf(t,e);return()=>{let r=n(),i=Wt(new Uint8Array(ea(Ms(t,e.cut))));return DE(r,i,0)?r:null}}async function bf(t,e,n,r,i,s,o,a){let c=X(t),u=Tt(c).palettes[e]?.pictures.find((f)=>f.key===n);if(!u?.original)return null;if(u.cut)return Ha(t,e,u,qE(c,u),r,i,s,o,!1,a);if(oo(u)){let f=pf(c,u)();if(rr(f)===0&&g5(c,u)){let l=await p5(n,Ms(c,u.original));if(!l||!DE(f,l,3))return null;return Ha(t,e,u,()=>f,r,i,s,o,!0,a)}return Ha(t,e,u,()=>f,r,i,s,o,!1,a)}return Ha(t,e,u,pf(c,u),r,i,s,o,!1,a)}function JE(t,e,n,r,i,s){let o=X(t),a=Tt(o).palettes[e]?.pictures.find((u)=>u.key===n);if(!a?.original||oo(a))return!1;let c=a.cut?qE(o,a):pf(o,a);return W$(t,e,a,c,r,i,s)}var b5=2,w5=0.01,mt={coarse:64,fine:192,solid:230,far:48,score:15,outliers:0.03,least:0.03,most:0.97,smallest:0.25,largest:4,step:1.19,overhang:1.04,tiny:8,guesses:3,nudges:[0.97,1,1.03],reach:5},$5=/(?:^|[^0-9a-f])([0-9a-f]{32})(?:[^0-9a-f]|$)/i,k5=[[/yande\.re\/post\/show\/(\d+)/,"yande"],[/konachan\.(?:com|net)\/post\/show\/(\d+)/,"konachan"],[/danbooru\.donmai\.us\/(?:posts|post\/show)\/(\d+)/,"danbooru"],[/zerochan\.net\/(\d+)(?:[?#\s]|$)/,"zerochan"]];function Tg(t){let e=/(\d+)_p(\d+)/.exec(t.source);return[...t.md5?[`md5:${t.md5}`]:[],...e&&t.source.includes("pximg")?[`pixiv:${e[1]}_p${e[2]}`]:[]]}function VE(t,e){let n=$5.exec(e.source)?.[1]?.toLowerCase();return[`post:${t.key}:${e.id}`,...e.md5?[`md5:${e.md5}`]:[],...n&&n!==e.md5?[`md5:${n}`]:[],...k5.flatMap(([r,i])=>{let s=r.exec(e.source)?.[1];return s?[`post:${i}:${Number(s)}`]:[]}),...e.family?[`family:${t.key}:${e.family}`]:[]]}function ZE(t,e){let n=t.owner||t.named.artist[0]||"";return n!==""&&n===(e.owner||e.named.artist[0]||"")&&t.width===e.width&&t.height===e.height}function XE(t){let r=[];for(let s=0;s<8;s++){let o=Math.floor(s*t.height/8),a=Math.max(o+1,Math.floor((s+1)*t.height/8));for(let c=0;c<9;c++){let u=Math.floor(c*t.width/9),f=Math.max(u+1,Math.floor((c+1)*t.width/9)),l=0;for(let d=o;d<a;d++)for(let h=u;h<f;h++){let m=(d*t.width+h)*4,p=t.data[m+3]/255,b=0.299*t.data[m]+0.587*t.data[m+1]+0.114*t.data[m+2];l+=b*p+255*(1-p)}r.push(l/((f-u)*(a-o)))}}let i=0n;for(let s=0;s<8;s++)for(let o=0;o<8;o++)i=i<<1n|(r[s*9+o]>r[s*9+o+1]?1n:0n);return i.toString(16).padStart(16,"0")}function y5(t,e){let n=BigInt(`0x${t}`)^BigInt(`0x${e}`),r=0;while(n>0n)r+=Number(n&1n),n>>=1n;return r}function QE(t,e){if(t.width<=0||t.height<=0||e.width<=0||e.height<=0)return!1;return Math.abs(Math.log(t.width/t.height/(e.width/e.height)))<w5&&y5(t.hash,e.hash)<=b5}var tM={score:Number.POSITIVE_INFINITY,far:1,x:0,y:0,scale:0};function wf(t,e){let n=Math.max(1,Math.round(t.width*e)),r=Math.max(1,Math.round(t.height*e));return Br(t,{x:0,y:0,w:t.width,h:t.height},n,r)}function YE(t,e,n,r,i,s,o){let a=[];for(let u=0;u<t.width*t.height;u++)if(t.data[u*4+3]>=mt.solid)a.push(u);let c=tM;if(a.length===0)return c;for(let u=i;u<=s;u++)for(let f=n;f<=r;f++){let l=0,d=0;for(let h of a){let m=h%t.width,p=f+m,b=u+(h-m)/t.width,$=255;if(p>=0&&b>=0&&p<e.width&&b<e.height){let k=h*4,v=(b*e.width+p)*4;$=Math.max(Math.abs(t.data[k]-e.data[v]),Math.abs(t.data[k+1]-e.data[v+1]),Math.abs(t.data[k+2]-e.data[v+2]))}if(l+=$,$>mt.far)d++;if(l>c.score*a.length)break}if(l/a.length<c.score)c={score:l/a.length,far:d/a.length,x:f,y:u,scale:o}}return c}function eM(t,e){let n=0;for(let f=3;f<t.data.length;f+=4)if(t.data[f]>=mt.solid)n++;let r=n/(t.width*t.height);if(r<mt.least||r>mt.most)return!1;let i=Math.max(e.width,e.height),s=new Set([1,e.width/t.width,e.height/t.height]);for(let f=mt.smallest;f<=mt.largest;f*=mt.step)s.add(f);let o=wf(e,mt.coarse/i),a=[];for(let f of s){let l=mt.coarse/i*f;if(t.width*f>e.width*mt.overhang||t.height*f>e.height*mt.overhang)continue;if(t.width*l<mt.tiny||t.height*l<mt.tiny)continue;let d=wf(t,l);a.push(YE(d,o,-1,o.width-d.width+1,-1,o.height-d.height+1,f))}a.sort((f,l)=>f.score-l.score);let c=wf(e,mt.fine/i),u=tM;for(let f of a.slice(0,mt.guesses))for(let l of mt.nudges){let d=f.scale*l,h=wf(t,mt.fine/i*d),m=Math.round(f.x*mt.fine/mt.coarse),p=Math.round(f.y*mt.fine/mt.coarse),b=YE(h,c,m-mt.reach,m+mt.reach,p-mt.reach,p+mt.reach,d);if(b.score<u.score)u=b}return u.score<=mt.score&&u.far<=mt.outliers}var x5={thumb:"tile",band:"band",match:"tile",twin:"view",show:"view",backdrop:"view",redraw:"view"},na;async function O5(t){if(t.job==="twin"){let r=na?.from===t.whole?na.inked.image:Pn(new Uint8Array(Tc(t.whole)),fe);return eM(Pn(new Uint8Array(Tc(t.cut)),fe),r)}if(t.job==="redraw")return bf(t.home,t.name,t.key,t.paint,t.blur,t.aligns,t.user);if(t.job==="show"){if(na?.from!==t.from){let o=Pn(new Uint8Array(Tc(t.from)),fe);na={from:t.from,clear:rr(o),inked:gh(o,t.cut)}}let{image:r,fill:i,opacity:s}=R$(na.inked,t.colors,t.tone,t.width,t.height,t.blur,t.tune,t.coloring);return v5(S5(t.to),{recursive:!0}),nM(t.to,De(r)),{clear:na.clear,fill:i,opacity:s}}let e=Pn(new Uint8Array(Tc(t.from)),fe);if(t.job==="backdrop"){Pu(t.home,t.colors,t.tone,e,{...t.origin,bytes:new Uint8Array(Tc(t.source)),cut:t.from!==t.source},t,t.blur,t.coloring);let r=t.tune&&ke(t.home,t.colors.name).find((i)=>i.key===he(t.origin));if(t.tune&&r)Ta(X(t.home),r,t.tune,t.aligns??!0,t.user??t.home);return 0}if(t.job==="match")return{match:GE(e,t.colors),hash:XE(e)};if(t.job==="thumb")return C(t.to,De(u0(e,t.width,t.height))),0;let n=e.data.subarray(t.y*e.width*4,(t.y+t.height)*e.width*4);return nM(t.to,De({width:e.width,height:t.height,data:n})),0}function P5(t){t.on("message",async(e)=>{try{t.postMessage({id:e.id,value:await O5(e)})}catch(n){t.postMessage({id:e.id,error:n instanceof Error?n.message:String(n)})}})}class Hg{worker;next=1;waiting=new Map;send(t){let e=this.next++;return new Promise((n,r)=>{let i=this.open();this.waiting.set(e,{ok:n,no:r}),i.ref(),i.postMessage({...t,id:e})})}close(){this.worker?.terminate(),this.worker=void 0,this.drop(Error("renderer closed"))}open(){if(this.worker)return this.worker;let t=new M5(import.meta.filename);t.unref(),t.on("message",({id:n,value:r,error:i})=>{let s=this.waiting.get(n);if(this.waiting.delete(n),this.waiting.size===0)t.unref();if(i!==void 0)s?.no(Error(i));else s?.ok(r)});let e=(n)=>{if(this.worker===t)this.worker=void 0;this.drop(n instanceof Error?n:Error("renderer stopped"))};return t.on("error",e),t.on("exit",()=>e(void 0)),this.worker=t,t}drop(t){for(let e of this.waiting.values())e.no(t);this.waiting.clear()}}class Hc{lines=new Map;run(t){let e=x5[t.job],n=this.lines.get(e);if(!n)n=new Hg,this.lines.set(e,n);return n.send(t)}close(){for(let t of this.lines.values())t.close();this.lines.clear()}}class Fg{lines;constructor(t){this.lines=Array.from({length:Math.max(1,t)},()=>new Hg)}async map(t){let e=[],n=0;return await Promise.all(this.lines.map(async(r)=>{while(n<t.length){let i=n++;try{e[i]=await r.send(t[i])}catch(s){e[i]=s instanceof Error?s:Error(String(s))}}})),e}close(){for(let t of this.lines)t.close()}}if(!E5&&rM)P5(rM);import{existsSync as I5,mkdtempSync as R5,readFileSync as A5,rmSync as iM,writeFileSync as N5}from"node:fs";import{tmpdir as T5}from"node:os";import{basename as oM,join as sM}from"node:path";var H5=6;class Lg{dir;made=[];of(t,e){this.dir??=R5(sM(T5(),"ttheme-tint-"));let n=sM(this.dir,`${oM(t,".png")}.${e.slice(1).toLowerCase()}.png`);if(!I5(n)){let r=new Uint8Array(A5(t));N5(n,au(r,e)??sr(ir(Wt(r)),e)),this.made.push(n);while(this.made.length>H5)iM(this.made.shift(),{force:!0})}return n}clear(){if(this.dir)iM(this.dir,{recursive:!0,force:!0});this.dir=void 0,this.made.length=0}}function aM(t,e,n,r,i){if(qe(t)==="original")return e;let s=Tn(n,[...r]);return s.color===t.tone?e:i.of(e,s.color)}function cM(t,e){let n=oM(e);return t.find((r)=>n.startsWith(`${r.stem}.`)||n.startsWith(`${r.stem}@`))}var G5=2147483625,fM=2147483626,Jn=2147483627,U5=-1073741831,dM=-1073741830,W5=-1073741829,K5=4;function z5(t,e,n,r,i){let s=Math.trunc,o=n.col*r.w,a=n.row*r.h,c=s((Math.max(i.x,o)+r.w-1)/r.w),u=s(Math.min(i.x+i.w,o+n.cols*r.w)/r.w),f=s((Math.max(i.y,a)+r.h-1)/r.h),l=s(Math.min(i.y+i.h,a+n.rows*r.h)/r.h);if(u<=c||l<=f)return;return{col:c,row:f,cols:u-c,rows:l-f,x:s((c*r.w-i.x)*t/i.w),y:s((f*r.h-i.y)*e/i.h),w:s((u-c)*r.w*t/i.w),h:s((l-f)*r.h*e/i.h)}}function D5(t){try{let e=C5(t,"r"),n=Buffer.alloc(24);return j5(e,n,0,24,0),F5(e),n.readUInt32BE(0)===2303741511?{width:n.readUInt32BE(16),height:n.readUInt32BE(20)}:void 0}catch{return}}class $f{ready=()=>{};cell={w:0,h:0};held;tints=new Lg;sent=new Map;placed=new Map;viewed="";renders;scratch;made=0;bands=new Map;home;name;views;banded;files;static of(t,e,n,r){if(Lt(t)||!Eo(t,r)||!(Mo(t)||ts(t)))return;return new $f(t,e,n)}constructor(t,e,n){this.home=e,this.name=n,this.views=ts(t),this.banded=dl(t),this.files=hl(t)}get laid(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}load(){let t=X(this.home),e=He(t,this.name,_5()),n=[];try{n=Tt(t).palettes[this.name]?.pictures??[]}catch{}let r=e?cM(n,e.image):void 0;this.held=e&&r?{picture:r,image:e.image,opacity:e.opacity,cover:e.cover,at:Jt.indexOf(e.position)+1||5}:void 0}draw(t,e,n,r,i,s={col:0,row:0,cols:r,rows:i}){if(this.cell.w===0)return"";let o=t[0],a=this.look(t,e,n,s,!this.views||s.cols===r&&s.rows===i);if(this.views){let u=r*this.cell.w,f=i*this.cell.h,l=a?`${o}|${a.image}|${a.opacity}|${u}|${f}|${a.box.w}|${a.box.h}|${a.box.x}|${a.box.y}|${this.held?.at??5}`:`${o}||1|${u}|${f}|0|0|0|0|5`;if(l===this.viewed)return"";return this.viewed=l,es(l)}let c=this.layer(G5,U5,"f=24",Buffer.from(st(o)),s);if(a){let u=Math.max(0,Math.min(255,Math.round((1-a.opacity)*255)));c+=this.picture(a),c+=this.layer(fM,W5,"f=32",Buffer.from([...st(o),u]),s)}else c+=this.drop(Jn)+this.drop(fM);return c}resized(){this.sent.clear(),this.placed.clear(),this.viewed=""}clear(){let t=this.views&&this.viewed?es(""):"";for(let e of this.sent.keys())t+=xc(e);return this.resized(),t}close(){let t=this.clear();if(this.tints.clear(),this.renders?.close(),this.scratch)uM(this.scratch,{recursive:!0,force:!0});return t}look(t,e,n,r,i){let s=this.held;if(!s)return;let o={name:this.name,...ae([...t]),waived:[...n]},a=aM(s.picture,s.image,o,e,this.tints),c=D5(a);if(!c)return;let u=co(c.width,c.height,r.cols*this.cell.w,r.rows*this.cell.h,100,s.at,s.cover&&i),f={...u,x:u.x+r.col*this.cell.w,y:u.y+r.row*this.cell.h},l=z5(c.width,c.height,r,this.cell,f);if(!l)return;return{image:a,opacity:s.opacity,...c,box:f,rect:l}}layer(t,e,n,r,i){let s=r.toString("base64"),o=`${s}|${i.col}|${i.row}|${i.cols}|${i.rows}`;if(this.placed.get(t)===o)return"";return this.sent.set(t,o),this.placed.set(t,o),`\x1B_Ga=t,${n},s=1,v=1,i=${t},q=2;${s}\x1B\\\x1B[${i.row+1};${i.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${i.cols},r=${i.rows},C=1,z=${e},q=2\x1B\\`}picture(t){let{image:e,rect:n}=t;if(this.banded&&(2*n.y+n.h-t.height)**2>1){let s=this.band(t.image,n.y,n.h);if(!s.ready)return"";e=s.path,n={...n,y:0}}let r="";if(this.sent.get(Jn)!==e){let s=nf({id:Jn,path:e,row:0,col:0,cols:0,rows:0,z:dM},this.files);if(s===void 0)return"";r+=s,this.sent.set(Jn,e),this.placed.delete(Jn)}let i=`${n.col};${n.row};${n.cols};${n.rows};${n.x};${n.y};${n.w};${n.h}`;if(this.placed.get(Jn)!==i)r+=`\x1B[${n.row+1};${n.col+1}H\x1B_Ga=p,i=${Jn},p=${Jn},x=${n.x},y=${n.y},w=${n.w},h=${n.h},c=${n.cols},r=${n.rows},C=1,z=${dM},q=2\x1B\\`,this.placed.set(Jn,i);return r}drop(t){if(!this.sent.has(t))return"";return this.sent.delete(t),this.placed.delete(t),xc(t)}band(t,e,n){let r=`${t}|${e}|${n}`,i=this.bands.get(r);if(i)return i;this.scratch??=L5(lM(B5(),"ttheme-edit-")),this.renders??=new Hc;let s={path:lM(this.scratch,`band-${++this.made}.png`),ready:!1};this.bands.set(r,s),this.renders.run({job:"band",from:t,to:s.path,y:e,height:n}).then(()=>{s.ready=!0,this.ready()}).catch(()=>{});for(let[o,a]of this.bands){if(this.bands.size<=K5)break;if(a.ready&&a.path!==this.sent.get(Jn))this.bands.delete(o),uM(a.path,{force:!0})}return s}}var Os=50;function at(t,e){return Ye(t,e)}function Fc(t){return Mt(t)>0.35?"#000000":"#ffffff"}function Cg(t,e){return t.held!==void 0&&t.held-e.c>0.0005?t.held:void 0}function kf(t,e,n,r){let i=e.mode==="tune"&&e.channel===oe,s=e.ratio(),{floor:o}=e.partner(),a=(p)=>Math.round(Math.log(Math.max(1,p))/Math.log(21)*(n-1)),c=a(s),u=o===void 0?-1:a(o),f=r===void 0?-1:a(r),l=i?"━":"─",d=Array.from({length:n},(p,b)=>b===c?t.bold("●"):b===f?"○":b===u?"┃":b<u?t.dim(l):l).join(""),h=`${s.toFixed(2)}:1`.padStart(6),m={kind:"channel",channel:oe};return`${at(m,i?t.bold("▸◐"):t.dim(" ◐"))} ${at({kind:"bar",channel:oe},d)} ${at(m,i?t.bold(h):t.dim(h))}`}function yf(t,e){if(!t.misses().has(e))return;if(xg(t.list,t.signature,t.waive,"bright-follows").includes(e))return e-F.length<8?"= makes the bright follow its normal":"= on the normal makes this follow it";return"f moves the colors the gate misses"}function vf(t,e,n){let r=Pg(t.list,t.signature,t.waive,e),i=Cg(t,n);if(i!==void 0)r.push({ok:void 0,text:`Chroma ○ ${i.toFixed(3)} is held while you tune — ${n.c.toFixed(3)} fits this lightness and hue`});return r}function Sf(t){let e=(n,r)=>n.toFixed(r).replace(/^0(?=\.)/,"");return`${e(t.l,2)} ${e(t.c,3)} ${t.h.toFixed(0).padStart(3)}°`}function hM(t){return`${t.l.toFixed(2)} ${t.c.toFixed(3)} ${t.h.toFixed(0).padStart(3)}°`}function q5(t,e,n,r=Os){let i=Ig(e.list,e.signature,e.waive).sort((u,f)=>Number(u.ok!==!1)-Number(f.ok!==!1)),s=i.filter((u)=>u.ok===!1).length,o=` ${t.dim("Gate")} ${s===0?t.dim("passes"):t.bold(`${s} ${s===1?"miss":"misses"}`)}`,a=r-4,c=i.flatMap((u)=>{let f=`${u.value} ${u.bound}`,l=` ${qu(t,u.ok)} ${Rt(u.ok===!1?u.label:t.dim(u.label),t.dim(f),a-2)}`,d=[...new Set(u.slots)].map((p)=>Ue(p).name),h=u.slots[0],m=(p)=>h===void 0?p:at({kind:"slot",slot:h},p);return d.length>0?[m(l),m(` ${t.dim(tt(d.join(" · "),a-2))}`)]:[m(l)]});return[s===0?o:Rt(o,`${t.bold("n")} ${t.dim("next miss")}`,r-2),...c.slice(0,Math.max(0,n-1))]}function mM(t,e){let n=t-F.length;if(n>=0)return e===String(n)||e===`B${n}`||e===`K${n}`;return t===3&&e==="s"||t===2&&e==="c"}function Ef(t,e,n,r){let i=r?wt("under"):"";if(n==="d")return`${t.fg(e.foreground)}${wt("dim")}${i}`;if(n==="b")return`${t.fg(e.foreground)}${wt("bold")}${i}`;if(n==="s")return`${t.bg(e.selection)}${t.fg(e.foreground)}${i}`;if(n==="c")return`${t.bg(e.cursor)}${i}`;let s=/^([BK]?)(\d+)$/.exec(n);if(!s)return`${t.fg(e.foreground)}${i}`;let o=e.ansi[Number(s[2])];if(s[1]==="K")return`${t.fg(e.ansi[0])}${t.bg(o)}${i}`;return`${t.fg(o)}${s[1]==="B"?wt("bold"):""}${i}`}function Lc(t,e,n,r,i){let s=e.length-1,o=Math.max(0,Math.min(s,n)),a=i===void 0?-1:Math.max(0,Math.min(s,i));if(!t.color)return e.map((c,u)=>u===o?"●":u===a?"○":r?"━":"─").join("");return e.map((c,u)=>{let f=c??"#000000";if(u===o)return`${t.bg(f)}${t.fg(Fc(f))}${I.on}${pe}`;if(u===a)return c?`${t.bg(c)}${t.fg(Fc(c))}${I.off}${pe}`:`${t.fg("#aaaaaa")}${I.off}`;return c?`${t.fg(c)}█`:`${t.fg(r?"#777777":"#555555")}░`}).join("").concat($t)}function Mf(t,e,n){return Array.from({length:n},(r,i)=>{let s=e.min+(e.max-e.min)*i/(n-1),o={...t,[e.key]:s};return Dn(o.l,o.c,o.h)?nn(o.l,o.c,o.h):void 0})}function Ps(t,e,n,r){return Math.round((t-e)/(n-e)*(r-1))}function jg(t){return Ig(t.list,t.signature,t.waive).filter((e)=>e.ok===!1).length}function Cc(t,e,n,r){if(n<3)return[];let i=jg(e),s=i===0?" Gate ✓ passes ":` Gate ✗ ${i} · n next `;return[t.dim(Bt(r,"top",[[2,s]])),...q5(t,e,n-1,r-1).slice(1).map((o)=>Ze(t,o,r)),t.dim(Bt(r,"bottom"))]}var xr=0.98,jc=0.12,J5=0.37,pM=0.74,Y5=0.15,V5=-1073741828,_g=-1073741827,Bg=-1073741826,Z5=-1073741825,X5=2147483584,Q5=["panel","plane","hue","contrast","mark","hue-thumb","contrast-thumb","origin","hue-origin","contrast-origin"],t4=4096;function _c(t,e){return Qo(t,e,J5)}function Of(t,e,n){let r=_c(t,n);return r>0.000001?Math.min(1,e/r):0}function Bc(t,e){return{width:t,height:e,data:new Uint8Array(t*e*4)}}function vi(t,e,n,r,i){let s=r[3]*i;if(s<=0||e<0||n<0||e>=t.width||n>=t.height)return;let o=(n*t.width+e)*4,a=t.data;if(s>=1){a[o]=r[0],a[o+1]=r[1],a[o+2]=r[2],a[o+3]=255;return}let c=a[o+3]/255,u=s+c*(1-s);for(let f=0;f<3;f++)a[o+f]=Math.round((r[f]*s+a[o+f]*c*(1-s))/u);a[o+3]=Math.round(u*255)}function Mr(t,e=1){return[...st(t),e]}function ia(t,e,n,r,i,s,o){let a=Math.abs(t-(n+i/2))-(i/2-o),c=Math.abs(e-(r+s/2))-(s/2-o);return Math.hypot(Math.max(a,0),Math.max(c,0))+Math.min(Math.max(a,c),0)-o}function Is(t,e,n,r){let i=[],s=[],o=Math.max(0,Math.floor(r?.x??0)),a=Math.max(0,Math.floor(r?.y??0)),c=Math.min(t,Math.ceil(r?r.x+r.w:t)),u=Math.min(e,Math.ceil(r?r.y+r.h:e));for(let f=a;f<u;f++)for(let l=o;l<c;l++){let d=n(l+0.5,f+0.5);if(d>0.002)i.push(f*t+l),s.push(Math.min(1,d))}return{at:Uint32Array.from(i),cover:Float32Array.from(s)}}function Rs(t,e,n){for(let r=0;r<e.at.length;r++){let i=e.at[r];vi(t,i%t.width,Math.floor(i/t.width),n,e.cover[r])}}function Gg(t,e){return(n,r)=>Math.max(0,0.5-ia(n,r,t.x,t.y,t.w,t.h,e))}function gM(t,e,n){return(r,i)=>Math.max(0,0.5-Math.abs(ia(r,i,t.x,t.y,t.w,t.h,e)+n/2)+n/2)}var xf=new Map;function e4(t,e,n,r){let i=`${e.w}x${e.h} ${$M({...t,ground:"#000000",ink:"#000000",accent:"#000000"})}`,s=xf.get(i);if(s)return s;let{panel:o}=t,a={x:e.w,y:0,w:o.cols*e.w,h:o.rows*e.h},c=Math.round(e.h*0.45),u=Math.round(e.h*0.18),f=e.h*0.6,l=Math.max(1,Math.round(e.h/22)),d=(N)=>({x:(N.col-o.col+1)*e.w,y:(N.row-o.row)*e.h}),h=Math.max(1,Math.round(e.h*0.08)),m=d(t.tabs),p={x:m.x,y:m.y+h,w:t.tabs.cols*e.w,h:e.h-2*h},b=Math.floor(t.tabs.cols/t.tabs.count)*e.w,$=Math.max(1,Math.round(h/2)),k={x:p.x+t.tabs.active*b+$,y:p.y+$,w:(t.tabs.active===t.tabs.count-1?p.w-t.tabs.active*b:b)-2*$,h:p.h-2*$},v=d(t.field),S={x:v.x,y:v.y+h,w:t.field.cols*e.w,h:e.h-2*h},M=t.divider===void 0?void 0:{x:a.x+e.w*0.6,y:(t.divider-o.row)*e.h,w:a.w-e.w*1.2,h:l},x={shadow:Is(n,r,(N,R)=>{let T=ia(N,R,a.x,u,a.w,a.h,c);return T>0&&T<f?(1-T/f)**2:0}),fill:Is(n,r,Gg(a,c),a),border:Is(n,r,gM(a,c,l),a),track:Is(n,r,Gg(p,p.h*0.3),p),segment:Is(n,r,Gg(k,k.h*0.3),k),field:Is(n,r,gM(S,S.h*0.3,l),S),divider:M&&Is(n,r,()=>1,M)};if(xf.size>8)xf.clear();return xf.set(i,x),x}function n4(t){let e=Mt(t.ground)<0.18;return{dark:e,surface:Nt(t.ground,t.ink,e?0.07:0.04)}}function r4(t,e){let n=Bc((t.panel.cols+2)*e.w,(t.panel.rows+1)*e.h),r=e4(t,e,n.width,n.height),{dark:i,surface:s}=n4(t);if(Rs(n,r.shadow,[0,0,0,i?0.45:0.18]),Rs(n,r.fill,Mr(s)),Rs(n,r.border,Mr(t.ink,i?0.16:0.2)),Rs(n,r.track,Mr(t.ink,i?0.06:0.07)),Rs(n,r.segment,Mr(t.accent,i?0.24:0.2)),Rs(n,r.field,Mr(t.ink,i?0.22:0.28)),r.divider)Rs(n,r.divider,Mr(t.ink,i?0.12:0.16));return n}function i4(t,e,n){let r=Bc(Math.round(t.cols*n.w),Math.round(t.rows*n.h)),{width:i,height:s,data:o}=r,a=Math.round(n.h*0.3),c=Math.max(1,(t.cols-1)*n.w),u=(h)=>Math.min(1,Math.max(0,(h+0.5-n.w/2)/c)),f=t.rows*2-1,l=(h)=>xr-Math.min(1,Math.max(0,((h+0.5)/n.h*2-0.5)/f))*(xr-jc),d=[];for(let h=0;h<s;h++){if(h%2===0){let m=l(h+0.5),p=_c(m,e);d=Array.from({length:Math.ceil(i/2)},(b,$)=>Dn(m,u($*2+0.5)*p,e)??[0,0,0])}for(let m=0;m<i;m++){let b=(m<a||m>=i-a)&&(h<a||h>=s-a)?Math.min(1,Math.max(0,0.5-ia(m+0.5,h+0.5,0,0,i,s,a))):1;if(b<=0)continue;let $=d[m>>1],k=(h*i+m)*4;o[k]=$[0],o[k+1]=$[1],o[k+2]=$[2],o[k+3]=Math.round(b*255)}}return r}function wM(t,e){let n=Math.max(4,Math.round(t.h*0.42));return{top:Math.round((t.h-n)/2),height:n,width:e*t.w}}function s4(t,e){let n=Bc(t.cols*e.w,e.h),{top:r,height:i,width:s}=wM(e,t.cols),o=Array.from({length:s},(a,c)=>{let f=Math.min(1,Math.max(0,((c+0.5)/e.w-0.5)/Math.max(1,t.cols-1)))*360;return Dn(pM,Qo(pM,f,Y5),f)??[0,0,0]});for(let a=r;a<r+i;a++)for(let c=0;c<s;c++){let u=Math.min(1,Math.max(0,0.5-ia(c+0.5,a+0.5,0,r,s,i,i/2))),f=o[c];vi(n,c,a,[f[0],f[1],f[2],1],u)}return n}function o4(t,e,n){let r=Bc(t.cols*n.w,n.h),{top:i,height:s,width:o}=wM(n,t.cols),a=t.floor===void 0?-1:Math.round((t.floor*(t.cols-1)+0.5)*n.w),c=Math.max(2,Math.round(s*0.45)),u=i+Math.round((s-c)/2);for(let f=u;f<u+c;f++)for(let l=0;l<o;l++){let d=Math.min(1,Math.max(0,0.5-ia(l+0.5,f+0.5,0,u,o,c,c/2))),h=a<0||l>=a;vi(r,l,f,Mr(e,h?t.lit?0.5:0.36:0.14),d)}if(a>=0){let f=Math.max(2,Math.round(n.w/5));for(let l=i-1;l<i+s+1;l++)for(let d=a-Math.floor(f/2);d<a-Math.floor(f/2)+f;d++)vi(r,d,l,Mr(e,0.85),1)}return r}function a4(t,e,n,r,i,s,o){let a=Bc(t*o.w,e*o.h),c=Math.max(2,Math.round(i*0.3)),u=(l,d)=>Math.min(1,Math.max(0,l-d+0.5)),f=[0,0,0,0.5];for(let l=0;l<a.height;l++)for(let d=0;d<a.width;d++){let h=Math.hypot(d+0.5-n,l+0.5-r);if(s)vi(a,d,l,Mr(s),u(i-c,h));else vi(a,d,l,f,u(i-c,h)-u(i-c-1,h));vi(a,d,l,f,u(i+1,h)-u(i,h)),vi(a,d,l,[255,255,255,1],u(i,h)-u(i-c,h))}return a}function ra(t,e,n,r,i,s,o=Z5){let a=Math.floor((e-r-2)/s.w),c=Math.floor((e+r+2)/s.w),u=Math.floor((n-r-2)/s.h),f=Math.floor((n+r+2)/s.h),l={row:u,col:a,cols:c-a+1,rows:f-u+1},d=Math.round((e-a*s.w)*2)/2,h=Math.round((n-u*s.h)*2)/2;return{name:t,key:`${l.cols}x${l.rows} ${d},${h} ${r} ${i??"-"}`,box:l,z:o,paint:()=>a4(l.cols,l.rows,d,h,r,i,s)}}function $M(t){let{panel:e}=t,n=(i)=>`${i.row-e.row},${i.col-e.col},${i.cols}`,r=t.divider===void 0?"-":t.divider-e.row;return`${e.cols}x${e.rows} ${t.ground} ${t.ink} ${t.accent} ${n(t.tabs)},${t.tabs.active}/${t.tabs.count} ${n(t.field)} ${r}`}function c4(t,e){let n=`${e.w}x${e.h}`,r=Math.max(4,Math.round(e.h*0.34)),i=(l,d)=>(l.col+0.5+d*(l.cols-1))*e.w,s=(l)=>(l.row+0.5)*e.h,o=t.plane,a=(l)=>{let d=(xr-l)/(xr-jc)*(o.rows*2-1);return o.row*e.h+(Math.min(o.rows*2-1,Math.max(0,d))+0.5)*e.h/2},c=a(o.l),u=[{name:"panel",key:`${n} ${$M(t)}`,box:{row:t.panel.row,col:t.panel.col-1,cols:t.panel.cols+2,rows:t.panel.rows+1},z:V5,paint:()=>r4(t,e)},{name:"plane",key:`${n} ${o.cols}x${o.rows} ${o.h.toFixed(2)}`,box:o,z:_g,paint:()=>i4(o,o.h,e.h>=24?{w:e.w/2,h:e.h/2}:e)},{name:"hue",key:`${n} ${t.hue.cols}`,box:{...t.hue,rows:1},z:_g,paint:()=>s4(t.hue,e)},{name:"contrast",key:`${n} ${t.contrast.cols} ${t.contrast.floor??"-"} ${t.contrast.lit} ${t.ink}`,box:{...t.contrast,rows:1},z:_g,paint:()=>o4(t.contrast,t.ink,e)},ra("mark",i(o,Of(o.l,o.c,o.h)),c,r,void 0,e),ra("hue-thumb",i(t.hue,t.hue.h/360),s(t.hue),r,t.hue.color,e),ra("contrast-thumb",i(t.contrast,t.contrast.at),s(t.contrast),r,t.contrast.color,e)],f=t.origin;if(f){let l=Math.max(3,Math.round(r*0.55));u.push(ra("origin",i(o,Of(f.l,f.c,f.h)),a(f.l),l,f.color,e,Bg),ra("hue-origin",i(t.hue,f.h/360),s(t.hue),l,f.color,e,Bg),ra("contrast-origin",i(t.contrast,f.at),s(t.contrast),l,f.color,e,Bg))}return u}function u4(t,e){let r=e.toString("base64").match(new RegExp(`.{1,${t4}}`,"g"))??[""];return r.map((i,s)=>{let o=s<r.length-1?1:0;return s===0?`\x1B_Ga=t,f=100,i=${t},m=${o},q=2;${i}\x1B\\`:`\x1B_Gm=${o},q=2;${i}\x1B\\`}).join("")}function bM(t,e,n){return`\x1B[${e.row+1};${e.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${e.cols},r=${e.rows},C=1,z=${n},q=2\x1B\\`}function Ug(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}class Pf{cell={w:0,h:0};shown=new Map;static of(t,e){return Lt(t)||!Eo(t,e)||!Mo(t)?void 0:new Pf}get ready(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}draw(t){if(!this.ready)return"";let e=t?c4(t,this.cell):[],n="";for(let r of e)n+=this.put(r);for(let[r,i]of this.shown)if(!e.some((s)=>s.name===r))n+=Ug(i.id),this.shown.delete(r);return n}clear(){let t=[...this.shown.values()].map((e)=>Ug(e.id)).join("");return this.shown.clear(),t}put(t){let e=`${t.box.row};${t.box.col};${t.box.cols};${t.box.rows}`,n=this.shown.get(t.name);if(n&&n.key===t.key){if(n.at===e)return"";return n.at=e,bM(n.id,t.box,t.z)}let r=X5+Q5.indexOf(t.name)*2,i=n?.id===r?r+1:r;return this.shown.set(t.name,{key:t.key,id:i,at:e}),`${u4(i,De(t.paint()))}${bM(i,t.box,t.z)}${n?Ug(n.id):""}`}}var Gc=34,Wg=2,l4=6,Rf=3,f4=7,yM="↑↓ L ←→ C ⇧←→ H tab ◐";function d4(t,e,n){let r="",i=0;for(let s of t){let o=i+B(s);if(o>e&&i<n)r+=i>=e&&o<=n?s:" ".repeat(Math.min(o,n)-Math.max(i,e));if(i=o,i>=n)break}return r}function Af(t){return t.reduce((e,n)=>e+B(n.text),0)}function Nf(t,e,n){let r=[],i=0;for(let s of t){let o=B(s.text),a=Math.max(e,i),c=Math.min(n,i+o);if(c>a)r.push({...s,text:d4(s.text,a-i,c-i)});i+=o}return r}function h4(t,e,n){return[...Nf(t,0,e),...n,...Nf(t,e+Af(n),Af(t))]}function m4(t,e){return t.map((n)=>{let r=e&&n.sgr?`${n.sgr}${n.text}${Se}`:n.text;return n.target?Ye(n.target,r):r}).join("")}function vM(t){return t<F.length?F[t]:vn[(t-F.length)%8]}function SM(t,e,n,r){let i=t.signature.includes(qn[n])?I.signature:e.color?I.swatch:" ";return e.color?`${e.fg(t.list[n])}${i}${r}`:i}function EM(t,e,n,r,i){return r.has(n)?e.bold(I.miss):t.changed(n)?e.color?`${wt("warn")}${I.on}${i}`:I.on:" "}function MM(t,e,n){return n?t.color?`${t.fg(e.cursor)}${I.gutter}${$t} `:`${I.gutter} `:" "}function p4(t,e,n,r,i,s){let o=r===t.slot(),a=o?e.fg(n.foreground):$t,c=vM(r).padEnd(12),u=t.lch[r],f=`${MM(e,n,o)}${SM(t,e,r,a)} ${o?e.bold(c):c}${hM(u)} ${EM(t,e,r,s,a)}`,l=tt(f,i);return at({kind:"open",slot:r},o&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${l}${pe}`:l)}var Kg=8,xM=44;function Wc(t){return t>=xM?16:11}function kM(t,e,n,r,i,s){let o=Wc(i);if(!t.visible(r))return" ".repeat(o);let a=r===t.slot(),c=a&&e.color?e.fg(n.foreground):$t,u=t.lch[r],f=(p,b)=>p.toFixed(b).replace(/^0(?=\.)/,""),l=`${u.h.toFixed(0).padStart(3)}°`,d=i>=xM?`${f(u.l,2)} ${f(u.c,3)} ${l}`:`${f(u.l,2)} ${l}`,h=`${SM(t,e,r,c)} ${d}${EM(t,e,r,s,c)}`,m=a&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${h}${pe}`:h;return at({kind:"open",slot:r},m)}function g4(t,e,n,r,i,s){let o=F.length+r,a=o+8,c=t.row===o,u=vn[r].padEnd(Kg),f=t.linkOf(a)!==void 0?e.dim("⇠"):" ";return`${at({kind:"open",slot:o},`${MM(e,n,c)}${c?e.bold(u):u}`)}${kM(t,e,n,o,i,s)}${f} ${kM(t,e,n,a,i,s)}`}function OM(t){return 14+2*Wc(t)}function b4(t){let e=Wc(t)>=16;return[[2," ANSI "],[2+Kg,e?" Normal 0–7 ":" Normal "],[5+Kg+Wc(t),e?" Bright 8–15 ":" Bright "]]}function w4(t,e,n,r){let i=t.slot(),s=Ue(i),o=OM(r),a=o-2,c=` ${s.name}${i>=F.length?` · ${s.about}`:""} `,u=[` ${e.dim(LE(i))}`];if(i>=2){let l=oE(n,i).filter((m)=>m.count>0),d=l.length>0?l.map((m)=>`${m.name} ${m.count}`).join(" · "):"none",h=ge("w",t.where?Ve(e,"w where"):e.dim("w where"));u.push(Rt(` ${e.dim("Shown in")} ${d}`,`${h} `,a))}let f=i-F.length;if(f===0||f===7||f===8||f===15){let l=t.lch[i].l,d=t.lch[0].l,h=t.lch[1].l,m=Math.abs(l-d)<=Math.abs(l-h)?"the background":"the text";u.push(` ${e.dim(`L ${l.toFixed(2)} reads near ${m}`)}`)}return[e.dim(Bt(o,"top",[[2,c]])),...u.map((l)=>Ze(e,l,o)),e.dim(Bt(o,"bottom"))]}function If(t,e){return xr-t*(xr-jc)/(e*2-1)}function PM(t,e,n,r,i){let s=If(Math.max(0,Math.min(e*2-1,t*2-0.5)),e),o=Math.max(0,Math.min(1,(n-0.5)/Math.max(1,r-1)));return{lightness:s,chroma:o*_c(s,i)}}function $4(t,e,n,r,i,s){let o=(l)=>{let d=Math.max(0,Math.min(i*2-1,Math.round((xr-l.l)/(xr-jc)*(i*2-1))));return{row:Math.floor(d/2),col:Math.round(Of(l.l,l.c,l.h)*(r-1))}},{row:a,col:c}=o(e),u=s?o(s):{row:-1,col:-1},f=(l,d)=>{return`#${(Dn(l,d*_c(l,e.h),e.h)??[0,0,0]).map((m)=>m.toString(16).padStart(2,"0")).join("")}`};return Array.from({length:i},(l,d)=>{let h="";for(let m=0;m<r;m++){if(d===a&&m===c){h+=t.color?`${t.bg(n)}${t.fg(Fc(n))}${I.on}${pe}`:I.on;continue}let p=m/Math.max(1,r-1);if(d===u.row&&m===u.col){let b=f(If(d*2+1,i),p);h+=t.color?`${t.bg(b)}${t.fg(Fc(b))}${I.off}${pe}`:I.off;continue}h+=t.color?`${t.fg(f(If(d*2,i),p))}${t.bg(f(If(d*2+1,i),p))}▀${pe}`:"·"}return at({kind:"plane",row:d,rows:i},h)})}function IM(t,e,n){let r=t.slot(),i=t.lch[r],o=vf(t,r,i).filter((c)=>c.ok===!1||c.text.startsWith("Chroma ○")).flatMap((c)=>Ft(c.text,n-2).map((u,f)=>`${f===0?c.ok===!1?e.bold(I.miss):e.dim(I.off):" "} ${u}`)),a=yf(t,r);return[...o.slice(0,3),...a?[e.dim(a)]:[]]}function RM(t,e,n){let r=t.pair(t.slot());if(!r)return;let i=t.slot()>=r.bright,s=vM(i?r.normal:r.bright).toLowerCase(),o=`${r.lift>=0?"+":""}${r.lift.toFixed(2)}`,a=n-9,c=i?r.on?[`⇠ Linked to ${s} · L ${o}`,`⇠ ${s} · L ${o}`,`⇠ ${s}`]:[`Not linked to ${s}`,"Not linked"]:r.on?[`Bright follows · L ${o}`,"Bright follows"]:["Its bright moves on its own","Moves on its own"],u=c.find((f)=>B(f)<=a)??c.at(-1)??"";return Rt(e.dim(u),ge("l",`${e.bold("l")} ${e.dim(r.on?"unlink":"link")}`),n)}function AM(t,e,n){let r=t.slot(),i=t.list[r],s=t.lch[r],o=t.typing!==void 0?e.bold(`${t.typing}▏`):ge("#",e.bold(jE(t.format,i,s))),a=t.start[r],c=e.color?`${e.fg(a)}${I.swatch}${$t} `:"";return Rt(o,a!==i?e.dim(`was ${c}${a}`):"",n)}function k4(t,e,n,r){let i=t.slot(),s=t.lch[i],o=t.list[i],a=n-4,c=e.dim("│"),u=(x)=>`${c} ${tt(x,a)} ${c}`,f=RM(t,e,a),l=6+(f?1:0),d=IM(t,e,a).slice(0,Math.max(0,r-l-Rf)),h=Math.max(Rf,Math.min(l4,r-l-d.length)),m=" L × C ",p=` H ${s.h.toFixed(0)}° `,b=Math.max(0,n-4-B(" L × C ")-B(p)),$=t.origin(),k=yn[2],v=(x,N)=>at({kind:"format",format:N},t.format===N?Ve(e,x):e.dim(` ${x} `)),S=tt(` ${yM} `,n-4,!1);return{lines:[`${e.dim("╭─")}${e.dim(" L × C ")}${e.dim("─".repeat(b))}${e.dim(p)}${e.dim("─╮")}`,...$4(e,s,o,a,h,$?.lch).map((x)=>u(x)),u(at({kind:"bar",channel:2},Lc(e,Mf(s,k,a),Ps(s.h,k.min,k.max,a),t.mode==="tune"&&t.channel===2,$&&Ps($.lch.h,k.min,k.max,a)))),u(kf(e,t,Math.max(8,a-11),$?.ratio)),u(`${v("Hex","hex")} ${v("RGB","rgb")} ${v("OKLCH","oklch")}`),u(AM(t,e,a)),...f?[u(f)]:[],...d.map((x)=>u(x)),`${e.dim("╰─")}${e.dim(S)}${e.dim("─".repeat(Math.max(0,n-4-B(S))))}${e.dim("─╯")}`].map((x)=>at({kind:"picker"},x))}}var Uc=[["Hex","hex"],["RGB","rgb"],["OKLCH","oklch"]];function y4(t,e,n,r){let i=t.lch[t.slot()],s=n-2,o=RM(t,e,s),a=6+(o?1:0),c=IM(t,e,s).slice(0,Math.max(0,r-a-Rf)),u=Math.max(Rf,Math.min(f4,r-a-c.length)),f=(x)=>` ${tt(x,s)} `,l=[f(Rt(e.dim("L × C"),e.dim(`H ${i.h.toFixed(0)}°`),s)),...Array.from({length:u},(x,N)=>f(at({kind:"plane",row:N,rows:u}," ".repeat(s))))],d=l.length;l.push(f(at({kind:"bar",channel:2}," ".repeat(s))));let h=l.length,m=t.mode==="tune"&&t.channel===oe,p={kind:"channel",channel:oe},b=`${t.ratio().toFixed(2)}:1`.padStart(8),$=s-11;l.push(f(`${at(p,m?e.bold("◐"):e.dim("◐"))} ${at({kind:"bar",channel:oe}," ".repeat($))} ${at(p,m?e.bold(b):e.dim(b))}`));let k=l.length,v=Math.floor(s/Uc.length);l.push(f(Uc.map(([x,N],R)=>{let T=R===Uc.length-1?s-v*R:v,_=Math.floor((T-B(x))/2),K=`${" ".repeat(_)}${x}${" ".repeat(T-_-B(x))}`,G=t.format===N?e.color?e.accent(e.bold(K)):`[${x}]`.padEnd(T):e.dim(K);return at({kind:"format",format:N},G)}).join("")));let S=l.length;l.push(f(` ${AM(t,e,s-2)} `));let M=o?l.length:void 0;if(o)l.push(f(o));return l.push(...c.map((x)=>f(x)),f(e.dim(yM))),{lines:l.map((x)=>at({kind:"picker"},x)),parts:{plane:{row:1,col:1,cols:s,rows:u},hue:{row:d,col:1,cols:s,rows:1},contrast:{row:h,col:3,cols:$,rows:1},tabs:{row:k,col:1,cols:s,rows:1},field:{row:S,col:1,cols:s,rows:1},divider:M}}}function v4(t,e,n,r,i,s){let o=t.slot(),a=t.lch[o],c=t.list[o],u=(h)=>({row:r+h.row,col:i+h.col,cols:h.cols,rows:h.rows}),f=(h)=>Math.log(Math.max(1,h))/Math.log(21),l=t.partner().floor,d=t.origin();return{panel:{row:r,col:i,cols:n.plane.cols+2,rows:s},ground:e.background,ink:e.foreground,accent:e.cursor,plane:{...u(n.plane),h:a.h,l:a.l,c:a.c},hue:{...u(n.hue),h:a.h,color:c},contrast:{...u(n.contrast),at:f(t.ratio()),floor:l===void 0?void 0:f(l),color:c,lit:t.channel===oe},tabs:{...u(n.tabs),active:Uc.findIndex(([,h])=>h===t.format),count:Uc.length},field:u(n.field),divider:n.divider===void 0?void 0:r+n.divider,origin:d&&{...d.lch,color:d.hex,at:f(d.ratio)}}}function S4(t,e,n,r,i,s,o,a){let u=s??1,f=o-1-u,l=u-2,d=12+2*Wc(r)-Wg,h=a?y4:k4,m=h(t,e,d,Number.POSITIVE_INFINITY),p=m.lines.length<=f||m.lines.length>l&&f>=l,b=p?f:l,$=m.lines.length<=b?m:h(t,e,d,b),k=p?u+1:u-$.lines.length,v=Array.from({length:o},(S,M)=>i[M]??"");return $.lines.forEach((S,M)=>{let x=k+M;if(x>=0&&x<o)v[x]=ny(v[x],Wg,S)}),{lines:v,art:$.parts&&v4(t,n,$.parts,k,Wg,$.lines.length)}}function E4(t,e,n,r,i){let s=r.side,o=jg(t),a=t.changedOnly?e.warn(I.on):" ",c=o===0?e.dim("Gate ✓"):e.bold(`Gate ✗ ${o}`),u=Rt(` ${e.bold("Colors")} ${c}`,ge("m",`${t.changedOnly?e.bold("⧩ changed"):e.dim("⧩ changed")}${a} `),s),f=i-1,l=t.misses(),d=OM(s),h=[],m,p=[...F.keys()].filter((k)=>t.visible(k));if(p.length>0){h.push(e.dim(Bt(d,"top",[[2," Base "]])));for(let k of p){if(k===t.slot())m=h.length;h.push(Ze(e,p4(t,e,n,k,d-2,l),d))}}let b=[...vn.keys()].filter((k)=>t.visible(F.length+k)||t.visible(F.length+k+8));if(b.length>0){h.push(e.dim(Bt(d,p.length>0?"mid":"top",b4(s))));for(let k of b){if(t.row===F.length+k)m=h.length;h.push(Ze(e,g4(t,e,n,k,s,l),d))}}if(p.length>0||b.length>0)h.push(e.dim(Bt(d,"bottom")));if(t.visible(t.slot()))h.push(...w4(t,e,r,s));let $=Cc(e,t,f-h.length,d);return h.push(...Array.from({length:Math.max(0,f-h.length-$.length)},()=>""),...$),{lines:[u,...h.slice(0,f)],anchor:m===void 0?void 0:m+1}}function M4(t,e,n){let r=`${e.accent(I.current)} ${e.bold(t.options.title)} ${e.dim(`· ${t.options.name}`)}`,i=t.dirty(),s=t.changes(),o=e.warn(I.on),a=i?`${o} ${e.dim(s>0?`unsaved · ${s} changed`:"unsaved")}`:"",c=[t.resettable()?ge("R",e.dim("Reset")):"",i?ge("s",Ve(e,"Save")):""].filter(Boolean).join(" "),u=[r,a,c].filter(Boolean).join(" "),f=(h,m,p)=>ge(h,p?Ve(e,m):e.dim(m)),d=[...t.options.find||t.pictures>0?[f("b",`▣ ${t.pictures>0?`${t.pictures} `:""}Picture`,t.pic&&(t.pictures>0||!!t.options.find))]:[],f("i","⌖ Inspect",t.inspect),`${f("u","↶",!1)} ${f("ctrl+r","↷",!1)}`,f("I","Import ▾",t.menu==="import"),...t.options.exports?[f("x","Export ▾",t.menu==="export")]:[]].join(" ");return Rt(u,`${d} `,n)}var x4={kind:"open",slot:0};function O4(t,e,n){return t.color?`${n?qk:t.bg(e.background)}${t.fg(e.foreground)}`:""}function P4(t,e,n,r,i,s){let o=Rc(r),a=O4(e,n,s),c=t.slot();return Array.from({length:r.rows},(u,f)=>{let l=[{text:" ",sgr:a},...(o[f]??[]).map((m,p)=>{let b=i&&i.pane===r.id&&i.line===f&&i.run===p,$=e.color?b?`${a}${e.bg(n.foreground)}${e.fg(n.background)}`:`${a}${Ef(e,n,m.role,dg(m.role,c))}${t.where&&!fg(m.role,c)?wt("dim"):""}`:"";return{text:m.text,sgr:$,target:{kind:"run",spot:{pane:r.id,line:f,run:p}}}})],d=Nf(l,0,r.width-1),h=r.width-Af(d);return h>0?[...d,{text:" ".repeat(h),sgr:a,target:x4}]:d})}function I4(t,e,n){let r=t.slotsHere();if(!r)return;let i=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",s=e.color?`${i}${wt("dim")}`:"",o=(l)=>({text:l,sgr:s}),a="┌ Slots here ",c="└ enter its slot · esc ",u=[["text",r.text]];if(r.ground!==r.text)u.push(["ground",r.ground]);return[[o(`${a}${"─".repeat(Gc-B(a)-1)}┐`)],...u.map(([l,d])=>{let h={kind:"open",slot:d},m=t.shown()[d],p=d<F.length?"":Ue(d).about;return[{text:"│ ",sgr:s,target:h},{text:l.padEnd(7),sgr:s,target:h},{text:I.swatch,sgr:e.color?`${i}${e.fg(m)}`:"",target:h},{text:" ",sgr:i,target:h},{text:Ue(d).name.slice(0,14).padEnd(14),sgr:i,target:h},{text:p.padEnd(Gc-27),sgr:s,target:h},{text:" │",sgr:s,target:h}]}),[o(`${c}${"─".repeat(Gc-B(c)-1)}┘`)]].map((l)=>Nf(l,0,Gc))}function R4(t,e,n){if(!t.menu)return;let r=t.menu==="export"?["Share code","Add command","Palette file"]:["Another palette","A share code"],i=24,s=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",o=e.color?`${s}${wt("dim")}`:"",a=t.menu==="export"?"Copy ":"Take from ";return[[{text:`┌ ${a}${"─".repeat(Math.max(0,i-3-a.length))}┐`,sgr:o}],...r.map((c,u)=>{let f=u===t.entry,l={kind:"entry",index:u};return[{text:"│",sgr:o},{text:` ${f?"▌":" "} ${c.padEnd(i-6)}`,sgr:f&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${wt("bold")}`:s,target:l},{text:"│",sgr:o}]}),[{text:`└${"─".repeat(i-2)}┘`,sgr:o}]]}var A4=["#ff5f57","#febc2e","#28c840"];function N4(t,e,n,r){let i=e.color?`${e.bg(NM(n))}${e.fg(n.foreground)}`:"",s=sE(),o=(t.scene%s.length+s.length)%s.length,a=[{text:" ",sgr:i},...A4.flatMap((u)=>[{text:"●",sgr:e.color?`${i}${e.fg(u)}`:""},{text:" ",sgr:i}]),{text:" ",sgr:i},...s.flatMap((u,f)=>{let l={kind:"scene",scene:f};return[f===o?{text:` ${u} `,sgr:e.color?`${i}${e.bg(Zi(n.background,n.foreground,"tab"))}${wt("bold")}`:"",target:l}:{text:` ${u} `,sgr:e.color?`${i}${wt("dim")}`:"",target:l},{text:" ",sgr:i}]})],c="⇧←→ ";return[...a,{text:" ".repeat(Math.max(0,r-Af(a)-B("⇧←→ "))),sgr:i},{text:"⇧←→ ",sgr:e.color?`${i}${wt("dim")}`:""}]}function NM(t){return Zi(t.background,t.foreground,"bar")}function T4(t,e,n){let{frame:r}=n,i=Zi(e.background,e.foreground,"line"),s=t.color?`${t.bg(TM(e))}${t.fg(i)}`:"",o=t.color?`${t.bg(NM(e))}${t.fg(i)}`:"",a=(u,f)=>u===r.row||u===r.row+r.rows-1||f===r.col||f===r.col+r.cols-1,c=[];for(let[u,f]of fE(n.rules))for(let[l,d]of f)c.push([u,l,[{text:d,sgr:a(u,l)?s:o}]]);return c}function TM(t){return Zi(t.background,t.foreground,"stage")}function HM(t,e){return Ic(t,e,0)?.inner}function FM(t,e,n,r,i={}){let s=Ic(e,n,t.scene);if(!s)return;let o=Ce(r),a=t.shown(),c=ae(a),u=ae(i.chrome?[...i.chrome]:t.list),f=E4(t,o,u,s,n-1),l=t.mode==="tune"?S4(t,o,u,s.side,f.lines,f.anchor,n-1,r&&i.art===!0):{lines:f.lines,art:void 0},d=l.lines,h=i.behind===!0,m=t.inspect?af(s,t.spot):void 0,p=o.color?o.bg(TM(u)):"",b=Array.from({length:n-3},()=>[{text:" ".repeat(s.width),sgr:p}]),$=(T,_,K)=>{let G=T-2;if(G>=0&&G<b.length)b[G]=h4(b[G],_,K)},k=s.side+1;for(let[T,_,K]of T4(o,u,s))$(T,_-k,K);for(let T of s.tiles)P4(t,o,c,T,m,h).forEach((_,K)=>{$(T.row+K,T.col-k,_)});$(s.title.row,s.title.col-k,N4(t,o,u,s.title.cols));let v=m?I4(t,o,c):void 0;if(m&&v){let T=s.tiles.find((K)=>K.id===m.pane),_=Rc(T)[m.line]?.[m.run];if(_){let K=Math.max(0,Math.min(T.col-k+1+_.col,s.width-Gc)),G=T.row+m.line,L=G+1,gt=L+v.length-2>n-2?G-v.length:L;v.forEach((Xt,it)=>{$(gt+it,K,Xt)})}}let S=R4(t,o,c);if(S){let T=Math.max(0,s.width-24-(t.menu==="import"?12:2));S.forEach((_,K)=>{$(2+K,T,_)})}let M=M4(t,o,s.width),x=o.dim("─".repeat(s.width)),N=o.dim("│");return{lines:Array.from({length:n-1},(T,_)=>{let K=_===0?M:_===1?x:m4(b[_-2]??[],r);return`${tt(d[_]??"",s.side)}${N}${K}`}),art:l.art}}var LM=80,CM=24,zg=11;function H4(t,e,n,r){let i=Cg(e,n);return yn.map((s,o)=>{let a=e.mode==="tune"&&o===e.channel,c=n[s.key],u=`${c.toFixed(s.digits)}${s.wraps?"°":""}`.padStart(6),f=Lc(t,Mf(n,s,r),Ps(c,s.min,s.max,r),a,s.key==="c"&&i!==void 0?Ps(i,s.min,s.max,r):void 0),l=s.key.toUpperCase(),d={kind:"channel",channel:o};return`${at(d,a?t.bold(`▸${l}`):t.dim(` ${l}`))} ${at({kind:"bar",channel:o},f)} ${at(d,a?t.bold(u):t.dim(u))}`})}function F4(t,e){if(e.mode!=="tune"||e.slot()<F.length)return[];let n=ta.map((i)=>at({kind:"scope",scope:i},i!==e.scope?t.dim(i):Ve(t,i))),r=e.scoped().length;return[`${t.dim("Scope")} ${n.join(" ")}`,t.dim(r>1?`${r} slots move by the same step, each keeping its own color`:"This slot moves alone · a widens it")]}var jM={background:(t)=>t.background,foreground:(t)=>t.foreground,hue:(t)=>t.cursor,tint:(t)=>t.background,lightness:(t)=>t.ansi[4],chroma:(t)=>t.ansi[1],brights:(t)=>t.ansi[12]};function L4(t){return`oklch ${t.l.toFixed(3)} ${t.c.toFixed(3)} ${t.h.toFixed(0)}°`}function C4(t,e){return`${t.dim("oklch")} ${t.bold(`${e.l.toFixed(3)} ${e.c.toFixed(3)} ${e.h.toFixed(0)}°`)}`}function j4(t,e,n,r=Os){let i=e.misses(),s=ae(e.list),o=e.slot(),a=(l)=>{let d=e.list[l],h=l===o,m=e.signature.includes(qn[l])?I.signature:t.color?I.swatch:" ",p=i.has(l)?I.miss:e.tone&&e.changed(l)?I.on:" ",$=`${t.color?`${t.fg(d)}${m}${h?t.fg(s.foreground):$t} `:`${m} `}${Sf(e.lch[l])}${p}`;if(!h)return at({kind:"slot",slot:l},` ${$}`);return at({kind:"slot",slot:l},t.color?`${t.bg(s.selection)}${t.fg(s.foreground)} ${$}${pe}`:`›${$}`)},c=(l)=>l?t.color?`${t.fg(s.cursor)}${I.gutter}${$t} `:`${I.gutter} `:" ",u=[t.dim(Bt(r,"top",[[2," Base "]])),...F.map((l,d)=>{let h=d===e.row,m=l.padEnd(10);return Ze(t,`${at({kind:"slot",slot:d},`${c(h)}${h?t.bold(m):m}`)}${a(d)}`,r)}),t.dim(Bt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])),...vn.map((l,d)=>{let h=F.length+d,m=h===e.row,p=l.padEnd(10),b=at({kind:"slot",slot:h+(e.col===1?8:0)},`${c(m)}${m?t.bold(p):p}`);return Ze(t,`${b}${a(h)}${a(h+8)}`,r)}),t.dim(Bt(r,"bottom"))],f=Cc(t,e,n-u.length,r);return[...u,...Array.from({length:Math.max(0,n-u.length-f.length)},()=>""),...f]}function _4(t,e,n){let r=ae(e.list),i=[` ${t.dim("Seeds")}`,...ys.map((s,o)=>{let a=o===e.field,c=e.seeds[s.key],u=Array.from({length:zg},(b,$)=>{let k=s.min+(s.max-s.min)*$/(zg-1);return jM[s.key](yi({...e.seeds,[s.key]:k}))}),f=Lc(t,u,Ps(c,s.min,s.max,zg),a),l=`${c.toFixed(s.digits)}${s.wraps?"°":""}`.padStart(6),d=jM[s.key](r),h=a?t.color?`${t.fg(r.cursor)}${I.gutter}${$t} `:`${I.gutter} `:" ",m=s.label.padEnd(17),p={kind:"field",field:o};return`${at(p,`${h}${a?t.bold(m):m}`)}${at({kind:"seed",field:o},f)}${at(p,` ${l} ${t.color?`${t.fg(d)}${I.swatch}${$t} `:""}${t.dim(d)}`)}`}),"",...Ft("Seven seeds grow all twenty colors, each accent on the hue its ANSI role reads as — whatever the seeds, they pass the gate. enter moves on to tune each slot, and the seeds stay behind.",Os-4).map((s)=>` ${t.dim(s)}`),""];return[...i,...Cc(t,e,n-i.length,Os)]}function UM(t,e,n,r,i,s){let o=Vt.indexOf(Xi(i)),a=Vt.map((u,f)=>at({kind:"scene",scene:f},f!==o?t.dim(u.name):Ve(t,u.name))).join(" "),c=`${t.bg(e.background)}${t.fg(e.foreground)}`;return[Rt(a,t.dim("⇧←→"),n),...Xi(i).lines.values().map((u)=>So(u,n-2)).filter((u)=>u!==void 0).take(Math.max(0,r-1)).map((u)=>{let f=t.color?u.map(([l,d])=>`${Ef(t,e,d,mM(s,d))}${l}${Se}${c}`).join(""):u.map(([l])=>l).join("");return`${c} ${tt(f,n-2)} ${t.color?Se:""}`})]}var B4=["Bk","Rd","Gr","Ye","Bl","Ma","Cy","Wh"];function _M(t,e,n,r,i,s,o){let a=(i-s)/(o-1),c=WM(e),u=ae(n),f=(l)=>Math.min(o-1,Math.max(0,Math.round((i-r(Ot(l)))/a)));return Array.from({length:o},(l,d)=>{let h=d%2===0?(i-a*d).toFixed(i>=1?1:2).replace(/^0(?=\.\d\d)/,""):"",m=Array.from({length:8},(p,b)=>{let $=[" "," "," "," "," "],k=u.ansi[b],v=u.ansi[b+8],S=f(k)===d,M=f(v)===d,x=(R)=>{if(R===1&&S)return t.color?`${t.fg(k)}${I.on}`:I.on;if(R===3&&M)return t.color?`${t.fg(v)}${I.off}`:I.off;return $[R]},N=[0,1,2,3,4].map(x).join("");return c.has(b)?t.color?`${t.bg(u.selection)}${N}${pe}`:N:`${N}${t.color?$t:""}`});return`${h.padStart(4)} ${t.dim(d%2===0?"┤":"│")}${m.join("")}`})}function WM(t){let e=t.mode==="tune"?t.scoped():[t.slot()];return new Set(e.filter((n)=>n>=F.length).map((n)=>(n-F.length)%8))}function G4(t,e){let n=WM(e);return` ${B4.map((r,i)=>n.has(i)?t.bold(` ${r} `):t.dim(` ${r} `)).join("")}`}function U4(t,e){let n=ae(e),r=Array.from({length:40},(s,o)=>{let a=o*9+4.5,c=-1,u=999;for(let[f,l]of Object.entries(Re)){let d=Ae(a,l.center);if(d<=l.width&&d<u)u=d,c=Number(f)}return c<0?" ":t.color?`${t.fg(n.ansi[c])}─`:"─"}).join(""),i=(s,o)=>{let a=Array.from({length:40},()=>" ");for(let c of Object.keys(Re).map(Number)){let u=n.ansi[c+s],f=Math.min(39,Math.round(Ot(u).h/9));a[f]=t.color?`${t.fg(u)}${o}${$t}`:o}return` ${a.join("")}`};return[`${t.bold("Hue")} ${t.dim("0° 90° 180° 270° 360°")}`,`${t.dim("bands")} ${r}${t.color?$t:""}`,i(0,I.on),i(8,I.off)]}function W4(t,e,n){let r=Er(n,e.signature,e.waive),i=(a)=>Ue(F.length+a).name,s=(a)=>Ot(n[F.length+a]).h.toFixed(0),o=[...tr(r).filter(({gap:a})=>a>25).map(({normal:a,gap:c})=>`${i(a)} ${s(a)}° → bright ${s(a+8)}° · ${c.toFixed(0)}° apart · ≤ 25°`),...Tr(r).map(({slot:a,over:c})=>{let u=Re[En(a)];return`${i(a)} ${s(a)}° · ${c.toFixed(0)}° outside ${u.name} ${u.center}±${u.width}°`}),...er(r).map(([a,c])=>`${i(a)} and ${i(c).toLowerCase()} read as one color`)];return o.length>0?o.map((a)=>`${t.bold(I.miss)} ${a}`):[t.dim(`${I.ok} Every accent keeps its role and its bright`)]}function BM(t,e,n,r,i){let s=e.shown(),o=Math.max(...s.slice(F.length).map((u)=>Ot(u).c)),a=Math.max(0.2,Math.ceil(o/0.05)*0.05),c=[Rt(t.bold("Lightness"),t.dim("● normal ○ bright"),n),..._M(t,e,s,(u)=>u.l,1,0.3,8),G4(t,e)];if(i)c.push("",t.bold("Chroma"),..._M(t,e,s,(u)=>u.c,a,0,5),"",...U4(t,s));return[...c,...W4(t,e,s)].slice(0,r)}function K4(t,e,n){let r=(i,s)=>at({kind:"view",view:s},e.view!==s?t.dim(` ${i} `):Ve(t,i));return Rt(`${r("Slot","slot")}${r("Relations","relations")}`,ge("g",`${t.bold("g")} ${t.dim("switch")}`),n)}function z4(t,e,n,r){let i=e.slot(),s=e.list[i],o=e.lch[i],a=e.start[i],{name:c,about:u}=Ue(i),f=e.signature.includes(qn[i]),l=Math.max(8,Math.min(64,n-12));if(e.view==="relations"&&e.mode!=="tune")return[K4(t,e,n),"",...BM(t,e,n,r-2,!0)];let d=i>=F.length?t.dim("Uses underlined below"):f?t.dim("◆ signature"):"",h=[Rt(`${t.bold(c)} ${t.dim(u)}`,e.view==="relations"?"":d,n),""],m=t.color?`${t.fg(s)}${"█".repeat(8)}${$t} `:"",p=e.typing!==void 0?`${t.bold(`${e.typing}▏`)}`:void 0,[b,$,k]=st(s);if(h.push(`${m}${p??C4(t,o)}`,`${m}${t.dim(`${s} · rgb ${b} ${$} ${k}`)}`),e.view!=="relations"){let M=t.color?`${t.fg(a)}${I.swatch}${$t} `:"";h.push(`${m}${a!==s?t.dim(`was ${M}${L4(e.lchOf(a)).slice(6)} · ${a}`):t.dim("as it opened")}`)}if(h.push("",...H4(t,e,o,l),kf(t,e,l),...F4(t,e)),e.view==="relations")return h.push("",...BM(t,e,n,r-h.length-1,!1)),h;h.push("",...vf(e,i,o).flatMap((M)=>Ft(M.text,n-2).map((x,N)=>`${N===0?qu(t,M.ok):" "} ${M.ok===!1?x:t.dim(x)}`)));let v=yf(e,i);if(v)h.push(t.dim(` ${v}`));let S=r-h.length-1;if(S>=3)h.push("",...UM(t,ae(e.shown()),n,S,e.scene,i));return h}function D4(t,e,n,r){return[Rt(`${t.bold("Sample")} ${t.dim("what the seeds grow")}`,"",n),"",...UM(t,ae(e.list),n,r-2,e.scene,-1)]}var q4=[["Slots","↑↓ slot · ←→ normal or bright · home end · pgup the base colors · pgdn the ANSI ones · n N the next and last miss"],["Tune","enter or tab opens the picker over the list, under the slot · ↑↓ lightness · ←→ chroma · ⇧←→ hue by 5, , . by 1 · pgup pgdn lightness ×5 · tab ◐ contrast · home end the ends · 0-9 jump · enter keeps · esc undoes · a click outside it keeps"],["Contrast","◐ moves lightness until the ratio to the color it is read against changes · home the gate’s floor · 1-9 that ratio"],["Chroma","stops at the sRGB edge · what lightness or hue takes away comes back while you tune, where it fits again (○)"],["Scope","a while tuning: this, pair, normals, brights or accents — the slots in it move by the same step, each keeping its own color"],["Relations","g shows the lightness, chroma and hue of every ANSI color at once, and the relations the gate checks"],["Sample","⇧←→ another tab · the slot under the cursor is underlined where it is used · w dims the rest"],["Inspect","i, or a click on the sample, finds the slots a spot uses · ←→↑↓ move · enter goes to the slot · esc leaves"],["Link","l makes a bright follow its normal — tuning the normal moves it, tuning the bright alone unlinks it · = snaps it to its normal"],["Filter","m only the slots that changed · n and N walk the gate misses listed under the slots"],["Export","x copies the share code, an add command or the palette file · I takes colors from another palette or a share code"],["Type","# then #rrggbb, rgb(r g b) or oklch(l c h) — a paste works too"],["Slot","c copies · v pastes · r puts it back as it opened, R all of them · = the bright follows its normal · * marks it a signature color"],["Palette","f moves the colors the gate misses · o takes another palette’s colors"],["Gate","✗ marks every slot whose own checks miss, and each miss names its slots"],["History","u undo · ctrl+r redo"],["Pictures","p finds one on the boorus, tried on in these colors · b shows or hides it behind the editor · drop a picture on the window, or paste one, its path or its link · ctrl+v takes the clipboard’s"],["Compare","space shows the colors you started from, on the terminal too"],["Save","s saves · esc cancels, asking first when something changed"]];function J4(t,e,n){return[` ${t.bold("Help")}`,"",...q4.filter(([r])=>r!=="Pictures"||e.options.find).flatMap(([r,i])=>Ft(i,n-16).map((s,o)=>` ${t.bold((o===0?r:"").padEnd(11))} ${s}`))]}function Y4(t,e,n,r){let i=e.choices(),s=e.options.palettes?.length??0,o=e.filter?`${t.bold(e.filter)}▏`:t.dim("type to filter"),a=r-2,c=Math.max(0,Math.min(e.pick-Math.floor(a/2),i.length-a)),u=Math.min(40,Math.max(12,...i.map((f)=>B(f.name))));return[Rt(` ${t.bold("Take colors from")} ${o}`,t.dim(`${i.length}/${s}`),n),"",...i.slice(c,c+a).map((f,l)=>{let d=c+l===e.pick,h=f.colors,m=t.color?`${t.bg(h.background)} ${h.ansi.map(($)=>`${t.fg($)}${I.swatch}`).join("")} ${t.fg(h.foreground)}Aa ${pe}`:"",p=d?"▌ ":" ",b=f.name.padEnd(u);return at({kind:"choice",index:c+l},`${p}${d?t.bold(b):b} ${m}`)}),...i.length===0?[` ${t.dim(`No palettes match '${e.filter}'`)}`]:[]]}var V4=new Set(["enter","s","?","g","a","i"]);function GM(t,e,n){let r="EDIT",i="",s=[],o="";if(e.quitting)r="EDIT (QUIT)",i=e.added>0?`Discard changes and ${e.added} ${e.added===1?"picture":"pictures"}?`:"Discard changes?",s=[["y","discard"],["n","keep editing"]];else if(e.typing!==void 0)r="EDIT (TYPE)",i=t.dim("#rrggbb, rgb(r g b) or oklch(l c h)"),s=[["enter","set"],["ctrl+u","clear"]],o="esc back";else if(e.overlay==="keys")r="HELP",o="any key closes";else if(e.overlay==="open")r="EDIT (OPEN)",s=[["↑↓","palette"],["a-z","filter"],["enter","take its colors"]],o="esc close";else if(e.menu)r=e.menu==="export"?"EDIT (EXPORT)":"EDIT (IMPORT)",s=[["↑↓","item"],["enter","choose"]],o="esc close";else if(e.compare)r="EDIT (BEFORE)",i="The colors you started from",s=[["space","back to yours"]],o="esc back";else if(e.mode==="seeds")r="EDIT (SEEDS)",s=[["↑↓","seed"],["←→","step"],["⇧←→","×5"],["enter","tune the slots"],["o","open a palette"],["p","picture"],["?","keys"]],o="esc cancel";else if(e.mode==="tune")r="EDIT (TUNE)",s=[["↑↓","L"],["←→",e.channel===oe?"ratio":"C"],["⇧←→","H"],["tab","◐"],...e.slot()>=F.length?[["a","scope"]]:[],[e.channel===oe?"1-9":"0-9",e.channel===oe?"ratio":"jump"],["#","type"],["enter","keep"]],o="esc undo";else if(e.inspect)r="EDIT (INSPECT)",s=[["←→↑↓","spot"],["⇧←→","tab"],["enter","its slot"],["i","leave"]],o="esc leave";else s=[["↑↓","slot"],["←→","normal or bright"],["enter","tune"],["i","inspect"],["l","link"],["m","changed"],["g",e.view==="slot"?"relations":"slot"],...e.misses().size>0?[["n","next miss"]]:[],["#","type"],["f","fix"],["p","picture"],["b","picture layer"],["x","export"],["u","undo"],["s","save"],["?","keys"]],o="esc cancel";if(!e.options.find)s=s.filter(([u])=>u!=="p"&&u!=="b");if(!e.options.exports||!e.roomy)s=s.filter(([u])=>u!=="x");if(!e.roomy)s=s.filter(([u])=>u!=="i"&&u!=="m");if(e.notice)i=t.warn(e.notice),s=[];let a=`${Ve(t,r)}${t.color?" ":" "}`,c=o?ge(o.split(" ")[0],`${t.bold(o.split(" ")[0])} ${t.dim(o.split(" ").slice(1).join(" "))}`):"";for(;;){let u=[i,...s.map(([d,h])=>ge(d,`${t.bold(d)} ${t.dim(h)}`))].filter(Boolean),f=`${a}${u.join(" ")}`,l=s.findLastIndex(([d],h)=>h>0&&!V4.has(d));if(B(f)+B(o)+3<=n||l<0)return o?Rt(f,c,n):tt(f,n);s=s.toSpliced(l,1)}}function Z4(t,e,n,r,i={}){let s=Ce(r);if(e<LM||n<CM){let p=[s.bold("ttheme palette editor"),`Needs ${LM}×${CM} — now ${e}×${n}`,s.dim("esc cancels")];return{lines:Array.from({length:n},(b,$)=>tt(p[$]??"",e)),art:void 0}}if(t.viewport(e,n),!t.overlay&&t.mode!=="seeds"&&t.view==="slot"){let p=FM(t,e,n,r,i);if(p)return{lines:[...p.lines,GM(s,t,e)],art:p.art}}let o=t.failing().length,a=o===0?"✓ Passes the gate":`✗ ${o} ${o===1?"miss":"misses"} in the gate`,c=t.pictures>0?s.dim(`▣ ${t.pictures} ${t.pictures===1?"picture":"pictures"} `):"",u=t.resettable()?`${ge("R",s.dim("Reset"))} `:"",f=`${t.dirty()?`${s.warn(I.on)} unsaved `:""}${u}${c}${s.dim(a)}`,l=`${s.accent(I.current)} ${s.bold(t.options.title)} ${s.dim(`· ${t.options.name}`)}`,d=n-4,h;if(t.overlay==="keys")h=J4(s,t,e);else if(t.overlay==="open")h=Y4(s,t,e,d);else{let p=e-Os-2,b=t.mode==="seeds"?_4(s,t,d):j4(s,t,d),$=t.mode==="seeds"?D4(s,t,p,d):z4(s,t,p,d);h=Array.from({length:d},(k,v)=>`${tt(b[v]??"",Os)}${s.dim("│")} ${tt($[v]??"",p)}`)}return{lines:[Rt(l,f,e),"",...Array.from({length:d},(p,b)=>tt(h[b]??"",e)),"",GM(s,t,e)],art:void 0}}var X4=new Set(["tab","a","#","l","enter","esc"]),Q4=new Set(["picker","plane","bar","channel","format","scope","open","slot"]);function tj(t){if(!t)return!0;return t.kind==="key"?!X4.has(t.key):!Q4.has(t.kind)}function ej(t,e,n){if(n.action==="wheel"){if(!n.sideways)t.scroll(n.wheel);return}if((n.action==="press"||n.action==="drag")&&n.button!=="left")return;if(n.action==="press"&&t.overlay==="keys"){t.press("esc");return}let r=e?.target;if(n.action==="press"&&t.mode==="tune"&&t.roomy&&!t.overlay&&tj(r))t.dismiss();if(!e||!r)return;let i=e.width>1?(e.exact.x-0.5)/(e.width-1):0;if(n.action==="release"){if(!e.inside)return;if(r.kind==="key")t.press(r.key);else if(r.kind==="entry")t.choose(r.index);else if(n.count===2&&r.kind==="slot"&&t.mode==="list")t.press("enter");else if(n.count===2&&r.kind==="choice"&&t.overlay==="open")t.press("enter");return}if(r.kind==="plane"){let s=PM(r.row+e.exact.y,r.rows,e.exact.x,e.width,t.lch[t.slot()].h);t.plane(s.lightness,s.chroma)}else if(r.kind==="bar")t.slide(r.channel,i);else if(r.kind==="seed")t.sow(r.field,i);else if(n.action!=="press")return;else if(r.kind==="slot")t.select(r.slot);else if(r.kind==="open")t.openSlot(r.slot);else if(r.kind==="run")t.point(r.spot);else if(r.kind==="entry")t.entry=r.index;else if(r.kind==="format")t.format=r.format;else if(r.kind==="channel")t.grip(r.channel);else if(r.kind==="scope")t.scopeTo(r.scope);else if(r.kind==="choice"){if(t.overlay==="open")t.pick=r.index}else if(t.typing===void 0&&!t.overlay&&!t.quitting){if(r.kind==="field"&&t.mode==="seeds")t.field=r.field;else if(r.kind==="view"&&t.mode!=="seeds")t.view=r.view;else if(r.kind==="scene")t.scene=r.scene}}var nj=[ql,Wn,pi,yr];async function KM(t,e){let n=new Rg(t),r=e.backdrop,i=e.layer,s=(a)=>n.typing===void 0&&df(a),o=e.hosted?{modes:[yr,...gi()],assume:[Wn,pi],burst:s}:{modes:[...nj,...gi()],burst:s};return bi(o,async(a)=>{let c=!1,u=!1,f=new Map,l=new qp,d=await a.ask(`${ym(pn,"")}${gi().length>0?kS:""}\x1B[c`,(S)=>{if(S.kind==="color"){f.set(S.code,S.value);return}return l.see(S)},1000);if(d?.cell)a.pixels(d.cell);let h=Cy(f),m=h.map((S,M)=>S??n.start[M]),[p,b]=m;if(!h[3])m[3]=Zi(p,b,"selection");let $=new fs({write:(S)=>a.write(S),view:()=>{if(c)return;let{lines:S,art:M}=Z4(n,a.cols,a.rows,e.color,{behind:n.pic&&r?.laid===!0,art:i?.ready===!0,chrome:m});return{lines:S,after:()=>`${(n.pic?r?.draw(n.shown(),n.signature,n.waive,a.cols,a.rows,HM(a.cols,a.rows)):r?.clear())??""}${i?.draw(M)??""}`}}}),k=(S=!1)=>{if(S)$.soon();else $.request()},v=async(S)=>{let M=t.find;if(!M)return;c=!0,a.write(`${r?.clear()??""}${i?.clear()??""}`);try{n.found(await M(n.edited(),S))}catch(x){n.notice=x instanceof Error?x.message:String(x)}if(u)return;c=!1,r?.load(),$.reset(ns),k()};if(a.write(ns),a.onResize(()=>{r?.resized(),a.write(i?.clear()??""),$.reset(ns),$.request()}),r)r.load(),r.ready=()=>$.request();if(r||i){let S=new mc;a.ask(zl,(M)=>S.see(M),1000).then((M)=>{if(M)r?.measured(M),i?.measured(M);$.request()})}k();try{let{edited:S}=await a.loop((M)=>{if(c)return;if(M.kind==="paste")n.paste(M.text);else if(M.kind==="key")n.press(M.key);else if(M.kind==="mouse")ej(n,$.point(M),M);if(n.copied!==void 0)a.write(`\x1B]52;c;${Buffer.from(n.copied).toString("base64")}\x07`),n.copied=void 0;if(n.result)return{edited:n.result==="saved"?n.edited():void 0};let x=n.wants;if(x)n.wants=void 0,v(x.start);return},()=>{if(!c)k(!0)});return S}finally{u=!0,$.stop(),a.write(`${r?.close()??""}${i?.clear()??""}`)}})}import{spawn as bj}from"node:child_process";import{createHash as ox}from"node:crypto";import{existsSync as zc,mkdirSync as wj,mkdtempSync as $j,readFileSync as kj,rmSync as Tf}from"node:fs";import{homedir as yj,tmpdir as vj}from"node:os";import{basename as Sj,dirname as Ej,join as Yn}from"node:path";import{setTimeout as Mj}from"node:timers/promises";import{pathToFileURL as qM}from"node:url";import{existsSync as rj,readFileSync as ij,statSync as sj}from"node:fs";import{join as zM}from"node:path";function oj(t,e){try{return JSON.parse(ij(zM(ln(t),e),"utf8"))}catch{return{}}}function aj(t,e,n){C(zM(ln(t),e),`${JSON.stringify(n)}
|
|
729
|
-
`)}var cj=604800000;class Dg{caches=new Map;unsaved=new Set;owners=new Map;crediting=new Map;inflight=new Map;asking=new Map;home;manifest;entry;signal;credited;constructor(t){this.home=t.home,this.manifest=t.manifest,this.entry=t.entry,this.signal=t.signal,this.credited=t.credited}matesOf(t,e){return this.owners.get(t.key)?.get(e)??[]}async transparent(t,e){let n=this.keep(t,"probes.json"),r=n[e.id];if(r!==void 0)return r;try{let i=await Ma(t,e,this.signal),s=Kr(t,e),o=(i===void 0?await q0(s.site,s.url,this.signal):i)?.alpha===!0;return n[e.id]=o,this.unsaved.add(`${t.key}/probes.json`),o}catch{return!1}}save(){for(let t of this.unsaved){let[e,n]=t.split("/"),r=Z.find((i)=>i.key===e);if(r)aj(r,n,this.keep(r,n))}this.unsaved.clear()}owned(t,e,n){this.keep(t,"owners.json")[e]=n,this.unsaved.add(`${t.key}/owners.json`)}credit(t,e){let{site:n,post:r}=t;if(!va(n,r))return Promise.resolve();let i=ee(n,r.id),s=this.crediting.get(i);if(!s)s=this.credits(t,e).finally(()=>this.crediting.delete(i)),this.crediting.set(i,s);return s}links(t){let e=this.keep(Pt,"profiles.json");return Object.fromEntries(t.flatMap((n)=>{let r=e[n]?.urls??[];return r.length>0?[[n,r]]:[]}))}profile(t,e){return this.credit(t,e).then(()=>this.profiles(t.post.named.artist,e))}async mateOwners(t){let e=this.owners.get(t.key);if(e)return e;let n=_$(this.home),r=this.keep(t,"owners.json"),i=this.manifest.palettes.flatMap((c)=>{let u=n.get(c.name);return re(c)===re(this.entry)&&c.name!==this.entry.name&&u?.site===t.key?[{name:c.name,id:u.id}]:[]}),s=await Promise.all(i.map(async(c)=>{let u=r[c.id];if(u!==void 0)return{...c,owner:u};try{return{...c,owner:(await Fi(t,c.id,this.signal))?.owner??""}}catch{return}})),o=new Map;for(let c of s)if(c)r[c.id]=c.owner,o.set(c.name,c.owner);this.unsaved.add(`${t.key}/owners.json`);let a=B0(o);return this.owners.set(t.key,a),a}async cached(t,e,n,r){if(rj(e))return sj(e).size;let i=this.inflight.get(e);if(i)return i;let s=(async()=>{let o=await pu(t,n,this.signal,r);return C(e,o),o.length})();this.inflight.set(e,s);try{return await s}finally{this.inflight.delete(e)}}keep(t,e){let n=`${t.key}/${e}`,r=this.caches.get(n);if(!r)r=oj(t,e),this.caches.set(n,r);return r}async profiles(t,e){let n=this.keep(Pt,"profiles.json"),r=Date.now(),i=t.filter((s)=>!this.asking.has(s)&&r-(n[s]?.at??0)>=cj);if(i.length>0){let s=gu(i,e).then((o)=>{for(let a of i)n[a]={at:Date.now(),urls:o.get(a)??[]};this.unsaved.add(`${Pt.key}/profiles.json`),this.credited()},()=>{}).finally(()=>{for(let o of i)this.asking.delete(o)});for(let o of i)this.asking.set(o,s)}await Promise.all(t.flatMap((s)=>this.asking.get(s)??[]))}async credits({site:t,post:e},n){let r=this.keep(t,"credits.json"),i=r[e.id];if(!i){try{i=await ya(t,e.id,n)}catch{return}if(!i?.owner)return;r[e.id]=i,this.unsaved.add(`${t.key}/credits.json`)}Zs(e,i),this.credited()}}import{rmSync as uj}from"node:fs";import{join as lj}from"node:path";var sa=2147483645,Kc=2147483646,DM=-1073741827,fj=-1073741828,dj=16,hj=0.4,mj=3221225472,pj=256;function gj(t){let e=/^(\d+) (\d+)$/.exec(t??"");return e&&(Number(e[1])>0||Number(e[2])>0)?{x:Number(e[1]),y:Number(e[2])}:void 0}var qg=gj(process.env.TTHEME_BG_MARGIN);class Jg{screen;gliding;sent=new Map;placed=new Map;covered="";viewed="";bands=dl(process.env);files=hl(process.env);moves=Gy(process.env);layers=Mo(process.env);wipes=Uy(process.env);views=ts(process.env);bandFiles=new Map;nextBand=mj;view;grid;background;renders;scratch;signal;write;constructor(t){this.view=t.view,this.grid=t.grid,this.background=t.background,this.renders=t.renders,this.scratch=t.scratch,this.signal=t.signal,this.write=t.write,this.screen=new fs({write:(e)=>this.write(e),view:()=>this.frame(),beat:()=>{this.view.beat++}})}draw(){if(!this.signal.aborted)this.screen.request()}soon(){if(!this.signal.aborted)this.screen.soon()}flush(){if(!this.signal.aborted)this.screen.now()}point(t){return this.screen.point(t)}drop(){this.screen.drop()}frame(){if(this.signal.aborted)return;let{cols:t,rows:e,cell:n}=this.grid(),r=ug(this.view,t,e);return this.view.loaderFrom=r.loader?this.view.loaderFrom??this.view.beat:void 0,{lines:r.lines,zones:r.zones,after:(i)=>this.images(r.images,i,n),...this.view.mode==="grid"&&this.view.editing!==void 0?{cursor:this.caret()}:{},ticking:r.tick}}images(t,e,n){let r="",i=new Set,s;for(let o of t){if(this.views&&o.id>=ig){s=o;continue}let a=this.bands?this.banded(o):o;if(!a)continue;if(this.wipes&&e.values().some((u)=>u>=a.row&&u<a.row+a.rows))this.placed.delete(a.id);if(i.add(a.id),this.sent.get(a.id)!==a.path){let u=nf(a,this.files);if(u===void 0)continue;r+=u,this.sent.set(a.id,a.path),this.placed.delete(a.id)}let c=`${a.row};${a.col};${a.cols};${a.rows};${a.crop};${a.z}`;if(this.placed.get(a.id)!==c){if(!this.moves&&this.placed.has(a.id))r+=og(a.id);r+=YS(a,n),this.placed.set(a.id,c)}}for(let o of this.sent.keys())if(!i.has(o))r+=xc(o),this.sent.delete(o),this.placed.delete(o);return r+(this.views?this.backdrop(s):this.cover())}glide(){if(this.bands)this.prebake();if(this.gliding)return;let{cols:t,rows:e}=this.grid(),n=vr(t,e).height,r=()=>{let i=this.view,s=i.top*St.height,o=s-i.scroll;if(o===0||i.mode!=="grid"){i.scroll=s;let a=this.gliding!==void 0;if(this.gliding=void 0,a)this.draw();return}if(Math.abs(o)>2*n)i.scroll=s-Math.sign(o)*n,o=s-i.scroll;i.scroll+=Math.sign(o)*Math.max(1,Math.round(Math.abs(o)*hj)),this.draw(),this.gliding=setTimeout(r,dj)};r()}snap(){clearTimeout(this.gliding),this.gliding=void 0,this.view.scroll=this.view.top*St.height}resized(){this.screen.reset()}stop(){this.screen.stop(),clearTimeout(this.gliding)}prebake(){let t=this.view,{cols:e,rows:n}=this.grid();for(let r of ug({...t,scroll:t.top*St.height},e,n).images)if(r.crop!==void 0)this.band(r.path,r.crop,r.rows)}cover(){let{cols:t,rows:e}=this.grid(),n=`${t};${e}`;if(!this.layers||this.covered===n)return"";let r="";if(!this.covered){let i=Buffer.from(st(this.background)).toString("base64");if(r+=`\x1B_Ga=t,f=24,s=1,v=1,i=${sa},q=2;${i}\x1B\\`,qg)r+=`\x1B_Ga=t,f=32,s=1,v=1,i=${Kc},q=2;AAAAAA==\x1B\\\x1B[H\x1B_Ga=p,i=${Kc},p=${Kc},c=1,r=1,C=1,z=${fj},q=2\x1B\\`}else if(!this.moves)r+=og(sa);if(this.covered=n,qg){let{x:i,y:s}=qg;return`${r}\x1B_Ga=p,i=${sa},p=${sa},P=${Kc},Q=${Kc},H=${-i},V=${-s},c=${t+2*i},r=${e+2*s},C=1,z=${DM},q=2\x1B\\`}return`${r}\x1B[H\x1B_Ga=p,i=${sa},p=${sa},c=${t},r=${e},C=1,z=${DM},q=2\x1B\\`}backdrop(t){let{cols:e,rows:n,cell:r}=this.grid(),i=e*r.w,s=n*r.h,o=t?`${this.background}|${t.path}|1|${i}|${s}|${i}|${s}|0|0|1`:`${this.background}||1|${i}|${s}|0|0|0|0|5`;if(o===this.viewed)return"";return this.viewed=o,es(o)}caret(){return`\x1B[1;${Math.min(this.grid().cols,B(`⌕ ${this.view.editing??""}`)+1)}H`}banded(t){if(t.crop===void 0)return t;let e=this.band(t.path,t.crop,t.rows,!this.gliding);return e?.ready?{...t,id:e.id,path:e.path,crop:void 0}:void 0}band(t,e,n,r=!0){let i=`${t}|${e}|${n}`,s=this.bandFiles.get(i);if(s||!r)return s;let{cell:o}=this.grid(),a=this.nextBand++,c={id:a,path:lj(this.scratch,`band-${a}.png`),ready:!1};return this.bandFiles.set(i,c),this.renders.run({job:"band",from:t,to:c.path,y:e*o.h,height:n*o.h}).then(()=>{c.ready=!0,this.draw()}).catch(()=>{}),this.trimBands(),c}trimBands(){for(let[t,e]of this.bandFiles){if(this.bandFiles.size<=pj)return;if(e.ready&&!this.sent.has(e.id))this.bandFiles.delete(t),uj(e.path,{force:!0})}}}var As=[{name:"TTHEME_FIND_RATING",label:"Rating",about:"The ratings to list, each site read in its own words — space ticks one, and one stays ticked",choices:qs,multi:{read:Hi}},{name:"TTHEME_FIND_BLOCK",label:"Block",about:"Posts tagged with nudity or underwear are left out — space unticks one",choices:Ti,multi:{read:Vs,none:"none"}},{name:"TTHEME_FIND_POSTS",label:"Posts",about:"Every post of the character, or only the transparent cutouts",choices:["all","cutouts"]},{name:"TTHEME_FIND_SOLO",label:"Solo",about:"When on, only the posts known to show the character alone — checked as posts arrive, so the counts below leave it out",choices:["on","off"]},{name:"TTHEME_FIND_ORDER",label:"Order",about:"How posts are ranked: fit, by how well each makes a backdrop; newest; or score",choices:["fit","newest","score"]},{name:"TTHEME_FIND_SETS",label:"Sets",about:"One picture posted over and over, or held by another site too: fold it into one tile, or show each",choices:["fold","show"]},...Xs()?[{name:"TTHEME_FIND_REMOVE_BG",label:"Remove bg",about:"Cut the character out of an opaque picture you try on, with macOS Vision",choices:["on","off"]}]:[],{name:"TTHEME_FIND_MIN_SCORE",label:"Min score",about:"Posts scored at least this — danbooru, konachan and yande.re; zerochan keeps no score. ←→ steps, or type any number",choices:x0,entry:"number",advanced:!0},{name:"TTHEME_FIND_MIN_SIZE",label:"Min size",about:"The shorter side of a picture, in px — every site filters it. ←→ steps, or type any number",choices:O0,entry:"number",advanced:!0},{name:"TTHEME_FIND_SITES",label:"Sites",about:"The sites the all tab mixes — each keeps its own tab. Space ticks one, and one stays ticked",choices:Z.map((t)=>t.name),multi:{read:$a},advanced:!0},{name:"TTHEME_FIND_HIDE",label:"Hide",about:"Comics, monochrome, sketches or chibi, told by tag in every site's spelling — checked as posts arrive",choices:Wd,multi:{read:uu,none:"none"},advanced:!0},{name:"TTHEME_FIND_HIDE_TAGS",label:"Hide tags",about:"Posts with any of these tags are left out, spaced like cosplay multiple_girls — checked as posts arrive",choices:[],entry:"text",advanced:!0},{name:"TTHEME_FIND_PNG",label:"PNG only",about:"PNG originals only — danbooru counts it, the others are told by the file; zerochan only where danbooru holds it",choices:["off","on"],advanced:!0}];function JM(t,e){if(t.multi)return t.multi.read(e).join(" ")||t.multi.none;if(t.entry==="number")return/^\d+$/.test(e??"")&&Number(e)>0?String(Number(e)):"off";if(t.entry==="text")return ka(e).join(" ");return t.choices.find((n)=>n===e)??t.choices[0]}var xj=["fit","newest","score"];function Yg(t){return xj.find((e)=>e===t)??"fit"}var Oj={left:-1,right:1,"shift-left":-10,"shift-right":10};function YM(t){if(process.env.SSH_CONNECTION||!/^(?:https?|file):/i.test(t))return;try{let e=bj(process.platform==="darwin"?"open":"xdg-open",[t],{stdio:"ignore",detached:!0});e.on("error",()=>{}),e.unref()}catch{}}function Pj(t,e,n){if(e<0){if(t!=="fill")return Math.max(Ff,t+e);if(!n)return t;return Math.max(Ff,Math.max(100,n)+e+1)}return t==="fill"||t+e>n?"fill":t+e}function ax(t,e){return t.size===e.size&&t.at===e.at&&t.opacity===e.opacity}function Ij(t,e){if(ax(t,e))return;return{...t.size!=="fill"?{size:t.size}:{},...t.at!==e.at?{position:Jt[t.at-1]}:{},...t.opacity!==e.opacity?{opacity:t.opacity}:{}}}function VM(t,e){let n=X(t);return ke(t,e).flatMap((r,i)=>{let[,s,o]=/^([a-z.]+)_(\d+)$/.exec(r.key)??[],a=[...Z,zn].find((c)=>c.key===s);if(!a||!o)return[];return[{key:r.key,id:Number(o),ansi:a.ansi,...a===zn?{}:{page:a.pageUrl(Number(o))},up:i===0,from:Yn(n,r.original??r.fill)}]})}function Rj(t){return t.length>=2&&!/^\d+$/.test(t)&&!t.includes("://")&&!/^[\w.]+:\d+$/.test(t)}var ZM=12,Aj=4,Nj=150,Tj=300,XM=12,Hj=2,Fj=5000,Lj=150,Cj="\x1B[?5522$p\x1B]72;t=q\x1B\\\x1B[c",QM=4000,jj=8000,tx=/\.(png|jpe?g|gif|webp|heic|tiff?|bmp)$/i,_j=process.platform==="win32"?"alt+v":"ctrl+v",ex=process.platform==="darwin"?"ctrl+shift+cmd+4 copies a screenshot":"copy a picture first",Bj=1280,Gj=16,Uj=Jt.indexOf("top-right")+1,Ff=20,nx=2,rx=3,Wj=/[\p{Script=Hangul}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]/u,Kj=8,zj=9;function Hf(t,e){return{key:t,groups:[],sources:[],queue:[],rounds:0,roundOf:new Map,last:new Map,kin:new Map,kindred:new Map,shapes:[],seen:new Set,same:new Map,checked:0,total:0,focus:0,top:0,searching:e,stage:"fetch",arrived:new Set}}function Dc(t){if(!(t instanceof Error))return String(t);if(t instanceof AggregateError&&t.errors[0])return Dc(t.errors[0]);if(t.cause)return Dc(t.cause);let e=t.code;if(typeof e==="string")return e;let n=(t.message||t.name).split(".")[0]??"";return n.length>56?`${n.slice(0,55)}…`:n}function Vg(t,e){return`${t}: ${Dc(e)}`}function ix(t){return t.width*t.height}function sx(t,e){return`${t}-${ox("sha1").update(e).digest("hex").slice(0,8)}`}class Zg{view;tone;session=new AbortController;cell={w:0,h:0};cols=process.stdout.columns||80;rows=process.stdout.rows||24;gen=0;pumping=0;boards=new Map;board;posts=new Map;thumbPath=new Map;looking=new Map;looked=new Map;matched=new Map;aheading=!1;pages=new Map;tab=0;values=new Map(As.map((t)=>[t.name,JM(t,process.env[t.name])]));direction=1;prefetching=0;related=new Map;pool=[];relating;thumbQueue=[];heldFiles=new Map;heldAsked=new Set;thumbing=0;clarity=new Map;tunedFiles=[];presenting=!1;again=!1;renders=new Hc;showing;thumbless=new Set;current;fetch;settle;suggestTimer;suggesting;countTimer;counting;terminal;grabber=new $g((t)=>this.write(t),(t)=>void this.got(t));noticeTimer;peekTimer;peeked;twins=new Map;attaching;done;scratch=$j(Yn(vj(),"ttheme-find-"));home;manifest;entry;tagged;blurring;start;paint;kept;constructor(t,e,n,r,i){this.start=i,this.home=t,this.manifest=e,this.entry=n,this.tagged=new Set(e.palettes.flatMap((o)=>o.booru?[o.booru]:[])),this.tone=Tn(n,n.signatureSlots),this.blurring=si(t);let s={size:"fill",at:Uj,opacity:this.tone.opacity};this.view={palette:n.name,tag:r,site:this.tabName,siteAnsi:this.tabAnsi,nextSite:this.nextTabName,preset:this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:Yg(this.setting("TTHEME_FIND_ORDER")),solo:this.setting("TTHEME_FIND_SOLO")==="on",rating:Hi(this.setting("TTHEME_FIND_RATING")),block:Vs(this.setting("TTHEME_FIND_BLOCK")),sets:this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",narrow:this.narrowed(),enabled:$a(this.setting("TTHEME_FIND_SITES")),hide:uu(this.setting("TTHEME_FIND_HIDE")),hideTags:ka(this.setting("TTHEME_FIND_HIDE_TAGS")),advanced:!1,settings:As.map((o)=>({label:o.label,choices:[...o.choices],value:this.setting(o.name),default:JM(o,Ya(o.name)),multi:o.multi&&{none:o.multi.none},about:o.about,entry:o.entry,advanced:o.advanced,cursor:0})),colors:{cursor:n.cursor,selection:n.selection,background:n.background,foreground:n.foreground,ansi:n.ansi},tiles:[],installed:[],held:VM(t,n.name),checked:0,total:0,searching:r!=="",stage:"fetch",sites:[],focus:0,top:0,scroll:0,beat:0,mode:"grid",help:!1,scene:Math.max(0,Vt.findIndex((o)=>o.name.toLowerCase()===process.env.TTHEME_SCENE)),details:!1,tune:{...s},untuned:s,coloring:gl(t),editing:r===""?"":void 0,chips:[]},this.paint=new Jg({view:this.view,grid:()=>({cols:this.cols,rows:this.rows,cell:this.cell}),background:n.background,renders:this.renders,scratch:this.scratch,signal:this.signal,write:(o)=>this.write(o)}),this.kept=new Dg({home:t,manifest:e,entry:n,signal:this.signal,credited:()=>{this.show(),this.inform(),this.paint.draw()}}),this.pool=this.selected(this.view),this.syncChips(),this.board=Hf(this.boardKey,r!==""),this.boards.set(this.board.key,this.board)}get signal(){return this.session.signal}get site(){return this.tab===0?void 0:Z[this.tab-1]}get sites(){return this.site?[this.site]:Z.filter((t)=>this.view.enabled.includes(t.name))}get tabName(){return this.site?.name??"all"}get tabAnsi(){return this.site?.ansi??Aj}get nextTabName(){let t=(this.tab+1)%(Z.length+1);return t===0?"all":Z[t-1].name}frame(){return{w:this.cols*(this.cell.w||10),h:this.rows*(this.cell.h||20)}}setting(t){return this.values.get(t)}narrowed(){return zd(this.setting("TTHEME_FIND_MIN_SCORE"),this.setting("TTHEME_FIND_MIN_SIZE"),this.setting("TTHEME_FIND_PNG"))}get boardKey(){return`${this.site?.key??"all"}|${this.view.preset}|${this.view.order}`}origPath(t,e,n){return Yn(ln(t),"orig",`${e}.${n}`)}previewPath(t){let{url:e}=fu(t.site,t.post);return Yn(ln(t.site),"thumb",`${sx(t.post.id,e)}.${Ur(e)}`)}tileOf(t,e){let{site:n,post:r}=t,i=ee(n,r.id),s=un(r)??r;return{id:r.id,key:i,site:n.name,siteAnsi:n.ansi,width:s.width,height:s.height,reduced:s!==r,page:n===zn?"":n.pageUrl(r.id),artist:n===zn?$E(r.source):r.named.artist[0]??"",score:r.score,variants:e,mates:this.kept.matesOf(n,r.owner),thumb:this.thumbPath.get(i),missing:this.thumbless.has(i)}}show(){let t=this.view,e=this.board;if(t.tiles=e.groups.flatMap((n)=>n.open?n.posts.map((r)=>this.tileOf(r,0)):[this.tileOf(n.posts[0],n.posts.length)]),t.checked=e.checked,t.total=e.total,t.searching=e.searching,this.stageOf(e),t.note=e.note,t.focus=Math.max(0,Math.min(e.focus,t.tiles.length-1)),t.top=e.top,this.showing!==e)this.showing=e,this.paint.snap()}stageOf(t){let e=this.view;e.stage=t.stage,e.ranking=t.ranking,e.sites=this.sites.map((n)=>({name:n.name,arrived:t.arrived.has(n.name)}))}syncSite(){let t=this.view;t.site=this.tabName,t.siteAnsi=this.tabAnsi,t.nextSite=this.nextTabName}run(){let t=(e)=>this.view.editing===void 0&&df(e);return bi({modes:[yr,...gi()],assume:[Wn,pi],burst:t},async(e)=>{this.terminal=e,e.onResize(this.onResize),e.listen((i)=>{for(let s of i)this.inbound(s);this.paint.soon()}),e.write(ns);let n=new Promise((i)=>{this.done=i}),r=setInterval(this.onClock,250);setTimeout(Tu,0);try{let i=new mc,s=await e.ask(zl,(o)=>i.see(o),1000);if(s){if(this.cell=s,this.holdThumbs(),this.view.tag)this.search(),this.relate(this.view.tag)}else this.view.searching=!1,this.view.error="This terminal does not report its cell size — find needs kitty graphics";if(!process.env.TMUX)await e.ask(Cj,(o)=>o.kind==="attributes"?!0:void 0,500,!1);if(this.grabber.start(),e.hold(PS),this.start&&"paste"in this.start)this.pasted(this.start.paste);else if(this.start)this.fromClipboard();else this.peek();return this.paint.draw(),await e.until(n)}finally{this.session.abort(),this.grabber.stop(),this.attaching?.abort(),clearTimeout(this.noticeTimer),clearTimeout(this.peekTimer),this.fetch?.abort(),clearTimeout(this.settle),this.quietSuggest(),this.quietCount(),clearInterval(r),this.paint.stop(),e.write(`\x1B_Ga=d,d=A,q=2\x1B\\${ns}`),this.kept.save(),this.renders.close(),Tf(this.scratch,{recursive:!0,force:!0}),G0()}})}write(t){this.terminal?.write(t)}get saved(){return this.view.saved?.text}get installs(){return this.view.installed.length}finish(t){this.done?.(t===2&&this.saved?0:t)}inbound(t){if(t.kind==="key")this.key(t.key);else if(t.kind==="mouse")this.pointer(t);else if(t.kind==="paste")this.pasted(t.text);else if(t.kind==="mode"){if(t.mode===5522)this.grabber.clipboard=t.value!==0&&t.value!==4}else if(t.kind==="osc")if(t.code==="72"&&t.meta.t==="q")this.grabber.drops=!0;else this.grabber.take(t)}pasted(t){let e=this.view;if(e.editing!==void 0&&t.trim()!==""&&!this.picture(t)){e.editing+=t.replace(/[\r\n]+/g," "),this.suggest(),this.paint.draw();return}if(e.installing!==void 0||e.panel!==void 0||e.help)return;if(t.trim()===""){this.fromClipboard();return}this.attach(t)}picture(t){let e=t.trim();if(/^https?:\/\/\S+$/i.test(e))return!lu(e,this.site??Z[0]);return Xo(e).length>0}async got(t){if(t.kind==="error"){this.notice(t.message);return}if(t.kind==="text"){if(t.text.trim()===""){this.notice(`No picture on the clipboard — ${ex}`);return}this.pasted(t.text);return}await this.bring(()=>lf(t.bytes,t.source))}notice(t,e=QM){let n=this.view;n.error=t,clearTimeout(this.noticeTimer),this.noticeTimer=setTimeout(()=>{if(n.error===t)n.error=void 0,this.paint.draw()},e),this.paint.draw()}async peek(){let t=this.view,e;try{e=await EE()}catch{return}if(!e||e.stamp===this.peeked)return;if(this.peeked=e.stamp,!e.picture||t.installing!==void 0)return;t.hint=`Picture on the clipboard · ${_j} uses it`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{t.hint=void 0,this.paint.draw()},jj),this.paint.draw()}async fromClipboard(){let t=this.view;if(wg()){if(this.grabber.clipboard){this.grabber.ask();return}this.notice("Over SSH the clipboard is not here — drop the file");return}let e;try{e=await SE(Yn(this.scratch,`clipboard-${Date.now()}.png`))}catch(r){this.notice(`Could not read the clipboard: ${Dc(r)}`);return}if(clearTimeout(this.peekTimer),t.hint=void 0,"image"in e){await this.bring(async(r)=>({...await bg(e.image,r),source:"clipboard"}));return}let n=e.text.trim();if(!n){this.notice(`No picture on the clipboard — ${ex}`);return}if(this.picture(n)){await this.attach(n);return}if(t.editing===void 0)t.editing="";this.pasted(n)}async attach(t){let e=t.trim();if(/^https?:\/\//i.test(e)){let i=lu(e,this.site??Z[0]);if(i){await this.jump(i.site,i.id);return}}let[n,...r]=Xo(e).sort((i,s)=>Number(!tx.test(i))-Number(!tx.test(s)));if(!n){this.notice("Nothing to use in that — drop a picture, or paste one or its link");return}await this.bring((i)=>bg(n,i),r.length)}async bring(t,e=0){let n=this.view;this.attaching?.abort();let r=new AbortController;this.attaching=r,n.error=void 0,n.saved=void 0,n.note="Reading the picture…",this.paint.draw();let i;try{i=await t(AbortSignal.any([r.signal,this.signal]))}catch(d){if(!r.signal.aborted)n.note=void 0,this.notice(Dc(d),8000);return}if(r.signal.aborted)return;n.note=e>0?`The first picture of ${e+1} — drop one at a time to try the others`:void 0,this.quietSuggest(),n.editing=void 0,n.suggest=void 0,n.pick=void 0;let s=yE(i.bytes);kE(s,i.source);let o=this.origPath(zn,s,i.ext);C(o,i.bytes);let a=qM(o).href,c={id:s,file:a,width:i.width,height:i.height,ext:i.ext,preview:a,owner:"",score:0,rating:"s",md5:ox("md5").update(i.bytes).digest("hex"),source:i.source,tags:[],named:{artist:[],character:[],copyright:[]},solo:void 0,family:0,smaller:[]},u={site:zn,post:c},f=this.previewPath(u);C(f,i.bytes),++this.gen,this.current=void 0,n.shown=void 0;let l=Hf(`local|post:${s}`,!1);this.board=l,this.boards.set(l.key,l),this.single(l,u)}single(t,e){t.searching=!1,this.posts.set(ee(e.site,e.post.id),e),t.groups=[{posts:[e],open:!1}],t.checked=1,t.total=1,this.thumbQueue.push(e),this.thumbs(),this.view.mode="try",this.show(),this.select(),this.paint.draw()}onClock=()=>{let t=this.sites.reduce((r,i)=>An(i)>An(r)?i:r),e=Math.ceil((An(t)-Date.now())/1000),n=e>0?e:void 0;if(n!==this.view.waiting)this.view.waiting=n,this.view.slow=t.name,this.paint.draw()};onResize=()=>{if(this.cols=process.stdout.columns||this.cols,this.rows=process.stdout.rows||this.rows,this.paint.resized(),this.holdThumbs(),this.scroll(),this.paint.snap(),this.view.mode==="try"&&this.current)this.reveal();this.pump(),this.paint.draw()};key(t){let e=this.view;if(t==="ctrl-c"){this.finish(2);return}if(e.installing!==void 0)return;if(t==="focus-in"){this.peek();return}if(t==="focus-out")return;if((t==="ctrl-v"||t==="alt-v")&&e.panel===void 0){this.fromClipboard();return}if(e.editing!==void 0){this.editKey(t);return}if(e.panel!==void 0){this.panelKey(t);return}if(e.help){if(t==="?"||t==="esc")e.help=!1,this.paint.draw();return}if(this.cols<$s.cols||this.rows<$s.rows){if(t==="esc")this.finish(2);return}if(t==="?"){e.help=!0,this.paint.draw();return}if(e.mode==="try"){this.tryKey(t);return}this.gridKey(t)}pointer(t){let e=this.view,n=this.paint.point(t),r=n?.target;if(e.installing!==void 0)return;if(t.action==="wheel"){if(!t.sideways)this.wheel(t.wheel);return}if((t.action==="press"||t.action==="drag")&&t.button!=="left")return;if(r?.kind==="track"&&n&&t.action!=="release")this.slide(r.field,n);else if(t.action==="press")this.pressed(r);else if(t.action==="release"&&n?.inside)this.released(r,t)}pressed(t){let e=this.view;if(e.help)this.paint.drop(),this.key("esc");else if(e.editing!==void 0||t===void 0)return;else if(e.panel!==void 0){if(t.kind==="setting"&&t.index<e.settings.length&&e.typing===void 0)e.panel=t.index,this.paint.draw()}else if(e.mode==="try")this.tryPoint(t);else if(t.kind==="tile")this.focus(t.index);else if(t.kind==="query")this.gridKey("/");else if(t.kind==="site")this.tab=t.tab,this.syncSite(),this.turn()}released(t,e){let n=this.view;if(t?.kind==="key")this.key(t.key);else if(t?.kind==="link"){if(!e.shift&&!e.alt&&!e.ctrl)YM(t.url)}else if(n.editing!==void 0){if(t?.kind==="suggest")n.pick=t.index,this.editKey("enter")}else if(n.panel!==void 0)this.panelPoint(t);else if(n.mode==="try"){if(t?.kind==="place"&&n.tuning)this.tuneKey(String(t.at))}else if(t?.kind==="tile"&&e.count===2)this.gridKey("enter");else if(t?.kind==="chip")this.toggle(t.index)}wheel(t){let e=this.view;if(e.help)return;if(e.editing!==void 0){if(e.suggest?.length)this.editKey(t<0?"up":"down")}else if(e.panel!==void 0){if(e.typing===void 0)this.panelKey(t<0?"up":"down")}else if(e.tuning)this.tuneKey(t<0?"up":"down");else if(e.mode==="try")this.tryKey(t<0?"left":"right");else this.focus(e.focus+t*vr(this.cols,this.rows).perRow)}panelPoint(t){let e=this.view;if(t?.kind!=="setting"&&t?.kind!=="choice")return;let n=e.settings[t.index];if(e.typing!==void 0){let r=e.settings[e.panel??0];if(r&&(t.index!==e.panel||t.kind==="setting"))this.typeKey(r,"enter");else return}if(t.kind==="setting"&&t.index===e.settings.length){e.panel=t.index,this.panelKey("enter");return}if(e.panel=t.index,t.kind==="choice"&&n){if(n.entry==="text"||t.choice===void 0){this.panelKey("enter");return}if(n.multi){n.cursor=Math.max(0,n.choices.indexOf(t.choice)),this.panelKey(" ");return}if(n.value!==t.choice)n.value=t.choice,this.recount()}this.paint.draw()}tryPoint(t){let e=this.view;if(t.kind==="scene")e.scene=t.scene,e.details=!1,this.paint.draw();else if(e.tuning&&t.kind==="field")e.tuning.field=t.field,this.paint.draw()}slide(t,e){let n=this.view,r=n.tuning;if(!r)return;let i=Math.min(1,Math.max(0,e.width>1?e.x/(e.width-1):0));if(r.field=t,t===0){let s=Math.max(100,r.fill),o=Ff+Math.round(i*(s-Ff+1));n.tune.size=i===1||r.fill>0&&o>=r.fill?"fill":Math.min(s,o)}else n.tune.opacity=Math.round(i*100)/100;this.retune()}gridKey(t){let e=this.view,{perRow:n,rowsVis:r}=vr(this.cols,this.rows),s={left:-1,right:1,up:-n,down:n,k:-n,j:n,pgup:-n*r,pgdn:n*r,home:-e.focus,end:e.tiles.length}[t];if(s!==void 0){this.focus(e.focus+s);return}if(/^[1-9]$/.test(t)){this.toggle(Number(t)-1);return}if(t==="enter"&&e.tiles[e.focus]){e.mode="try",e.error=void 0,this.select();return}if(t==="v"){this.fromClipboard();return}if(t==="c"){e.preset=e.preset==="cutouts"?"all":"cutouts",this.turn();return}if(t==="tab"||t==="shift-tab"){let o=Z.length+1;this.tab=(this.tab+(t==="tab"?1:o-1))%o,this.syncSite(),this.turn();return}if(t==="/"){e.editing="",this.paint.draw();return}if(t===" "){this.unfold();return}if(t==="o"||t==="O"){this.openPage(t==="O");return}if(t==="s"){e.panel=0,e.advanced=!1,this.recount(),this.paint.draw();return}if(t==="esc")this.finish(2)}panelKey(t){let e=this.view,n=e.panel??0,r=e.settings[n];if(e.typing!==void 0&&r){this.typeKey(r,t);return}let i=Mc(e);if(t==="up"||t==="down"){let s=i.indexOf(n)+(t==="up"?-1:1);e.panel=i[(s+i.length)%i.length]??n,this.paint.draw();return}if(t==="a"||t==="enter"&&n===e.settings.length){e.advanced=!e.advanced,e.panel=Mc(e)[0]??0,this.paint.draw();return}if(r?.entry&&(t==="enter"||r.entry==="number"&&/^[0-9]$/.test(t))){e.typing=t==="enter"?r.entry==="text"?r.value:"":t,this.paint.draw();return}if((t==="left"||t==="right")&&r&&r.entry!=="text"){let s=t==="left"?-1:1;if(r.multi)r.cursor=(r.cursor+s+r.choices.length)%r.choices.length;else r.value=tE(r.choices,r.value,s),this.recount();this.paint.draw();return}if(t===" "&&r?.multi){let s=r.value.split(" "),o=r.choices.filter((c,u)=>u===r.cursor?!s.includes(c):s.includes(c)),a=r.multi.none;if(o.length>0||a!==void 0)r.value=o.length>0?o.join(" "):a,this.recount(),this.paint.draw();return}if(t==="esc"){e.settings.forEach((s,o)=>{s.value=this.setting(As[o]?.name??"")}),e.panel=void 0,e.advanced=!1,this.quietCount(),this.paint.draw();return}if(t==="enter"||t==="s"||t==="alt-c")e.panel=void 0,e.advanced=!1,this.quietCount(),this.adopt()}typeKey(t,e){let n=this.view,r=n.typing??"";if(e==="esc"){n.typing=void 0,this.paint.draw();return}if(e==="enter"||e==="up"||e==="down"){if(t.value=t.entry==="number"?Number(r)>0?String(Number(r)):"off":ka(r).join(" "),n.typing=void 0,this.recount(),e==="enter"){this.paint.draw();return}this.panelKey(e);return}let i=ms(r,e,(s)=>t.entry==="number"?/^[0-9]$/.test(s)&&r.length<cg:/^[\x20-\x7e]$/.test(s));if(i!==void 0)n.typing=i,this.paint.draw()}quietCount(){clearTimeout(this.countTimer),this.counting?.abort(),this.counting=void 0}recount(){if(this.quietCount(),this.view.counts=void 0,!this.view.tag)return;let t=new AbortController;this.counting=t,this.countTimer=setTimeout(()=>void this.countPending(t),Tj)}pending(){let t=(e)=>this.view.settings[As.findIndex((n)=>n.name===e)]?.value??this.setting(e);return{tag:this.view.tag,chosen:this.view.chosen,preset:t("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:Yg(t("TTHEME_FIND_ORDER")),rating:Hi(t("TTHEME_FIND_RATING")),narrow:zd(t("TTHEME_FIND_MIN_SCORE"),t("TTHEME_FIND_MIN_SIZE"),t("TTHEME_FIND_PNG")),enabled:$a(t("TTHEME_FIND_SITES"))}}async countPending(t){let e=this.pending(),n=this.site?[this.site]:Z.filter((s)=>e.enabled.includes(s.name)),r=AbortSignal.any([this.signal,t.signal]),i=await Promise.all(n.map(async(s)=>{let o=this.query(s,e);if(!o)return{site:s.name,count:0};if(s.counts&&!s.counts(o.tags))return{site:s.name};try{let a=await Yd(s,o.tags,r);return{site:s.name,...Number.isFinite(a)?{count:a}:{}}}catch{return{site:s.name}}}));if(this.counting===t&&this.view.panel!==void 0)this.view.counts=i,this.paint.draw()}adopt(){let t=this.view,e=As.map((r)=>this.setting(r.name));t.settings.forEach((r,i)=>{let s=As[i];if(s)this.values.set(s.name,r.value)});let n=As.filter((r,i)=>this.setting(r.name)!==e[i]);if(n.length===0){this.paint.draw();return}this.save(n),t.rating=Hi(this.setting("TTHEME_FIND_RATING")),t.block=Vs(this.setting("TTHEME_FIND_BLOCK")),t.sets=this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",t.preset=this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",t.order=Yg(this.setting("TTHEME_FIND_ORDER")),t.solo=this.setting("TTHEME_FIND_SOLO")==="on",t.narrow=this.narrowed(),t.enabled=$a(this.setting("TTHEME_FIND_SITES")),t.hide=uu(this.setting("TTHEME_FIND_HIDE")),t.hideTags=ka(this.setting("TTHEME_FIND_HIDE_TAGS")),this.boards.clear(),this.current=void 0,t.shown=void 0,t.mode="grid",this.search()}save(t){this.store(t.map((e)=>[e.name,this.setting(e.name)]))}store(t){let e=Yn(this.home,"ttheme","config.zsh");try{let n=zc(e)?kj(e,"utf8"):"";return C(e,t.reduce((r,[i,s])=>bl(r,i,s),n)),!0}catch(n){return this.view.error=n instanceof Error?n.message:String(n),!1}}editKey(t){let e=this.view,n=e.editing??"",r=e.suggest??[];if((t==="up"||t==="down")&&r.length>0){let o=((e.pick??r.length)+(t==="down"?1:r.length))%(r.length+1);e.pick=o===r.length?void 0:o,this.paint.draw();return}if(t==="esc"||t==="enter")this.quietSuggest();if(t==="esc"){if(e.editing=void 0,e.tag===""){this.finish(2);return}this.paint.draw();return}if(t==="enter"){let s=e.pick===void 0?void 0:r[e.pick],o=s?s.whole?s.value:n.replace(/\S*$/,s.value):n;if(e.editing=void 0,e.suggest=void 0,e.pick=void 0,o.trim()){this.commit(o.trim());return}if(e.tag===""){this.finish(2);return}this.paint.draw();return}let i=ms(n,t);if(i!==void 0)e.editing=i,this.suggest(),this.paint.draw()}quietSuggest(){clearTimeout(this.suggestTimer),this.suggesting?.abort(),this.suggesting=void 0}suggest(){this.quietSuggest();let t=this.view;t.pick=void 0;let e=t.editing??"",n=/\S*$/.exec(e)?.[0]??"",r=Rj(n),i=ek(e,rx,this.tagged).map((c)=>({value:c.tag,count:0,alias:c.name,whole:!0}));if(!r&&i.length===0){t.suggest=void 0;return}let s=r?Ck(this.manifest.palettes,this.entry,n).map((c)=>({value:c.booru,count:0,palette:c.name})):[],o=[...new Map([...s.slice(0,rx),...i].map((c)=>[c.value,c])).values()];if(t.suggest=o.length>0?o:void 0,i.length>0&&Wj.test(e))t.pick=o.findIndex((c)=>("whole"in c));if(!r)return;let a=new AbortController;this.suggesting=a,this.suggestTimer=setTimeout(async()=>{try{let c=await K0(n,AbortSignal.any([this.signal,a.signal]));if(this.suggesting===a&&t.editing!==void 0){let u=new Map(c.map((l)=>[l.value,l.count])),f=new Set(o.map((l)=>l.value));t.suggest=[...o.map((l)=>({...l,count:u.get(l.value)??0})),...c.filter((l)=>!f.has(l.value))].slice(0,Kj),t.pick=t.pick!==void 0&&t.pick<o.length?t.pick:void 0,this.paint.draw()}}catch{}},Nj)}async commit(t){let e=lu(t,this.site??Z[0]);if(e){await this.jump(e.site,e.id);return}if(this.picture(t)){await this.attach(t);return}this.view.tag=t,this.view.chosen=void 0,this.relate(t),this.boards.clear(),await this.search()}async jump(t,e){let n=++this.gen;this.tab=Z.indexOf(t)+1,this.syncSite(),this.current=void 0,this.view.shown=void 0,this.view.error=void 0;let r=Hf(`${t.key}|post:${e}`,!0);this.board=r,this.boards.set(r.key,r),this.show(),this.paint.draw();try{let i=await Fi(t,e,this.signal);if(n!==this.gen)return;if(!i){r.searching=!1,r.error=`${t.name} has no post ${e}`,this.view.error=r.error,this.show(),this.paint.draw();return}this.single(r,{site:t,post:i})}catch(i){this.fail(n,i,t)}}async turn(){this.fetch?.abort(),this.current=void 0,this.view.shown=void 0;let t=this.boards.get(this.boardKey);if(!t){await this.search();return}this.gen++,this.board=t,this.view.error=t.error,this.show(),this.paint.draw(),await this.pump()}unfold(){let t=this.view,e=0;for(let n of this.board.groups){let r=n.open?n.posts.length:1;if(t.focus<e+r){if(n.posts.length<2)return;n.open=!n.open,this.board.focus=e,this.thumbQueue.push(...n.posts.filter((i)=>!this.thumbPath.has(ee(i.site,i.post.id)))),this.thumbs(),this.show(),this.scroll(),this.paint.glide(),this.paint.draw();return}e+=r}}openPage(t){let e=this.view.tiles[this.view.focus],n=e&&this.posts.get(e.key);if(!n)return;let r=Li(n.post.source),i=n.site===zn?"":n.site.pageUrl(n.post.id),s=!t&&/^https?:\/\//i.test(r)?r:i;if(s)YM(s)}tryKey(t){let e=this.view;if(e.tuning){this.tuneKey(t);return}if(t==="left"||t==="right"){this.direction=t==="left"?-1:1,this.focus(e.focus+this.direction);return}if(t==="shift-left"||t==="shift-right"){e.scene+=t==="shift-left"?-1:1,e.details=!1,this.paint.draw();return}if(t==="i"){e.details=!e.details,this.inform(),this.paint.draw();return}if(t==="t"){e.tuning={field:0,held:{...e.tune},fill:this.current?.fill??0,coloring:e.coloring},this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="o"||t==="O"){this.openPage(t==="O");return}if(t==="x"){this.swap();return}if(t==="v"){this.fromClipboard();return}if(t==="enter"){this.install();return}if(t==="esc")this.fetch?.abort(),clearTimeout(this.settle),e.fetching=void 0,e.mode="grid",e.error=void 0,this.paint.draw()}tuneKey(t){let e=this.view,n=e.tuning,r=e.tune;if(t==="up"||t==="down"){n.field=(n.field+(t==="up"?2:1))%3,this.paint.draw();return}let i=Oj[t];if(i!==void 0){if(n.field===0)r.size=Pj(r.size,i,n.fill);else if(n.field===1)r.at=(r.at-1+Math.sign(i)+9)%9+1;else r.opacity=Math.max(0,Math.min(100,Math.round(r.opacity*100)+i))/100;this.retune();return}if(/^[1-9]$/.test(t)){n.field=1,r.at=Number(t),this.retune();return}if(t==="="){let s=e.untuned;if(n.field===0)r.size=s.size;else if(n.field===1)r.at=s.at;else r.opacity=s.opacity;this.retune();return}if(t==="+"){e.tune={...e.untuned},this.retune();return}if(t==="enter"){e.tuning=void 0,this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="esc")e.tune={...n.held,...n.coloring===e.coloring?{}:{opacity:e.untuned.opacity}},e.tuning=void 0,this.retune()}recolor(){let t=this.view;if(!this.current||t.shown?.id!==this.current.key)return;t.coloring=t.coloring==="tone"?"original":"tone",t.tune.opacity=t.untuned.opacity,this.paint.draw(),this.reveal()}retune(){if(this.paint.draw(),this.current&&this.view.shown?.id===this.current.key)this.reveal()}inform(){let t=this.view,e=t.tiles[t.focus],n=e&&this.posts.get(e.key);t.info=n?this.infoOf(n):void 0}infoOf(t){let{site:e,post:n}=t,r=n.named,i=_0(e,n),s=new Set([...r.artist,...r.character,...r.copyright]),o=Li(n.source),a=/^https?:\/\//i.test(o)?o:e===zn&&o.startsWith("/")?qM(o).href:void 0;return{page:e===zn?"":e.pageUrl(n.id),source:o,...a?{link:a}:{},artists:r.artist,profiles:Object.fromEntries(Object.entries(this.kept.links(r.artist)).map(([c,u])=>[c,xa(u)])),characters:r.character,series:r.copyright,tags:n.tags.filter((c)=>!s.has(c)),...i?{rating:i}:{},...n.posted?{posted:n.posted}:{},ext:(un(n)??n).ext,uploader:n.owner}}focus(t){let e=this.view;if(e.tiles.length===0)return;let n=Math.max(0,Math.min(e.tiles.length-1,t));if(n===e.focus)return;if(e.focus=n,this.board.focus=n,this.scroll(),this.paint.glide(),this.pump(),e.mode==="try")this.select();this.paint.draw()}scroll(){let t=this.view,{perRow:e,rowsVis:n}=vr(this.cols,this.rows),r=Math.floor(t.focus/e);if(r<t.top)t.top=r;if(r>t.top+n-1)t.top=r-n+1;this.board.top=t.top}selected(t){if(t.chosen)return t.chosen;if(!t.tag)return[];return this.namesOf(t.tag,"danbooru")}namesOf(t,e){let n=t===this.entry.booru?this.entry:this.manifest.palettes.find((r)=>r.booru===t);return n?jk(n,e):[t]}syncChips(){let t=this.selected(this.view);this.view.chips=this.pool.slice(0,zj).map((e)=>({name:e,on:t.includes(e)}))}toggle(t){let e=this.view,n=e.chips[t];if(!n)return;let r=this.selected(e),i=n.on?r.filter((s)=>s!==n.name):[...r,n.name];if(i.length===0)return;e.chosen=i,e.tag=i.join(" or "),this.syncChips(),this.boards.clear(),this.search()}async relate(t){this.relating?.abort();let e=this.selected({tag:t,chosen:void 0});if(this.pool=e,this.syncChips(),this.paint.draw(),!t||/\s/.test(t))return;let n=this.related.get(t);if(!n){let r=new AbortController;this.relating=r;try{n=(await z0(t,AbortSignal.any([this.signal,r.signal]))).map((i)=>i.value)}catch{return}if(this.relating!==r)return;this.related.set(t,n)}this.pool=[...new Set([...e,...n])],this.syncChips(),this.paint.draw()}query(t,e=this.view){let n=e.chosen?D0(t,e.chosen):this.namesOf(e.tag,t.key);if(n.length===0)return;let r=e.chosen?.slice(n.length)??[],i=n.length>1,s=e.preset==="cutouts"?t.cutouts:"",o=i&&s.includes("~"),a=[i?n.map((f)=>`~${f}`).join(" "):n[0],t.rate(e.rating),...t.narrow(e.narrow),o?"":s,e.order==="score"?t.best:""].filter(Boolean),c=[],u=[];for(let f of a)if(Jd([...c,f].join(" "))<=t.tagBudget)c.push(f);else u.push(f);return{tags:c.join(" "),notes:[...u.length>0?[`${t.name} takes ${t.tagBudget} tags — ${u.join(" ")} left out`]:[],...r.length>0?[`${t.name} takes ${n.length} tag${n.length===1?"":"s"} — ${r.join(" ")} left out`]:[],...o?[`${t.name} ORs the names, so cutouts are told by the file`]:[],...e.narrow.score>0&&!t.scored?[`${t.name} keeps no score`]:[],...e.narrow.png&&t.guesses?[`${t.name} names a file type only where danbooru holds the file`]:[]]}}async search(){let t=++this.gen,e=Hf(this.boardKey,!0);this.board=e,this.boards.set(e.key,e),this.view.error=void 0;let n=this.sites.flatMap((s)=>{let o=this.query(s);return o?[{site:s,...o}]:[]}),r=this.sites.filter((s)=>!n.some((o)=>o.site===s)),i=[...n.flatMap(({notes:s})=>s),...r.length>0?[`${this.entry.name} has no tag on ${r.map((s)=>s.name).join(", ")}`]:[]];if(e.note=i.length>0?i.join(" · "):void 0,n.length===0)e.searching=!1;this.show(),this.paint.draw(),this.tally(t,e,n);try{let s=await Promise.all(n.map(async(o)=>({plan:o,owners:await this.kept.mateOwners(o.site)})));if(t!==this.gen)return;e.sources=s.flatMap(({plan:{site:o,tags:a},owners:c})=>{let u=Jd(a)+1<=o.tagBudget?o.uploadedBy:void 0;return[...u?c.keys().map((f)=>({site:o,tags:`${a} ${u(f)}`,page:0,done:!1})):[],{site:o,tags:a,page:0,done:!1}]}),this.show(),this.paint.draw(),await this.pump()}catch(s){this.fail(t,s)}}async tally(t,e,n){let r=await Promise.allSettled(n.map(({site:i,tags:s})=>Yd(i,s,this.signal)));if(t===this.gen)e.total=r.reduce((i,s)=>i+(s.status==="fulfilled"&&Number.isFinite(s.value)?s.value:0),0),this.show(),this.paint.draw()}fail(t,e,n=this.site){if(t!==this.gen||this.signal.aborted)return;this.board.error=Vg(n?.name??this.tabName,e),this.board.searching=!1,this.view.error=this.board.error,this.show(),this.paint.draw()}drop(t,e,n){for(let r of t.sources)if(r.site===e)r.done=!0;t.note=[t.note,Vg(e.name,n)].filter(Boolean).join(" · ")}wants(){let{perRow:t,rowsVis:e}=vr(this.cols,this.rows);return this.view.tiles.length<(this.board.top+e+nx)*t}need(){let{perRow:t,rowsVis:e}=vr(this.cols,this.rows);return(e+nx)*t}live(t){return this.boards.get(t.key)===t}page(t,e,n){let r=`${t.key}|${e}|${n}`,i=this.pages.get(r);if(!i)i=U0(t,e,n,this.signal).then((s)=>this.borrow(t,s)),this.pages.set(r,i),i.catch(()=>this.pages.delete(r));return i}async borrow(t,e){let n=t===Pt?[]:e.filter((r)=>r.md5!=="");if(n.length>0)try{Sa(n,await Ea(n.map((r)=>r.md5),this.signal))}catch{}return e}staged(t){if(t===this.board)this.stageOf(t),this.paint.draw()}async round(t){t.stage="fetch",this.staged(t);let e=Z.flatMap((a)=>{let c=t.sources.find((u)=>u.site===a&&!u.done);return c?[c]:[]}),n=await Promise.all(e.map(async(a)=>{try{let c=await this.page(a.site,a.tags,a.page);return t.arrived.add(a.site.name),this.staged(t),{source:a,posts:c}}catch(c){if(t.sources.every((u)=>u.site===a.site)||this.signal.aborted)throw c;return this.drop(t,a.site,c),{source:a,posts:void 0}}}));if(!this.live(t))return;let r=[];for(let{source:a,posts:c}of n){if(!c)continue;a.page++,a.done=c.length<Rn;let u=t.last.get(a);for(let f of c){let l=u&&ZE(u.post,f)?u.set:`set:${a.site.key}:${f.id}`;u={post:f,set:l};let d=ee(a.site,f.id);if(t.seen.has(d))continue;t.seen.add(d);let h={site:a.site,post:f};if(this.eligible(h))t.kin.set(h,[l,...VE(a.site,f)]),r.push(h);else t.checked++}if(u)t.last.set(a,u)}let i=this.dedupe(t,r),s=++t.rounds,o;if(this.view.order!=="fit")o=e.length>1?BE(i):i;else{let a=mf(i,this.frame(),this.matched),c=a.slice(0,this.need()),u={done:0,total:c.length};if(t.ranking=u,this.staged(t),await this.looks(c,()=>{u.done++,this.staged(t)}),t.ranking=void 0,!this.live(t))return;o=[...mf(c,this.frame(),this.matched),...a.slice(c.length)]}t.stage="check",this.staged(t);for(let a of o)t.roundOf.set(a,s);t.queue.push(...o),this.ahead(t)}ahead(t){if(this.aheading||this.view.order!=="fit"||!this.live(t))return;let e=t.queue.slice(0,this.need()).filter((n)=>!this.looking.has(ee(n.site,n.post.id)));if(e.length===0)return;this.aheading=!0,this.looks(e).then(()=>{this.aheading=!1;for(let n of new Set(e.map((r)=>t.roundOf.get(r)??0)))this.resort(t,n);this.ahead(t)})}resort(t,e){let n=t.queue.flatMap((i,s)=>t.roundOf.get(i)===e?[s]:[]),r=mf(n.map((i)=>t.queue[i]),this.frame(),this.matched);n.forEach((i,s)=>{t.queue[i]=r[s]})}dedupe(t,e){let n=[];for(let r of e){let i=Tg(r.post),s=i.map((a)=>t.same.get(a)).find(Boolean);if(!s){for(let a of i)t.same.set(a,r);n.push(r);continue}if(t.checked++,ix(r.post)<=ix(s.post))continue;for(let a of[...i,...Tg(s.post)])t.same.set(a,r);let o=n.indexOf(s);if(o>=0){n[o]=r;continue}this.replace(t,s,r)}return n}replace(t,e,n){t.roundOf.set(n,t.roundOf.get(e)??0);let r=t.queue.indexOf(e);if(r>=0){t.queue[r]=n;return}for(let i of t.groups){let s=i.posts.indexOf(e);if(s>=0){i.posts[s]=n,this.posts.set(ee(n.site,n.post.id),n),this.thumbQueue.push(n),this.thumbs();return}}}async looks(t,e){let n=0;await Promise.all(Array.from({length:XM},async()=>{while(n<t.length)await this.look(t[n++]),e?.()}))}look(t){let e=ee(t.site,t.post.id),n=this.looking.get(e);if(!n)n=(async()=>{let r=this.previewPath(t),i=fu(t.site,t.post);await this.kept.cached(i.site,r,i.url);let s=await this.renders.run({job:"match",from:r,colors:this.entry.signature});return this.looked.set(e,s),this.matched.set(t.post,s.match),s})().catch(()=>{return}),this.looking.set(e,n);return n}async pump(){let t=this.gen,e=this.board;if(this.pumping===t||e.sources.length===0)return;this.pumping=t;let n=[],r;try{e.searching=!0;while(t===this.gen){while(n.length<ZM&&e.queue.length>0&&this.wants()){let o=e.queue.shift();n.push({pick:o,passed:this.vet(o)})}if(this.ahead(e),!r&&e.queue.length<ZM&&e.sources.some((o)=>!o.done)&&this.wants()){let o=this.round(e).then(()=>{if(r===o)r=void 0});o.catch(()=>{}),r=o}let i=n.shift();if(!i){if(!r)break;await r,this.show(),this.paint.draw();continue}let s=await i.passed;if(t!==this.gen)return;if(e.checked++,s)this.admit(i.pick);this.show(),this.paint.draw()}if(t===this.gen)e.searching=!1,this.show(),this.paint.draw()}catch(i){this.fail(t,i)}finally{if(this.kept.save(),this.pumping===t)this.pumping=0}}eligible({site:t,post:e}){let n=un(e);if(!hu(t,e,this.view.rating)||du(e,this.view.block).length>0||!n)return!1;if(this.view.solo&&e.solo===!1)return!1;let{score:r,size:i,png:s}=this.view.narrow;if(Math.min(e.width,e.height)<i||t.scored&&e.score<r||s&&e.ext!=="png"||j0(e,this.view.hide).length>0||this.view.hideTags.some((o)=>e.tags.includes(o)))return!1;return this.view.preset==="all"?["png","jpg","jpeg",""].includes(n.ext):["png",""].includes(e.ext)}async vet(t){let[e]=await Promise.all([this.passes(t),this.look(t)]);return e}async passes({site:t,post:e}){return this.view.preset==="all"||t.vouched||this.kept.transparent(t,e)}admit(t){let{site:e,post:n}=t,r=this.board,i=ee(e,n.id);this.posts.set(i,t);let s=r.kin.get(t)??[],o=this.looked.get(i),a=o&&{hash:o.hash,width:n.width,height:n.height},c=this.view.sets==="fold"?this.kindred(r,s,a):void 0;if(c){if(c.posts.push(t),this.register(r,c,s,a),c.open)this.thumbQueue.push(t),this.thumbs();return}let u={posts:[t],open:!1};r.groups.push(u),this.register(r,u,s,a),this.thumbQueue.push(t),this.thumbs()}kindred(t,e,n){for(let r of e){let i=t.kindred.get(r);if(i)return i}return n&&t.shapes.find((r)=>QE(r.shape,n))?.group}register(t,e,n,r){for(let i of n)if(!t.kindred.has(i))t.kindred.set(i,e);if(r)t.shapes.push({shape:r,group:e})}holds(){this.view.held=VM(this.home,this.entry.name).map((t)=>{let e=this.heldFiles.get(t.from);return e?{...t,thumb:e}:t}),this.holdThumbs()}holdThumbs(){let t=Pe.cols*this.cell.w,e=Pe.rows*this.cell.h;if(t===0||e===0)return;for(let n of this.view.held.slice(0,sg(this.cols))){if(n.thumb||this.heldAsked.has(n.from))continue;this.heldAsked.add(n.from);let r=Yn(this.scratch,`held-${Sj(n.from)}-${t}x${e}.png`);this.renders.run({job:"thumb",from:n.from,to:r,width:t,height:e}).then(()=>{this.heldFiles.set(n.from,r),this.holds(),this.paint.draw()}).catch(()=>{})}}thumbs(){while(!this.signal.aborted&&this.thumbing<XM&&this.thumbQueue.length>0){let t=this.thumbQueue.shift();this.thumbing++,this.thumb(t).catch(()=>{this.thumbless.add(ee(t.site,t.post.id)),this.show(),this.paint.draw()}).finally(()=>{this.thumbing--,this.thumbs()})}}async thumb(t){let{site:e,post:n}=t,r=St.cols*this.cell.w,i=St.rows*this.cell.h,s=fu(e,n),o=Yn(ln(e),"tile",`${sx(n.id,s.url)}-${r}x${i}.png`);if(!zc(o)){let a=this.previewPath(t);if(await this.kept.cached(s.site,a,s.url),this.signal.aborted)return;await this.renders.run({job:"thumb",from:a,to:o,width:r,height:i})}this.thumbPath.set(ee(e,n.id),o),this.show(),this.paint.draw()}select(){let t=this.view,e=t.tiles[t.focus];if(this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,this.inform(),!e)return;if(this.current?.key===e.key){this.reveal();return}this.settle=setTimeout(()=>void this.load(e),Lj),this.paint.draw()}async load(t){let e=this.view,n=this.posts.get(t.key);if(!n)return;let r=new AbortController;if(this.fetch=r,this.kept.profile(n,r.signal),!un(n.post))return;let{site:i}=n,s=this.board,o;try{await Ma(i,n.post,r.signal);let c=un(n.post),u=this.origPath(i,t.id,c.ext);if(!zc(u))e.fetching={id:t.key,got:0,size:0},this.paint.draw();let f=Kr(i,n.post,c),l=await this.kept.cached(f.site,u,f.url,(m,p)=>{if(e.fetching?.id===t.key)e.fetching={id:t.key,got:m,size:p},this.paint.draw()});if(r.signal.aborted)return;if(e.fetching=void 0,s!==this.board)return;let d={site:i,id:t.id,key:t.key,path:u,ext:c.ext,size:l,using:"plain",failed:!1};e.preparing=t.key,this.paint.flush();let h=await this.render(d,"plain");if(r.signal.aborted||s!==this.board)return;if(o=h.clear===0?await this.twinOf(n,u,r.signal):void 0,o||r.signal.aborted||s!==this.board)return;if(h.clear===0&&Xs()&&this.setting("TTHEME_FIND_REMOVE_BG")!=="off"){if(e.preparing=void 0,e.cutting=t.key,this.paint.flush(),d.cut=await this.cutOut(i,t.id,u,r.signal),r.signal.aborted||s!==this.board)return;if(e.cutting=void 0,d.cut){e.preparing=t.key,this.paint.flush();let m=await this.render(d,"cut").catch(()=>{return});if(r.signal.aborted||s!==this.board)return;if(m&&wu(m.clear))d.using="cut";else Tf(d.cut,{force:!0}),d.cut=void 0,d.failed=!0}else d.failed=!0}if(this.current=d,e.tiles[e.focus]?.key===t.key)await this.present();this.preload()}catch(c){if(!r.signal.aborted&&!this.signal.aborted)e.error=Vg(i.name,c)}finally{if(e.fetching?.id===t.key)e.fetching=void 0;if(e.preparing===t.key)e.preparing=void 0;if(e.cutting===t.key)e.cutting=void 0;this.paint.draw()}let a=o&&s===this.board?this.swapIn(o):void 0;if(a)await this.load(a)}async twinOf(t,e,n){let r=this.view,i=this.board.groups.find((s)=>!s.open&&s.posts[0]===t);for(let s of i?.posts.slice(1)??[]){let o=ee(s.site,s.post.id),a=`${ee(t.site,t.post.id)}>${o}`;if(this.twins.get(a)===!1||!await this.kept.transparent(s.site,s.post))continue;let c=un(s.post);if(n.aborted||c?.ext!=="png")continue;try{let u=this.origPath(s.site,s.post.id,c.ext),f=Kr(s.site,s.post,c);r.fetching={id:o,got:0,size:0},await this.kept.cached(f.site,u,f.url,(d,h)=>{if(r.fetching?.id===o)r.fetching={id:o,got:d,size:h},this.paint.draw()}),r.fetching=void 0,r.preparing=o,this.paint.flush();let l=this.twins.get(a)??await this.renders.run({job:"twin",cut:u,whole:e});if(this.twins.set(a,l),l&&i?.posts.includes(s)&&!n.aborted)return i.posts.splice(i.posts.indexOf(s),1),i.posts.unshift(s),s}catch{this.twins.set(a,!1)}finally{if(r.fetching?.id===o)r.fetching=void 0;if(r.preparing===o)r.preparing=void 0}}return}swapIn(t){let e=this.view,n=ee(t.site,t.post.id);if(!this.thumbPath.has(n))this.thumbQueue.push(t),this.thumbs();this.show(),this.inform();let r=e.tiles[e.focus];if(r?.key!==n)return;return e.hint=`Trying ${t.site.name} ${t.post.id}, the same picture with a transparent background`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{e.hint=void 0,this.paint.draw()},QM),this.paint.draw(),r}async cutOut(t,e,n,r){let i=Yn(ln(t),"cut",`${e}.png`);if(zc(i))return i;try{return wj(Ej(i),{recursive:!0}),await Pa(n,i,r),i}catch{Tf(i,{force:!0});return}}swap(){let t=this.current;if(!t?.cut||this.view.shown?.id!==t.key)return;t.using=t.using==="cut"?"plain":"cut",this.reveal()}preload(){let t=this.view;if(t.mode!=="try")return;for(let e of[t.focus+this.direction,t.focus-this.direction]){let n=t.tiles[e],r=n&&this.posts.get(n.key);if(r)this.kept.profile(r,this.signal);if(this.prefetching>=Hj||!r||!un(r.post))continue;let{site:i,post:s}=r;this.prefetching++,Ma(i,s,this.signal).then(async()=>{let o=un(s),a=this.origPath(i,s.id,o.ext),c=Kr(i,s,o);return await this.kept.cached(c.site,a,c.url),this.render({site:i,id:s.id,key:n.key,path:a,ext:o.ext,size:0,using:"plain",failed:!1},"plain")}).catch(()=>{}).finally(()=>{this.prefetching--})}}async render(t,e){let n=this.cols*this.cell.w,r=this.rows*this.cell.h,i=Math.min(n,Bj),s=Math.max(1,Math.round(r*i/n)),o={...this.view.tune},{coloring:a}=this.view,c=!ax(o,this.view.untuned),u=o.opacity!==this.view.untuned.opacity,f=c?`-${o.size}-${o.at}${u?`-${Math.round(o.opacity*100)}`:""}`:"",l=Yn(this.scratch,`${t.site.key}-${t.id}${e==="cut"?"c":""}${a==="original"?"o":""}-${i}x${s}${f}.png`),d=`${t.site.key}:${t.id}:${e}:${a}:${i}x${s}`,h=this.clarity.get(d);if(h&&zc(l))return t.fill=h.fill,{clear:h.clear,path:l,opacity:h.opacity,touched:u};let m=await this.renders.run({job:"show",from:e==="cut"?t.cut:t.path,cut:e==="cut",to:l,width:i,height:s,colors:this.entry,tone:this.tone,blur:this.blurring*i/mh(n,r).width,coloring:a,...c?{tune:{size:o.size,at:o.at,...u?{opacity:o.opacity}:{}}}:{}});if(this.clarity.set(d,m),t.fill=m.fill,c)this.keepTuned(l);return{clear:m.clear,path:l,opacity:m.opacity,touched:u}}keepTuned(t){this.tunedFiles.push(t);while(this.tunedFiles.length>Gj){let e=this.tunedFiles.findIndex((n)=>n!==this.view.shown?.path&&n!==t);if(e===-1)return;Tf(this.tunedFiles.splice(e,1)[0],{force:!0})}}async present(){let t=this.current;if(!t)return;let e=t.using,{coloring:n}=this.view,r=this.view.tune.opacity,{clear:i,path:s,opacity:o,touched:a}=await this.render(t,e);if(this.current!==t||t.using!==e||this.view.coloring!==n)return;if(!a&&this.view.tune.opacity===r)this.view.untuned.opacity=o,this.view.tune.opacity=o;if(this.view.tuning&&t.fill)this.view.tuning.fill=t.fill;this.view.shown={id:t.key,clear:i,bytes:t.size,path:s,cut:t.cut?e==="cut"?"on":"off":t.failed?"failed":"none"}}reveal(){let t=this.view;if(this.presenting){this.again=!0;return}this.presenting=!0,t.preparing=this.current?.key,this.paint.flush(),this.present().catch((e)=>{t.error=e instanceof Error?e.message:String(e)}).finally(()=>{if(this.presenting=!1,this.again){this.again=!1,this.reveal();return}if(t.preparing===this.current?.key)t.preparing=void 0;this.paint.draw()})}async install(){let t=this.view,e=t.tiles[t.focus],n=this.current;if(!e||n?.key!==e.key||t.preparing!==void 0||t.shown?.id!==e.key)return;t.installing=e.key,t.error=void 0,this.paint.flush();let r=Ij(t.tune,t.untuned),i=this.posts.get(n.key),s=i?.post;if(i)await Promise.race([this.kept.profile(i,this.signal),Mj(Fj,void 0,{ref:!1})]);try{await this.renders.run({job:"backdrop",from:n.using==="cut"?n.cut:n.path,source:n.path,home:this.home,colors:this.entry,tone:this.tone,origin:{site:n.site.key,id:n.id,ext:n.ext,from:`${n.site.name} ${n.id} ${n.site.pageUrl(n.id)}`,artist:s?.named.artist??[],profiles:this.kept.links(s?.named.artist??[]),source:Li(s?.source??"")},width:this.cols*this.cell.w,height:this.rows*this.cell.h,blur:this.blurring,coloring:t.coloring,...r?{tune:r,aligns:us(D(this.home).terminals),user:yj()}:{}}),this.kept.owned(n.site,n.id,s?.owner??""),Ge(this.home),this.holds();let{size:o,at:a,opacity:c}=t.tune,u=r?` · ${o==="fill"?"fill":`${o}%`} · ${Jt[a-1]} · ${c.toFixed(2)}`:"",f=s?.named.artist.length?`${s.named.artist.join(", ")} · `:"";t.saved={text:`Background · ${this.entry.name} ← ${f}${n.site.name} ${n.id}${u}`,key:e.key},t.installed.push(e.key),this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,t.mode="grid"}catch(o){t.error=o instanceof Error?o.message:String(o)}t.installing=void 0,this.paint.draw()}}async function cx(t,e,n){let r=new Zg(t,ve(t),e,e.booru??"",n);if(await r.run(),ts(process.env))process.stdout.write(es(""));return{saved:r.saved,installs:r.installs}}async function ux(t){let e=J(),n=ve(e),r=Ln(n.palettes,t);if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error("needs a terminal");let i=new Zg(e,n,r,r.booru??""),s=await i.run();if(i.saved&&s!==0)return process.stderr.write(`${i.saved}
|
|
730
|
-
`),0;return s}var Ns=((t)=>{return t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t})(Ns||{}),Dj=[0,1],fx=[1,0],dx=[2,3],hx=[3,2],qj={L:Dj,M:fx,Q:dx,H:hx},Jj=/^\d*$/,Yj=/^[A-Z0-9 $%*+./:-]*$/,Xg="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",eb=1,nb=40,lx=3,Vj=3,Lf=40,Zj=10,mx=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],px=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];class gx{constructor(t,e,n,r){if(this.version=t,this.ecc=e,t<eb||t>nb)throw RangeError("Version value out of range");if(r<-1||r>7)throw RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let o=0;o<this.size;o++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(n);if(this.drawCodewords(s),r===-1){let o=1e9;for(let a=0;a<8;a++){this.applyMask(a),this.drawFormatBits(a);let c=this.getPenaltyScore();if(c<o)r=a,o=c;this.applyMask(a)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(t,e){return t>=0&&t<this.size&&e>=0&&e<this.size&&this.modules[e][t]}drawFunctionPatterns(){for(let n=0;n<this.size;n++)this.setFunctionModule(6,n,n%2===0,Ns.Timing),this.setFunctionModule(n,6,n%2===0,Ns.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),e=t.length;for(let n=0;n<e;n++)for(let r=0;r<e;r++)if(!(n===0&&r===0||n===0&&r===e-1||n===e-1&&r===0))this.drawAlignmentPattern(t[n],t[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let e=this.ecc[1]<<3|t,n=e;for(let i=0;i<10;i++)n=n<<1^(n>>>9)*1335;let r=(e<<10|n)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,Or(r,i));this.setFunctionModule(8,7,Or(r,6)),this.setFunctionModule(8,8,Or(r,7)),this.setFunctionModule(7,8,Or(r,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,Or(r,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,Or(r,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,Or(r,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let n=0;n<12;n++)t=t<<1^(t>>>11)*7973;let e=this.version<<12|t;for(let n=0;n<18;n++){let r=Or(e,n),i=this.size-11+n%3,s=Math.floor(n/3);this.setFunctionModule(i,s,r),this.setFunctionModule(s,i,r)}}drawFinderPattern(t,e){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),s=t+r,o=e+n;if(s>=0&&s<this.size&&o>=0&&o<this.size)this.setFunctionModule(s,o,i!==2&&i!==4,Ns.Position)}}drawAlignmentPattern(t,e){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(t+r,e+n,Math.max(Math.abs(r),Math.abs(n))!==1,Ns.Alignment)}setFunctionModule(t,e,n,r=Ns.Function){this.modules[e][t]=n,this.types[e][t]=r}addEccAndInterleave(t){let e=this.version,n=this.ecc;if(t.length!==Cf(e,n))throw RangeError("Invalid argument");let r=px[n[0]][e],i=mx[n[0]][e],s=Math.floor(Qg(e)/8),o=r-s%r,a=Math.floor(s/r),c=[],u=o6(i);for(let l=0,d=0;l<r;l++){let h=t.slice(d,d+a-i+(l<o?0:1));d+=h.length;let m=a6(h,u);if(l<o)h.push(0);c.push(h.concat(m))}let f=[];for(let l=0;l<c[0].length;l++)c.forEach((d,h)=>{if(l!==a-i||h>=o)f.push(d[l])});return f}drawCodewords(t){if(t.length!==Math.floor(Qg(this.version)/8))throw RangeError("Invalid argument");let e=0;for(let n=this.size-1;n>=1;n-=2){if(n===6)n=5;for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let s=n-i,a=(n+1&2)===0?this.size-1-r:r;if(!this.types[a][s]&&e<t.length*8)this.modules[a][s]=Or(t[e>>>3],7-(e&7)),e++}}}applyMask(t){if(t<0||t>7)throw RangeError("Mask value out of range");for(let e=0;e<this.size;e++)for(let n=0;n<this.size;n++){let r;switch(t){case 0:r=(n+e)%2===0;break;case 1:r=e%2===0;break;case 2:r=n%3===0;break;case 3:r=(n+e)%3===0;break;case 4:r=(Math.floor(n/3)+Math.floor(e/2))%2===0;break;case 5:r=n*e%2+n*e%3===0;break;case 6:r=(n*e%2+n*e%3)%2===0;break;case 7:r=((n+e)%2+n*e%3)%2===0;break;default:throw Error("Unreachable")}if(!this.types[e][n]&&r)this.modules[e][n]=!this.modules[e][n]}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,o=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[i][c]===s){if(o++,o===5)t+=lx;else if(o>5)t++}else{if(this.finderPenaltyAddHistory(o,a),!s)t+=this.finderPenaltyCountPatterns(a)*Lf;s=this.modules[i][c],o=1}t+=this.finderPenaltyTerminateAndCount(s,o,a)*Lf}for(let i=0;i<this.size;i++){let s=!1,o=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[c][i]===s){if(o++,o===5)t+=lx;else if(o>5)t++}else{if(this.finderPenaltyAddHistory(o,a),!s)t+=this.finderPenaltyCountPatterns(a)*Lf;s=this.modules[c][i],o=1}t+=this.finderPenaltyTerminateAndCount(s,o,a)*Lf}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let o=this.modules[i][s];if(o===this.modules[i][s+1]&&o===this.modules[i+1][s]&&o===this.modules[i+1][s+1])t+=Vj}let e=0;for(let i of this.modules)e=i.reduce((s,o)=>s+(o?1:0),e);let n=this.size*this.size,r=Math.ceil(Math.abs(e*20-n*10)/n)-1;return t+=r*Zj,t}getAlignmentPatternPositions(){if(this.version===1)return[];else{let t=Math.floor(this.version/7)+2,e=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,n=[6];for(let r=this.size-7;n.length<t;r-=e)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(t){let e=t[1],n=e>0&&t[2]===e&&t[3]===e*3&&t[4]===e&&t[5]===e;return(n&&t[0]>=e*4&&t[6]>=e?1:0)+(n&&t[6]>=e*4&&t[0]>=e?1:0)}finderPenaltyTerminateAndCount(t,e,n){if(t)this.finderPenaltyAddHistory(e,n),e=0;return e+=this.size,this.finderPenaltyAddHistory(e,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(t,e){if(e[0]===0)t+=this.size;e.pop(),e.unshift(t)}}function Pr(t,e,n){if(e<0||e>31||t>>>e!==0)throw RangeError("Value out of range");for(let r=e-1;r>=0;r--)n.push(t>>>r&1)}function Or(t,e){return(t>>>e&1)!==0}class jf{constructor(t,e,n){if(this.mode=t,this.numChars=e,this.bitData=n,e<0)throw RangeError("Invalid argument");this.bitData=n.slice()}getData(){return this.bitData.slice()}}var Xj=[1,10,12,14],Qj=[2,9,11,13],t6=[4,8,16,16];function bx(t,e){return t[Math.floor((e+7)/17)+1]}function wx(t){let e=[];for(let n of t)Pr(n,8,e);return new jf(t6,t.length,e)}function e6(t){if(!$x(t))throw RangeError("String contains non-numeric characters");let e=[];for(let n=0;n<t.length;){let r=Math.min(t.length-n,3);Pr(Number.parseInt(t.substring(n,n+r),10),r*3+1,e),n+=r}return new jf(Xj,t.length,e)}function n6(t){if(!kx(t))throw RangeError("String contains unencodable characters in alphanumeric mode");let e=[],n;for(n=0;n+2<=t.length;n+=2){let r=Xg.indexOf(t.charAt(n))*45;r+=Xg.indexOf(t.charAt(n+1)),Pr(r,11,e)}if(n<t.length)Pr(Xg.indexOf(t.charAt(n)),6,e);return new jf(Qj,t.length,e)}function r6(t){if(t==="")return[];else if($x(t))return[e6(t)];else if(kx(t))return[n6(t)];else return[wx(s6(t))]}function $x(t){return Jj.test(t)}function kx(t){return Yj.test(t)}function i6(t,e){let n=0;for(let r of t){let i=bx(r.mode,e);if(r.numChars>=1<<i)return Number.POSITIVE_INFINITY;n+=4+i+r.bitData.length}return n}function s6(t){t=encodeURI(t);let e=[];for(let n=0;n<t.length;n++)if(t.charAt(n)!=="%")e.push(t.charCodeAt(n));else e.push(Number.parseInt(t.substring(n+1,n+3),16)),n+=2;return e}function Qg(t){if(t<eb||t>nb)throw RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let n=Math.floor(t/7)+2;if(e-=(25*n-10)*n-55,t>=7)e-=36}return e}function Cf(t,e){return Math.floor(Qg(t)/8)-mx[e[0]][t]*px[e[0]][t]}function o6(t){if(t<1||t>255)throw RangeError("Degree out of range");let e=[];for(let r=0;r<t-1;r++)e.push(0);e.push(1);let n=1;for(let r=0;r<t;r++){for(let i=0;i<e.length;i++)if(e[i]=tb(e[i],n),i+1<e.length)e[i]^=e[i+1];n=tb(n,2)}return e}function a6(t,e){let n=e.map((r)=>0);for(let r of t){let i=r^n.shift();n.push(0),e.forEach((s,o)=>n[o]^=tb(s,i))}return n}function tb(t,e){if(t>>>8!==0||e>>>8!==0)throw RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(e>>>r&1)*t;return n}function c6(t,e,n=1,r=40,i=-1,s=!0){if(!(eb<=n&&n<=r&&r<=nb)||i<-1||i>7)throw RangeError("Invalid value");let o,a;for(o=n;;o++){let l=Cf(o,e)*8,d=i6(t,o);if(d<=l){a=d;break}if(o>=r)throw RangeError("Data too long")}for(let l of[fx,dx,hx])if(s&&a<=Cf(o,l)*8)e=l;let c=[];for(let l of t){Pr(l.mode[0],4,c),Pr(l.numChars,bx(l.mode,o),c);for(let d of l.getData())c.push(d)}let u=Cf(o,e)*8;Pr(0,Math.min(4,u-c.length),c),Pr(0,(8-c.length%8)%8,c);for(let l=236;c.length<u;l^=253)Pr(l,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((l,d)=>f[d>>>3]|=l<<7-(d&7)),new gx(o,e,f,i)}function yx(t,e){let{ecc:n="L",boostEcc:r=!1,minVersion:i=1,maxVersion:s=40,maskPattern:o=-1,border:a=1}=e||{},c=typeof t==="string"?r6(t):Array.isArray(t)?[wx(t)]:void 0;if(!c)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);let u=c6(c,qj[n],i,s,o,r),f=u6({version:u.version,maskPattern:u.mask,size:u.size,data:u.modules,types:u.types},a);if(e?.invert)f.data=f.data.map((l)=>l.map((d)=>!d));return e?.onEncoded?.(f),f}function u6(t,e=1){if(!e)return t;let{size:n}=t,r=n+e*2;t.size=r,t.data.forEach((s)=>{for(let o=0;o<e;o++)s.unshift(!1),s.push(!1)});for(let s=0;s<e;s++)t.data.unshift(Array.from({length:r},(o)=>!1)),t.data.push(Array.from({length:r},(o)=>!1));let i=Ns.Border;t.types.forEach((s)=>{for(let o=0;o<e;o++)s.unshift(i),s.push(i)});for(let s=0;s<e;s++)t.types.unshift(Array.from({length:r},(o)=>i)),t.types.push(Array.from({length:r},(o)=>i));return t}var l6=Yk(16,231),f6=[" ","▀","▄","█"],d6=2953;function vx(t){if(Buffer.byteLength(t)>d6)return;let{data:e}=yx(t,{border:2,boostEcc:!0}),n=[];for(let r=0;r<e.length;r+=2){let i=e[r]??[],s=e[r+1]??[];n.push(`${l6}${i.map((o,a)=>f6[(o?1:0)+(s[a]?2:0)]).join("")}${Se}`)}return n}var h6=50;function m6(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi}}function p6(t,e,n){for(let r of n){let i=t-4-r.length;if(i>e.length+2)return[[2,e],[i,` ${r} `]]}return[[2,e]]}function Sx(t,e,n,r=h6){let i=Ce(n),s=rn(m6(e)),o=Mk(t).map((m)=>m.toLowerCase()),a=Og(s,e.signatureSlots,e.waived??[]),c=nr(Er(s,e.signatureSlots,e.waived??[])).length,u=(m)=>s[m]?.toLowerCase()!==o[m],f=s.filter((m,p)=>u(p)).length,l=(m)=>{let p=s[m],b=e.signatureSlots.includes(qn[m])?I.signature:n?I.swatch:" ",$=n?`${i.fg(p)}${b}${$t}`:b,k=a.has(m)?i.bold(I.miss):u(m)?i.warn(I.on):" ";return` ${$} ${Sf(Ot(p))}${k}`},d=c===0?"passes the gate":`${c} ${c===1?"miss":"misses"} in the gate`,h=f>0?[`${f} tuned · ${d}`,d]:[d];return[i.dim(Bt(r,"top",p6(r," Palette ",h))),...F.map((m,p)=>Ze(i,` ${m.padEnd(10)}${l(p)}`,r)),i.dim(Bt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])),...vn.map((m,p)=>Ze(i,` ${m.padEnd(10)}${l(F.length+p)}${l(F.length+8+p)}`,r)),i.dim(Bt(r,"bottom"))]}function oa(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}async function ib(){let t=process.env.TTHEME_WORN;if(!t||!oa())return;let e=await _e({message:`Use ${t}, the palette this tab wears?`});if(ie(e)||!e)throw new be;return t}async function xx(t){let e=process.env.TTHEME_WORN;if(!e)return;if(!oa())return console.error(`Sharing ${e}, the palette this tab wears`),{name:e,...t?{tone:t}:{}};if(t!==void 0||Kt(J())[e]===void 0)return await ib(),{name:e,...t?{tone:t}:{}};let n=await gm({message:`Share ${e}, the palette this tab wears?`,options:[{value:"tuned",label:"Your tone",hint:`named ${qc(e)}`},{value:"original",label:"The original"},{value:"no",label:"No"}]});if(ie(n)||n==="no")throw new be;return{name:e,tone:n}}function Ox(t,e){if(t.includes("/"))return t;let n=Ji(e,!1),r=n.filter((s)=>go(s.dir).some((o)=>o.slug===t)),[i]=r.length===1?r:n.length===1?n:[];return i?`${i.id}/${t}`:t}function w6(t,e,n){let r=D(t),i=n.filter((s)=>!r.palettes.includes(s));if(i.length>0)en(t,e,r,{...r,palettes:[...r.palettes,...i]});else if(n.some((s)=>r.palettes.includes(s)))Dt(t,e,r);return{state:r,fresh:i}}function $6(t){let e=Math.max(0,...t.map((n)=>n.slot.length));return t.map((n)=>` ${n.slot.padEnd(e)} ${n.from} → ${n.to} ${n.rule}`)}function Ex(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi])}function Px(t,e,n){let r=yk(e,n.palettes),i=dr(t,n,!1).palettes.find((s)=>s.name===r.name);if(i&&Ex(i)!==Ex(r))throw Error(`${r.name} is already in ${et(r.name)??"the official marketplace"} and differs — \`ttheme add ${r.name}\` wears that one`);if(!i)$o(t,[...Zr(t),r]);return r}var k6=["background","foreground","cursor"];function Ix(t){try{t();return}catch(e){return e.message}}function Rx(t,e,n){return zt(t,e,!1).palettes.filter((r)=>r.name!==n).map((r)=>({name:r.name,colors:{background:r.background,foreground:r.foreground,cursor:r.cursor,selection:r.selection,ansi:r.ansi}}))}function Ax(t,e){let n=new Set(ke(t,e).map((r)=>r.key));return{count:()=>ke(t,e).length,added:()=>ke(t,e).filter((r)=>!n.has(r.key)).length,fresh:()=>(gf(t,e)??[]).filter((r)=>!n.has(he(r))),discard:()=>{let r=ke(t,e).filter((i)=>!n.has(i.key));for(let i of r)ao(t,e,i.key),Ou(t,e);if(r.length>0)Ge(t)}}}function y6(...t){let e=new Map(t.flatMap((n)=>n??[]).map((n)=>[he(n),n]));return e.size>0?[...e.values()]:void 0}function Nx(t,e,n,r){if(!Eo(process.env,D(t).terminals))return;return async(i,s)=>{let o=dn(Hn(e,r(i),n.palettes)),{saved:a}=await cx(t,o,s);return{...a?{note:a}:{},count:ke(t,e).length}}}async function sb(t,e=!1){let n=process.stdout.isTTY===!0,r=J(),i=D(r).terminals,s=n?$f.of(process.env,r,t.name,i):void 0,o=n?Pf.of(process.env,i):void 0;return KM(t,{color:!Lt(),...s?{backdrop:s}:{},...o?{layer:o}:{},...e?{hosted:!0}:{}})}async function Tx(t,e,n){let r=J(),i=ct(r),s=await cS(r,n),o=t.includes("/")?t:`${s.id}/${t}`,a=ne(o);if(a)throw Error(`${o} ${a}`);if(et(o)!==s.id)throw Error(`palettes in ${s.dir} are named ${s.id}/<palette> — ${o} belongs elsewhere`);let c=Ch(r,o);if(Jc(c))throw Error(`${o} already exists — \`ttheme edit ${o}\` changes it`);let u=e?Ln(zt(r,i).palettes,e):void 0;if(!oa())throw Error("new opens the palette editor — run it in a terminal");let f=u&&(et(u.name)?u.base:u.default?void 0:u.name),l=u?_h(u,o,`kept from ${u.name}`):void 0,d=u?gf(r,u.name)??u.pictures:void 0,{base:h,ansiSource:m,...p}=l??{name:o,signature:k6,...yi(Nc)},b=Ax(r,o),$=({colors:S,signature:M})=>{let x=y6(d,b.fresh());return Bh({...p,...S,signature:M,...f?{base:f}:{},...x?{pictures:x}:{}})},k=await sb({title:"New palette",name:o,...l?{colors:l}:{},signature:p.signature,...p.waive?{waive:p.waive}:{},palettes:Rx(r,i,o),pictures:b.count(),find:Nx(r,o,i,$),exports:Bx(r,o,i,$),decode:ob,check:(S)=>Ix(()=>Hn(o,$(S),i.palettes))});if(!k){b.discard(),console.log("Nothing made");return}g6(b6(c),{recursive:!0}),C(c,$(k));let{state:v}=w6(r,i,[o]);console.log(` + ${o}${u?` from ${u.name}`:""}
|
|
731
|
-
${c}`),await
|
|
732
|
-
\`ttheme use ${o}\` wears it · \`ttheme edit ${o}\` opens it again`)}function
|
|
727
|
+
}`;async function PE(){if($g())return;if(process.platform==="darwin"){let[t="",e=""]=(await yn("osascript",["-l","JavaScript","-e",z8])).stdout.trim().split("\t");return{stamp:t,picture:e==="picture"}}if(process.platform==="linux"&&!xE()){let e=Boolean(process.env.WAYLAND_DISPLAY)?(await yn("wl-paste",["--list-types"])).stdout:(await yn("xclip",["-selection","clipboard","-t","TARGETS","-o"])).stdout;return{stamp:e,picture:/^image\//m.test(e)}}return}function ff(t){return t.length>8&&/^(?:\/|~\/|file:|https?:)/.test(t)}var Rc=(t)=>Buffer.from(t).toString("base64"),gg=(t)=>Buffer.from(t,"base64");function wE(t,e){return e.find((n)=>t.includes(n))}class kg{clipboard=!1;drops=!1;reading;offered=[];dropping;pw=Rc($E("sha1").update(`${process.pid}:${Date.now()}`).digest("hex"));send;deliver;constructor(t,e){this.send=t,this.deliver=e}start(){let t="";if(this.clipboard)t+="\x1B[?5522h";if(this.drops)t+=`\x1B]72;t=a;${pg.join(" ")}\x1B\\`;this.send(t)}stop(){this.send(`${this.clipboard?"\x1B[?5522l":""}${this.drops?"\x1B]72;t=A\x1B\\":""}`)}ask(){this.reading={mime:".",chunks:[],pw:"",listing:!0},this.send(`\x1B]5522;type=read:name=${Rc("ttheme")}:pw=${this.pw};${Rc(".")}\x1B\\`)}take(t){if(t.code==="5522")this.clip(t.meta,t.payload);else if(t.code==="72")this.drop(t.meta,t.payload)}clip(t,e){if(t.type!=="read")return;let n=t.status??"";if(n==="OK"){if(this.reading??={mime:".",chunks:[],pw:t.pw??"",listing:!0},t.pw)this.reading.pw=t.pw;return}let r=this.reading;if(!r)return;if(n==="DATA"){if(r.mime=t.mime?gg(t.mime).toString("utf8"):r.mime,e)r.chunks.push(gg(e));return}if(this.reading=void 0,n!=="DONE"){this.deliver({kind:"error",message:n==="EPERM"?"The clipboard read was not allowed":`The terminal answered ${n}`});return}let i=Buffer.concat(r.chunks);if(r.listing){let s=i.toString("utf8").split(/\s+/).filter(Boolean),o=wE(s,[...bg,...L8]);if(!o){this.deliver({kind:"text",text:""});return}let a=r.pw||this.pw,c=r.pw?"Paste event":"ttheme";this.reading={mime:o,chunks:[],pw:a,listing:!1},this.send(`\x1B]5522;type=read:name=${Rc(c)}:pw=${a};${Rc(o)}\x1B\\`);return}this.deliver(r.mime.startsWith("image/")?{kind:"bytes",bytes:new Uint8Array(i),source:"clipboard"}:{kind:"text",text:i.toString("utf8")})}drop(t,e){let n=t.t??"";if(n==="m"){if(t.x==="-1"){this.offered=[];return}if(e){this.offered=e.split(" ").filter(Boolean);let a=pg.filter((c)=>this.offered.includes(c));this.send(`\x1B]72;t=m:o=${a.length>0?1:0};${a.join(" ")}\x1B\\`)}return}if(n==="M"){let a=e?e.split(" ").filter(Boolean):this.offered,c=wE(a,pg);if(!c){this.send("\x1B]72;t=r:o=0\x1B\\");return}this.dropping={mimes:a,index:a.indexOf(c)+1,chunks:[]},this.send(`\x1B]72;t=r:x=${this.dropping.index}\x1B\\`);return}let r=this.dropping;if(!r)return;if(n==="R"){this.dropping=void 0,this.send("\x1B]72;t=r:o=0\x1B\\"),this.deliver({kind:"error",message:`The drop failed: ${e.split(":")[0]||"unknown error"}`});return}if(n!=="r"&&n!=="")return;if(e)r.chunks.push(gg(e));if(t.m==="1"||e)return;this.dropping=void 0;let i=Buffer.concat(r.chunks),s=r.mimes[r.index-1]??"",o;if(s.startsWith("image/"))o={kind:"bytes",bytes:new Uint8Array(i),source:"drop"};else{let a=i.toString("utf8"),c=s==="text/uri-list"?Yo(a).find((u)=>x8(u)):void 0;o=c?{kind:"bytes",bytes:new Uint8Array(lf(c)),source:c}:{kind:"text",text:a}}this.send("\x1B]72;t=r:o=1\x1B\\"),this.deliver(o)}}var yg=5,D8=6,IE=0.05,q8=[1,2,3,4,5,6,9,10,11,12,13,14],RE=(t,e)=>(e-t+360)%360<=180?1:-1;function Dn(t,e,n){let r=e*Math.cos(n*Math.PI/180),i=e*Math.sin(n*Math.PI/180),s=[t+0.3963377774*r+0.2158037573*i,t-0.1055613458*r-0.0638541728*i,t-0.0894841775*r-1.291485548*i].map((f)=>f**3),[o,a,c]=s,u=[4.0767416621*o-3.3077115913*a+0.2309699292*c,-1.2684380046*o+2.6097574011*a-0.3413193965*c,-0.0041960863*o-0.7034186147*a+1.707614701*c];if(u.some((f)=>f<-0.0001||f>1.0001))return;return u.map((f)=>{let l=Math.min(1,Math.max(0,f));return Math.round(255*(l<=0.0031308?12.92*l:1.055*l**0.4166666666666667-0.055))})}function Vo(t,e,n){if(Dn(t,n,e)!==void 0)return n;let r=0,i=n;for(let s=0;s<24;s++){let o=(r+i)/2;if(Dn(t,o,e)===void 0)i=o;else r=o}return r}function nn(t,e,n){return`#${(Dn(t,Vo(t,n,e),n)??[0,0,0]).map((i)=>i.toString(16).padStart(2,"0")).join("")}`}function J8(t,e){let{l:n,c:r}=Ot(t);return nn(n,r,(e+360)%360)}function Y8(t,e,n){let{l:r,c:i,h:s}=Ot(t),o=Mt(e)<0.18,a=(f)=>nn(o?r+(1-r)*f:r*(1-f),i,s);if(kt(a(1),e)<n+IE)return a(1);let c=0,u=1;for(let f=0;f<30;f++){let l=(c+u)/2;if(kt(a(l),e)>=n+IE)u=l;else c=l}return a(u)}function V8(t,e){let{l:n,c:r,h:i}=Ot(t),s=0,o=n;for(let a=0;a<30;a++){let c=(s+o)/2;if(Mt(nn(c,r,i))<=e-0.005)s=c;else o=c}return nn(s,r,i)}function Z8(t,e,n){let r=Re[e],[i,s]=[Ot(t[e]),Ot(t[e+8])],o=(f,l)=>n.has(f)?[l]:Array.from({length:2*r.width+1},(d,h)=>(r.center-r.width+h+360)%360),a=(f,l,d)=>an.every((h)=>{let m=(f>8?8:0)+h;if(m===f)return!0;let p=Ot(t[m]);return p.c<Oi||Ae(p.h,l)>=Fs+1||Math.abs(p.l-d)>=Ls}),c,u=Number.POSITIVE_INFINITY;for(let f of o(e,i.h)){if(!n.has(e)&&!a(e,f,i.l))continue;for(let l of o(e+8,s.h)){if(Ae(f,l)>on-yg||!n.has(e+8)&&!a(e+8,l,s.l))continue;let d=Ae(f,i.h)+Ae(l,s.h);if(d<u)u=d,c=[f,l]}}return c}class AE{theme;moves=[];constructor(t){this.theme={...t,ansi:[...t.ansi]}}set(t,e,n){let r=this.get(t);if(n===r)return;if(this.moves.push({slot:t,rule:e,from:r,to:n}),t==="foreground")this.theme.foreground=n;else if(t==="selection")this.theme.selectionBackground=n;else this.theme.ansi[Number(t.slice(4))]=n}get(t){if(t==="foreground")return this.theme.foreground;if(t==="selection")return this.theme.selectionBackground;return this.theme.ansi[Number(t.slice(4))]}rehue(t,e,n){this.set(`ansi${t}`,e,J8(this.theme.ansi[t],n))}roles(){let t=new Set(this.theme.signatureSlots);for(let{slot:n,hue:r}of Nr(this.theme)){let i=Re[Mn(n)];this.rehue(n,"ansi-role",i.center+RE(i.center,r)*(i.width-yg))}for(let{normal:n,gap:r}of tr(this.theme)){if(r<=on)continue;let[i,s]=t.has(`ansi${n+8}`)?[n+8,n]:[n,n+8],o=Ot(this.theme.ansi[i]).h,a=Ot(this.theme.ansi[s]).h;this.rehue(s,"bright-follows",o+RE(o,a)*(on-yg))}let e=Cs(this.theme);for(let[n,r]of er(this.theme)){let i=Mn(e.has(r)?n:r),s=Z8(this.theme.ansi,i,e);if(s===void 0)continue;this.rehue(i,"distinct",s[0]),this.rehue(i+8,"distinct",s[1])}}readability(){let t=new Set(this.theme.waive),{background:e}=this.theme,n=(r,i,s,o=e)=>{if(t.has(r))return;for(let a of i)if(kt(this.get(a),o)<s)this.set(a,r,Y8(this.get(a),o,s))};if(n("foreground",["foreground"],7),n("accents",q8.map((r)=>`ansi${r}`),3),n("light-ansi",["ansi7","ansi15"],7),n("ansi8-visible",["ansi8"],1.6),!t.has("ansi0-dark")&&Mt(this.get("ansi0"))>0.15)this.set("ansi0","ansi0-dark",V8(this.get("ansi0"),0.15));n("selection",["selection"],7,this.theme.foreground)}net(){return[...Map.groupBy(this.moves,(t)=>t.slot)].flatMap(([t,e])=>{let n=e[0].from,r=this.get(t);return n===r?[]:[{slot:t,rule:[...new Set(e.map((i)=>i.rule))].join(", "),from:n,to:r}]})}}function df(t){let e=new AE(t);for(let n=0;n<D8;n++)if(e.readability(),e.roles(),nr(e.theme).length===0)break;return{theme:e.theme,moves:e.net(),left:nr(e.theme)}}var bs=[{key:"background",label:"Background",min:0,max:0.5,step:0.01,digits:2},{key:"foreground",label:"Foreground",min:0.5,max:1,step:0.01,digits:2},{key:"hue",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0},{key:"tint",label:"Tint",min:0,max:0.1,step:0.005,digits:3},{key:"lightness",label:"Accent lightness",min:0.4,max:0.95,step:0.01,digits:2},{key:"chroma",label:"Accent chroma",min:0,max:0.3,step:0.005,digits:3},{key:"brights",label:"Brights",min:-0.2,max:0.2,step:0.01,digits:2}],Ac={background:0.21,foreground:0.88,hue:265,tint:0.02,lightness:0.72,chroma:0.12,brights:0.06},NE=(t,e,n)=>Math.min(n,Math.max(e,t));function vg(t,e,n){let r=t[e.key]+e.step*n,i=e.wraps?(r%e.max+e.max)%e.max:NE(r,e.min,e.max);return{...t,[e.key]:Math.round(i*1e4)/1e4}}function wi(t){let e=(r,i,s)=>nn(NE(r,0,1),i,s),n=Array.from({length:16},()=>"#000000");n[0]=e(t.background+0.06,t.tint,t.hue),n[8]=e(t.background+0.25,t.tint,t.hue),n[7]=e(t.foreground-0.06,t.tint/2,t.hue),n[15]=e(t.foreground+0.06,t.tint/2,t.hue);for(let r of an){let i=Re[r].center;n[r]=e(t.lightness,t.chroma,i),n[r+8]=e(t.lightness+t.brights,t.chroma,i)}return{background:e(t.background,t.tint,t.hue),foreground:e(t.foreground,t.tint/2,t.hue),cursor:e(t.lightness+t.brights,Math.max(t.chroma,0.08),t.hue),selection:e(t.background+0.1,t.tint*2,t.hue),ansi:n}}var qn=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],F=["Background","Foreground","Cursor","Selection"],Sn=["Black","Red","Green","Yellow","Blue","Magenta","Cyan","White"],X8=["Behind every cell","Plain text","The cursor block","Selected text","Text on colored bars, dark shades","Errors, deleted lines, failed tests","Success, added lines, prompts","Warnings, commit hashes, skipped tests","Directories, info, keywords","Keywords, branches, pictures in ls","Links, diff hunks, types","Light shades, text in some programs","Comments, muted text, suggestions"],ws=F.length+Sn.length,vn=[{key:"l",label:"Lightness",min:0,max:1,step:0.01,digits:2},{key:"c",label:"Chroma",min:0,max:0.37,step:0.005,digits:3},{key:"h",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0}],TE=5,Q8=5,oe=vn.length,Zo=["this","pair","normals","brights","accents"],_E=[1,2,3,4,5,6,9,10,11,12,13,14],HE=an.map((t)=>F.length+t),FE=an.map((t)=>F.length+8+t);function Sg(t,e){let n=e-F.length;if(n<0||t==="this")return[e];if(t==="pair")return[F.length+n%8,F.length+8+n%8];let r=t==="normals"?HE:t==="brights"?FE:[...HE,...FE];return r.includes(e)?r:[e]}function t5(){return Array.from({length:ws},(t,e)=>e<F.length?[e]:[e,e+8]).flat()}function e5(t){let e=t.trim();return/^https?:\/\/\S+$/i.test(e)||Yo(e).length>0}function rn(t){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi]}function ae(t){let[e,n,r,i,...s]=t;return{background:e,foreground:n,cursor:r,selection:i,ansi:s}}function Ke(t){if(t<F.length)return{name:F[t],about:qn[t]};let e=t-F.length,n=Sn[e%8];return e<8?{name:n,about:`ANSI ${e}`}:{name:`Bright ${n.toLowerCase()}`,about:`ANSI ${e}`}}function BE(t){let e=t-F.length;if(e>=9&&e<=15)return`Bold or bright ${Sn[e-8].toLowerCase()} text`;return X8[t]}var $s=(t,e,n)=>Math.min(n,Math.max(e,t));function LE(t){return t.length===1?t.toLowerCase():t}function n5(t){return $s(Math.round(t),0,255).toString(16).padStart(2,"0")}function CE(t){let e=t.trim().toLowerCase(),n=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/.exec(e);if(n){let s=n[1];return`#${s.length===3?[...s].map((o)=>o+o).join(""):s}`}let r=/^rgb\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)\s*\)$/.exec(e);if(r)return`#${r.slice(1,4).map((s)=>n5(Number(s))).join("")}`;let i=/^oklch\(\s*([\d.]+)(%?)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:deg|°)?\s*\)$/.exec(e);if(i){let s=Number(i[1])/(i[2]?100:1);return nn($s(s,0,1),Number(i[3]),Number(i[4])%360)}return}function ks(t){let e=Ne.find((n)=>n.rule===t);return e?.min??e?.max??0}function Sr(t,e,n){let r=ae(t);return{name:"draft",background:r.background,foreground:r.foreground,selectionBackground:r.selection,ansi:r.ansi,waive:n,signatureSlots:e}}function r5(t,e){let n=t-F.length,r=t<=1?"foreground":t===3?"selection":n===7||n===15?"light-ansi":n===8?"ansi8-visible":_E.includes(n)?"accents":void 0;return{against:t===0||t===3?1:0,floor:r===void 0||e.includes(r)?void 0:ks(r)}}function Og(t,e,n,r){let i=Sr(t,e,n),{background:s,foreground:o,selection:a,ansi:c}=ae(t),u=(f,l,d)=>kt(l,d)<ks(r)?[f]:[];if(r==="foreground")return kt(o,s)<ks(r)?[1,0]:[];if(r==="selection")return kt(o,a)<ks(r)?[3,1]:[];if(r==="accents")return _E.flatMap((f)=>u(F.length+f,c[f],s));if(r==="light-ansi")return[7,15].flatMap((f)=>u(F.length+f,c[f],s));if(r==="ansi8-visible")return u(F.length+8,c[8],s);if(r==="ansi0-dark")return Mt(c[0])>ks(r)?[F.length]:[];if(r==="ansi-role")return Nr(i).map(({slot:f})=>F.length+f);if(r==="bright-follows")return tr(i).filter(({gap:f})=>f>on).flatMap(({normal:f})=>[F.length+f,F.length+f+8]);if(r==="distinct")return er(i).flatMap(([f,l])=>[F.length+f,F.length+l]);return[]}function Pg(t,e,n){return new Set(qn.keys().filter((r)=>Ig(t,e,n,r).some((i)=>i.ok===!1)))}function vr(t,e,n,r,i){let s=kt(t,e),o=ks(n);if(i.includes(n))return{ok:void 0,text:`${r} ${s.toFixed(2)}:1 · waived`};return{ok:s>=o,text:`${r} ${s.toFixed(2)}:1 · ≥ ${o}`}}function Ig(t,e,n,r){let i=ae(t),s=Sr(t,e,n);if(r===0){let $=[1,2,3,4,5,6,9,10,11,12,13,14].reduce((k,v)=>kt(i.ansi[k],i.background)<=kt(i.ansi[v],i.background)?k:v);return[vr(i.foreground,i.background,"foreground","Foreground on it",n),vr(i.ansi[$],i.background,"accents",`Weakest, ANSI ${$},`,n),vr(i.ansi[8],i.background,"ansi8-visible","ANSI 8 on it",n)]}if(r===1)return[vr(i.foreground,i.background,"foreground","On background",n),vr(i.foreground,i.selection,"selection","On the selection",n)];if(r===2)return[{ok:void 0,text:`On background ${kt(i.cursor,i.background).toFixed(2)}:1`}];if(r===3)return[vr(i.foreground,i.selection,"selection","Foreground on it",n)];let o=r-F.length,a=i.ansi[o];if(o===0){let b=Mt(a),$=ks("ansi0-dark");return[n.includes("ansi0-dark")?{ok:void 0,text:`Luminance ${b.toFixed(3)} · waived`}:{ok:b<=$,text:`Luminance ${b.toFixed(3)} · ≤ ${$}`}]}if(o===7||o===15)return[vr(a,i.background,"light-ansi","On background",n)];if(o===8)return[vr(a,i.background,"ansi8-visible","On background",n)];let c=[vr(a,i.background,"accents","On background",n)],u=Ot(a),f=Mn(o),l=Re[f],d=`${l.name} ${l.center}±${l.width}°`;if(u.c<Oi)c.push({ok:void 0,text:"Too grey to have a hue"});else if(Cs(s).has(o))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · a signature, free of ${d}`});else if(n.includes("ansi-role"))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · ${d} waived`});else{let b=Ae(u.h,l.center)-l.width;c.push(b>0?{ok:!1,text:`Hue ${u.h.toFixed(0)}° · ${b.toFixed(0)}° outside ${d}`}:{ok:!0,text:`Hue ${u.h.toFixed(0)}° · in ${d}`})}let h=o<8?o+8:o-8,m=tr(s).find((b)=>b.normal===f);if(m)c.push(n.includes("bright-follows")?{ok:void 0,text:`${m.gap.toFixed(0)}° from ANSI ${h} · waived`}:{ok:m.gap<=on,text:`${m.gap.toFixed(0)}° from ANSI ${h} · ≤ ${on}°`});let p=er(s).flatMap(([b,$])=>b===o?[$]:$===o?[b]:[]);if(p.length>0&&!n.includes("distinct"))c.push({ok:!1,text:`Reads as ANSI ${p.join(", ")} · within ${Fs}° and ${Ls} lightness`});return c}function Rg(t,e,n){let r=xn(Sr(t,e,n));return Ne.map((i,s)=>{let o=r[s],a=n.includes(i.rule),c=a||Number.isNaN(o)?void 0:(i.min===void 0||o>=i.min)&&(i.max===void 0||o<=i.max);return{ok:c,label:i.label,value:Number.isNaN(o)?"—":Number.isInteger(o)?String(o):o.toFixed(2),bound:a?"waived":i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",slots:c===!1?Og(t,e,n,i.rule):[]}})}var i5=new Set(["reset","reset-all","hex","paste","fix","open","tune","sig","follow"]),GE=vn[1].max;function xg(t){let[e,n,r]=st(t);return e===n&&n===r}function s5(t,e){let n=Ot(e);if(!xg(e))return n;let r=[0,1,3,2].map((i)=>t[i]).find((i)=>!xg(i));return{...n,h:r?Ot(r).h:Ac.hue}}function UE(t,e,n){if(t==="rgb"){let[r,i,s]=st(e);return`rgb(${r} ${i} ${s})`}if(t==="oklch")return`oklch(${n.l.toFixed(3)} ${n.c.toFixed(3)} ${n.h.toFixed(0)})`;return e}function Eg(t,e){return Math.floor(Vo(t,e,GE)*1e4)/1e4}function Mg(t,e){return{l:e.l-t.l,c:e.c-t.c,h:((e.h-t.h)%360+540)%360-180}}function jE(t,e){let n=t.wraps?t.max-t.step:t.max;return Math.min(n,Math.round((t.min+(t.max-t.min)*e)/t.step)*t.step)}class Ag{mode;seeds=Ac;field=0;list;lch;start;original;signature;row=0;col=0;channel=0;scope="this";view="slot";scene=0;typing;overlay;quitting=!1;quitFocus="yes";compare=!1;notice;filter="";pick=0;result;wants;pictures;inspect=!1;spot;format="hex";pic=!0;menu;entry=0;changedOnly=!1;where=!1;size;copied;startPictures;options;fresh;tone;startSignature;seeded=!1;tuneFrom;holds=new Map;clip;history=[];future=[];lastEdit;links=new Map;unlinked=new Set;offsets=new Map;constructor(t){this.options=t,this.tone=t.tone===!0,this.fresh=t.colors===void 0,this.mode=this.fresh?"seeds":"list",this.list=rn(t.colors??wi(this.seeds)),this.lch=this.lchs(),this.start=this.list,this.original=t.original?rn(t.original):this.list,this.signature=[...t.signature],this.startSignature=[...t.signature],this.pictures=t.pictures??0,this.startPictures=this.pictures,this.chain(this.original)}chain(t){this.links=new Map,this.unlinked=new Set,this.offsets=new Map;for(let e=0;e<8;e++){let n=F.length+e,r=n+8,i=this.lchOf(t[n]),s=this.lchOf(t[r]);if(i.c>=Oi&&s.c>=Oi&&Ae(i.h,s.h)<=3)this.links.set(r,n),this.offsets.set(r,Mg(i,s))}}pair(t){if(t<F.length)return;let e=F.length+(t-F.length)%8,n=e+8;return{normal:e,bright:n,on:this.linkOf(n)!==void 0,lift:this.lch[n].l-this.lch[e].l}}linkOf(t){let e=this.links.get(t);return e!==void 0&&!this.unlinked.has(t)?e:void 0}changed(t){return this.list[t]!==this.original[t]}visible(t){return!this.changedOnly||this.changed(t)}changes(){return this.list.filter((t,e)=>this.changed(e)).length}unsaved(){return this.list.filter((t,e)=>t!==this.start[e]).length}slotAt(t,e){return t<F.length?t:t+(e===1?8:0)}get added(){return Math.max(0,this.pictures-this.startPictures)}found(t){this.pictures=t.count,this.notice=t.note}get waive(){return this.options.waive??[]}get held(){return this.holds.get(this.slot())}colors(){return ae(this.list)}edited(){return{colors:this.colors(),signature:[...this.signature]}}shown(){return this.compare?this.start:this.list}slot(){return this.row<F.length?this.row:this.row+(this.col===1?8:0)}dirty(){return this.seeded||this.pictures!==this.startPictures||this.list.some((t,e)=>t!==this.start[e])||this.signature.join()!==this.startSignature.join()}resettable(){return this.dirty()||this.tone&&this.list.some((t,e)=>t!==this.original[e])}misses(){return Pg(this.list,this.signature,this.waive)}failing(){return nr(Sr(this.list,this.signature,this.waive))}choices(){let t=this.filter.toLowerCase();return(this.options.palettes??[]).filter((e)=>e.name.toLowerCase().includes(t))}paste(t){if(this.notice=void 0,this.overlay==="open"){this.filter+=t.replace(/\s+/g,"").toLowerCase(),this.pick=0;return}if(this.overlay)return;if(!this.tone&&t.trim()===""){this.findPictures({clipboard:!0});return}if(!this.tone&&e5(t)){this.findPictures({paste:t});return}if(this.mode==="seeds")return;let e=this.options.decode?.(t);if(e){this.remember("open"),this.list=rn(e),this.lch=this.lchs(),this.chain(this.list),this.notice="Took the colors of the share code";return}let n=CE(t);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"paste")}press(t){if(this.notice=void 0,this.quitting){this.quitKey(t);return}if(this.typing!==void 0){this.type(t);return}if(this.overlay==="keys"){this.overlay=void 0;return}if(this.overlay==="open"){this.openKey(t);return}if(this.menu){this.menuKey(t);return}if(t==="?"){this.overlay="keys";return}if(this.inspect&&this.mode==="list"&&this.inspectKey(t))return;if(this.tone&&(t==="ctrl-v"||t==="alt-v"||t==="p"))return;if(t==="ctrl-v"||t==="alt-v"){this.findPictures({clipboard:!0});return}if(t==="p"&&this.mode!=="tune"){this.findPictures();return}if(t===" "&&this.mode!=="seeds"){this.compare=!this.compare;return}if(this.compare&&t==="esc"){this.compare=!1;return}if(t==="g"&&this.mode!=="seeds"){this.view=this.view==="slot"?"relations":"slot",this.inspect=!1,this.spot=void 0;return}let e=t==="j"?"down":t==="k"?"up":t;if(this.mode==="seeds")this.seedKey(e);else if(this.mode==="tune")this.tuneKey(e);else this.listKey(e)}select(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;if(this.mode==="tune"){if(t===this.slot())return;this.tuneKey("enter")}this.notice=void 0,this.seat(t),this.lastEdit=void 0}seat(t){if(this.row=t<F.length?t:F.length+(t-F.length)%8,t>=F.length)this.col=t-F.length>=8?1:0}grip(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return!1;if(this.notice=void 0,this.mode==="list")this.tune();return this.channel=t,!0}slide(t,e){if(!this.grip(t))return;let n=Math.min(1,Math.max(0,e));if(t===oe){this.reach(21**n);return}this.put(jE(vn[t],n))}sow(t,e){let n=bs[t];if(this.mode!=="seeds"||this.overlay||this.quitting||!n)return;this.notice=void 0,this.field=t;let r=Math.min(1,Math.max(0,e));this.seeds=vg({...this.seeds,[n.key]:jE(n,r)},n,0),this.list=rn(wi(this.seeds)),this.lch=this.lchs()}scroll(t){let e=(n,r)=>Math.min(r,Math.max(0,n+t));if(this.overlay==="open")this.pick=e(this.pick,Math.max(0,this.choices().length-1));else if(this.overlay||this.quitting||this.typing!==void 0)return;else if(this.mode==="seeds")this.field=e(this.field,bs.length-1);else if(this.mode==="tune")this.channel=0,this.step(-t);else this.row=e(this.row,ws-1),this.lastEdit=void 0}lchOf(t){return s5(this.list,t)}lchs(){return this.list.map((t)=>this.lchOf(t))}seedKey(t){let e=bs.length;if(t==="up"||t==="down")this.field=(this.field+(t==="up"?e-1:1))%e;else if(t==="home"||t==="end")this.field=t==="home"?0:e-1;else if(t==="left"||t==="right"||t==="shift-left"||t==="shift-right"){let n=bs[this.field],r=(t.endsWith("left")?-1:1)*(t.startsWith("shift")?n.wraps?10:TE:1);this.seeds=vg(this.seeds,n,r),this.list=rn(wi(this.seeds)),this.lch=this.lchs()}else if(t==="enter")this.leaveSeeds();else if(t==="o")this.openPalettes();else if(t==="esc")this.leave()}leaveSeeds(){this.start=this.list,this.original=this.list,this.chain(this.original),this.seeded=!0,this.mode="list"}leave(){if(this.dirty())this.quitting=!0,this.quitFocus="yes";else this.result="cancelled"}quitKey(t){if(t==="esc")this.quitting=!1;else if(["left","right","h","l","tab","shift-tab"].includes(t))this.quitFocus=this.quitFocus==="yes"?"no":"yes";else if(t==="y"||t==="Y"||t==="n"||t==="N"||t==="enter"){let e=t==="enter"?this.quitFocus==="yes":t==="y"||t==="Y";if(this.quitting=!1,e)this.save();else this.result="cancelled"}}findPictures(t){if(!this.options.find){this.notice="Pictures need Ghostty, iTerm2 or kitty, outside tmux";return}this.wants=t?{start:t}:{}}openPalettes(){if((this.options.palettes??[]).length>0)this.overlay="open",this.pick=0;else this.notice="No other palettes to take colors from"}listKey(t){if(t==="up"||t==="down"){let e=t==="up"?-1:1;this.land(this.row+e,e),this.lastEdit=void 0}else if(t==="home"||t==="end")this.land(t==="home"?0:ws-1,t==="home"?1:-1);else if(t==="pgup"||t==="pgdn")this.land(t==="pgup"?0:F.length,1);else if(t==="left"||t==="right"){let e=t==="left"?0:1;if(this.row>=F.length&&this.visible(this.slotAt(this.row,e)))this.col=e,this.lastEdit=void 0}else if(this.builderKey(t))return;else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1;else if(t==="n"||t==="N")this.nextMiss(t==="n"?1:-1);else if(t==="enter"||t==="tab")this.tune();else if(t==="#")this.typing="";else if(t==="c")this.clip=this.list[this.slot()],this.notice=`Copied ${this.clip}`;else if(t==="v")if(this.clip)this.set(this.slot(),this.clip,"paste");else this.notice="Nothing copied yet — c copies a slot";else if(t==="r")this.set(this.slot(),this.original[this.slot()],"reset");else if(t==="R")this.remember("reset-all"),this.list=this.original,this.lch=this.lchs();else if(t==="=")this.follow();else if(t==="*"&&!this.tone)this.mark();else if(t==="f")this.fix();else if(t==="o"&&!this.tone)this.openPalettes();else if(t==="u")this.undo();else if(t==="ctrl-r")this.redo();else if(t==="s"||t==="ctrl-s")this.save();else if(t==="esc")this.leave()}viewport(t,e){this.size={cols:t,rows:e}}layout(){return this.size&&this.view==="slot"?Pc(this.size.cols,this.size.rows,this.scene):void 0}get roomy(){return this.layout()!==void 0}reseat(){if(!this.visible(this.slot()))this.land(this.row,1)}rowShown(t){return this.visible(this.slotAt(t,0))||t>=F.length&&this.visible(this.slotAt(t,1))}land(t,e){for(let n=0;n<ws;n++){let r=((t+e*n)%ws+ws)%ws;if(this.rowShown(r)){if(this.row=r,r>=F.length&&!this.visible(this.slotAt(r,this.col)))this.col=1-this.col;return}}}builderKey(t){if(["i","m","w","x","I"].includes(t)&&!this.roomy)return this.notice=this.view==="relations"?"g goes back to the builder":"The builder needs a window of at least 96×28",!0;if(t==="i")this.startInspect();else if(t==="l")this.linkKey();else if(t==="m")this.changedOnly=!this.changedOnly,this.reseat(),this.notice=this.changedOnly?this.changes()>0?void 0:"Nothing changed yet":void 0;else if(t==="b")this.pic=!this.pic;else if(t==="w")this.where=!this.where;else if(t==="x"&&this.options.exports)this.menu="export",this.entry=0;else if(t==="I")this.menu="import",this.entry=0;else return!1;return!0}menuKey(t){let e=this.menu==="export"?3:2;if(t==="esc")this.menu=void 0;else if(t==="up"||t==="down"||t==="k"||t==="j")this.entry=(this.entry+(t==="up"||t==="k"?e-1:1))%e;else if(t==="enter")this.choose(this.entry)}choose(t){let e=this.menu;if(this.menu=void 0,e==="import"){if(t===0)this.openPalettes();else this.notice=this.options.decode?"Paste a share link or a tt2: code into this window":"Share codes are not read here";return}let n=this.options.exports;if(e!=="export"||!n)return;try{let r=this.edited(),i=n.code(r);this.copied=t===0?i:t===1?`${n.command} ${i}`:n.toml(r),this.notice=`Copied ${t===0?"the share code":t===1?"the add command":"the palette file"} — paste it where you need it`}catch(r){this.notice=r instanceof Error?r.message:String(r)}}startInspect(){let t=this.layout();if(!t){this.notice="The builder needs a window of at least 96×28";return}this.inspect=!0,this.spot=dE(t,this.slot())}inspectKey(t){let e=this.layout();if(!e)return this.inspect=!1,!1;let r={left:"left",right:"right",up:"up",k:"up",down:"down",j:"down",tab:"next","shift-tab":"previous"}[t];if(t==="i"||t==="esc")this.inspect=!1,this.spot=void 0;else if(r)this.spot=hE(e,of(e,this.spot),r);else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1,this.spot=void 0;else if(t==="enter")this.jump();else return!1;return!0}point(t){if(this.mode!=="seeds"&&!this.overlay&&!this.quitting&&this.typing===void 0&&this.layout())this.inspect=!0,this.spot=t}slotsHere(){let t=this.layout();return t&&this.spot?mE(t,this.spot):void 0}jump(){let t=this.slotsHere();if(!t)return;let e=t.ground!==0?t.ground:t.text;this.inspect=!1,this.spot=void 0,this.show(e),this.select(e)}show(t){if(!this.visible(t))this.changedOnly=!1}openSlot(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;let e=this.mode==="tune"&&t===this.slot();if(this.mode==="tune")this.tuneKey("enter");if(e)return;if(this.show(t),this.select(t),this.mode==="list")this.tune()}dismiss(){if(this.mode!=="tune"||this.overlay||this.quitting)return;this.typing=void 0,this.tuneKey("enter")}plane(t,e){if(!this.grip(0))return;this.channel=0,this.put(t),this.channel=1,this.put(e)}linkKey(){let t=this.slot();if(t<F.length){this.notice="l links a bright to its normal — pick an ANSI row";return}let e=F.length+(t-F.length)%8,n=e+8,r=`${Ke(n).name} and ${Ke(e).name.toLowerCase()}`;if(this.mode!=="tune")this.remember("link");if(this.linkOf(n)!==void 0){this.unlinked.add(n),this.notice=`${r} move apart`;return}this.links.set(n,e),this.unlinked.delete(n),this.offsets.set(n,Mg(this.lch[e],this.lch[n])),this.notice=`${r} move together`}nextMiss(t){let e=t5(),n=this.misses();if(n.size===0){this.notice="The gate passes";return}let r=e.indexOf(this.slot());for(let i=1;i<=e.length;i++){let s=e[((r+t*i)%e.length+e.length)%e.length];if(n.has(s)){this.seat(s);return}}}tune(){this.remember("tune"),this.tuneFrom={list:this.list,lch:this.lch},this.holds=new Map,this.hold(),this.mode="tune"}hold(){for(let t of this.scoped())if(!this.holds.has(t))this.holds.set(t,this.lch[t].c)}scoped(){return Sg(this.scope,this.slot())}tuneKey(t){let e=this.channel===oe;if(t==="tab"||t==="shift-tab")this.channel=e?0:oe;else if(t==="up"||t==="down"||t==="pgup"||t==="pgdn")this.channel=0,this.step((t==="up"||t==="pgup"?1:-1)*(t.startsWith("pg")?TE:1));else if(t==="left"||t==="right"){let n=t==="left"?-1:1;if(e)this.reach(this.ratio()+n*0.1);else this.channel=1,this.step(n)}else if(t==="shift-left"||t==="shift-right"){let n=t==="shift-left"?-1:1;if(e)this.reach(this.ratio()+n*0.5);else this.channel=2,this.step(n*Q8)}else if((t===","||t===".")&&!e)this.channel=2,this.step(t===","?-1:1);else if(t==="home"||t==="end")if(e)this.reach(t==="home"?this.partner().floor??1:21);else{let n=vn[this.channel];this.put(t==="home"?n.min:n.wraps?n.max-n.step:n.max)}else if(/^[0-9]$/.test(t))if(e){if(t!=="0")this.reach(Number(t))}else{let n=vn[this.channel];this.put(n.min+(n.max-n.min)*Number(t)/10)}else if(t==="a")this.rescope();else if(t==="#")this.typing="";else if(t==="l")this.linkKey();else if(t==="s"||t==="ctrl-s")this.tuneKey("enter"),this.save();else if(t==="enter"){if(this.tuneFrom&&this.list.every((n,r)=>n===this.tuneFrom?.list[r]))this.history.pop();this.endTune()}else if(t==="esc"){if(this.tuneFrom)this.list=this.tuneFrom.list,this.lch=this.tuneFrom.lch,this.history.pop();this.endTune()}}rescope(){if(this.slot()<F.length){this.notice="A base color moves alone";return}let t=Zo.indexOf(this.scope);for(let e=1;e<=Zo.length;e++){let n=Zo[(t+e)%Zo.length];if(n==="this"||Sg(n,this.slot()).length>1){this.scopeTo(n);return}}}scopeTo(t){if(this.mode!=="tune"||this.typing!==void 0||this.quitting||this.slot()<F.length)return;if(t!=="this"&&Sg(t,this.slot()).length<=1)return;this.scope=t,this.hold();let e=this.scoped().length;this.notice=e>1?`${e} slots move together`:"This slot moves alone"}endTune(){this.tuneFrom=void 0,this.holds=new Map,this.mode="list"}partner(){return r5(this.slot(),this.waive)}ratio(){return kt(this.list[this.slot()],this.list[this.partner().against])}origin(){let t=this.slot(),e=this.original[t];if(e===this.list[t])return;return{hex:e,lch:this.lchOf(e),ratio:kt(e,this.original[this.partner().against])}}reach(t){let e=this.slot(),n=this.list[this.partner().against],r=this.lch[e],i=this.holds.get(e)??r.c,s=(d)=>nn(d,Math.min(i,Eg(d,r.h)),r.h),o=(d)=>kt(s(d),n),a=Mt(this.list[e])>=Mt(n),c=Ot(n).l,u=Math.max(1,Math.round(t*100)/100),f=a?1:0,l;if(o(f)<u)l=f,this.notice=`The ratio stops at ${o(f).toFixed(2)}:1 on this side of the color it is read against`;else{let d=c,h=f;for(let m=0;m<24;m++){let p=(d+h)/2;if(o(p)>=u)h=p;else d=p}l=h}this.place(e,l,i,r.h);for(let d=0;d<40&&l!==f&&kt(this.list[e],n)<u;d++)l=a?Math.min(1,l+0.001):Math.max(0,l-0.001),this.place(e,l,i,r.h);this.lch=this.lch.with(e,{...this.lch[e],l:Math.round(l*1e4)/1e4})}step(t){let e=vn[this.channel],n=this.lch[this.slot()][e.key];this.put(n+e.step*t)}put(t){let e=this.slot(),n=vn[this.channel],r=n.wraps?(t%n.max+n.max)%n.max:$s(t,n.min,n.max),i=Math.round(r*1e4)/1e4,s=this.lch[e],o=this.scoped().filter((u)=>u!==e),a=(u)=>Math.round(u*1e4)/1e4;if(n.key==="c"){let u=Eg(s.l,s.h);if(i>u)this.notice=`Chroma stops at ${u.toFixed(3)}, the sRGB edge for this lightness and hue`;let f=Math.min(i,u),l=f-s.c;this.holds.set(e,f),this.place(e,s.l,f,s.h);for(let d of o){let h=this.lch[d],m=a($s((this.holds.get(d)??h.c)+l,0,GE));this.holds.set(d,m),this.place(d,h.l,m,h.h)}this.trail([e,...o]);return}let c=n.key==="h"?((i-s.h)%360+540)%360-180:i-s.l;if(this.place(e,n.key==="l"?i:s.l,this.holds.get(e)??s.c,n.key==="h"?i:s.h),n.key==="h"&&xg(this.list[e]))this.notice="A grey shows no hue — raise its chroma first";for(let u of o){let f=this.lch[u];this.place(u,n.key==="l"?a($s(f.l+c,0,1)):f.l,this.holds.get(u)??f.c,n.key==="h"?a(((f.h+c)%360+360)%360):f.h)}this.trail([e,...o])}trail(t){let e=new Set(t);for(let[n,r]of this.links){if(this.unlinked.has(n))continue;if(e.has(n)&&!e.has(r))this.unlinked.add(n);else if(e.has(r)&&!e.has(n)){let i=this.lch[r],s=this.offsets.get(n);this.place(n,$s(i.l+s.l,0,1),Math.max(0,i.c+s.c),((i.h+s.h)%360+360)%360)}}}place(t,e,n,r){let i=Math.min(n,Eg(e,r));this.lch=this.lch.with(t,{l:e,c:i,h:r}),this.list=this.list.with(t,nn(e,i,r))}take(t,e){if(this.mode==="tune"){let n=this.slot();this.list=this.list.with(n,t),this.lch=this.lch.with(n,this.lchOf(t)),this.holds.set(n,this.lch[n].c),this.trail([n])}else this.set(this.slot(),t,e)}type(t){let e=this.typing??"";if(t==="esc")this.typing=void 0;else if(t==="enter"){let n=CE(e);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"hex")}else{let n=ls(e,LE(t),(r)=>/^[0-9a-z#(),.% ]$/.test(r)&&e.length<28);if(n!==void 0)this.typing=n}}openKey(t){let e=this.choices();if(t==="esc")this.overlay=void 0,this.filter="";else if(t==="up"||t==="down"){let n=Math.max(1,e.length);this.pick=(this.pick+(t==="up"?n-1:1))%n}else if(t==="home"||t==="end")this.pick=t==="home"?0:Math.max(0,e.length-1);else if(t==="enter"){let n=e[this.pick];if(!n)return;if(this.remember("open"),this.list=rn(n.colors),this.lch=this.lchs(),this.chain(this.list),this.overlay=void 0,this.filter="",this.notice=`Took the colors of ${n.name}`,this.mode==="seeds")this.leaveSeeds()}else{let n=ls(this.filter,LE(t),(r)=>/^[a-z0-9@/-]$/.test(r));if(n!==void 0)this.filter=n,this.pick=0}}snapshot(){return{list:this.list,lch:this.lch,signature:this.signature}}remember(t){if(t!==this.lastEdit||i5.has(t))this.history.push(this.snapshot()),this.future=[];this.lastEdit=t}set(t,e,n){if(!be(e)||this.list[t]===e)return;this.remember(n),this.list=this.list.with(t,e),this.lch=this.lch.with(t,this.lchOf(e)),this.trail([t])}follow(){if(this.row<F.length){this.notice="= works on an ANSI row — the bright takes its normal";return}let t=this.row,e=this.row+8,n=this.lch[t];this.remember("follow"),this.place(e,$s(n.l+0.06,0,1),n.c,n.h),this.links.set(e,t),this.unlinked.delete(e),this.offsets.set(e,Mg(n,this.lch[e])),this.seat(e),this.notice=`${Ke(e).name} follows ${Ke(t).name.toLowerCase()}`}mark(){let t=qn[this.slot()];this.remember("sig");let e=this.signature.includes(t)?this.signature.filter((r)=>r!==t):[...this.signature,t],n=e.length>3?e[0]:void 0;this.signature=e.slice(-3),this.notice=this.signature.length===3?`Signature: ${this.signature.join(", ")}${n?` — ${n} dropped`:""}`:`The signature needs three slots — ${this.signature.length} marked`}fix(){let t=Sr(this.list,this.signature,this.waive),{theme:e,moves:n,left:r}=df({...t,selectionBackground:t.selectionBackground,signatureSlots:this.signature});if(n.length===0){this.notice=nr(t).length===0?"Already passes the gate":"No color change fixes it";return}this.remember("fix");let i=rn({...this.colors(),foreground:e.foreground,selection:e.selectionBackground,ansi:e.ansi}),s=this.list;this.list=i,this.lch=i.map((o,a)=>o===s[a]?this.lch[a]:this.lchOf(o)),this.notice=`Moved ${n.length} ${n.length===1?"color":"colors"}${r.length===0?" — passes the gate":" closer to the gate"}`}save(){let t=this.options.check(this.edited());if(t){this.notice=t;return}this.result="saved"}undo(){let t=this.history.pop();if(!t){this.notice="Nothing to undo";return}this.future.push(this.snapshot()),this.restore(t)}redo(){let t=this.future.pop();if(!t){this.notice="Nothing to redo";return}this.history.push(this.snapshot()),this.restore(t)}restore(t){this.list=t.list,this.lch=t.lch,this.signature=t.signature,this.lastEdit=void 0}}import{mkdirSync as M5,readFileSync as Nc,writeFileSync as oM}from"node:fs";import{dirname as x5}from"node:path";import{isMainThread as O5,parentPort as aM,Worker as P5}from"node:worker_threads";var o5=new Set(["comic","4koma","monochrome","greyscale","sketch","lineart","speech_bubble"]),a5=new Set(["scenery","landscape","scenic","no_humans","wide_shot","very_wide_shot"]),c5=0.04,u5=0.1,l5=0.05,f5=4096;function d5(t){return new Set(t.cutouts.split(/\s+/).map((e)=>e.replace(/^~/,"")).filter(Boolean))}function h5(t,e,n,r=0){let{site:i,post:s}=t,o=new Set(s.tags),a=!d5(i).isDisjointFrom(o),c=Math.min(s.width,s.height),u=s.width>0&&s.height>0?s.width/s.height/(e.w/e.h):1;return(s.solo?2:0)+(o5.isDisjointFrom(o)?0:-3)+(a5.isDisjointFrom(o)?0:-1.5)+2*Math.min(1,c/e.h)+(a?1.5:-Math.min(1.5,Math.abs(Math.log(u))))+(n>0?1.5*Math.log1p(Math.max(0,s.score))/Math.log1p(n):0)+2*r}function hf(t,e,n=new Map){let r=new Map;for(let{site:i,post:s}of t)r.set(i,Math.max(r.get(i)??0,s.score));return t.map((i,s)=>({pick:i,at:s,score:h5(i,e,r.get(i.site)??0,n.get(i.post))})).sort((i,s)=>s.score-i.score||i.at-s.at).map(({pick:i})=>i)}function KE(t){let e=Map.groupBy(t,(r)=>r.site),n=[];for(let r=0;n.length<t.length;r++)for(let i of e.values()){let s=i[r];if(s)n.push(s)}return n}function Ng(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function WE(t,e,n){let[r,i,s]=[Ng(t),Ng(e),Ng(n)],o=Math.cbrt(0.4122214708*r+0.5363325363*i+0.0514459929*s),a=Math.cbrt(0.2119034982*r+0.6806995451*i+0.1073969566*s),c=Math.cbrt(0.0883024619*r+0.2817188376*i+0.6299787005*s);return[0.2104542553*o+0.793617785*a-0.0040720468*c,1.9779984951*o-2.428592205*a+0.4505937099*c,0.0259040371*o+0.7827717662*a-0.808675766*c]}function zE(t,e){let n=e.values().map((o)=>WE(...st(o))).filter(([,o,a])=>Math.hypot(o,a)>=c5).toArray();if(n.length===0)return 0;let r=Math.max(1,Math.floor(Math.sqrt(t.width*t.height/f5))),i=n.map(()=>0),s=0;for(let o=0;o<t.height;o+=r)for(let a=0;a<t.width;a+=r){let c=(o*t.width+a)*4;if(t.data[c+3]<128)continue;s++;let[u,f,l]=WE(t.data[c],t.data[c+1],t.data[c+2]);n.forEach(([d,h,m],p)=>{if(Math.hypot(u-d,f-h,l-m)<u5)i[p]=i[p]+1})}if(s===0)return 0;return i.reduce((o,a)=>o+Math.min(1,a/s/l5),0)/n.length}import{existsSync as Tg,mkdirSync as DE,readFileSync as Xo}from"node:fs";import{homedir as m5}from"node:os";import{dirname as qE,join as ys}from"node:path";var JE=90000;function pf(t,e){let n=V(t),r=$e(t,e).flatMap((i)=>{let[,s,o]=/^([a-z.]+)_(\d+)$/.exec(i.key)??[];return s&&o&&Y.some((a)=>a.key===s)?[{site:s,id:Number(o),...bh(n,i)}]:[]});return r.length>0?r:void 0}function p5(t,e){let n=new Set(Nt(V(t)).palettes[e.name]?.pictures.map((r)=>r.key));return(e.pictures??[]).filter((r)=>!n.has(he(r)))}function YE(t,e){let n=new Set((e??[]).map((r)=>he(r)));return{...t,pictures:(t.pictures??[]).filter((r)=>!n.has(he(r)))}}async function g5(t,e,n,r,i,s){let o=Y.find(($)=>$.key===n.site);if(!o)throw Error(`no site called ${n.site}`);s("Fetching");let a=await Ni(o,n.id,i);if(!a)throw Error("the post is gone");if(o!==Pt&&a.md5)try{ka([a],await ya([a.md5],i))}catch{}let c={},u=($a(o,a)?wa(o,a.id,i).then(($)=>{if($)qs(a,$)},()=>{}):Promise.resolve()).then(()=>a.named.artist.length>0?gu(a.named.artist,i):new Map).then(($)=>{c=Object.fromEntries($.entries().filter(([,k])=>k.length>0))},()=>{});if(!hu(o,a,Ai(process.env.TTHEME_FIND_RATING))||du(a,Ds(process.env.TTHEME_FIND_BLOCK)).length>0)throw Error("outside your find filters — TTHEME_FIND_RATING and TTHEME_FIND_BLOCK");let f=un(a);if(!f)throw Error("too large to use");let l=ys(ln(o),"orig",`${n.id}.${f.ext}`),d;if(Tg(l))d=new Uint8Array(Xo(l));else{s("Downloading");let $=Wr(o,a,f);d=await pu($.site,$.url,i,(k,v)=>s("Downloading",_l(k,v))),C(l,d)}let h=In(d,fe),m=!1;if(rr(h)===0&&Js()&&process.env.TTHEME_FIND_REMOVE_BG!=="off"){let $=ys(ln(o),"cut",`${n.id}.png`);try{if(!Tg($))s("Cutting out"),DE(qE($),{recursive:!0}),await Ma(l,$,i);let k=In(new Uint8Array(Xo($)),fe);if(wu(rr(k)))h=k,m=!0}catch{}}await u;let p=mh(e);s("Drawing"),Pu(t,p,Hn(p,e.signatureSlots),h,{site:o.key,id:n.id,ext:f.ext,bytes:d,from:`${o.name} ${n.id} ${o.pageUrl(n.id)}`,artist:a.named.artist,profiles:c,source:Ti(a.source),cut:m},{width:0,height:0},ni(t),pl(t));let b=$e(t,e.name).find(($)=>$.key===he(n));if(b)Ra(V(t),b,n,r,m5())}function b5(t,e){let n=Y.find((s)=>s.key===t.site),r=`${n?.name??t.site} ${t.id}`;if(!n||!e)return r;return`${Ft()?I.link:`${zi(n.ansi)}${I.link}${$t}`} ${Ku(r,n.pageUrl(t.id))}`}async function vs(t,e,n){let r=e.flatMap((c)=>p5(t,c).map((u)=>({entry:c,shared:u})));if(r.length===0)return;let i=is(n),s=process.stdout.isTTY&&Wy(process.env),o=new Set,a=li();for(let[c,{entry:u,shared:f}]of r.entries()){let l=`${u.name} · ${b5(f,s)}`,d=r.length>1?` · ${c+1}/${r.length}`:"",h=(m,p)=>a.set(`${m} ${l}${p?` · ${p}`:""}${d}`);try{await g5(t,u,f,i,AbortSignal.timeout(JE),h),a.say(` ▣ ${l}`),o.add(u)}catch(m){a.say(` ▢ ${l} — ${m instanceof Error?m.message:String(m)}`)}}a.done();for(let c of o){let u=new Set($e(t,c.name).map((l)=>l.key)),f=(c.pictures??[]).find((l)=>u.has(he(l)));if(f)io(t,c.name,he(f))}if(o.size>0)We(t)}function VE(t,e,n){if(e.width!==t.width||e.height!==t.height)return!1;for(let r=0;r<t.width*t.height;r++)t.data[r*4+3]=e.data[r*4+n]??0;return!0}async function w5(t,e){let[,n,r]=/^(.+)_(\d+)$/.exec(t)??[],i=ys(Tn(),n??"local","cut",`${r??t}.png`);if(!Tg(i)){if(!Js())return;DE(qE(i),{recursive:!0}),await Ma(e,i,AbortSignal.timeout(JE))}return In(new Uint8Array(Xo(i)),fe)}function $5(t,e){try{return rr(Ut(new Uint8Array(Xo(ys(t,`${e.stem}.png`)))))>0}catch{return!1}}function mf(t,e){return()=>In(new Uint8Array(Xo(ys(t,e.original))),fe)}function ZE(t,e){let n=mf(t,e);return()=>{let r=n(),i=Ut(new Uint8Array(Xo(ys(t,e.cut))));return VE(r,i,0)?r:null}}async function gf(t,e,n,r,i,s,o,a){let c=V(t),u=Nt(c).palettes[e]?.pictures.find((f)=>f.key===n);if(!u?.original)return null;if(u.cut)return Aa(t,e,u,ZE(c,u),r,i,s,o,!1,a);if(ro(u)){let f=mf(c,u)();if(rr(f)===0&&$5(c,u)){let l=await w5(n,ys(c,u.original));if(!l||!VE(f,l,3))return null;return Aa(t,e,u,()=>f,r,i,s,o,!0,a)}return Aa(t,e,u,()=>f,r,i,s,o,!1,a)}return Aa(t,e,u,mf(c,u),r,i,s,o,!1,a)}function XE(t,e,n,r,i,s){let o=V(t),a=Nt(o).palettes[e]?.pictures.find((u)=>u.key===n);if(!a?.original||ro(a))return!1;let c=a.cut?ZE(o,a):mf(o,a);return Y$(t,e,a,c,r,i,s)}var k5=2,y5=0.01,mt={coarse:64,fine:192,solid:230,far:48,score:15,outliers:0.03,least:0.03,most:0.97,smallest:0.25,largest:4,step:1.19,overhang:1.04,tiny:8,guesses:3,nudges:[0.97,1,1.03],reach:5},v5=/(?:^|[^0-9a-f])([0-9a-f]{32})(?:[^0-9a-f]|$)/i,S5=[[/yande\.re\/post\/show\/(\d+)/,"yande"],[/konachan\.(?:com|net)\/post\/show\/(\d+)/,"konachan"],[/danbooru\.donmai\.us\/(?:posts|post\/show)\/(\d+)/,"danbooru"],[/zerochan\.net\/(\d+)(?:[?#\s]|$)/,"zerochan"]];function Hg(t){let e=/(\d+)_p(\d+)/.exec(t.source);return[...t.md5?[`md5:${t.md5}`]:[],...e&&t.source.includes("pximg")?[`pixiv:${e[1]}_p${e[2]}`]:[]]}function tM(t,e){let n=v5.exec(e.source)?.[1]?.toLowerCase();return[`post:${t.key}:${e.id}`,...e.md5?[`md5:${e.md5}`]:[],...n&&n!==e.md5?[`md5:${n}`]:[],...S5.flatMap(([r,i])=>{let s=r.exec(e.source)?.[1];return s?[`post:${i}:${Number(s)}`]:[]}),...e.family?[`family:${t.key}:${e.family}`]:[]]}function eM(t,e){let n=t.owner||t.named.artist[0]||"";return n!==""&&n===(e.owner||e.named.artist[0]||"")&&t.width===e.width&&t.height===e.height}function nM(t){let r=[];for(let s=0;s<8;s++){let o=Math.floor(s*t.height/8),a=Math.max(o+1,Math.floor((s+1)*t.height/8));for(let c=0;c<9;c++){let u=Math.floor(c*t.width/9),f=Math.max(u+1,Math.floor((c+1)*t.width/9)),l=0;for(let d=o;d<a;d++)for(let h=u;h<f;h++){let m=(d*t.width+h)*4,p=t.data[m+3]/255,b=0.299*t.data[m]+0.587*t.data[m+1]+0.114*t.data[m+2];l+=b*p+255*(1-p)}r.push(l/((f-u)*(a-o)))}}let i=0n;for(let s=0;s<8;s++)for(let o=0;o<8;o++)i=i<<1n|(r[s*9+o]>r[s*9+o+1]?1n:0n);return i.toString(16).padStart(16,"0")}function E5(t,e){let n=BigInt(`0x${t}`)^BigInt(`0x${e}`),r=0;while(n>0n)r+=Number(n&1n),n>>=1n;return r}function rM(t,e){if(t.width<=0||t.height<=0||e.width<=0||e.height<=0)return!1;return Math.abs(Math.log(t.width/t.height/(e.width/e.height)))<y5&&E5(t.hash,e.hash)<=k5}var iM={score:Number.POSITIVE_INFINITY,far:1,x:0,y:0,scale:0};function bf(t,e){let n=Math.max(1,Math.round(t.width*e)),r=Math.max(1,Math.round(t.height*e));return _r(t,{x:0,y:0,w:t.width,h:t.height},n,r)}function QE(t,e,n,r,i,s,o){let a=[];for(let u=0;u<t.width*t.height;u++)if(t.data[u*4+3]>=mt.solid)a.push(u);let c=iM;if(a.length===0)return c;for(let u=i;u<=s;u++)for(let f=n;f<=r;f++){let l=0,d=0;for(let h of a){let m=h%t.width,p=f+m,b=u+(h-m)/t.width,$=255;if(p>=0&&b>=0&&p<e.width&&b<e.height){let k=h*4,v=(b*e.width+p)*4;$=Math.max(Math.abs(t.data[k]-e.data[v]),Math.abs(t.data[k+1]-e.data[v+1]),Math.abs(t.data[k+2]-e.data[v+2]))}if(l+=$,$>mt.far)d++;if(l>c.score*a.length)break}if(l/a.length<c.score)c={score:l/a.length,far:d/a.length,x:f,y:u,scale:o}}return c}function sM(t,e){let n=0;for(let f=3;f<t.data.length;f+=4)if(t.data[f]>=mt.solid)n++;let r=n/(t.width*t.height);if(r<mt.least||r>mt.most)return!1;let i=Math.max(e.width,e.height),s=new Set([1,e.width/t.width,e.height/t.height]);for(let f=mt.smallest;f<=mt.largest;f*=mt.step)s.add(f);let o=bf(e,mt.coarse/i),a=[];for(let f of s){let l=mt.coarse/i*f;if(t.width*f>e.width*mt.overhang||t.height*f>e.height*mt.overhang)continue;if(t.width*l<mt.tiny||t.height*l<mt.tiny)continue;let d=bf(t,l);a.push(QE(d,o,-1,o.width-d.width+1,-1,o.height-d.height+1,f))}a.sort((f,l)=>f.score-l.score);let c=bf(e,mt.fine/i),u=iM;for(let f of a.slice(0,mt.guesses))for(let l of mt.nudges){let d=f.scale*l,h=bf(t,mt.fine/i*d),m=Math.round(f.x*mt.fine/mt.coarse),p=Math.round(f.y*mt.fine/mt.coarse),b=QE(h,c,m-mt.reach,m+mt.reach,p-mt.reach,p+mt.reach,d);if(b.score<u.score)u=b}return u.score<=mt.score&&u.far<=mt.outliers}var I5={thumb:"tile",band:"band",match:"tile",twin:"view",show:"view",backdrop:"view",redraw:"view"},Qo;async function R5(t){if(t.job==="twin"){let r=Qo?.from===t.whole?Qo.inked.image:In(new Uint8Array(Nc(t.whole)),fe);return sM(In(new Uint8Array(Nc(t.cut)),fe),r)}if(t.job==="redraw")return gf(t.home,t.name,t.key,t.paint,t.blur,t.aligns,t.user);if(t.job==="show"){if(Qo?.from!==t.from){let o=In(new Uint8Array(Nc(t.from)),fe);Qo={from:t.from,clear:rr(o),inked:hh(o,t.cut)}}let{image:r,fill:i,opacity:s}=L$(Qo.inked,t.colors,t.tone,t.width,t.height,t.blur,t.tune,t.coloring);return M5(x5(t.to),{recursive:!0}),oM(t.to,Je(r)),{clear:Qo.clear,fill:i,opacity:s}}let e=In(new Uint8Array(Nc(t.from)),fe);if(t.job==="backdrop"){Pu(t.home,t.colors,t.tone,e,{...t.origin,bytes:new Uint8Array(Nc(t.source)),cut:t.from!==t.source},t,t.blur,t.coloring);let r=t.tune&&$e(t.home,t.colors.name).find((i)=>i.key===he(t.origin));if(t.tune&&r)Ra(V(t.home),r,t.tune,t.aligns??!0,t.user??t.home);return 0}if(t.job==="match")return{match:zE(e,t.colors),hash:nM(e)};if(t.job==="thumb")return C(t.to,Je(p0(e,t.width,t.height))),0;let n=e.data.subarray(t.y*e.width*4,(t.y+t.height)*e.width*4);return oM(t.to,Je({width:e.width,height:t.height,data:n})),0}function A5(t){t.on("message",async(e)=>{try{t.postMessage({id:e.id,value:await R5(e)})}catch(n){t.postMessage({id:e.id,error:n instanceof Error?n.message:String(n)})}})}class Fg{worker;next=1;waiting=new Map;send(t){let e=this.next++;return new Promise((n,r)=>{let i=this.open();this.waiting.set(e,{ok:n,no:r}),i.ref(),i.postMessage({...t,id:e})})}close(){this.worker?.terminate(),this.worker=void 0,this.drop(Error("renderer closed"))}open(){if(this.worker)return this.worker;let t=new P5(import.meta.filename);t.unref(),t.on("message",({id:n,value:r,error:i})=>{let s=this.waiting.get(n);if(this.waiting.delete(n),this.waiting.size===0)t.unref();if(i!==void 0)s?.no(Error(i));else s?.ok(r)});let e=(n)=>{if(this.worker===t)this.worker=void 0;this.drop(n instanceof Error?n:Error("renderer stopped"))};return t.on("error",e),t.on("exit",()=>e(void 0)),this.worker=t,t}drop(t){for(let e of this.waiting.values())e.no(t);this.waiting.clear()}}class Tc{lines=new Map;run(t){let e=I5[t.job],n=this.lines.get(e);if(!n)n=new Fg,this.lines.set(e,n);return n.send(t)}close(){for(let t of this.lines.values())t.close();this.lines.clear()}}class Lg{lines;constructor(t){this.lines=Array.from({length:Math.max(1,t)},()=>new Fg)}async map(t){let e=[],n=0;return await Promise.all(this.lines.map(async(r)=>{while(n<t.length){let i=n++;try{e[i]=await r.send(t[i])}catch(s){e[i]=s instanceof Error?s:Error(String(s))}}})),e}close(){for(let t of this.lines)t.close()}}if(!O5&&aM)A5(aM);import{existsSync as N5,mkdtempSync as T5,readFileSync as H5,rmSync as cM,writeFileSync as F5}from"node:fs";import{tmpdir as L5}from"node:os";import{basename as lM,join as uM}from"node:path";var C5=6;class Cg{dir;made=[];of(t,e){this.dir??=T5(uM(L5(),"ttheme-tint-"));let n=uM(this.dir,`${lM(t,".png")}.${e.slice(1).toLowerCase()}.png`);if(!N5(n)){let r=new Uint8Array(H5(t));F5(n,au(r,e)??sr(ir(Ut(r)),e)),this.made.push(n);while(this.made.length>C5)cM(this.made.shift(),{force:!0})}return n}clear(){if(this.dir)cM(this.dir,{recursive:!0,force:!0});this.dir=void 0,this.made.length=0}}function fM(t,e,n,r,i){if(Ye(t)==="original")return e;let s=Hn(n,[...r]);return s.color===t.tone?e:i.of(e,s.color)}function dM(t,e){let n=lM(e);return t.find((r)=>n.startsWith(`${r.stem}.`)||n.startsWith(`${r.stem}@`))}var K5=2147483625,pM=2147483626,Jn=2147483627,z5=-1073741831,gM=-1073741830,D5=-1073741829,q5=4;function J5(t,e,n,r,i){let s=Math.trunc,o=n.col*r.w,a=n.row*r.h,c=s((Math.max(i.x,o)+r.w-1)/r.w),u=s(Math.min(i.x+i.w,o+n.cols*r.w)/r.w),f=s((Math.max(i.y,a)+r.h-1)/r.h),l=s(Math.min(i.y+i.h,a+n.rows*r.h)/r.h);if(u<=c||l<=f)return;return{col:c,row:f,cols:u-c,rows:l-f,x:s((c*r.w-i.x)*t/i.w),y:s((f*r.h-i.y)*e/i.h),w:s((u-c)*r.w*t/i.w),h:s((l-f)*r.h*e/i.h)}}function Y5(t){try{let e=B5(t,"r"),n=Buffer.alloc(24);return G5(e,n,0,24,0),j5(e),n.readUInt32BE(0)===2303741511?{width:n.readUInt32BE(16),height:n.readUInt32BE(20)}:void 0}catch{return}}class wf{ready=()=>{};cell={w:0,h:0};held;tints=new Cg;sent=new Map;placed=new Map;viewed="";renders;scratch;made=0;bands=new Map;home;name;views;banded;files;static of(t,e,n,r){if(Ft(t)||!Mo(t,r)||!(xo(t)||Yi(t)))return;return new wf(t,e,n)}constructor(t,e,n){this.home=e,this.name=n,this.views=Yi(t),this.banded=fl(t),this.files=dl(t)}get laid(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}load(){let t=V(this.home),e=Fe(t,this.name,U5()),n=[];try{n=Nt(t).palettes[this.name]?.pictures??[]}catch{}let r=e?dM(n,e.image):void 0;this.held=e&&r?{picture:r,image:e.image,opacity:e.opacity,cover:e.cover,at:Dt.indexOf(e.position)+1||5}:void 0}draw(t,e,n,r,i,s={col:0,row:0,cols:r,rows:i}){if(this.cell.w===0)return"";let o=t[0],a=this.look(t,e,n,s,!this.views||s.cols===r&&s.rows===i);if(this.views){let u=r*this.cell.w,f=i*this.cell.h,l=a?`${o}|${a.image}|${a.opacity}|${u}|${f}|${a.box.w}|${a.box.h}|${a.box.x}|${a.box.y}|${this.held?.at??5}`:`${o}||1|${u}|${f}|0|0|0|0|5`;if(l===this.viewed)return"";return this.viewed=l,Vi(l)}let c=this.layer(K5,z5,"f=24",Buffer.from(st(o)),s);if(a){let u=Math.max(0,Math.min(255,Math.round((1-a.opacity)*255)));c+=this.picture(a),c+=this.layer(pM,D5,"f=32",Buffer.from([...st(o),u]),s)}else c+=this.drop(Jn)+this.drop(pM);return c}resized(){this.sent.clear(),this.placed.clear(),this.viewed=""}clear(){let t=this.views&&this.viewed?Vi(""):"";for(let e of this.sent.keys())t+=Mc(e);return this.resized(),t}close(){let t=this.clear();if(this.tints.clear(),this.renders?.close(),this.scratch)hM(this.scratch,{recursive:!0,force:!0});return t}look(t,e,n,r,i){let s=this.held;if(!s)return;let o={name:this.name,...ae([...t]),waived:[...n]},a=fM(s.picture,s.image,o,e,this.tints),c=Y5(a);if(!c)return;let u=so(c.width,c.height,r.cols*this.cell.w,r.rows*this.cell.h,100,s.at,s.cover&&i),f={...u,x:u.x+r.col*this.cell.w,y:u.y+r.row*this.cell.h},l=J5(c.width,c.height,r,this.cell,f);if(!l)return;return{image:a,opacity:s.opacity,...c,box:f,rect:l}}layer(t,e,n,r,i){let s=r.toString("base64"),o=`${s}|${i.col}|${i.row}|${i.cols}|${i.rows}`;if(this.placed.get(t)===o)return"";return this.sent.set(t,o),this.placed.set(t,o),`\x1B_Ga=t,${n},s=1,v=1,i=${t},q=2;${s}\x1B\\\x1B[${i.row+1};${i.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${i.cols},r=${i.rows},C=1,z=${e},q=2\x1B\\`}picture(t){let{image:e,rect:n}=t;if(this.banded&&(2*n.y+n.h-t.height)**2>1){let s=this.band(t.image,n.y,n.h);if(!s.ready)return"";e=s.path,n={...n,y:0}}let r="";if(this.sent.get(Jn)!==e){let s=ef({id:Jn,path:e,row:0,col:0,cols:0,rows:0,z:gM},this.files);if(s===void 0)return"";r+=s,this.sent.set(Jn,e),this.placed.delete(Jn)}let i=`${n.col};${n.row};${n.cols};${n.rows};${n.x};${n.y};${n.w};${n.h}`;if(this.placed.get(Jn)!==i)r+=`\x1B[${n.row+1};${n.col+1}H\x1B_Ga=p,i=${Jn},p=${Jn},x=${n.x},y=${n.y},w=${n.w},h=${n.h},c=${n.cols},r=${n.rows},C=1,z=${gM},q=2\x1B\\`,this.placed.set(Jn,i);return r}drop(t){if(!this.sent.has(t))return"";return this.sent.delete(t),this.placed.delete(t),Mc(t)}band(t,e,n){let r=`${t}|${e}|${n}`,i=this.bands.get(r);if(i)return i;this.scratch??=_5(mM(W5(),"ttheme-edit-")),this.renders??=new Tc;let s={path:mM(this.scratch,`band-${++this.made}.png`),ready:!1};this.bands.set(r,s),this.renders.run({job:"band",from:t,to:s.path,y:e,height:n}).then(()=>{s.ready=!0,this.ready()}).catch(()=>{});for(let[o,a]of this.bands){if(this.bands.size<=q5)break;if(a.ready&&a.path!==this.sent.get(Jn))this.bands.delete(o),hM(a.path,{force:!0})}return s}}var Ss=50;function ot(t,e){return Ze(t,e)}function Hc(t){return Mt(t)>0.35?"#000000":"#ffffff"}function jg(t,e){return t.held!==void 0&&t.held-e.c>0.0005?t.held:void 0}function $f(t,e,n,r){let i=e.mode==="tune"&&e.channel===oe,s=e.ratio(),{floor:o}=e.partner(),a=(p)=>Math.round(Math.log(Math.max(1,p))/Math.log(21)*(n-1)),c=a(s),u=o===void 0?-1:a(o),f=r===void 0?-1:a(r),l=i?"━":"─",d=Array.from({length:n},(p,b)=>b===c?t.bold("●"):b===f?"○":b===u?"┃":b<u?t.dim(l):l).join(""),h=`${s.toFixed(2)}:1`.padStart(6),m={kind:"channel",channel:oe};return`${ot(m,i?t.bold("▸◐"):t.dim(" ◐"))} ${ot({kind:"bar",channel:oe},d)} ${ot(m,i?t.bold(h):t.dim(h))}`}function kf(t,e){if(!t.misses().has(e))return;if(Og(t.list,t.signature,t.waive,"bright-follows").includes(e))return e-F.length<8?"= makes the bright follow its normal":"= on the normal makes this follow it";return"f moves the colors the gate misses"}function yf(t,e,n){let r=Ig(t.list,t.signature,t.waive,e),i=jg(t,n);if(i!==void 0)r.push({ok:void 0,text:`Chroma ○ ${i.toFixed(3)} is held while you tune — ${n.c.toFixed(3)} fits this lightness and hue`});return r}function vf(t){let e=(n,r)=>n.toFixed(r).replace(/^0(?=\.)/,"");return`${e(t.l,2)} ${e(t.c,3)} ${t.h.toFixed(0).padStart(3)}°`}function bM(t){return`${t.l.toFixed(2)} ${t.c.toFixed(3)} ${t.h.toFixed(0).padStart(3)}°`}function V5(t,e,n,r=Ss){let i=Rg(e.list,e.signature,e.waive).sort((f,l)=>Number(f.ok!==!1)-Number(l.ok!==!1)),s=i.filter((f)=>f.ok===!1).length,o=(f)=>s===0&&f?t.ok(I.ok):qu(t,f),a=` ${t.dim("Gate")} ${s===0?t.dim("passes"):t.bold(`${s} ${s===1?"miss":"misses"}`)}`,c=r-4,u=i.flatMap((f)=>{let l=`${f.value} ${f.bound}`,d=` ${o(f.ok)} ${It(f.ok===!1?f.label:t.dim(f.label),t.dim(l),c-2)}`,h=[...new Set(f.slots)].map((b)=>Ke(b).name),m=f.slots[0],p=(b)=>m===void 0?b:ot({kind:"slot",slot:m},b);return h.length>0?[p(d),p(` ${t.dim(tt(h.join(" · "),c-2))}`)]:[p(d)]});return[s===0?a:It(a,`${t.bold("n")} ${t.dim("next miss")}`,r-2),...u.slice(0,Math.max(0,n-1))]}function wM(t,e){let n=t-F.length;if(n>=0)return e===String(n)||e===`B${n}`||e===`K${n}`;return t===3&&e==="s"||t===2&&e==="c"}function Sf(t,e,n,r){let i=r?wt("under"):"";if(n==="d")return`${t.fg(e.foreground)}${wt("dim")}${i}`;if(n==="b")return`${t.fg(e.foreground)}${wt("bold")}${i}`;if(n==="s")return`${t.bg(e.selection)}${t.fg(e.foreground)}${i}`;if(n==="c")return`${t.bg(e.cursor)}${i}`;let s=/^([BK]?)(\d+)$/.exec(n);if(!s)return`${t.fg(e.foreground)}${i}`;let o=e.ansi[Number(s[2])];if(s[1]==="K")return`${t.fg(e.ansi[0])}${t.bg(o)}${i}`;return`${t.fg(o)}${s[1]==="B"?wt("bold"):""}${i}`}function Fc(t,e,n,r,i){let s=e.length-1,o=Math.max(0,Math.min(s,n)),a=i===void 0?-1:Math.max(0,Math.min(s,i));if(!t.color)return e.map((c,u)=>u===o?"●":u===a?"○":r?"━":"─").join("");return e.map((c,u)=>{let f=c??"#000000";if(u===o)return`${t.bg(f)}${t.fg(Hc(f))}${I.on}${pe}`;if(u===a)return c?`${t.bg(c)}${t.fg(Hc(c))}${I.off}${pe}`:`${t.fg("#aaaaaa")}${I.off}`;return c?`${t.fg(c)}█`:`${t.fg(r?"#777777":"#555555")}░`}).join("").concat($t)}function Ef(t,e,n){return Array.from({length:n},(r,i)=>{let s=e.min+(e.max-e.min)*i/(n-1),o={...t,[e.key]:s};return Dn(o.l,o.c,o.h)?nn(o.l,o.c,o.h):void 0})}function Es(t,e,n,r){return Math.round((t-e)/(n-e)*(r-1))}function _g(t){return Rg(t.list,t.signature,t.waive).filter((e)=>e.ok===!1).length}function Lc(t,e,n,r){if(n<3)return[];let i=_g(e),s=i===0?" Gate ✓ passes ":` Gate ✗ ${i} · n next `;return[Qh(r,s,t.dim,i===0?t.ok:t.dim),...V5(t,e,n-1,r-1).slice(1).map((o)=>_e(t,o,r)),t.dim(Ct(r,"bottom"))]}function $M(t,e,n){let r=Math.min(46,n-4),i=e.unsaved(),s=[...i>0?[`${i} ${i===1?"color":"colors"} changed`]:[],...e.added>0?[`${e.added} ${e.added===1?"picture":"pictures"} added`]:[]],o=Kt("y",Ka(t,"Yes",e.quitFocus==="yes"?"focus":"idle")),a=Kt("n",Ka(t,"No",e.quitFocus==="no"?"focus":"idle",!0)),c=`${o} ${a}`,u=[So(t,"y","save"),So(t,"n","discard"),So(t,"esc","keep editing")].join(" "),f=(l)=>_e(t,l,r);return[Qh(r," Save changes? ",t.dim,t.bold),f(""),f(` ${s.length>0?s.join(" · "):"Unsaved changes"}`),f(""),f(`${" ".repeat(Math.max(0,Math.floor((r-2-z(c))/2)))}${c}`),f(""),f(` ${u}`),t.dim(Ct(r,"bottom"))]}var Mr=0.98,Cc=0.12,Z5=0.37,kM=0.74,X5=0.15,Q5=-1073741828,Bg=-1073741827,Gg=-1073741826,t4=-1073741825,e4=2147483584,n4=["panel","plane","hue","contrast","mark","hue-thumb","contrast-thumb","origin","hue-origin","contrast-origin"],r4=4096,Mf=new Map,i4=1024,s4=512;function jc(t,e){let n=Mf.get(e);if(n===void 0){if(Mf.size>=i4)Mf.clear();n=new Map,Mf.set(e,n)}let r=n.get(t);if(r===void 0){if(n.size>=s4)n.clear();r=Vo(t,e,Z5),n.set(t,r)}return r}function Of(t,e,n){let r=jc(t,n);return r>0.000001?Math.min(1,e/r):0}function _c(t,e){return{width:t,height:e,data:new Uint8Array(t*e*4)}}function $i(t,e,n,r,i){let s=r[3]*i;if(s<=0||e<0||n<0||e>=t.width||n>=t.height)return;let o=(n*t.width+e)*4,a=t.data;if(s>=1){a[o]=r[0],a[o+1]=r[1],a[o+2]=r[2],a[o+3]=255;return}let c=a[o+3]/255,u=s+c*(1-s);for(let f=0;f<3;f++)a[o+f]=Math.round((r[f]*s+a[o+f]*c*(1-s))/u);a[o+3]=Math.round(u*255)}function Er(t,e=1){return[...st(t),e]}function ea(t,e,n,r,i,s,o){let a=Math.abs(t-(n+i/2))-(i/2-o),c=Math.abs(e-(r+s/2))-(s/2-o);return Math.hypot(Math.max(a,0),Math.max(c,0))+Math.min(Math.max(a,c),0)-o}function Ms(t,e,n,r){let i=[],s=[],o=Math.max(0,Math.floor(r?.x??0)),a=Math.max(0,Math.floor(r?.y??0)),c=Math.min(t,Math.ceil(r?r.x+r.w:t)),u=Math.min(e,Math.ceil(r?r.y+r.h:e));for(let f=a;f<u;f++)for(let l=o;l<c;l++){let d=n(l+0.5,f+0.5);if(d>0.002)i.push(f*t+l),s.push(Math.min(1,d))}return{at:Uint32Array.from(i),cover:Float32Array.from(s)}}function xs(t,e,n){for(let r=0;r<e.at.length;r++){let i=e.at[r];$i(t,i%t.width,Math.floor(i/t.width),n,e.cover[r])}}function Ug(t,e){return(n,r)=>Math.max(0,0.5-ea(n,r,t.x,t.y,t.w,t.h,e))}function yM(t,e,n){return(r,i)=>Math.max(0,0.5-Math.abs(ea(r,i,t.x,t.y,t.w,t.h,e)+n/2)+n/2)}var xf=new Map;function o4(t,e,n,r){let i=`${e.w}x${e.h} ${EM({...t,ground:"#000000",ink:"#000000",accent:"#000000"})}`,s=xf.get(i);if(s)return s;let{panel:o}=t,a={x:e.w,y:0,w:o.cols*e.w,h:o.rows*e.h},c=Math.round(e.h*0.45),u=Math.round(e.h*0.18),f=e.h*0.6,l=Math.max(1,Math.round(e.h/22)),d=(N)=>({x:(N.col-o.col+1)*e.w,y:(N.row-o.row)*e.h}),h=Math.max(1,Math.round(e.h*0.08)),m=d(t.tabs),p={x:m.x,y:m.y+h,w:t.tabs.cols*e.w,h:e.h-2*h},b=Math.floor(t.tabs.cols/t.tabs.count)*e.w,$=Math.max(1,Math.round(h/2)),k={x:p.x+t.tabs.active*b+$,y:p.y+$,w:(t.tabs.active===t.tabs.count-1?p.w-t.tabs.active*b:b)-2*$,h:p.h-2*$},v=d(t.field),S={x:v.x,y:v.y+h,w:t.field.cols*e.w,h:e.h-2*h},M=t.divider===void 0?void 0:{x:a.x+e.w*0.6,y:(t.divider-o.row)*e.h,w:a.w-e.w*1.2,h:l},x={shadow:Ms(n,r,(N,R)=>{let T=ea(N,R,a.x,u,a.w,a.h,c);return T>0&&T<f?(1-T/f)**2:0}),fill:Ms(n,r,Ug(a,c),a),border:Ms(n,r,yM(a,c,l),a),track:Ms(n,r,Ug(p,p.h*0.3),p),segment:Ms(n,r,Ug(k,k.h*0.3),k),field:Ms(n,r,yM(S,S.h*0.3,l),S),divider:M&&Ms(n,r,()=>1,M)};if(xf.size>8)xf.clear();return xf.set(i,x),x}function a4(t){let e=Mt(t.ground)<0.18;return{dark:e,surface:At(t.ground,t.ink,e?0.07:0.04)}}function c4(t,e){let n=_c((t.panel.cols+2)*e.w,(t.panel.rows+1)*e.h),r=o4(t,e,n.width,n.height),{dark:i,surface:s}=a4(t);if(xs(n,r.shadow,[0,0,0,i?0.45:0.18]),xs(n,r.fill,Er(s)),xs(n,r.border,Er(t.ink,i?0.16:0.2)),xs(n,r.track,Er(t.ink,i?0.06:0.07)),xs(n,r.segment,Er(t.accent,i?0.24:0.2)),xs(n,r.field,Er(t.ink,i?0.22:0.28)),r.divider)xs(n,r.divider,Er(t.ink,i?0.12:0.16));return n}function u4(t,e,n){let r=_c(Math.round(t.cols*n.w),Math.round(t.rows*n.h)),{width:i,height:s,data:o}=r,a=Math.round(n.h*0.3),c=Math.max(1,(t.cols-1)*n.w),u=(h)=>Math.min(1,Math.max(0,(h+0.5-n.w/2)/c)),f=t.rows*2-1,l=(h)=>Mr-Math.min(1,Math.max(0,((h+0.5)/n.h*2-0.5)/f))*(Mr-Cc),d=[];for(let h=0;h<s;h++){if(h%2===0){let m=l(h+0.5),p=jc(m,e);d=Array.from({length:Math.ceil(i/2)},(b,$)=>Dn(m,u($*2+0.5)*p,e)??[0,0,0])}for(let m=0;m<i;m++){let b=(m<a||m>=i-a)&&(h<a||h>=s-a)?Math.min(1,Math.max(0,0.5-ea(m+0.5,h+0.5,0,0,i,s,a))):1;if(b<=0)continue;let $=d[m>>1],k=(h*i+m)*4;o[k]=$[0],o[k+1]=$[1],o[k+2]=$[2],o[k+3]=Math.round(b*255)}}return r}function SM(t,e){let n=Math.max(4,Math.round(t.h*0.42));return{top:Math.round((t.h-n)/2),height:n,width:e*t.w}}function l4(t,e){let n=_c(t.cols*e.w,e.h),{top:r,height:i,width:s}=SM(e,t.cols),o=Array.from({length:s},(a,c)=>{let f=Math.min(1,Math.max(0,((c+0.5)/e.w-0.5)/Math.max(1,t.cols-1)))*360;return Dn(kM,Vo(kM,f,X5),f)??[0,0,0]});for(let a=r;a<r+i;a++)for(let c=0;c<s;c++){let u=Math.min(1,Math.max(0,0.5-ea(c+0.5,a+0.5,0,r,s,i,i/2))),f=o[c];$i(n,c,a,[f[0],f[1],f[2],1],u)}return n}function f4(t,e,n){let r=_c(t.cols*n.w,n.h),{top:i,height:s,width:o}=SM(n,t.cols),a=t.floor===void 0?-1:Math.round((t.floor*(t.cols-1)+0.5)*n.w),c=Math.max(2,Math.round(s*0.45)),u=i+Math.round((s-c)/2);for(let f=u;f<u+c;f++)for(let l=0;l<o;l++){let d=Math.min(1,Math.max(0,0.5-ea(l+0.5,f+0.5,0,u,o,c,c/2))),h=a<0||l>=a;$i(r,l,f,Er(e,h?t.lit?0.5:0.36:0.14),d)}if(a>=0){let f=Math.max(2,Math.round(n.w/5));for(let l=i-1;l<i+s+1;l++)for(let d=a-Math.floor(f/2);d<a-Math.floor(f/2)+f;d++)$i(r,d,l,Er(e,0.85),1)}return r}function d4(t,e,n,r,i,s,o){let a=_c(t*o.w,e*o.h),c=Math.max(2,Math.round(i*0.3)),u=(l,d)=>Math.min(1,Math.max(0,l-d+0.5)),f=[0,0,0,0.5];for(let l=0;l<a.height;l++)for(let d=0;d<a.width;d++){let h=Math.hypot(d+0.5-n,l+0.5-r);if(s)$i(a,d,l,Er(s),u(i-c,h));else $i(a,d,l,f,u(i-c,h)-u(i-c-1,h));$i(a,d,l,f,u(i+1,h)-u(i,h)),$i(a,d,l,[255,255,255,1],u(i,h)-u(i-c,h))}return a}function ta(t,e,n,r,i,s,o=t4){let a=Math.floor((e-r-2)/s.w),c=Math.floor((e+r+2)/s.w),u=Math.floor((n-r-2)/s.h),f=Math.floor((n+r+2)/s.h),l={row:u,col:a,cols:c-a+1,rows:f-u+1},d=Math.round((e-a*s.w)*2)/2,h=Math.round((n-u*s.h)*2)/2;return{name:t,key:`${l.cols}x${l.rows} ${d},${h} ${r} ${i??"-"}`,box:l,z:o,paint:()=>d4(l.cols,l.rows,d,h,r,i,s)}}function EM(t){let{panel:e}=t,n=(i)=>`${i.row-e.row},${i.col-e.col},${i.cols}`,r=t.divider===void 0?"-":t.divider-e.row;return`${e.cols}x${e.rows} ${t.ground} ${t.ink} ${t.accent} ${n(t.tabs)},${t.tabs.active}/${t.tabs.count} ${n(t.field)} ${r}`}function h4(t,e){let n=`${e.w}x${e.h}`,r=Math.max(4,Math.round(e.h*0.34)),i=(l,d)=>(l.col+0.5+d*(l.cols-1))*e.w,s=(l)=>(l.row+0.5)*e.h,o=t.plane,a=(l)=>{let d=(Mr-l)/(Mr-Cc)*(o.rows*2-1);return o.row*e.h+(Math.min(o.rows*2-1,Math.max(0,d))+0.5)*e.h/2},c=a(o.l),u=[{name:"panel",key:`${n} ${EM(t)}`,box:{row:t.panel.row,col:t.panel.col-1,cols:t.panel.cols+2,rows:t.panel.rows+1},z:Q5,paint:()=>c4(t,e)},{name:"plane",key:`${n} ${o.cols}x${o.rows} ${o.h.toFixed(2)}`,box:o,z:Bg,paint:()=>u4(o,o.h,e.h>=24?{w:e.w/2,h:e.h/2}:e)},{name:"hue",key:`${n} ${t.hue.cols}`,box:{...t.hue,rows:1},z:Bg,paint:()=>l4(t.hue,e)},{name:"contrast",key:`${n} ${t.contrast.cols} ${t.contrast.floor??"-"} ${t.contrast.lit} ${t.ink}`,box:{...t.contrast,rows:1},z:Bg,paint:()=>f4(t.contrast,t.ink,e)},ta("mark",i(o,Of(o.l,o.c,o.h)),c,r,void 0,e),ta("hue-thumb",i(t.hue,t.hue.h/360),s(t.hue),r,t.hue.color,e),ta("contrast-thumb",i(t.contrast,t.contrast.at),s(t.contrast),r,t.contrast.color,e)],f=t.origin;if(f){let l=Math.max(3,Math.round(r*0.55));u.push(ta("origin",i(o,Of(f.l,f.c,f.h)),a(f.l),l,f.color,e,Gg),ta("hue-origin",i(t.hue,f.h/360),s(t.hue),l,f.color,e,Gg),ta("contrast-origin",i(t.contrast,f.at),s(t.contrast),l,f.color,e,Gg))}return u}function m4(t,e){let r=e.toString("base64").match(new RegExp(`.{1,${r4}}`,"g"))??[""];return r.map((i,s)=>{let o=s<r.length-1?1:0;return s===0?`\x1B_Ga=t,f=100,i=${t},m=${o},q=2;${i}\x1B\\`:`\x1B_Gm=${o},q=2;${i}\x1B\\`}).join("")}function vM(t,e,n){return`\x1B[${e.row+1};${e.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${e.cols},r=${e.rows},C=1,z=${n},q=2\x1B\\`}function Wg(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}class Pf{cell={w:0,h:0};shown=new Map;static of(t,e){return Ft(t)||!Mo(t,e)||!xo(t)?void 0:new Pf}get ready(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}draw(t){if(!this.ready)return"";let e=t?h4(t,this.cell):[],n="";for(let r of e)n+=this.put(r);for(let[r,i]of this.shown)if(!e.some((s)=>s.name===r))n+=Wg(i.id),this.shown.delete(r);return n}clear(){let t=[...this.shown.values()].map((e)=>Wg(e.id)).join("");return this.shown.clear(),t}put(t){let e=`${t.box.row};${t.box.col};${t.box.cols};${t.box.rows}`,n=this.shown.get(t.name);if(n&&n.key===t.key){if(n.at===e)return"";return n.at=e,vM(n.id,t.box,t.z)}let r=e4+n4.indexOf(t.name)*2,i=n?.id===r?r+1:r;return this.shown.set(t.name,{key:t.key,id:i,at:e}),`${m4(i,Je(t.paint()))}${vM(i,t.box,t.z)}${n?Wg(n.id):""}`}}var Bc=34,Kg=2,p4=6,Rf=3,g4=7,xM="↑↓ L ←→ C ⇧←→ H tab ◐";function zg(t,e,n){let r="",i=0;for(let s of t){let o=i+z(s);if(o>e&&i<n)r+=i>=e&&o<=n?s:" ".repeat(Math.min(o,n)-Math.max(i,e));if(i=o,i>=n)break}return r}function qg(t){return t.reduce((e,n)=>e+z(n.text),0)}function OM(t,e,n){let r=[],i=0;for(let s of t){let o=z(s.text),a=Math.max(e,i),c=Math.min(n,i+o);if(c>a)r.push({...s,text:zg(s.text,a-i,c-i)});i+=o}return r}function b4(t,e,n){let r=e+qg(n),i=[],s=[],o=0;for(let a of t){let c=o;o+=z(a.text);let u=Math.min(e,o);if(u>c)i.push({...a,text:zg(a.text,0,u-c)});let f=Math.max(r,c);if(o>f)s.push({...a,text:zg(a.text,f-c,o-c)})}return[...i,...n,...s]}function w4(t,e){return t.map((n)=>{let r=e&&n.sgr?`${n.sgr}${n.text}${ve}`:n.text;return n.target?Ze(n.target,r):r}).join("")}function PM(t){return t<F.length?F[t]:Sn[(t-F.length)%8]}function IM(t,e,n,r){let i=t.signature.includes(qn[n])?I.signature:e.color?I.swatch:" ";return e.color?`${e.fg(t.list[n])}${i}${r}`:i}function RM(t,e,n,r,i){return r.has(n)?e.bold(I.miss):t.changed(n)?e.color?`${wt("warn")}${I.on}${i}`:I.on:" "}function AM(t,e,n){return n?t.color?`${t.fg(e.cursor)}${I.gutter}${$t} `:`${I.gutter} `:" "}function $4(t,e,n,r,i,s){let o=r===t.slot(),a=o?e.fg(n.foreground):$t,c=PM(r).padEnd(12),u=t.lch[r],f=`${AM(e,n,o)}${IM(t,e,r,a)} ${o?e.bold(c):c}${bM(u)} ${RM(t,e,r,s,a)}`,l=tt(f,i);return ot({kind:"open",slot:r},o&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${l}${pe}`:l)}var Dg=8,NM=44;function Uc(t){return t>=NM?16:11}function MM(t,e,n,r,i,s){let o=Uc(i);if(!t.visible(r))return" ".repeat(o);let a=r===t.slot(),c=a&&e.color?e.fg(n.foreground):$t,u=t.lch[r],f=(p,b)=>p.toFixed(b).replace(/^0(?=\.)/,""),l=`${u.h.toFixed(0).padStart(3)}°`,d=i>=NM?`${f(u.l,2)} ${f(u.c,3)} ${l}`:`${f(u.l,2)} ${l}`,h=`${IM(t,e,r,c)} ${d}${RM(t,e,r,s,c)}`,m=a&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${h}${pe}`:h;return ot({kind:"open",slot:r},m)}function k4(t,e,n,r,i,s){let o=F.length+r,a=o+8,c=t.row===o,u=Sn[r].padEnd(Dg),f=t.linkOf(a)!==void 0?e.dim("⇠"):" ";return`${ot({kind:"open",slot:o},`${AM(e,n,c)}${c?e.bold(u):u}`)}${MM(t,e,n,o,i,s)}${f} ${MM(t,e,n,a,i,s)}`}function TM(t){return 14+2*Uc(t)}function y4(t){let e=Uc(t)>=16;return[[2," ANSI "],[2+Dg,e?" Normal 0–7 ":" Normal "],[5+Dg+Uc(t),e?" Bright 8–15 ":" Bright "]]}function v4(t,e,n,r){let i=t.slot(),s=Ke(i),o=TM(r),a=o-2,c=` ${s.name}${i>=F.length?` · ${s.about}`:""} `,u=[` ${e.dim(BE(i))}`];if(i>=2){let l=lE(n,i).filter((m)=>m.count>0),d=l.length>0?l.map((m)=>`${m.name} ${m.count}`).join(" · "):"none",h=Kt("w",t.where?Xe(e,"w where"):e.dim("w where"));u.push(It(` ${e.dim("Shown in")} ${d}`,`${h} `,a))}let f=i-F.length;if(f===0||f===7||f===8||f===15){let l=t.lch[i].l,d=t.lch[0].l,h=t.lch[1].l,m=Math.abs(l-d)<=Math.abs(l-h)?"the background":"the text";u.push(` ${e.dim(`L ${l.toFixed(2)} reads near ${m}`)}`)}return[e.dim(Ct(o,"top",[[2,c]])),...u.map((l)=>_e(e,l,o)),e.dim(Ct(o,"bottom"))]}function If(t,e){return Mr-t*(Mr-Cc)/(e*2-1)}function HM(t,e,n,r,i){let s=If(Math.max(0,Math.min(e*2-1,t*2-0.5)),e),o=Math.max(0,Math.min(1,(n-0.5)/Math.max(1,r-1)));return{lightness:s,chroma:o*jc(s,i)}}function S4(t,e,n,r,i,s){let o=(l)=>{let d=Math.max(0,Math.min(i*2-1,Math.round((Mr-l.l)/(Mr-Cc)*(i*2-1))));return{row:Math.floor(d/2),col:Math.round(Of(l.l,l.c,l.h)*(r-1))}},{row:a,col:c}=o(e),u=s?o(s):{row:-1,col:-1},f=(l,d)=>{return`#${(Dn(l,d*jc(l,e.h),e.h)??[0,0,0]).map((m)=>m.toString(16).padStart(2,"0")).join("")}`};return Array.from({length:i},(l,d)=>{let h="";for(let m=0;m<r;m++){if(d===a&&m===c){h+=t.color?`${t.bg(n)}${t.fg(Hc(n))}${I.on}${pe}`:I.on;continue}let p=m/Math.max(1,r-1);if(d===u.row&&m===u.col){let b=f(If(d*2+1,i),p);h+=t.color?`${t.bg(b)}${t.fg(Hc(b))}${I.off}${pe}`:I.off;continue}h+=t.color?`${t.fg(f(If(d*2,i),p))}${t.bg(f(If(d*2+1,i),p))}▀${pe}`:"·"}return ot({kind:"plane",row:d,rows:i},h)})}function FM(t,e,n){let r=t.slot(),i=t.lch[r],o=yf(t,r,i).filter((c)=>c.ok===!1||c.text.startsWith("Chroma ○")).flatMap((c)=>Ht(c.text,n-2).map((u,f)=>`${f===0?c.ok===!1?e.bold(I.miss):e.dim(I.off):" "} ${u}`)),a=kf(t,r);return[...o.slice(0,3),...a?[e.dim(a)]:[]]}function LM(t,e,n){let r=t.pair(t.slot());if(!r)return;let i=t.slot()>=r.bright,s=PM(i?r.normal:r.bright).toLowerCase(),o=`${r.lift>=0?"+":""}${r.lift.toFixed(2)}`,a=n-9,c=i?r.on?[`⇠ Linked to ${s} · L ${o}`,`⇠ ${s} · L ${o}`,`⇠ ${s}`]:[`Not linked to ${s}`,"Not linked"]:r.on?[`Bright follows · L ${o}`,"Bright follows"]:["Its bright moves on its own","Moves on its own"],u=c.find((f)=>z(f)<=a)??c.at(-1)??"";return It(e.dim(u),Kt("l",`${e.bold("l")} ${e.dim(r.on?"unlink":"link")}`),n)}function CM(t,e,n){let r=t.slot(),i=t.list[r],s=t.lch[r],o=t.typing!==void 0?e.bold(`${t.typing}▏`):Kt("#",e.bold(UE(t.format,i,s))),a=t.start[r],c=e.color?`${e.fg(a)}${I.swatch}${$t} `:"";return It(o,a!==i?e.dim(`was ${c}${a}`):"",n)}function E4(t,e,n,r){let i=t.slot(),s=t.lch[i],o=t.list[i],a=n-4,c=e.dim("│"),u=(x)=>`${c} ${tt(x,a)} ${c}`,f=LM(t,e,a),l=6+(f?1:0),d=FM(t,e,a).slice(0,Math.max(0,r-l-Rf)),h=Math.max(Rf,Math.min(p4,r-l-d.length)),m=" L × C ",p=` H ${s.h.toFixed(0)}° `,b=Math.max(0,n-4-z(" L × C ")-z(p)),$=t.origin(),k=vn[2],v=(x,N)=>ot({kind:"format",format:N},t.format===N?Xe(e,x):e.dim(` ${x} `)),S=tt(` ${xM} `,n-4,!1);return{lines:[`${e.dim("╭─")}${e.dim(" L × C ")}${e.dim("─".repeat(b))}${e.dim(p)}${e.dim("─╮")}`,...S4(e,s,o,a,h,$?.lch).map((x)=>u(x)),u(ot({kind:"bar",channel:2},Fc(e,Ef(s,k,a),Es(s.h,k.min,k.max,a),t.mode==="tune"&&t.channel===2,$&&Es($.lch.h,k.min,k.max,a)))),u($f(e,t,Math.max(8,a-11),$?.ratio)),u(`${v("Hex","hex")} ${v("RGB","rgb")} ${v("OKLCH","oklch")}`),u(CM(t,e,a)),...f?[u(f)]:[],...d.map((x)=>u(x)),`${e.dim("╰─")}${e.dim(S)}${e.dim("─".repeat(Math.max(0,n-4-z(S))))}${e.dim("─╯")}`].map((x)=>ot({kind:"picker"},x))}}var Gc=[["Hex","hex"],["RGB","rgb"],["OKLCH","oklch"]];function M4(t,e,n,r){let i=t.lch[t.slot()],s=n-2,o=LM(t,e,s),a=6+(o?1:0),c=FM(t,e,s).slice(0,Math.max(0,r-a-Rf)),u=Math.max(Rf,Math.min(g4,r-a-c.length)),f=(x)=>` ${tt(x,s)} `,l=[f(It(e.dim("L × C"),e.dim(`H ${i.h.toFixed(0)}°`),s)),...Array.from({length:u},(x,N)=>f(ot({kind:"plane",row:N,rows:u}," ".repeat(s))))],d=l.length;l.push(f(ot({kind:"bar",channel:2}," ".repeat(s))));let h=l.length,m=t.mode==="tune"&&t.channel===oe,p={kind:"channel",channel:oe},b=`${t.ratio().toFixed(2)}:1`.padStart(8),$=s-11;l.push(f(`${ot(p,m?e.bold("◐"):e.dim("◐"))} ${ot({kind:"bar",channel:oe}," ".repeat($))} ${ot(p,m?e.bold(b):e.dim(b))}`));let k=l.length,v=Math.floor(s/Gc.length);l.push(f(Gc.map(([x,N],R)=>{let T=R===Gc.length-1?s-v*R:v,_=Math.floor((T-z(x))/2),W=`${" ".repeat(_)}${x}${" ".repeat(T-_-z(x))}`,B=t.format===N?e.color?e.accent(e.bold(W)):`[${x}]`.padEnd(T):e.dim(W);return ot({kind:"format",format:N},B)}).join("")));let S=l.length;l.push(f(` ${CM(t,e,s-2)} `));let M=o?l.length:void 0;if(o)l.push(f(o));return l.push(...c.map((x)=>f(x)),f(e.dim(xM))),{lines:l.map((x)=>ot({kind:"picker"},x)),parts:{plane:{row:1,col:1,cols:s,rows:u},hue:{row:d,col:1,cols:s,rows:1},contrast:{row:h,col:3,cols:$,rows:1},tabs:{row:k,col:1,cols:s,rows:1},field:{row:S,col:1,cols:s,rows:1},divider:M}}}function x4(t,e,n,r,i,s){let o=t.slot(),a=t.lch[o],c=t.list[o],u=(h)=>({row:r+h.row,col:i+h.col,cols:h.cols,rows:h.rows}),f=(h)=>Math.log(Math.max(1,h))/Math.log(21),l=t.partner().floor,d=t.origin();return{panel:{row:r,col:i,cols:n.plane.cols+2,rows:s},ground:e.background,ink:e.foreground,accent:e.cursor,plane:{...u(n.plane),h:a.h,l:a.l,c:a.c},hue:{...u(n.hue),h:a.h,color:c},contrast:{...u(n.contrast),at:f(t.ratio()),floor:l===void 0?void 0:f(l),color:c,lit:t.channel===oe},tabs:{...u(n.tabs),active:Gc.findIndex(([,h])=>h===t.format),count:Gc.length},field:u(n.field),divider:n.divider===void 0?void 0:r+n.divider,origin:d&&{...d.lch,color:d.hex,at:f(d.ratio)}}}function O4(t,e,n,r,i,s,o,a){let u=s??1,f=o-1-u,l=u-2,d=12+2*Uc(r)-Kg,h=a?M4:E4,m=h(t,e,d,Number.POSITIVE_INFINITY),p=m.lines.length<=f||m.lines.length>l&&f>=l,b=p?f:l,$=m.lines.length<=b?m:h(t,e,d,b),k=p?u+1:u-$.lines.length,v=Array.from({length:o},(S,M)=>i[M]??"");return $.lines.forEach((S,M)=>{let x=k+M;if(x>=0&&x<o)v[x]=zu(v[x],Kg,S)}),{lines:v,art:$.parts&&x4(t,n,$.parts,k,Kg,$.lines.length)}}function P4(t,e,n,r,i){let s=r.side,o=_g(t),a=t.changedOnly?e.warn(I.on):" ",c=o===0?e.ok("Gate ✓"):e.bold(`Gate ✗ ${o}`),u=It(` ${e.bold("Colors")} ${c}`,Kt("m",`${t.changedOnly?e.bold("⧩ changed"):e.dim("⧩ changed")}${a} `),s),f=i-1,l=t.misses(),d=TM(s),h=[],m,p=[...F.keys()].filter((k)=>t.visible(k));if(p.length>0){h.push(e.dim(Ct(d,"top",[[2," Base "]])));for(let k of p){if(k===t.slot())m=h.length;h.push(_e(e,$4(t,e,n,k,d-2,l),d))}}let b=[...Sn.keys()].filter((k)=>t.visible(F.length+k)||t.visible(F.length+k+8));if(b.length>0){h.push(e.dim(Ct(d,p.length>0?"mid":"top",y4(s))));for(let k of b){if(t.row===F.length+k)m=h.length;h.push(_e(e,k4(t,e,n,k,s,l),d))}}if(p.length>0||b.length>0)h.push(e.dim(Ct(d,"bottom")));if(t.visible(t.slot()))h.push(...v4(t,e,r,s));let $=Lc(e,t,f-h.length,d);return h.push(...Array.from({length:Math.max(0,f-h.length-$.length)},()=>""),...$),{lines:[u,...h.slice(0,f)],anchor:m===void 0?void 0:m+1}}function I4(t,e,n){let r=`${e.accent(I.current)} ${e.bold(t.options.title)} ${e.dim(`· ${t.options.name}`)}`,i=t.dirty(),s=t.changes(),o=e.warn(I.on),a=i?`${o} ${e.dim(s>0?`unsaved · ${s} changed`:"unsaved")}`:"",c=[t.resettable()?Kt("R",e.dim("Reset")):"",i?Kt("s",Xe(e,"Save")):""].filter(Boolean).join(" "),u=[r,a,c].filter(Boolean).join(" "),f=(h,m,p)=>Kt(h,p?Xe(e,m):e.dim(m)),d=[...t.options.find||t.pictures>0?[f("b",`▣ ${t.pictures>0?`${t.pictures} `:""}Picture`,t.pic&&(t.pictures>0||!!t.options.find))]:[],...t.options.exports?[f("x","Export ▾",t.menu==="export")]:[]].join(" ");return It(u,`${d} `,n)}var R4={kind:"open",slot:0};function A4(t,e,n){return t.color?`${n?Qk:t.bg(e.background)}${t.fg(e.foreground)}`:""}function N4(t,e,n,r,i,s){let o=Ic(r),a=A4(e,n,s),c=t.slot();return Array.from({length:r.rows},(u,f)=>{let l=[{text:" ",sgr:a},...(o[f]??[]).map((m,p)=>{let b=i&&i.pane===r.id&&i.line===f&&i.run===p,$=e.color?b?`${a}${e.bg(n.foreground)}${e.fg(n.background)}`:`${a}${Sf(e,n,m.role,hg(m.role,c))}${t.where&&!dg(m.role,c)?wt("dim"):""}`:"";return{text:m.text,sgr:$,target:{kind:"run",spot:{pane:r.id,line:f,run:p}}}})],d=OM(l,0,r.width-1),h=r.width-qg(d);return h>0?[...d,{text:" ".repeat(h),sgr:a,target:R4}]:d})}function T4(t,e,n){let r=t.slotsHere();if(!r)return;let i=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",s=e.color?`${i}${wt("dim")}`:"",o=(l)=>({text:l,sgr:s}),a="┌ Slots here ",c="└ enter its slot · esc ",u=[["text",r.text]];if(r.ground!==r.text)u.push(["ground",r.ground]);return[[o(`${a}${"─".repeat(Bc-z(a)-1)}┐`)],...u.map(([l,d])=>{let h={kind:"open",slot:d},m=t.shown()[d],p=d<F.length?"":Ke(d).about;return[{text:"│ ",sgr:s,target:h},{text:l.padEnd(7),sgr:s,target:h},{text:I.swatch,sgr:e.color?`${i}${e.fg(m)}`:"",target:h},{text:" ",sgr:i,target:h},{text:Ke(d).name.slice(0,14).padEnd(14),sgr:i,target:h},{text:p.padEnd(Bc-27),sgr:s,target:h},{text:" │",sgr:s,target:h}]}),[o(`${c}${"─".repeat(Bc-z(c)-1)}┘`)]].map((l)=>OM(l,0,Bc))}function H4(t,e,n){if(!t.menu)return;let r=t.menu==="export"?["Share code","Add command","Palette file"]:["Another palette","A share code"],i=24,s=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",o=e.color?`${s}${wt("dim")}`:"",a=t.menu==="export"?"Copy ":"Take from ";return[[{text:`┌ ${a}${"─".repeat(Math.max(0,i-3-a.length))}┐`,sgr:o}],...r.map((c,u)=>{let f=u===t.entry,l={kind:"entry",index:u};return[{text:"│",sgr:o},{text:` ${f?"▌":" "} ${c.padEnd(i-6)}`,sgr:f&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${wt("bold")}`:s,target:l},{text:"│",sgr:o}]}),[{text:`└${"─".repeat(i-2)}┘`,sgr:o}]]}var F4=["#ff5f57","#febc2e","#28c840"];function L4(t,e,n,r){let i=e.color?`${e.bg(jM(n))}${e.fg(n.foreground)}`:"",s=uE(),o=(t.scene%s.length+s.length)%s.length,a=[{text:" ",sgr:i},...F4.flatMap((u)=>[{text:"●",sgr:e.color?`${i}${e.fg(u)}`:""},{text:" ",sgr:i}]),{text:" ",sgr:i},...s.flatMap((u,f)=>{let l={kind:"scene",scene:f};return[f===o?{text:` ${u} `,sgr:e.color?`${i}${e.bg(Di(n.background,n.foreground,"tab"))}${wt("bold")}`:"",target:l}:{text:` ${u} `,sgr:e.color?`${i}${wt("dim")}`:"",target:l},{text:" ",sgr:i}]})],c="⇧←→ ";return[...a,{text:" ".repeat(Math.max(0,r-qg(a)-z("⇧←→ "))),sgr:i},{text:"⇧←→ ",sgr:e.color?`${i}${wt("dim")}`:""}]}function jM(t){return Di(t.background,t.foreground,"bar")}function C4(t,e,n){let{frame:r}=n,i=Di(e.background,e.foreground,"line"),s=t.color?`${t.bg(_M(e))}${t.fg(i)}`:"",o=t.color?`${t.bg(jM(e))}${t.fg(i)}`:"",a=(u,f)=>u===r.row||u===r.row+r.rows-1||f===r.col||f===r.col+r.cols-1,c=[];for(let[u,f]of pE(n.rules))for(let[l,d]of f)c.push([u,l,[{text:d,sgr:a(u,l)?s:o}]]);return c}function _M(t){return Di(t.background,t.foreground,"stage")}function BM(t,e){return Pc(t,e,0)?.inner}function GM(t,e,n,r,i={}){let s=Pc(e,n,t.scene);if(!s)return;let o=Se(r),a=t.shown(),c=ae(a),u=ae(i.chrome?[...i.chrome]:t.list),f=P4(t,o,u,s,n-1),l=t.mode==="tune"?O4(t,o,u,s.side,f.lines,f.anchor,n-1,r&&i.art===!0):{lines:f.lines,art:void 0},d=l.lines,h=i.behind===!0,m=t.inspect?of(s,t.spot):void 0,p=o.color?o.bg(_M(u)):"",b=Array.from({length:n-3},()=>[{text:" ".repeat(s.width),sgr:p}]),$=(T,_,W)=>{let B=T-2;if(B>=0&&B<b.length)b[B]=b4(b[B],_,W)},k=s.side+1;for(let[T,_,W]of C4(o,u,s))$(T,_-k,W);for(let T of s.tiles)N4(t,o,c,T,m,h).forEach((_,W)=>{$(T.row+W,T.col-k,_)});$(s.title.row,s.title.col-k,L4(t,o,u,s.title.cols));let v=m?T4(t,o,c):void 0;if(m&&v){let T=s.tiles.find((W)=>W.id===m.pane),_=Ic(T)[m.line]?.[m.run];if(_){let W=Math.max(0,Math.min(T.col-k+1+_.col,s.width-Bc)),B=T.row+m.line,L=B+1,gt=L+v.length-2>n-2?B-v.length:L;v.forEach((Zt,it)=>{$(gt+it,W,Zt)})}}let S=H4(t,o,c);if(S){let T=Math.max(0,s.width-24-(t.menu==="import"?12:2));S.forEach((_,W)=>{$(2+W,T,_)})}let M=I4(t,o,s.width),x=o.dim("─".repeat(s.width)),N=o.dim("│");return{lines:Array.from({length:n-1},(T,_)=>{let W=_===0?M:_===1?x:w4(b[_-2]??[],r);return`${tt(d[_]??"",s.side)}${N}${W}`}),art:l.art}}var Yg=80,Vg=24,Jg=11;function j4(t,e,n,r){let i=jg(e,n);return vn.map((s,o)=>{let a=e.mode==="tune"&&o===e.channel,c=n[s.key],u=`${c.toFixed(s.digits)}${s.wraps?"°":""}`.padStart(6),f=Fc(t,Ef(n,s,r),Es(c,s.min,s.max,r),a,s.key==="c"&&i!==void 0?Es(i,s.min,s.max,r):void 0),l=s.key.toUpperCase(),d={kind:"channel",channel:o};return`${ot(d,a?t.bold(`▸${l}`):t.dim(` ${l}`))} ${ot({kind:"bar",channel:o},f)} ${ot(d,a?t.bold(u):t.dim(u))}`})}function _4(t,e){if(e.mode!=="tune"||e.slot()<F.length)return[];let n=Zo.map((i)=>ot({kind:"scope",scope:i},i!==e.scope?t.dim(i):Xe(t,i))),r=e.scoped().length;return[`${t.dim("Scope")} ${n.join(" ")}`,t.dim(r>1?`${r} slots move by the same step, each keeping its own color`:"This slot moves alone · a widens it")]}var UM={background:(t)=>t.background,foreground:(t)=>t.foreground,hue:(t)=>t.cursor,tint:(t)=>t.background,lightness:(t)=>t.ansi[4],chroma:(t)=>t.ansi[1],brights:(t)=>t.ansi[12]};function B4(t){return`oklch ${t.l.toFixed(3)} ${t.c.toFixed(3)} ${t.h.toFixed(0)}°`}function G4(t,e){return`${t.dim("oklch")} ${t.bold(`${e.l.toFixed(3)} ${e.c.toFixed(3)} ${e.h.toFixed(0)}°`)}`}function U4(t,e,n,r=Ss){let i=e.misses(),s=ae(e.list),o=e.slot(),a=(l)=>{let d=e.list[l],h=l===o,m=e.signature.includes(qn[l])?I.signature:t.color?I.swatch:" ",p=i.has(l)?I.miss:e.tone&&e.changed(l)?I.on:" ",$=`${t.color?`${t.fg(d)}${m}${h?t.fg(s.foreground):$t} `:`${m} `}${vf(e.lch[l])}${p}`;if(!h)return ot({kind:"slot",slot:l},` ${$}`);return ot({kind:"slot",slot:l},t.color?`${t.bg(s.selection)}${t.fg(s.foreground)} ${$}${pe}`:`›${$}`)},c=(l)=>l?t.color?`${t.fg(s.cursor)}${I.gutter}${$t} `:`${I.gutter} `:" ",u=[t.dim(Ct(r,"top",[[2," Base "]])),...F.map((l,d)=>{let h=d===e.row,m=l.padEnd(10);return _e(t,`${ot({kind:"slot",slot:d},`${c(h)}${h?t.bold(m):m}`)}${a(d)}`,r)}),t.dim(Ct(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])),...Sn.map((l,d)=>{let h=F.length+d,m=h===e.row,p=l.padEnd(10),b=ot({kind:"slot",slot:h+(e.col===1?8:0)},`${c(m)}${m?t.bold(p):p}`);return _e(t,`${b}${a(h)}${a(h+8)}`,r)}),t.dim(Ct(r,"bottom"))],f=Lc(t,e,n-u.length,r);return[...u,...Array.from({length:Math.max(0,n-u.length-f.length)},()=>""),...f]}function W4(t,e,n){let r=ae(e.list),i=[` ${t.dim("Seeds")}`,...bs.map((s,o)=>{let a=o===e.field,c=e.seeds[s.key],u=Array.from({length:Jg},(b,$)=>{let k=s.min+(s.max-s.min)*$/(Jg-1);return UM[s.key](wi({...e.seeds,[s.key]:k}))}),f=Fc(t,u,Es(c,s.min,s.max,Jg),a),l=`${c.toFixed(s.digits)}${s.wraps?"°":""}`.padStart(6),d=UM[s.key](r),h=a?t.color?`${t.fg(r.cursor)}${I.gutter}${$t} `:`${I.gutter} `:" ",m=s.label.padEnd(17),p={kind:"field",field:o};return`${ot(p,`${h}${a?t.bold(m):m}`)}${ot({kind:"seed",field:o},f)}${ot(p,` ${l} ${t.color?`${t.fg(d)}${I.swatch}${$t} `:""}${t.dim(d)}`)}`}),"",...Ht("Seven seeds grow all twenty colors, each accent on the hue its ANSI role reads as — whatever the seeds, they pass the gate. enter moves on to tune each slot, and the seeds stay behind.",Ss-4).map((s)=>` ${t.dim(s)}`),""];return[...i,...Lc(t,e,n-i.length,Ss)]}function DM(t,e,n,r,i,s){let o=Yt.indexOf(qi(i)),a=Yt.map((u,f)=>ot({kind:"scene",scene:f},f!==o?t.dim(u.name):Xe(t,u.name))).join(" "),c=`${t.bg(e.background)}${t.fg(e.foreground)}`;return[It(a,t.dim("⇧←→"),n),...qi(i).lines.values().map((u)=>Eo(u,n-2)).filter((u)=>u!==void 0).take(Math.max(0,r-1)).map((u)=>{let f=t.color?u.map(([l,d])=>`${Sf(t,e,d,wM(s,d))}${l}${ve}${c}`).join(""):u.map(([l])=>l).join("");return`${c} ${tt(f,n-2)} ${t.color?ve:""}`})]}var K4=["Bk","Rd","Gr","Ye","Bl","Ma","Cy","Wh"];function WM(t,e,n,r,i,s,o){let a=(i-s)/(o-1),c=qM(e),u=ae(n),f=(l)=>Math.min(o-1,Math.max(0,Math.round((i-r(Ot(l)))/a)));return Array.from({length:o},(l,d)=>{let h=d%2===0?(i-a*d).toFixed(i>=1?1:2).replace(/^0(?=\.\d\d)/,""):"",m=Array.from({length:8},(p,b)=>{let $=[" "," "," "," "," "],k=u.ansi[b],v=u.ansi[b+8],S=f(k)===d,M=f(v)===d,x=(R)=>{if(R===1&&S)return t.color?`${t.fg(k)}${I.on}`:I.on;if(R===3&&M)return t.color?`${t.fg(v)}${I.off}`:I.off;return $[R]},N=[0,1,2,3,4].map(x).join("");return c.has(b)?t.color?`${t.bg(u.selection)}${N}${pe}`:N:`${N}${t.color?$t:""}`});return`${h.padStart(4)} ${t.dim(d%2===0?"┤":"│")}${m.join("")}`})}function qM(t){let e=t.mode==="tune"?t.scoped():[t.slot()];return new Set(e.filter((n)=>n>=F.length).map((n)=>(n-F.length)%8))}function z4(t,e){let n=qM(e);return` ${K4.map((r,i)=>n.has(i)?t.bold(` ${r} `):t.dim(` ${r} `)).join("")}`}function D4(t,e){let n=ae(e),r=Array.from({length:40},(s,o)=>{let a=o*9+4.5,c=-1,u=999;for(let[f,l]of Object.entries(Re)){let d=Ae(a,l.center);if(d<=l.width&&d<u)u=d,c=Number(f)}return c<0?" ":t.color?`${t.fg(n.ansi[c])}─`:"─"}).join(""),i=(s,o)=>{let a=Array.from({length:40},()=>" ");for(let c of Object.keys(Re).map(Number)){let u=n.ansi[c+s],f=Math.min(39,Math.round(Ot(u).h/9));a[f]=t.color?`${t.fg(u)}${o}${$t}`:o}return` ${a.join("")}`};return[`${t.bold("Hue")} ${t.dim("0° 90° 180° 270° 360°")}`,`${t.dim("bands")} ${r}${t.color?$t:""}`,i(0,I.on),i(8,I.off)]}function q4(t,e,n){let r=Sr(n,e.signature,e.waive),i=(a)=>Ke(F.length+a).name,s=(a)=>Ot(n[F.length+a]).h.toFixed(0),o=[...tr(r).filter(({gap:a})=>a>25).map(({normal:a,gap:c})=>`${i(a)} ${s(a)}° → bright ${s(a+8)}° · ${c.toFixed(0)}° apart · ≤ 25°`),...Nr(r).map(({slot:a,over:c})=>{let u=Re[Mn(a)];return`${i(a)} ${s(a)}° · ${c.toFixed(0)}° outside ${u.name} ${u.center}±${u.width}°`}),...er(r).map(([a,c])=>`${i(a)} and ${i(c).toLowerCase()} read as one color`)];return o.length>0?o.map((a)=>`${t.bold(I.miss)} ${a}`):[t.dim(`${I.ok} Every accent keeps its role and its bright`)]}function KM(t,e,n,r,i){let s=e.shown(),o=Math.max(...s.slice(F.length).map((u)=>Ot(u).c)),a=Math.max(0.2,Math.ceil(o/0.05)*0.05),c=[It(t.bold("Lightness"),t.dim("● normal ○ bright"),n),...WM(t,e,s,(u)=>u.l,1,0.3,8),z4(t,e)];if(i)c.push("",t.bold("Chroma"),...WM(t,e,s,(u)=>u.c,a,0,5),"",...D4(t,s));return[...c,...q4(t,e,s)].slice(0,r)}function J4(t,e,n){let r=(i,s)=>ot({kind:"view",view:s},e.view!==s?t.dim(` ${i} `):Xe(t,i));return It(`${r("Slot","slot")}${r("Relations","relations")}`,Kt("g",`${t.bold("g")} ${t.dim("switch")}`),n)}function Y4(t,e,n,r){let i=e.slot(),s=e.list[i],o=e.lch[i],a=e.start[i],{name:c,about:u}=Ke(i),f=e.signature.includes(qn[i]),l=Math.max(8,Math.min(64,n-12));if(e.view==="relations"&&e.mode!=="tune")return[J4(t,e,n),"",...KM(t,e,n,r-2,!0)];let d=i>=F.length?t.dim("Uses underlined below"):f?t.dim("◆ signature"):"",h=[It(`${t.bold(c)} ${t.dim(u)}`,e.view==="relations"?"":d,n),""],m=t.color?`${t.fg(s)}${"█".repeat(8)}${$t} `:"",p=e.typing!==void 0?`${t.bold(`${e.typing}▏`)}`:void 0,[b,$,k]=st(s);if(h.push(`${m}${p??G4(t,o)}`,`${m}${t.dim(`${s} · rgb ${b} ${$} ${k}`)}`),e.view!=="relations"){let M=t.color?`${t.fg(a)}${I.swatch}${$t} `:"";h.push(`${m}${a!==s?t.dim(`was ${M}${B4(e.lchOf(a)).slice(6)} · ${a}`):t.dim("as it opened")}`)}if(h.push("",...j4(t,e,o,l),$f(t,e,l),..._4(t,e)),e.view==="relations")return h.push("",...KM(t,e,n,r-h.length-1,!1)),h;h.push("",...yf(e,i,o).flatMap((M)=>Ht(M.text,n-2).map((x,N)=>`${N===0?qu(t,M.ok):" "} ${M.ok===!1?x:t.dim(x)}`)));let v=kf(e,i);if(v)h.push(t.dim(` ${v}`));let S=r-h.length-1;if(S>=3)h.push("",...DM(t,ae(e.shown()),n,S,e.scene,i));return h}function V4(t,e,n,r){return[It(`${t.bold("Sample")} ${t.dim("what the seeds grow")}`,"",n),"",...DM(t,ae(e.list),n,r-2,e.scene,-1)]}var Z4=[["Slots","↑↓ slot · ←→ normal or bright · home end · pgup the base colors · pgdn the ANSI ones · n N the next and last miss"],["Tune","enter or tab opens the picker over the list, under the slot · ↑↓ lightness · ←→ chroma · ⇧←→ hue by 5, , . by 1 · pgup pgdn lightness ×5 · tab ◐ contrast · home end the ends · 0-9 jump · enter keeps · esc undoes · a click outside it keeps"],["Contrast","◐ moves lightness until the ratio to the color it is read against changes · home the gate’s floor · 1-9 that ratio"],["Chroma","stops at the sRGB edge · what lightness or hue takes away comes back while you tune, where it fits again (○)"],["Scope","a while tuning: this, pair, normals, brights or accents — the slots in it move by the same step, each keeping its own color"],["Relations","g shows the lightness, chroma and hue of every ANSI color at once, and the relations the gate checks"],["Sample","⇧←→ another tab · the slot under the cursor is underlined where it is used · w dims the rest"],["Inspect","i, or a click on the sample, finds the slots a spot uses · ←→↑↓ move · enter goes to the slot · esc leaves"],["Link","l makes a bright follow its normal — tuning the normal moves it, tuning the bright alone unlinks it · = snaps it to its normal"],["Filter","m only the slots that changed · n and N walk the gate misses listed under the slots"],["Export","x copies the share code, an add command or the palette file · I takes colors from another palette or a share code"],["Type","# then #rrggbb, rgb(r g b) or oklch(l c h) — a paste works too"],["Slot","c copies · v pastes · r puts it back as it opened, R all of them · = the bright follows its normal · * marks it a signature color"],["Palette","f moves the colors the gate misses · o takes another palette’s colors"],["Gate","✗ marks every slot whose own checks miss, and each miss names its slots"],["History","u undo · ctrl+r redo"],["Pictures","p finds one on the boorus, tried on in these colors · b shows or hides it behind the editor · drop a picture on the window, or paste one, its path or its link · ctrl+v takes the clipboard’s"],["Compare","space shows the colors you started from, on the terminal too"],["Save","s saves · esc asks first when something changed: y saves and leaves, n leaves without saving, esc keeps editing"]];function X4(t,e,n){return[` ${t.bold("Help")}`,"",...Z4.filter(([r])=>r!=="Pictures"||e.options.find).flatMap(([r,i])=>Ht(i,n-16).map((s,o)=>` ${t.bold((o===0?r:"").padEnd(11))} ${s}`))]}function Q4(t,e,n,r){let i=e.choices(),s=e.options.palettes?.length??0,o=e.filter?`${t.bold(e.filter)}▏`:t.dim("type to filter"),a=r-2,c=Math.max(0,Math.min(e.pick-Math.floor(a/2),i.length-a)),u=Math.min(40,Math.max(12,...i.map((f)=>z(f.name))));return[It(` ${t.bold("Take colors from")} ${o}`,t.dim(`${i.length}/${s}`),n),"",...i.slice(c,c+a).map((f,l)=>{let d=c+l===e.pick,h=f.colors,m=t.color?`${t.bg(h.background)} ${h.ansi.map(($)=>`${t.fg($)}${I.swatch}`).join("")} ${t.fg(h.foreground)}Aa ${pe}`:"",p=d?"▌ ":" ",b=f.name.padEnd(u);return ot({kind:"choice",index:c+l},`${p}${d?t.bold(b):b} ${m}`)}),...i.length===0?[` ${t.dim(`No palettes match '${e.filter}'`)}`]:[]]}var tj=new Set(["enter","s","?","g","a","i"]);function zM(t,e,n){let r="EDIT",i="",s=[],o="";if(e.quitting)r="EDIT (QUIT)",i="Save changes?",s=[["←→","choose"],["enter","confirm"],["y","save"],["n","discard"]],o="esc keep editing";else if(e.typing!==void 0)r="EDIT (TYPE)",i=t.dim("#rrggbb, rgb(r g b) or oklch(l c h)"),s=[["enter","set"],["ctrl+u","clear"]],o="esc back";else if(e.overlay==="keys")r="HELP",o="any key closes";else if(e.overlay==="open")r="EDIT (OPEN)",s=[["↑↓","palette"],["a-z","filter"],["enter","take its colors"]],o="esc close";else if(e.menu)r=e.menu==="export"?"EDIT (EXPORT)":"EDIT (IMPORT)",s=[["↑↓","item"],["enter","choose"]],o="esc close";else if(e.compare)r="EDIT (BEFORE)",i="The colors you started from",s=[["space","back to yours"]],o="esc back";else if(e.mode==="seeds")r="EDIT (SEEDS)",s=[["↑↓","seed"],["←→","step"],["⇧←→","×5"],["enter","tune the slots"],["o","open a palette"],["p","picture"],["?","keys"]],o="esc cancel";else if(e.mode==="tune")r="EDIT (TUNE)",s=[["↑↓","L"],["←→",e.channel===oe?"ratio":"C"],["⇧←→","H"],["tab","◐"],...e.slot()>=F.length?[["a","scope"]]:[],[e.channel===oe?"1-9":"0-9",e.channel===oe?"ratio":"jump"],["#","type"],["enter","keep"]],o="esc undo";else if(e.inspect)r="EDIT (INSPECT)",s=[["←→↑↓","spot"],["⇧←→","tab"],["enter","its slot"],["i","leave"]],o="esc leave";else s=[["↑↓","slot"],["←→","normal or bright"],["enter","tune"],["l","link"],["m","changed"],["g",e.view==="slot"?"relations":"slot"],...e.misses().size>0?[["n","next miss"]]:[],["#","type"],["f","fix"],["p","picture"],["b","picture layer"],["x","export"],["s","save"],["?","keys"]],o="esc cancel";if(!e.options.find)s=s.filter(([u])=>u!=="p"&&u!=="b");if(!e.options.exports||!e.roomy)s=s.filter(([u])=>u!=="x");if(!e.roomy)s=s.filter(([u])=>u!=="i"&&u!=="m");if(e.notice)i=t.warn(e.notice),s=[];let a=`${Xe(t,r)}${t.color?" ":" "}`,c=o?Kt(o.split(" ")[0],`${t.bold(o.split(" ")[0])} ${t.dim(o.split(" ").slice(1).join(" "))}`):"";for(;;){let u=[i,...s.map(([d,h])=>Kt(d,`${t.bold(d)} ${t.dim(h)}`))].filter(Boolean),f=`${a}${u.join(" ")}`,l=s.findLastIndex(([d],h)=>h>0&&!tj.has(d));if(z(f)+z(o)+3<=n||l<0)return o?It(f,c,n):tt(f,n);s=s.toSpliced(l,1)}}function ej(t,e,n,r,i={}){let s=nj(t,e,n,r,i);if(!t.quitting||e<Yg||n<Vg)return s;let o=$M(Se(r),t,e),a=Math.floor((e-z(o[0]))/2),c=Math.max(0,Math.floor((s.lines.length-o.length)/2)),u=s.lines.map((f,l)=>{let d=o[l-c];return d===void 0?f:zu(f,a,d)});return{...s,lines:u}}function nj(t,e,n,r,i){let s=Se(r);if(e<Yg||n<Vg){let p=[s.bold("ttheme palette editor"),`Needs ${Yg}×${Vg} — now ${e}×${n}`,s.dim("esc cancels")];return{lines:Array.from({length:n},(b,$)=>tt(p[$]??"",e)),art:void 0}}if(t.viewport(e,n),!t.overlay&&t.mode!=="seeds"&&t.view==="slot"){let p=GM(t,e,n,r,i);if(p)return{lines:[...p.lines,zM(s,t,e)],art:p.art}}let o=t.failing().length,a=o===0?"✓ Passes the gate":`✗ ${o} ${o===1?"miss":"misses"} in the gate`,c=t.pictures>0?s.dim(`▣ ${t.pictures} ${t.pictures===1?"picture":"pictures"} `):"",u=t.resettable()?`${Kt("R",s.dim("Reset"))} `:"",f=`${t.dirty()?`${s.warn(I.on)} unsaved `:""}${u}${c}${o===0?s.ok(a):s.dim(a)}`,l=`${s.accent(I.current)} ${s.bold(t.options.title)} ${s.dim(`· ${t.options.name}`)}`,d=n-4,h;if(t.overlay==="keys")h=X4(s,t,e);else if(t.overlay==="open")h=Q4(s,t,e,d);else{let p=e-Ss-2,b=t.mode==="seeds"?W4(s,t,d):U4(s,t,d),$=t.mode==="seeds"?V4(s,t,p,d):Y4(s,t,p,d);h=Array.from({length:d},(k,v)=>`${tt(b[v]??"",Ss)}${s.dim("│")} ${tt($[v]??"",p)}`)}return{lines:[It(l,f,e),"",...Array.from({length:d},(p,b)=>tt(h[b]??"",e)),"",zM(s,t,e)],art:void 0}}var rj=new Set(["tab","a","#","l","enter","esc"]),ij=new Set(["picker","plane","bar","channel","format","scope","open","slot"]);function sj(t){if(!t)return!0;return t.kind==="key"?!rj.has(t.key):!ij.has(t.kind)}function oj(t,e,n){if(n.action==="wheel"){if(!n.sideways)t.scroll(n.wheel);return}if((n.action==="press"||n.action==="drag")&&n.button!=="left")return;if(n.action==="press"&&t.overlay==="keys"){t.press("esc");return}let r=e?.target;if(n.action==="press"&&t.mode==="tune"&&t.roomy&&!t.overlay&&sj(r))t.dismiss();if(!e||!r)return;let i=e.width>1?(e.exact.x-0.5)/(e.width-1):0;if(n.action==="release"){if(!e.inside)return;if(r.kind==="key")t.press(r.key);else if(r.kind==="entry")t.choose(r.index);else if(n.count===2&&r.kind==="slot"&&t.mode==="list")t.press("enter");else if(n.count===2&&r.kind==="choice"&&t.overlay==="open")t.press("enter");return}if(r.kind==="plane"){let s=HM(r.row+e.exact.y,r.rows,e.exact.x,e.width,t.lch[t.slot()].h);t.plane(s.lightness,s.chroma)}else if(r.kind==="bar")t.slide(r.channel,i);else if(r.kind==="seed")t.sow(r.field,i);else if(n.action!=="press")return;else if(r.kind==="slot")t.select(r.slot);else if(r.kind==="open")t.openSlot(r.slot);else if(r.kind==="run")t.point(r.spot);else if(r.kind==="entry")t.entry=r.index;else if(r.kind==="format")t.format=r.format;else if(r.kind==="channel")t.grip(r.channel);else if(r.kind==="scope")t.scopeTo(r.scope);else if(r.kind==="choice"){if(t.overlay==="open")t.pick=r.index}else if(t.typing===void 0&&!t.overlay&&!t.quitting){if(r.kind==="field"&&t.mode==="seeds")t.field=r.field;else if(r.kind==="view"&&t.mode!=="seeds")t.view=r.view;else if(r.kind==="scene")t.scene=r.scene}}var aj=[Dl,Wn,di,kr];async function JM(t,e){let n=new Ag(t),r=e.backdrop,i=e.layer,s=(a)=>n.typing===void 0&&ff(a),o=e.hosted?{modes:[kr,...hi()],assume:[Wn,di],burst:s}:{modes:[...aj,...hi()],burst:s};return mi(o,async(a)=>{let c=!1,u=!1,f=new Map,l=new Jp,d=await a.ask(`${km(pn,"")}${hi().length>0?SS:""}\x1B[c`,(S)=>{if(S.kind==="color"){f.set(S.code,S.value);return}return l.see(S)},1000);if(d?.cell)a.pixels(d.cell);let h=By(f),m=h.map((S,M)=>S??n.start[M]),[p,b]=m;if(!h[3])m[3]=Di(p,b,"selection");let $=new os({write:(S)=>a.write(S),view:()=>{if(c)return;let{lines:S,art:M}=ej(n,a.cols,a.rows,e.color,{behind:n.pic&&r?.laid===!0,art:i?.ready===!0,chrome:m});return{lines:S,after:()=>`${(n.pic?r?.draw(n.shown(),n.signature,n.waive,a.cols,a.rows,BM(a.cols,a.rows)):r?.clear())??""}${i?.draw(M)??""}`}}}),k=(S=!1)=>{if(S)$.soon();else $.request()},v=async(S)=>{let M=t.find;if(!M)return;c=!0,a.write(`${r?.clear()??""}${i?.clear()??""}`);try{n.found(await M(n.edited(),S))}catch(x){n.notice=x instanceof Error?x.message:String(x)}if(u)return;c=!1,r?.load(),$.reset(Zi),k()};if(a.write(Zi),a.onResize(()=>{r?.resized(),a.write(i?.clear()??""),$.reset(Zi),$.request()}),r)r.load(),r.ready=()=>$.request();if(r||i){let S=new hc;a.ask(Kl,(M)=>S.see(M),1000).then((M)=>{if(M)r?.measured(M),i?.measured(M);$.request()})}k();try{let{edited:S}=await a.loop((M)=>{if(c)return;if(M.kind==="paste")n.paste(M.text);else if(M.kind==="key")n.press(M.key);else if(M.kind==="mouse")oj(n,$.point(M),M);if(n.copied!==void 0)a.write(`\x1B]52;c;${Buffer.from(n.copied).toString("base64")}\x07`),n.copied=void 0;if(n.result)return{edited:n.result==="saved"?n.edited():void 0};let x=n.wants;if(x)n.wants=void 0,v(x.start);return},()=>{if(!c)k(!0)});return S}finally{u=!0,$.stop(),a.write(`${r?.close()??""}${i?.clear()??""}`)}})}import{spawn as kj}from"node:child_process";import{createHash as lx}from"node:crypto";import{existsSync as Kc,mkdirSync as yj,mkdtempSync as vj,readFileSync as Sj,rmSync as Af}from"node:fs";import{homedir as Ej,tmpdir as Mj}from"node:os";import{basename as xj,dirname as Oj,join as Yn}from"node:path";import{setTimeout as Pj}from"node:timers/promises";import{pathToFileURL as ZM}from"node:url";import{existsSync as cj,readFileSync as uj,statSync as lj}from"node:fs";import{join as YM}from"node:path";function fj(t,e){try{return JSON.parse(uj(YM(ln(t),e),"utf8"))}catch{return{}}}function dj(t,e,n){C(YM(ln(t),e),`${JSON.stringify(n)}
|
|
728
|
+
`)}var hj=604800000;class Zg{caches=new Map;unsaved=new Set;owners=new Map;crediting=new Map;inflight=new Map;asking=new Map;home;manifest;entry;signal;credited;constructor(t){this.home=t.home,this.manifest=t.manifest,this.entry=t.entry,this.signal=t.signal,this.credited=t.credited}matesOf(t,e){return this.owners.get(t.key)?.get(e)??[]}async transparent(t,e){let n=this.keep(t,"probes.json"),r=n[e.id];if(r!==void 0)return r;try{let i=await va(t,e,this.signal),s=Wr(t,e),o=(i===void 0?await Q0(s.site,s.url,this.signal):i)?.alpha===!0;return n[e.id]=o,this.unsaved.add(`${t.key}/probes.json`),o}catch{return!1}}save(){for(let t of this.unsaved){let[e,n]=t.split("/"),r=Y.find((i)=>i.key===e);if(r)dj(r,n,this.keep(r,n))}this.unsaved.clear()}owned(t,e,n){this.keep(t,"owners.json")[e]=n,this.unsaved.add(`${t.key}/owners.json`)}credit(t,e){let{site:n,post:r}=t;if(!$a(n,r))return Promise.resolve();let i=te(n,r.id),s=this.crediting.get(i);if(!s)s=this.credits(t,e).finally(()=>this.crediting.delete(i)),this.crediting.set(i,s);return s}links(t){let e=this.keep(Pt,"profiles.json");return Object.fromEntries(t.flatMap((n)=>{let r=e[n]?.urls??[];return r.length>0?[[n,r]]:[]}))}profile(t,e){return this.credit(t,e).then(()=>this.profiles(t.post.named.artist,e))}async mateOwners(t){let e=this.owners.get(t.key);if(e)return e;let n=z$(this.home),r=this.keep(t,"owners.json"),i=this.manifest.palettes.flatMap((c)=>{let u=n.get(c.name);return He(c)===He(this.entry)&&c.name!==this.entry.name&&u?.site===t.key?[{name:c.name,id:u.id}]:[]}),s=await Promise.all(i.map(async(c)=>{let u=r[c.id];if(u!==void 0)return{...c,owner:u};try{return{...c,owner:(await Ni(t,c.id,this.signal))?.owner??""}}catch{return}})),o=new Map;for(let c of s)if(c)r[c.id]=c.owner,o.set(c.name,c.owner);this.unsaved.add(`${t.key}/owners.json`);let a=D0(o);return this.owners.set(t.key,a),a}async cached(t,e,n,r){if(cj(e))return lj(e).size;let i=this.inflight.get(e);if(i)return i;let s=(async()=>{let o=await pu(t,n,this.signal,r);return C(e,o),o.length})();this.inflight.set(e,s);try{return await s}finally{this.inflight.delete(e)}}keep(t,e){let n=`${t.key}/${e}`,r=this.caches.get(n);if(!r)r=fj(t,e),this.caches.set(n,r);return r}async profiles(t,e){let n=this.keep(Pt,"profiles.json"),r=Date.now(),i=t.filter((s)=>!this.asking.has(s)&&r-(n[s]?.at??0)>=hj);if(i.length>0){let s=gu(i,e).then((o)=>{for(let a of i)n[a]={at:Date.now(),urls:o.get(a)??[]};this.unsaved.add(`${Pt.key}/profiles.json`),this.credited()},()=>{}).finally(()=>{for(let o of i)this.asking.delete(o)});for(let o of i)this.asking.set(o,s)}await Promise.all(t.flatMap((s)=>this.asking.get(s)??[]))}async credits({site:t,post:e},n){let r=this.keep(t,"credits.json"),i=r[e.id];if(!i){try{i=await wa(t,e.id,n)}catch{return}if(!i?.owner)return;r[e.id]=i,this.unsaved.add(`${t.key}/credits.json`)}qs(e,i),this.credited()}}import{rmSync as mj}from"node:fs";import{join as pj}from"node:path";var na=2147483645,Wc=2147483646,VM=-1073741827,gj=-1073741828,bj=3221225472,wj=256;function $j(t){let e=/^(\d+) (\d+)$/.exec(t??"");return e&&(Number(e[1])>0||Number(e[2])>0)?{x:Number(e[1]),y:Number(e[2])}:void 0}var Xg=$j(process.env.TTHEME_BG_MARGIN);class Qg{screen;gliding;sent=new Map;placed=new Map;covered="";viewed="";bands=fl(process.env);files=dl(process.env);moves=Ky(process.env);layers=xo(process.env);wipes=zy(process.env);views=Yi(process.env);bandFiles=new Map;nextBand=bj;view;grid;background;renders;scratch;signal;write;constructor(t){this.view=t.view,this.grid=t.grid,this.background=t.background,this.renders=t.renders,this.scratch=t.scratch,this.signal=t.signal,this.write=t.write,this.screen=new os({write:(e)=>this.write(e),view:()=>this.frame(),beat:()=>{this.view.beat++}})}draw(){if(!this.signal.aborted)this.screen.request()}soon(){if(!this.signal.aborted)this.screen.soon()}flush(){if(!this.signal.aborted)this.screen.now()}point(t){return this.screen.point(t)}drop(){this.screen.drop()}frame(){if(this.signal.aborted)return;let{cols:t,rows:e,cell:n}=this.grid(),r=lg(this.view,t,e);return this.view.loaderFrom=r.loader?this.view.loaderFrom??this.view.beat:void 0,{lines:r.lines,zones:r.zones,after:(i)=>this.images(r.images,i,n),...this.view.mode==="grid"&&this.view.editing!==void 0?{cursor:this.caret()}:{},ticking:r.tick}}images(t,e,n){let r="",i=new Set,s;for(let o of t){if(this.views&&o.id>=sg){s=o;continue}let a=this.bands?this.banded(o):o;if(!a)continue;if(this.wipes&&e.values().some((u)=>u>=a.row&&u<a.row+a.rows))this.placed.delete(a.id);if(i.add(a.id),this.sent.get(a.id)!==a.path){let u=ef(a,this.files);if(u===void 0)continue;r+=u,this.sent.set(a.id,a.path),this.placed.delete(a.id)}let c=`${a.row};${a.col};${a.cols};${a.rows};${a.crop};${a.z}`;if(this.placed.get(a.id)!==c){if(!this.moves&&this.placed.has(a.id))r+=ag(a.id);r+=QS(a,n),this.placed.set(a.id,c)}}for(let o of this.sent.keys())if(!i.has(o))r+=Mc(o),this.sent.delete(o),this.placed.delete(o);return r+(this.views?this.backdrop(s):this.cover())}glide(){if(this.bands)this.prebake();if(this.gliding)return;let{cols:t,rows:e}=this.grid(),n=yr(t,e).height,r=()=>{let i=this.view,s=i.top*St.height;if(s-i.scroll===0||i.mode!=="grid"){i.scroll=s;let a=this.gliding!==void 0;if(this.gliding=void 0,a)this.draw();return}i.scroll=Ul(i.scroll,s,{span:n}),this.draw(),this.gliding=setTimeout(r,pS)};r()}snap(){clearTimeout(this.gliding),this.gliding=void 0,this.view.scroll=this.view.top*St.height}resized(){this.screen.reset()}stop(){this.screen.stop(),clearTimeout(this.gliding)}prebake(){let t=this.view,{cols:e,rows:n}=this.grid();for(let r of lg({...t,scroll:t.top*St.height},e,n).images)if(r.crop!==void 0)this.band(r.path,r.crop,r.rows)}cover(){let{cols:t,rows:e}=this.grid(),n=`${t};${e}`;if(!this.layers||this.covered===n)return"";let r="";if(!this.covered){let i=Buffer.from(st(this.background)).toString("base64");if(r+=`\x1B_Ga=t,f=24,s=1,v=1,i=${na},q=2;${i}\x1B\\`,Xg)r+=`\x1B_Ga=t,f=32,s=1,v=1,i=${Wc},q=2;AAAAAA==\x1B\\\x1B[H\x1B_Ga=p,i=${Wc},p=${Wc},c=1,r=1,C=1,z=${gj},q=2\x1B\\`}else if(!this.moves)r+=ag(na);if(this.covered=n,Xg){let{x:i,y:s}=Xg;return`${r}\x1B_Ga=p,i=${na},p=${na},P=${Wc},Q=${Wc},H=${-i},V=${-s},c=${t+2*i},r=${e+2*s},C=1,z=${VM},q=2\x1B\\`}return`${r}\x1B[H\x1B_Ga=p,i=${na},p=${na},c=${t},r=${e},C=1,z=${VM},q=2\x1B\\`}backdrop(t){let{cols:e,rows:n,cell:r}=this.grid(),i=e*r.w,s=n*r.h,o=t?`${this.background}|${t.path}|1|${i}|${s}|${i}|${s}|0|0|1`:`${this.background}||1|${i}|${s}|0|0|0|0|5`;if(o===this.viewed)return"";return this.viewed=o,Vi(o)}caret(){return`\x1B[1;${Math.min(this.grid().cols,z(`⌕ ${this.view.editing??""}`)+1)}H`}banded(t){if(t.crop===void 0)return t;let e=this.band(t.path,t.crop,t.rows,!this.gliding);return e?.ready?{...t,id:e.id,path:e.path,crop:void 0}:void 0}band(t,e,n,r=!0){let i=`${t}|${e}|${n}`,s=this.bandFiles.get(i);if(s||!r)return s;let{cell:o}=this.grid(),a=this.nextBand++,c={id:a,path:pj(this.scratch,`band-${a}.png`),ready:!1};return this.bandFiles.set(i,c),this.renders.run({job:"band",from:t,to:c.path,y:e*o.h,height:n*o.h}).then(()=>{c.ready=!0,this.draw()}).catch(()=>{}),this.trimBands(),c}trimBands(){for(let[t,e]of this.bandFiles){if(this.bandFiles.size<=wj)return;if(e.ready&&!this.sent.has(e.id))this.bandFiles.delete(t),mj(e.path,{force:!0})}}}var Os=[{name:"TTHEME_FIND_RATING",label:"Rating",about:"The ratings to list, each site read in its own words — space ticks one, and one stays ticked",choices:Ws,multi:{read:Ai}},{name:"TTHEME_FIND_BLOCK",label:"Block",about:"Posts tagged with nudity or underwear are left out — space unticks one",choices:Ri,multi:{read:Ds,none:"none"}},{name:"TTHEME_FIND_POSTS",label:"Posts",about:"Every post of the character, or only the transparent cutouts",choices:["all","cutouts"]},{name:"TTHEME_FIND_SOLO",label:"Solo",about:"When on, only the posts known to show the character alone — checked as posts arrive, so the counts below leave it out",choices:["on","off"]},{name:"TTHEME_FIND_ORDER",label:"Order",about:"How posts are ranked: fit, by how well each makes a backdrop; newest; or score",choices:["fit","newest","score"]},{name:"TTHEME_FIND_SETS",label:"Sets",about:"One picture posted over and over, or held by another site too: fold it into one tile, or show each",choices:["fold","show"]},...Js()?[{name:"TTHEME_FIND_REMOVE_BG",label:"Remove bg",about:"Cut the character out of an opaque picture you try on, with macOS Vision",choices:["on","off"]}]:[],{name:"TTHEME_FIND_MIN_SCORE",label:"Min score",about:"Posts scored at least this — danbooru, konachan and yande.re; zerochan keeps no score. ←→ steps, or type any number",choices:N0,entry:"number",advanced:!0},{name:"TTHEME_FIND_MIN_SIZE",label:"Min size",about:"The shorter side of a picture, in px — every site filters it. ←→ steps, or type any number",choices:T0,entry:"number",advanced:!0},{name:"TTHEME_FIND_SITES",label:"Sites",about:"The sites the all tab mixes — each keeps its own tab. Space ticks one, and one stays ticked",choices:Y.map((t)=>t.name),multi:{read:ga},advanced:!0},{name:"TTHEME_FIND_HIDE",label:"Hide",about:"Comics, monochrome, sketches or chibi, told by tag in every site's spelling — checked as posts arrive",choices:Bd,multi:{read:uu,none:"none"},advanced:!0},{name:"TTHEME_FIND_HIDE_TAGS",label:"Hide tags",about:"Posts with any of these tags are left out, spaced like cosplay multiple_girls — checked as posts arrive",choices:[],entry:"text",advanced:!0},{name:"TTHEME_FIND_PNG",label:"PNG only",about:"PNG originals only — danbooru counts it, the others are told by the file; zerochan only where danbooru holds it",choices:["off","on"],advanced:!0}];function XM(t,e){if(t.multi)return t.multi.read(e).join(" ")||t.multi.none;if(t.entry==="number")return/^\d+$/.test(e??"")&&Number(e)>0?String(Number(e)):"off";if(t.entry==="text")return ba(e).join(" ");return t.choices.find((n)=>n===e)??t.choices[0]}var Ij=["fit","newest","score"];function tb(t){return Ij.find((e)=>e===t)??"fit"}var Rj={left:-1,right:1,"shift-left":-10,"shift-right":10};function QM(t){if(process.env.SSH_CONNECTION||!/^(?:https?|file):/i.test(t))return;try{let e=kj(process.platform==="darwin"?"open":"xdg-open",[t],{stdio:"ignore",detached:!0});e.on("error",()=>{}),e.unref()}catch{}}function Aj(t,e,n){if(e<0){if(t!=="fill")return Math.max(Tf,t+e);if(!n)return t;return Math.max(Tf,Math.max(100,n)+e+1)}return t==="fill"||t+e>n?"fill":t+e}function fx(t,e){return t.size===e.size&&t.at===e.at&&t.opacity===e.opacity}function Nj(t,e){if(fx(t,e))return;return{...t.size!=="fill"?{size:t.size}:{},...t.at!==e.at?{position:Dt[t.at-1]}:{},...t.opacity!==e.opacity?{opacity:t.opacity}:{}}}function tx(t,e){let n=V(t);return $e(t,e).flatMap((r,i)=>{let[,s,o]=/^([a-z.]+)_(\d+)$/.exec(r.key)??[],a=[...Y,zn].find((c)=>c.key===s);if(!a||!o)return[];return[{key:r.key,id:Number(o),ansi:a.ansi,...a===zn?{}:{page:a.pageUrl(Number(o))},up:i===0,from:Yn(n,r.original??r.fill)}]})}function Tj(t){return t.length>=2&&!/^\d+$/.test(t)&&!t.includes("://")&&!/^[\w.]+:\d+$/.test(t)}var ex=12,Hj=4,Fj=150,Lj=300,nx=12,Cj=2,jj=5000,_j=150,Bj="\x1B[?5522$p\x1B]72;t=q\x1B\\\x1B[c",rx=4000,Gj=8000,ix=/\.(png|jpe?g|gif|webp|heic|tiff?|bmp)$/i,Uj=process.platform==="win32"?"alt+v":"ctrl+v",sx=process.platform==="darwin"?"ctrl+shift+cmd+4 copies a screenshot":"copy a picture first",Wj=1280,Kj=16,zj=Dt.indexOf("top-right")+1,Tf=20,ox=2,ax=3,Dj=/[\p{Script=Hangul}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]/u,qj=8,Jj=9;function Nf(t,e){return{key:t,groups:[],sources:[],queue:[],rounds:0,roundOf:new Map,last:new Map,kin:new Map,kindred:new Map,shapes:[],seen:new Set,same:new Map,checked:0,total:0,focus:0,top:0,searching:e,stage:"fetch",arrived:new Set}}function zc(t){if(!(t instanceof Error))return String(t);if(t instanceof AggregateError&&t.errors[0])return zc(t.errors[0]);if(t.cause)return zc(t.cause);let e=t.code;if(typeof e==="string")return e;let n=(t.message||t.name).split(".")[0]??"";return n.length>56?`${n.slice(0,55)}…`:n}function eb(t,e){return`${t}: ${zc(e)}`}function cx(t){return t.width*t.height}function ux(t,e){return`${t}-${lx("sha1").update(e).digest("hex").slice(0,8)}`}class nb{view;tone;session=new AbortController;cell={w:0,h:0};cols=process.stdout.columns||80;rows=process.stdout.rows||24;gen=0;pumping=0;boards=new Map;board;posts=new Map;thumbPath=new Map;looking=new Map;looked=new Map;matched=new Map;aheading=!1;pages=new Map;tab=0;values=new Map(Os.map((t)=>[t.name,XM(t,process.env[t.name])]));direction=1;prefetching=0;related=new Map;pool=[];relating;thumbQueue=[];heldFiles=new Map;heldAsked=new Set;thumbing=0;clarity=new Map;tunedFiles=[];presenting=!1;again=!1;renders=new Tc;showing;thumbless=new Set;current;fetch;settle;suggestTimer;suggesting;countTimer;counting;terminal;grabber=new kg((t)=>this.write(t),(t)=>void this.got(t));noticeTimer;peekTimer;peeked;twins=new Map;attaching;done;scratch=vj(Yn(Mj(),"ttheme-find-"));home;manifest;entry;tagged;blurring;start;paint;kept;constructor(t,e,n,r,i){this.start=i,this.home=t,this.manifest=e,this.entry=n,this.tagged=new Set(e.palettes.flatMap((o)=>o.booru?[o.booru]:[])),this.tone=Hn(n,n.signatureSlots),this.blurring=ni(t);let s={size:"fill",at:zj,opacity:this.tone.opacity};this.view={palette:n.name,tag:r,site:this.tabName,siteAnsi:this.tabAnsi,nextSite:this.nextTabName,preset:this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:tb(this.setting("TTHEME_FIND_ORDER")),solo:this.setting("TTHEME_FIND_SOLO")==="on",rating:Ai(this.setting("TTHEME_FIND_RATING")),block:Ds(this.setting("TTHEME_FIND_BLOCK")),sets:this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",narrow:this.narrowed(),enabled:ga(this.setting("TTHEME_FIND_SITES")),hide:uu(this.setting("TTHEME_FIND_HIDE")),hideTags:ba(this.setting("TTHEME_FIND_HIDE_TAGS")),advanced:!1,settings:Os.map((o)=>({label:o.label,choices:[...o.choices],value:this.setting(o.name),default:XM(o,Ya(o.name)),multi:o.multi&&{none:o.multi.none},about:o.about,entry:o.entry,advanced:o.advanced,cursor:0})),colors:{cursor:n.cursor,selection:n.selection,background:n.background,foreground:n.foreground,ansi:n.ansi},tiles:[],installed:[],held:tx(t,n.name),checked:0,total:0,searching:r!=="",stage:"fetch",sites:[],focus:0,top:0,scroll:0,beat:0,mode:"grid",help:!1,scene:Math.max(0,Yt.findIndex((o)=>o.name.toLowerCase()===process.env.TTHEME_SCENE)),details:!1,tune:{...s},untuned:s,coloring:pl(t),editing:r===""?"":void 0,chips:[]},this.paint=new Qg({view:this.view,grid:()=>({cols:this.cols,rows:this.rows,cell:this.cell}),background:n.background,renders:this.renders,scratch:this.scratch,signal:this.signal,write:(o)=>this.write(o)}),this.kept=new Zg({home:t,manifest:e,entry:n,signal:this.signal,credited:()=>{this.show(),this.inform(),this.paint.draw()}}),this.pool=this.selected(this.view),this.syncChips(),this.board=Nf(this.boardKey,r!==""),this.boards.set(this.board.key,this.board)}get signal(){return this.session.signal}get site(){return this.tab===0?void 0:Y[this.tab-1]}get sites(){return this.site?[this.site]:Y.filter((t)=>this.view.enabled.includes(t.name))}get tabName(){return this.site?.name??"all"}get tabAnsi(){return this.site?.ansi??Hj}get nextTabName(){let t=(this.tab+1)%(Y.length+1);return t===0?"all":Y[t-1].name}frame(){return{w:this.cols*(this.cell.w||10),h:this.rows*(this.cell.h||20)}}setting(t){return this.values.get(t)}narrowed(){return Ud(this.setting("TTHEME_FIND_MIN_SCORE"),this.setting("TTHEME_FIND_MIN_SIZE"),this.setting("TTHEME_FIND_PNG"))}get boardKey(){return`${this.site?.key??"all"}|${this.view.preset}|${this.view.order}`}origPath(t,e,n){return Yn(ln(t),"orig",`${e}.${n}`)}previewPath(t){let{url:e}=fu(t.site,t.post);return Yn(ln(t.site),"thumb",`${ux(t.post.id,e)}.${Gr(e)}`)}tileOf(t,e){let{site:n,post:r}=t,i=te(n,r.id),s=un(r)??r;return{id:r.id,key:i,site:n.name,siteAnsi:n.ansi,width:s.width,height:s.height,reduced:s!==r,page:n===zn?"":n.pageUrl(r.id),artist:n===zn?SE(r.source):r.named.artist[0]??"",score:r.score,variants:e,mates:this.kept.matesOf(n,r.owner),thumb:this.thumbPath.get(i),missing:this.thumbless.has(i)}}show(){let t=this.view,e=this.board;if(t.tiles=e.groups.flatMap((n)=>n.open?n.posts.map((r)=>this.tileOf(r,0)):[this.tileOf(n.posts[0],n.posts.length)]),t.checked=e.checked,t.total=e.total,t.searching=e.searching,this.stageOf(e),t.note=e.note,t.focus=Math.max(0,Math.min(e.focus,t.tiles.length-1)),t.top=e.top,this.showing!==e)this.showing=e,this.paint.snap()}stageOf(t){let e=this.view;e.stage=t.stage,e.ranking=t.ranking,e.sites=this.sites.map((n)=>({name:n.name,arrived:t.arrived.has(n.name)}))}syncSite(){let t=this.view;t.site=this.tabName,t.siteAnsi=this.tabAnsi,t.nextSite=this.nextTabName}run(){let t=(e)=>this.view.editing===void 0&&ff(e);return mi({modes:[kr,...hi()],assume:[Wn,di],burst:t},async(e)=>{this.terminal=e,e.onResize(this.onResize),e.listen((i)=>{for(let s of i)this.inbound(s);this.paint.soon()}),e.write(Zi);let n=new Promise((i)=>{this.done=i}),r=setInterval(this.onClock,250);setTimeout(Nu,0);try{let i=new hc,s=await e.ask(Kl,(o)=>i.see(o),1000);if(s){if(this.cell=s,this.holdThumbs(),this.view.tag)this.search(),this.relate(this.view.tag)}else this.view.searching=!1,this.view.error="This terminal does not report its cell size — find needs kitty graphics";if(!process.env.TMUX)await e.ask(Bj,(o)=>o.kind==="attributes"?!0:void 0,500,!1);if(this.grabber.start(),e.hold(NS),this.start&&"paste"in this.start)this.pasted(this.start.paste);else if(this.start)this.fromClipboard();else this.peek();return this.paint.draw(),await e.until(n)}finally{this.session.abort(),this.grabber.stop(),this.attaching?.abort(),clearTimeout(this.noticeTimer),clearTimeout(this.peekTimer),this.fetch?.abort(),clearTimeout(this.settle),this.quietSuggest(),this.quietCount(),clearInterval(r),this.paint.stop(),e.write(`\x1B_Ga=d,d=A,q=2\x1B\\${Zi}`),this.kept.save(),this.renders.close(),Af(this.scratch,{recursive:!0,force:!0}),q0()}})}write(t){this.terminal?.write(t)}get saved(){return this.view.saved?.text}get installs(){return this.view.installed.length}finish(t){this.done?.(t===2&&this.saved?0:t)}inbound(t){if(t.kind==="key")this.key(t.key);else if(t.kind==="mouse")this.pointer(t);else if(t.kind==="paste")this.pasted(t.text);else if(t.kind==="mode"){if(t.mode===5522)this.grabber.clipboard=t.value!==0&&t.value!==4}else if(t.kind==="osc")if(t.code==="72"&&t.meta.t==="q")this.grabber.drops=!0;else this.grabber.take(t)}pasted(t){let e=this.view;if(e.editing!==void 0&&t.trim()!==""&&!this.picture(t)){e.editing+=t.replace(/[\r\n]+/g," "),this.suggest(),this.paint.draw();return}if(e.installing!==void 0||e.panel!==void 0||e.help)return;if(t.trim()===""){this.fromClipboard();return}this.attach(t)}picture(t){let e=t.trim();if(/^https?:\/\/\S+$/i.test(e))return!lu(e,this.site??Y[0]);return Yo(e).length>0}async got(t){if(t.kind==="error"){this.notice(t.message);return}if(t.kind==="text"){if(t.text.trim()===""){this.notice(`No picture on the clipboard — ${sx}`);return}this.pasted(t.text);return}await this.bring(()=>uf(t.bytes,t.source))}notice(t,e=rx){let n=this.view;n.error=t,clearTimeout(this.noticeTimer),this.noticeTimer=setTimeout(()=>{if(n.error===t)n.error=void 0,this.paint.draw()},e),this.paint.draw()}async peek(){let t=this.view,e;try{e=await PE()}catch{return}if(!e||e.stamp===this.peeked)return;if(this.peeked=e.stamp,!e.picture||t.installing!==void 0)return;t.hint=`Picture on the clipboard · ${Uj} uses it`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{t.hint=void 0,this.paint.draw()},Gj),this.paint.draw()}async fromClipboard(){let t=this.view;if($g()){if(this.grabber.clipboard){this.grabber.ask();return}this.notice("Over SSH the clipboard is not here — drop the file");return}let e;try{e=await OE(Yn(this.scratch,`clipboard-${Date.now()}.png`))}catch(r){this.notice(`Could not read the clipboard: ${zc(r)}`);return}if(clearTimeout(this.peekTimer),t.hint=void 0,"image"in e){await this.bring(async(r)=>({...await wg(e.image,r),source:"clipboard"}));return}let n=e.text.trim();if(!n){this.notice(`No picture on the clipboard — ${sx}`);return}if(this.picture(n)){await this.attach(n);return}if(t.editing===void 0)t.editing="";this.pasted(n)}async attach(t){let e=t.trim();if(/^https?:\/\//i.test(e)){let i=lu(e,this.site??Y[0]);if(i){await this.jump(i.site,i.id);return}}let[n,...r]=Yo(e).sort((i,s)=>Number(!ix.test(i))-Number(!ix.test(s)));if(!n){this.notice("Nothing to use in that — drop a picture, or paste one or its link");return}await this.bring((i)=>wg(n,i),r.length)}async bring(t,e=0){let n=this.view;this.attaching?.abort();let r=new AbortController;this.attaching=r,n.error=void 0,n.saved=void 0,n.note="Reading the picture…",this.paint.draw();let i;try{i=await t(AbortSignal.any([r.signal,this.signal]))}catch(d){if(!r.signal.aborted)n.note=void 0,this.notice(zc(d),8000);return}if(r.signal.aborted)return;n.note=e>0?`The first picture of ${e+1} — drop one at a time to try the others`:void 0,this.quietSuggest(),n.editing=void 0,n.suggest=void 0,n.pick=void 0;let s=ME(i.bytes);EE(s,i.source);let o=this.origPath(zn,s,i.ext);C(o,i.bytes);let a=ZM(o).href,c={id:s,file:a,width:i.width,height:i.height,ext:i.ext,preview:a,owner:"",score:0,rating:"s",md5:lx("md5").update(i.bytes).digest("hex"),source:i.source,tags:[],named:{artist:[],character:[],copyright:[]},solo:void 0,family:0,smaller:[]},u={site:zn,post:c},f=this.previewPath(u);C(f,i.bytes),++this.gen,this.current=void 0,n.shown=void 0;let l=Nf(`local|post:${s}`,!1);this.board=l,this.boards.set(l.key,l),this.single(l,u)}single(t,e){t.searching=!1,this.posts.set(te(e.site,e.post.id),e),t.groups=[{posts:[e],open:!1}],t.checked=1,t.total=1,this.thumbQueue.push(e),this.thumbs(),this.view.mode="try",this.show(),this.select(),this.paint.draw()}onClock=()=>{let t=this.sites.reduce((r,i)=>Nn(i)>Nn(r)?i:r),e=Math.ceil((Nn(t)-Date.now())/1000),n=e>0?e:void 0;if(n!==this.view.waiting)this.view.waiting=n,this.view.slow=t.name,this.paint.draw()};onResize=()=>{if(this.cols=process.stdout.columns||this.cols,this.rows=process.stdout.rows||this.rows,this.paint.resized(),this.holdThumbs(),this.scroll(),this.paint.snap(),this.view.mode==="try"&&this.current)this.reveal();this.pump(),this.paint.draw()};key(t){let e=this.view;if(t==="ctrl-c"){this.finish(2);return}if(e.installing!==void 0)return;if(t==="focus-in"){this.peek();return}if(t==="focus-out")return;if((t==="ctrl-v"||t==="alt-v")&&e.panel===void 0){this.fromClipboard();return}if(e.editing!==void 0){this.editKey(t);return}if(e.panel!==void 0){this.panelKey(t);return}if(e.help){if(t==="?"||t==="esc")e.help=!1,this.paint.draw();return}if(this.cols<ps.cols||this.rows<ps.rows){if(t==="esc")this.finish(2);return}if(t==="?"){e.help=!0,this.paint.draw();return}if(e.mode==="try"){this.tryKey(t);return}this.gridKey(t)}pointer(t){let e=this.view,n=this.paint.point(t),r=n?.target;if(e.installing!==void 0)return;if(t.action==="wheel"){if(!t.sideways)this.wheel(t.wheel);return}if((t.action==="press"||t.action==="drag")&&t.button!=="left")return;if(r?.kind==="track"&&n&&t.action!=="release")this.slide(r.field,n);else if(t.action==="press")this.pressed(r);else if(t.action==="release"&&n?.inside)this.released(r,t)}pressed(t){let e=this.view;if(e.help)this.paint.drop(),this.key("esc");else if(e.editing!==void 0||t===void 0)return;else if(e.panel!==void 0){if(t.kind==="setting"&&t.index<e.settings.length&&e.typing===void 0)e.panel=t.index,this.paint.draw()}else if(e.mode==="try")this.tryPoint(t);else if(t.kind==="tile")this.focus(t.index);else if(t.kind==="query")this.gridKey("/");else if(t.kind==="site")this.tab=t.tab,this.syncSite(),this.turn()}released(t,e){let n=this.view;if(t?.kind==="key")this.key(t.key);else if(t?.kind==="link"){if(!e.shift&&!e.alt&&!e.ctrl)QM(t.url)}else if(n.editing!==void 0){if(t?.kind==="suggest")n.pick=t.index,this.editKey("enter")}else if(n.panel!==void 0)this.panelPoint(t);else if(n.mode==="try"){if(t?.kind==="place"&&n.tuning)this.tuneKey(String(t.at))}else if(t?.kind==="tile"&&e.count===2)this.gridKey("enter");else if(t?.kind==="chip")this.toggle(t.index)}wheel(t){let e=this.view;if(e.help)return;if(e.editing!==void 0){if(e.suggest?.length)this.editKey(t<0?"up":"down")}else if(e.panel!==void 0){if(e.typing===void 0)this.panelKey(t<0?"up":"down")}else if(e.tuning)this.tuneKey(t<0?"up":"down");else if(e.mode==="try")this.tryKey(t<0?"left":"right");else this.focus(e.focus+t*yr(this.cols,this.rows).perRow)}panelPoint(t){let e=this.view;if(t?.kind!=="setting"&&t?.kind!=="choice")return;let n=e.settings[t.index];if(e.typing!==void 0){let r=e.settings[e.panel??0];if(r&&(t.index!==e.panel||t.kind==="setting"))this.typeKey(r,"enter");else return}if(t.kind==="setting"&&t.index===e.settings.length){e.panel=t.index,this.panelKey("enter");return}if(e.panel=t.index,t.kind==="choice"&&n){if(n.entry==="text"||t.choice===void 0){this.panelKey("enter");return}if(n.multi){n.cursor=Math.max(0,n.choices.indexOf(t.choice)),this.panelKey(" ");return}if(n.value!==t.choice)n.value=t.choice,this.recount()}this.paint.draw()}tryPoint(t){let e=this.view;if(t.kind==="scene")e.scene=t.scene,e.details=!1,this.paint.draw();else if(e.tuning&&t.kind==="field")e.tuning.field=t.field,this.paint.draw()}slide(t,e){let n=this.view,r=n.tuning;if(!r)return;let i=Math.min(1,Math.max(0,e.width>1?e.x/(e.width-1):0));if(r.field=t,t===0){let s=Math.max(100,r.fill),o=Tf+Math.round(i*(s-Tf+1));n.tune.size=i===1||r.fill>0&&o>=r.fill?"fill":Math.min(s,o)}else n.tune.opacity=Math.round(i*100)/100;this.retune()}gridKey(t){let e=this.view,{perRow:n,rowsVis:r}=yr(this.cols,this.rows),s={left:-1,right:1,up:-n,down:n,k:-n,j:n,pgup:-n*r,pgdn:n*r,home:-e.focus,end:e.tiles.length}[t];if(s!==void 0){this.focus(e.focus+s);return}if(/^[1-9]$/.test(t)){this.toggle(Number(t)-1);return}if(t==="enter"&&e.tiles[e.focus]){e.mode="try",e.error=void 0,this.select();return}if(t==="v"){this.fromClipboard();return}if(t==="c"){e.preset=e.preset==="cutouts"?"all":"cutouts",this.turn();return}if(t==="tab"||t==="shift-tab"){let o=Y.length+1;this.tab=(this.tab+(t==="tab"?1:o-1))%o,this.syncSite(),this.turn();return}if(t==="/"){e.editing="",this.paint.draw();return}if(t===" "){this.unfold();return}if(t==="o"||t==="O"){this.openPage(t==="O");return}if(t==="s"){e.panel=0,e.advanced=!1,this.recount(),this.paint.draw();return}if(t==="esc")this.finish(2)}panelKey(t){let e=this.view,n=e.panel??0,r=e.settings[n];if(e.typing!==void 0&&r){this.typeKey(r,t);return}let i=Ec(e);if(t==="up"||t==="down"){let s=i.indexOf(n)+(t==="up"?-1:1);e.panel=i[(s+i.length)%i.length]??n,this.paint.draw();return}if(t==="a"||t==="enter"&&n===e.settings.length){e.advanced=!e.advanced,e.panel=Ec(e)[0]??0,this.paint.draw();return}if(r?.entry&&(t==="enter"||r.entry==="number"&&/^[0-9]$/.test(t))){e.typing=t==="enter"?r.entry==="text"?r.value:"":t,this.paint.draw();return}if((t==="left"||t==="right")&&r&&r.entry!=="text"){let s=t==="left"?-1:1;if(r.multi)r.cursor=(r.cursor+s+r.choices.length)%r.choices.length;else r.value=iE(r.choices,r.value,s),this.recount();this.paint.draw();return}if(t===" "&&r?.multi){let s=r.value.split(" "),o=r.choices.filter((c,u)=>u===r.cursor?!s.includes(c):s.includes(c)),a=r.multi.none;if(o.length>0||a!==void 0)r.value=o.length>0?o.join(" "):a,this.recount(),this.paint.draw();return}if(t==="esc"){e.settings.forEach((s,o)=>{s.value=this.setting(Os[o]?.name??"")}),e.panel=void 0,e.advanced=!1,this.quietCount(),this.paint.draw();return}if(t==="enter"||t==="s"||t==="alt-c")e.panel=void 0,e.advanced=!1,this.quietCount(),this.adopt()}typeKey(t,e){let n=this.view,r=n.typing??"";if(e==="esc"){n.typing=void 0,this.paint.draw();return}if(e==="enter"||e==="up"||e==="down"){if(t.value=t.entry==="number"?Number(r)>0?String(Number(r)):"off":ba(r).join(" "),n.typing=void 0,this.recount(),e==="enter"){this.paint.draw();return}this.panelKey(e);return}let i=ls(r,e,(s)=>t.entry==="number"?/^[0-9]$/.test(s)&&r.length<ug:/^[\x20-\x7e]$/.test(s));if(i!==void 0)n.typing=i,this.paint.draw()}quietCount(){clearTimeout(this.countTimer),this.counting?.abort(),this.counting=void 0}recount(){if(this.quietCount(),this.view.counts=void 0,!this.view.tag)return;let t=new AbortController;this.counting=t,this.countTimer=setTimeout(()=>void this.countPending(t),Lj)}pending(){let t=(e)=>this.view.settings[Os.findIndex((n)=>n.name===e)]?.value??this.setting(e);return{tag:this.view.tag,chosen:this.view.chosen,preset:t("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:tb(t("TTHEME_FIND_ORDER")),rating:Ai(t("TTHEME_FIND_RATING")),narrow:Ud(t("TTHEME_FIND_MIN_SCORE"),t("TTHEME_FIND_MIN_SIZE"),t("TTHEME_FIND_PNG")),enabled:ga(t("TTHEME_FIND_SITES"))}}async countPending(t){let e=this.pending(),n=this.site?[this.site]:Y.filter((s)=>e.enabled.includes(s.name)),r=AbortSignal.any([this.signal,t.signal]),i=await Promise.all(n.map(async(s)=>{let o=this.query(s,e);if(!o)return{site:s.name,count:0};if(s.counts&&!s.counts(o.tags))return{site:s.name};try{let a=await Dd(s,o.tags,r);return{site:s.name,...Number.isFinite(a)?{count:a}:{}}}catch{return{site:s.name}}}));if(this.counting===t&&this.view.panel!==void 0)this.view.counts=i,this.paint.draw()}adopt(){let t=this.view,e=Os.map((r)=>this.setting(r.name));t.settings.forEach((r,i)=>{let s=Os[i];if(s)this.values.set(s.name,r.value)});let n=Os.filter((r,i)=>this.setting(r.name)!==e[i]);if(n.length===0){this.paint.draw();return}this.save(n),t.rating=Ai(this.setting("TTHEME_FIND_RATING")),t.block=Ds(this.setting("TTHEME_FIND_BLOCK")),t.sets=this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",t.preset=this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",t.order=tb(this.setting("TTHEME_FIND_ORDER")),t.solo=this.setting("TTHEME_FIND_SOLO")==="on",t.narrow=this.narrowed(),t.enabled=ga(this.setting("TTHEME_FIND_SITES")),t.hide=uu(this.setting("TTHEME_FIND_HIDE")),t.hideTags=ba(this.setting("TTHEME_FIND_HIDE_TAGS")),this.boards.clear(),this.current=void 0,t.shown=void 0,t.mode="grid",this.search()}save(t){this.store(t.map((e)=>[e.name,this.setting(e.name)]))}store(t){let e=Yn(this.home,"ttheme","config.zsh");try{let n=Kc(e)?Sj(e,"utf8"):"";return C(e,t.reduce((r,[i,s])=>gl(r,i,s),n)),!0}catch(n){return this.view.error=n instanceof Error?n.message:String(n),!1}}editKey(t){let e=this.view,n=e.editing??"",r=e.suggest??[];if((t==="up"||t==="down")&&r.length>0){let o=((e.pick??r.length)+(t==="down"?1:r.length))%(r.length+1);e.pick=o===r.length?void 0:o,this.paint.draw();return}if(t==="esc"||t==="enter")this.quietSuggest();if(t==="esc"){if(e.editing=void 0,e.tag===""){this.finish(2);return}this.paint.draw();return}if(t==="enter"){let s=e.pick===void 0?void 0:r[e.pick],o=s?s.whole?s.value:n.replace(/\S*$/,s.value):n;if(e.editing=void 0,e.suggest=void 0,e.pick=void 0,o.trim()){this.commit(o.trim());return}if(e.tag===""){this.finish(2);return}this.paint.draw();return}let i=ls(n,t);if(i!==void 0)e.editing=i,this.suggest(),this.paint.draw()}quietSuggest(){clearTimeout(this.suggestTimer),this.suggesting?.abort(),this.suggesting=void 0}suggest(){this.quietSuggest();let t=this.view;t.pick=void 0;let e=t.editing??"",n=/\S*$/.exec(e)?.[0]??"",r=Tj(n),i=ak(e,ax,this.tagged).map((c)=>({value:c.tag,count:0,alias:c.name,whole:!0}));if(!r&&i.length===0){t.suggest=void 0;return}let s=r?Wk(this.manifest.palettes,this.entry,n).map((c)=>({value:c.booru,count:0,palette:c.name})):[],o=[...new Map([...s.slice(0,ax),...i].map((c)=>[c.value,c])).values()];if(t.suggest=o.length>0?o:void 0,i.length>0&&Dj.test(e))t.pick=o.findIndex((c)=>("whole"in c));if(!r)return;let a=new AbortController;this.suggesting=a,this.suggestTimer=setTimeout(async()=>{try{let c=await V0(n,AbortSignal.any([this.signal,a.signal]));if(this.suggesting===a&&t.editing!==void 0){let u=new Map(c.map((l)=>[l.value,l.count])),f=new Set(o.map((l)=>l.value));t.suggest=[...o.map((l)=>({...l,count:u.get(l.value)??0})),...c.filter((l)=>!f.has(l.value))].slice(0,qj),t.pick=t.pick!==void 0&&t.pick<o.length?t.pick:void 0,this.paint.draw()}}catch{}},Fj)}async commit(t){let e=lu(t,this.site??Y[0]);if(e){await this.jump(e.site,e.id);return}if(this.picture(t)){await this.attach(t);return}this.view.tag=t,this.view.chosen=void 0,this.relate(t),this.boards.clear(),await this.search()}async jump(t,e){let n=++this.gen;this.tab=Y.indexOf(t)+1,this.syncSite(),this.current=void 0,this.view.shown=void 0,this.view.error=void 0;let r=Nf(`${t.key}|post:${e}`,!0);this.board=r,this.boards.set(r.key,r),this.show(),this.paint.draw();try{let i=await Ni(t,e,this.signal);if(n!==this.gen)return;if(!i){r.searching=!1,r.error=`${t.name} has no post ${e}`,this.view.error=r.error,this.show(),this.paint.draw();return}this.single(r,{site:t,post:i})}catch(i){this.fail(n,i,t)}}async turn(){this.fetch?.abort(),this.current=void 0,this.view.shown=void 0;let t=this.boards.get(this.boardKey);if(!t){await this.search();return}this.gen++,this.board=t,this.view.error=t.error,this.show(),this.paint.draw(),await this.pump()}unfold(){let t=this.view,e=0;for(let n of this.board.groups){let r=n.open?n.posts.length:1;if(t.focus<e+r){if(n.posts.length<2)return;n.open=!n.open,this.board.focus=e,this.thumbQueue.push(...n.posts.filter((i)=>!this.thumbPath.has(te(i.site,i.post.id)))),this.thumbs(),this.show(),this.scroll(),this.paint.glide(),this.paint.draw();return}e+=r}}openPage(t){let e=this.view.tiles[this.view.focus],n=e&&this.posts.get(e.key);if(!n)return;let r=Ti(n.post.source),i=n.site===zn?"":n.site.pageUrl(n.post.id),s=!t&&/^https?:\/\//i.test(r)?r:i;if(s)QM(s)}tryKey(t){let e=this.view;if(e.tuning){this.tuneKey(t);return}if(t==="left"||t==="right"){this.direction=t==="left"?-1:1,this.focus(e.focus+this.direction);return}if(t==="shift-left"||t==="shift-right"){e.scene+=t==="shift-left"?-1:1,e.details=!1,this.paint.draw();return}if(t==="i"){e.details=!e.details,this.inform(),this.paint.draw();return}if(t==="t"){e.tuning={field:0,held:{...e.tune},fill:this.current?.fill??0,coloring:e.coloring},this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="o"||t==="O"){this.openPage(t==="O");return}if(t==="x"){this.swap();return}if(t==="v"){this.fromClipboard();return}if(t==="enter"){this.install();return}if(t==="esc")this.fetch?.abort(),clearTimeout(this.settle),e.fetching=void 0,e.mode="grid",e.error=void 0,this.paint.draw()}tuneKey(t){let e=this.view,n=e.tuning,r=e.tune;if(t==="up"||t==="down"){n.field=(n.field+(t==="up"?2:1))%3,this.paint.draw();return}let i=Rj[t];if(i!==void 0){if(n.field===0)r.size=Aj(r.size,i,n.fill);else if(n.field===1)r.at=(r.at-1+Math.sign(i)+9)%9+1;else r.opacity=Math.max(0,Math.min(100,Math.round(r.opacity*100)+i))/100;this.retune();return}if(/^[1-9]$/.test(t)){n.field=1,r.at=Number(t),this.retune();return}if(t==="="){let s=e.untuned;if(n.field===0)r.size=s.size;else if(n.field===1)r.at=s.at;else r.opacity=s.opacity;this.retune();return}if(t==="+"){e.tune={...e.untuned},this.retune();return}if(t==="enter"){e.tuning=void 0,this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="esc")e.tune={...n.held,...n.coloring===e.coloring?{}:{opacity:e.untuned.opacity}},e.tuning=void 0,this.retune()}recolor(){let t=this.view;if(!this.current||t.shown?.id!==this.current.key)return;t.coloring=t.coloring==="tone"?"original":"tone",t.tune.opacity=t.untuned.opacity,this.paint.draw(),this.reveal()}retune(){if(this.paint.draw(),this.current&&this.view.shown?.id===this.current.key)this.reveal()}inform(){let t=this.view,e=t.tiles[t.focus],n=e&&this.posts.get(e.key);t.info=n?this.infoOf(n):void 0}infoOf(t){let{site:e,post:n}=t,r=n.named,i=z0(e,n),s=new Set([...r.artist,...r.character,...r.copyright]),o=Ti(n.source),a=/^https?:\/\//i.test(o)?o:e===zn&&o.startsWith("/")?ZM(o).href:void 0;return{page:e===zn?"":e.pageUrl(n.id),source:o,...a?{link:a}:{},artists:r.artist,profiles:Object.fromEntries(Object.entries(this.kept.links(r.artist)).map(([c,u])=>[c,Sa(u)])),characters:r.character,series:r.copyright,tags:n.tags.filter((c)=>!s.has(c)),...i?{rating:i}:{},...n.posted?{posted:n.posted}:{},ext:(un(n)??n).ext,uploader:n.owner}}focus(t){let e=this.view;if(e.tiles.length===0)return;let n=Math.max(0,Math.min(e.tiles.length-1,t));if(n===e.focus)return;if(e.focus=n,this.board.focus=n,this.scroll(),this.paint.glide(),this.pump(),e.mode==="try")this.select();this.paint.draw()}scroll(){let t=this.view,{perRow:e,rowsVis:n}=yr(this.cols,this.rows),r=Math.floor(t.focus/e);if(r<t.top)t.top=r;if(r>t.top+n-1)t.top=r-n+1;this.board.top=t.top}selected(t){if(t.chosen)return t.chosen;if(!t.tag)return[];return this.namesOf(t.tag,"danbooru")}namesOf(t,e){let n=t===this.entry.booru?this.entry:this.manifest.palettes.find((r)=>r.booru===t);return n?Kk(n,e):[t]}syncChips(){let t=this.selected(this.view);this.view.chips=this.pool.slice(0,Jj).map((e)=>({name:e,on:t.includes(e)}))}toggle(t){let e=this.view,n=e.chips[t];if(!n)return;let r=this.selected(e),i=n.on?r.filter((s)=>s!==n.name):[...r,n.name];if(i.length===0)return;e.chosen=i,e.tag=i.join(" or "),this.syncChips(),this.boards.clear(),this.search()}async relate(t){this.relating?.abort();let e=this.selected({tag:t,chosen:void 0});if(this.pool=e,this.syncChips(),this.paint.draw(),!t||/\s/.test(t))return;let n=this.related.get(t);if(!n){let r=new AbortController;this.relating=r;try{n=(await Z0(t,AbortSignal.any([this.signal,r.signal]))).map((i)=>i.value)}catch{return}if(this.relating!==r)return;this.related.set(t,n)}this.pool=[...new Set([...e,...n])],this.syncChips(),this.paint.draw()}query(t,e=this.view){let n=e.chosen?X0(t,e.chosen):this.namesOf(e.tag,t.key);if(n.length===0)return;let r=e.chosen?.slice(n.length)??[],i=n.length>1,s=e.preset==="cutouts"?t.cutouts:"",o=i&&s.includes("~"),a=[i?n.map((f)=>`~${f}`).join(" "):n[0],t.rate(e.rating),...t.narrow(e.narrow),o?"":s,e.order==="score"?t.best:""].filter(Boolean),c=[],u=[];for(let f of a)if(zd([...c,f].join(" "))<=t.tagBudget)c.push(f);else u.push(f);return{tags:c.join(" "),notes:[...u.length>0?[`${t.name} takes ${t.tagBudget} tags — ${u.join(" ")} left out`]:[],...r.length>0?[`${t.name} takes ${n.length} tag${n.length===1?"":"s"} — ${r.join(" ")} left out`]:[],...o?[`${t.name} ORs the names, so cutouts are told by the file`]:[],...e.narrow.score>0&&!t.scored?[`${t.name} keeps no score`]:[],...e.narrow.png&&t.guesses?[`${t.name} names a file type only where danbooru holds the file`]:[]]}}async search(){let t=++this.gen,e=Nf(this.boardKey,!0);this.board=e,this.boards.set(e.key,e),this.view.error=void 0;let n=this.sites.flatMap((s)=>{let o=this.query(s);return o?[{site:s,...o}]:[]}),r=this.sites.filter((s)=>!n.some((o)=>o.site===s)),i=[...n.flatMap(({notes:s})=>s),...r.length>0?[`${this.entry.name} has no tag on ${r.map((s)=>s.name).join(", ")}`]:[]];if(e.note=i.length>0?i.join(" · "):void 0,n.length===0)e.searching=!1;this.show(),this.paint.draw(),this.tally(t,e,n);try{let s=await Promise.all(n.map(async(o)=>({plan:o,owners:await this.kept.mateOwners(o.site)})));if(t!==this.gen)return;e.sources=s.flatMap(({plan:{site:o,tags:a},owners:c})=>{let u=zd(a)+1<=o.tagBudget?o.uploadedBy:void 0;return[...u?c.keys().map((f)=>({site:o,tags:`${a} ${u(f)}`,page:0,done:!1})):[],{site:o,tags:a,page:0,done:!1}]}),this.show(),this.paint.draw(),await this.pump()}catch(s){this.fail(t,s)}}async tally(t,e,n){let r=await Promise.allSettled(n.map(({site:i,tags:s})=>Dd(i,s,this.signal)));if(t===this.gen)e.total=r.reduce((i,s)=>i+(s.status==="fulfilled"&&Number.isFinite(s.value)?s.value:0),0),this.show(),this.paint.draw()}fail(t,e,n=this.site){if(t!==this.gen||this.signal.aborted)return;this.board.error=eb(n?.name??this.tabName,e),this.board.searching=!1,this.view.error=this.board.error,this.show(),this.paint.draw()}drop(t,e,n){for(let r of t.sources)if(r.site===e)r.done=!0;t.note=[t.note,eb(e.name,n)].filter(Boolean).join(" · ")}wants(){let{perRow:t,rowsVis:e}=yr(this.cols,this.rows);return this.view.tiles.length<(this.board.top+e+ox)*t}need(){let{perRow:t,rowsVis:e}=yr(this.cols,this.rows);return(e+ox)*t}live(t){return this.boards.get(t.key)===t}page(t,e,n){let r=`${t.key}|${e}|${n}`,i=this.pages.get(r);if(!i)i=J0(t,e,n,this.signal).then((s)=>this.borrow(t,s)),this.pages.set(r,i),i.catch(()=>this.pages.delete(r));return i}async borrow(t,e){let n=t===Pt?[]:e.filter((r)=>r.md5!=="");if(n.length>0)try{ka(n,await ya(n.map((r)=>r.md5),this.signal))}catch{}return e}staged(t){if(t===this.board)this.stageOf(t),this.paint.draw()}async round(t){t.stage="fetch",this.staged(t);let e=Y.flatMap((a)=>{let c=t.sources.find((u)=>u.site===a&&!u.done);return c?[c]:[]}),n=await Promise.all(e.map(async(a)=>{try{let c=await this.page(a.site,a.tags,a.page);return t.arrived.add(a.site.name),this.staged(t),{source:a,posts:c}}catch(c){if(t.sources.every((u)=>u.site===a.site)||this.signal.aborted)throw c;return this.drop(t,a.site,c),{source:a,posts:void 0}}}));if(!this.live(t))return;let r=[];for(let{source:a,posts:c}of n){if(!c)continue;a.page++,a.done=c.length<An;let u=t.last.get(a);for(let f of c){let l=u&&eM(u.post,f)?u.set:`set:${a.site.key}:${f.id}`;u={post:f,set:l};let d=te(a.site,f.id);if(t.seen.has(d))continue;t.seen.add(d);let h={site:a.site,post:f};if(this.eligible(h))t.kin.set(h,[l,...tM(a.site,f)]),r.push(h);else t.checked++}if(u)t.last.set(a,u)}let i=this.dedupe(t,r),s=++t.rounds,o;if(this.view.order!=="fit")o=e.length>1?KE(i):i;else{let a=hf(i,this.frame(),this.matched),c=a.slice(0,this.need()),u={done:0,total:c.length};if(t.ranking=u,this.staged(t),await this.looks(c,()=>{u.done++,this.staged(t)}),t.ranking=void 0,!this.live(t))return;o=[...hf(c,this.frame(),this.matched),...a.slice(c.length)]}t.stage="check",this.staged(t);for(let a of o)t.roundOf.set(a,s);t.queue.push(...o),this.ahead(t)}ahead(t){if(this.aheading||this.view.order!=="fit"||!this.live(t))return;let e=t.queue.slice(0,this.need()).filter((n)=>!this.looking.has(te(n.site,n.post.id)));if(e.length===0)return;this.aheading=!0,this.looks(e).then(()=>{this.aheading=!1;for(let n of new Set(e.map((r)=>t.roundOf.get(r)??0)))this.resort(t,n);this.ahead(t)})}resort(t,e){let n=t.queue.flatMap((i,s)=>t.roundOf.get(i)===e?[s]:[]),r=hf(n.map((i)=>t.queue[i]),this.frame(),this.matched);n.forEach((i,s)=>{t.queue[i]=r[s]})}dedupe(t,e){let n=[];for(let r of e){let i=Hg(r.post),s=i.map((a)=>t.same.get(a)).find(Boolean);if(!s){for(let a of i)t.same.set(a,r);n.push(r);continue}if(t.checked++,cx(r.post)<=cx(s.post))continue;for(let a of[...i,...Hg(s.post)])t.same.set(a,r);let o=n.indexOf(s);if(o>=0){n[o]=r;continue}this.replace(t,s,r)}return n}replace(t,e,n){t.roundOf.set(n,t.roundOf.get(e)??0);let r=t.queue.indexOf(e);if(r>=0){t.queue[r]=n;return}for(let i of t.groups){let s=i.posts.indexOf(e);if(s>=0){i.posts[s]=n,this.posts.set(te(n.site,n.post.id),n),this.thumbQueue.push(n),this.thumbs();return}}}async looks(t,e){let n=0;await Promise.all(Array.from({length:nx},async()=>{while(n<t.length)await this.look(t[n++]),e?.()}))}look(t){let e=te(t.site,t.post.id),n=this.looking.get(e);if(!n)n=(async()=>{let r=this.previewPath(t),i=fu(t.site,t.post);await this.kept.cached(i.site,r,i.url);let s=await this.renders.run({job:"match",from:r,colors:this.entry.signature});return this.looked.set(e,s),this.matched.set(t.post,s.match),s})().catch(()=>{return}),this.looking.set(e,n);return n}async pump(){let t=this.gen,e=this.board;if(this.pumping===t||e.sources.length===0)return;this.pumping=t;let n=[],r;try{e.searching=!0;while(t===this.gen){while(n.length<ex&&e.queue.length>0&&this.wants()){let o=e.queue.shift();n.push({pick:o,passed:this.vet(o)})}if(this.ahead(e),!r&&e.queue.length<ex&&e.sources.some((o)=>!o.done)&&this.wants()){let o=this.round(e).then(()=>{if(r===o)r=void 0});o.catch(()=>{}),r=o}let i=n.shift();if(!i){if(!r)break;await r,this.show(),this.paint.draw();continue}let s=await i.passed;if(t!==this.gen)return;if(e.checked++,s)this.admit(i.pick);this.show(),this.paint.draw()}if(t===this.gen)e.searching=!1,this.show(),this.paint.draw()}catch(i){this.fail(t,i)}finally{if(this.kept.save(),this.pumping===t)this.pumping=0}}eligible({site:t,post:e}){let n=un(e);if(!hu(t,e,this.view.rating)||du(e,this.view.block).length>0||!n)return!1;if(this.view.solo&&e.solo===!1)return!1;let{score:r,size:i,png:s}=this.view.narrow;if(Math.min(e.width,e.height)<i||t.scored&&e.score<r||s&&e.ext!=="png"||K0(e,this.view.hide).length>0||this.view.hideTags.some((o)=>e.tags.includes(o)))return!1;return this.view.preset==="all"?["png","jpg","jpeg",""].includes(n.ext):["png",""].includes(e.ext)}async vet(t){let[e]=await Promise.all([this.passes(t),this.look(t)]);return e}async passes({site:t,post:e}){return this.view.preset==="all"||t.vouched||this.kept.transparent(t,e)}admit(t){let{site:e,post:n}=t,r=this.board,i=te(e,n.id);this.posts.set(i,t);let s=r.kin.get(t)??[],o=this.looked.get(i),a=o&&{hash:o.hash,width:n.width,height:n.height},c=this.view.sets==="fold"?this.kindred(r,s,a):void 0;if(c){if(c.posts.push(t),this.register(r,c,s,a),c.open)this.thumbQueue.push(t),this.thumbs();return}let u={posts:[t],open:!1};r.groups.push(u),this.register(r,u,s,a),this.thumbQueue.push(t),this.thumbs()}kindred(t,e,n){for(let r of e){let i=t.kindred.get(r);if(i)return i}return n&&t.shapes.find((r)=>rM(r.shape,n))?.group}register(t,e,n,r){for(let i of n)if(!t.kindred.has(i))t.kindred.set(i,e);if(r)t.shapes.push({shape:r,group:e})}holds(){this.view.held=tx(this.home,this.entry.name).map((t)=>{let e=this.heldFiles.get(t.from);return e?{...t,thumb:e}:t}),this.holdThumbs()}holdThumbs(){let t=Pe.cols*this.cell.w,e=Pe.rows*this.cell.h;if(t===0||e===0)return;for(let n of this.view.held.slice(0,og(this.cols))){if(n.thumb||this.heldAsked.has(n.from))continue;this.heldAsked.add(n.from);let r=Yn(this.scratch,`held-${xj(n.from)}-${t}x${e}.png`);this.renders.run({job:"thumb",from:n.from,to:r,width:t,height:e}).then(()=>{this.heldFiles.set(n.from,r),this.holds(),this.paint.draw()}).catch(()=>{})}}thumbs(){while(!this.signal.aborted&&this.thumbing<nx&&this.thumbQueue.length>0){let t=this.thumbQueue.shift();this.thumbing++,this.thumb(t).catch(()=>{this.thumbless.add(te(t.site,t.post.id)),this.show(),this.paint.draw()}).finally(()=>{this.thumbing--,this.thumbs()})}}async thumb(t){let{site:e,post:n}=t,r=St.cols*this.cell.w,i=St.rows*this.cell.h,s=fu(e,n),o=Yn(ln(e),"tile",`${ux(n.id,s.url)}-${r}x${i}.png`);if(!Kc(o)){let a=this.previewPath(t);if(await this.kept.cached(s.site,a,s.url),this.signal.aborted)return;await this.renders.run({job:"thumb",from:a,to:o,width:r,height:i})}this.thumbPath.set(te(e,n.id),o),this.show(),this.paint.draw()}select(){let t=this.view,e=t.tiles[t.focus];if(this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,this.inform(),!e)return;if(this.current?.key===e.key){this.reveal();return}this.settle=setTimeout(()=>void this.load(e),_j),this.paint.draw()}async load(t){let e=this.view,n=this.posts.get(t.key);if(!n)return;let r=new AbortController;if(this.fetch=r,this.kept.profile(n,r.signal),!un(n.post))return;let{site:i}=n,s=this.board,o;try{await va(i,n.post,r.signal);let c=un(n.post),u=this.origPath(i,t.id,c.ext);if(!Kc(u))e.fetching={id:t.key,got:0,size:0},this.paint.draw();let f=Wr(i,n.post,c),l=await this.kept.cached(f.site,u,f.url,(m,p)=>{if(e.fetching?.id===t.key)e.fetching={id:t.key,got:m,size:p},this.paint.draw()});if(r.signal.aborted)return;if(e.fetching=void 0,s!==this.board)return;let d={site:i,id:t.id,key:t.key,path:u,ext:c.ext,size:l,using:"plain",failed:!1};e.preparing=t.key,this.paint.flush();let h=await this.render(d,"plain");if(r.signal.aborted||s!==this.board)return;if(o=h.clear===0?await this.twinOf(n,u,r.signal):void 0,o||r.signal.aborted||s!==this.board)return;if(h.clear===0&&Js()&&this.setting("TTHEME_FIND_REMOVE_BG")!=="off"){if(e.preparing=void 0,e.cutting=t.key,this.paint.flush(),d.cut=await this.cutOut(i,t.id,u,r.signal),r.signal.aborted||s!==this.board)return;if(e.cutting=void 0,d.cut){e.preparing=t.key,this.paint.flush();let m=await this.render(d,"cut").catch(()=>{return});if(r.signal.aborted||s!==this.board)return;if(m&&wu(m.clear))d.using="cut";else Af(d.cut,{force:!0}),d.cut=void 0,d.failed=!0}else d.failed=!0}if(this.current=d,e.tiles[e.focus]?.key===t.key)await this.present();this.preload()}catch(c){if(!r.signal.aborted&&!this.signal.aborted)e.error=eb(i.name,c)}finally{if(e.fetching?.id===t.key)e.fetching=void 0;if(e.preparing===t.key)e.preparing=void 0;if(e.cutting===t.key)e.cutting=void 0;this.paint.draw()}let a=o&&s===this.board?this.swapIn(o):void 0;if(a)await this.load(a)}async twinOf(t,e,n){let r=this.view,i=this.board.groups.find((s)=>!s.open&&s.posts[0]===t);for(let s of i?.posts.slice(1)??[]){let o=te(s.site,s.post.id),a=`${te(t.site,t.post.id)}>${o}`;if(this.twins.get(a)===!1||!await this.kept.transparent(s.site,s.post))continue;let c=un(s.post);if(n.aborted||c?.ext!=="png")continue;try{let u=this.origPath(s.site,s.post.id,c.ext),f=Wr(s.site,s.post,c);r.fetching={id:o,got:0,size:0},await this.kept.cached(f.site,u,f.url,(d,h)=>{if(r.fetching?.id===o)r.fetching={id:o,got:d,size:h},this.paint.draw()}),r.fetching=void 0,r.preparing=o,this.paint.flush();let l=this.twins.get(a)??await this.renders.run({job:"twin",cut:u,whole:e});if(this.twins.set(a,l),l&&i?.posts.includes(s)&&!n.aborted)return i.posts.splice(i.posts.indexOf(s),1),i.posts.unshift(s),s}catch{this.twins.set(a,!1)}finally{if(r.fetching?.id===o)r.fetching=void 0;if(r.preparing===o)r.preparing=void 0}}return}swapIn(t){let e=this.view,n=te(t.site,t.post.id);if(!this.thumbPath.has(n))this.thumbQueue.push(t),this.thumbs();this.show(),this.inform();let r=e.tiles[e.focus];if(r?.key!==n)return;return e.hint=`Trying ${t.site.name} ${t.post.id}, the same picture with a transparent background`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{e.hint=void 0,this.paint.draw()},rx),this.paint.draw(),r}async cutOut(t,e,n,r){let i=Yn(ln(t),"cut",`${e}.png`);if(Kc(i))return i;try{return yj(Oj(i),{recursive:!0}),await Ma(n,i,r),i}catch{Af(i,{force:!0});return}}swap(){let t=this.current;if(!t?.cut||this.view.shown?.id!==t.key)return;t.using=t.using==="cut"?"plain":"cut",this.reveal()}preload(){let t=this.view;if(t.mode!=="try")return;for(let e of[t.focus+this.direction,t.focus-this.direction]){let n=t.tiles[e],r=n&&this.posts.get(n.key);if(r)this.kept.profile(r,this.signal);if(this.prefetching>=Cj||!r||!un(r.post))continue;let{site:i,post:s}=r;this.prefetching++,va(i,s,this.signal).then(async()=>{let o=un(s),a=this.origPath(i,s.id,o.ext),c=Wr(i,s,o);return await this.kept.cached(c.site,a,c.url),this.render({site:i,id:s.id,key:n.key,path:a,ext:o.ext,size:0,using:"plain",failed:!1},"plain")}).catch(()=>{}).finally(()=>{this.prefetching--})}}async render(t,e){let n=this.cols*this.cell.w,r=this.rows*this.cell.h,i=Math.min(n,Wj),s=Math.max(1,Math.round(r*i/n)),o={...this.view.tune},{coloring:a}=this.view,c=!fx(o,this.view.untuned),u=o.opacity!==this.view.untuned.opacity,f=c?`-${o.size}-${o.at}${u?`-${Math.round(o.opacity*100)}`:""}`:"",l=Yn(this.scratch,`${t.site.key}-${t.id}${e==="cut"?"c":""}${a==="original"?"o":""}-${i}x${s}${f}.png`),d=`${t.site.key}:${t.id}:${e}:${a}:${i}x${s}`,h=this.clarity.get(d);if(h&&Kc(l))return t.fill=h.fill,{clear:h.clear,path:l,opacity:h.opacity,touched:u};let m=await this.renders.run({job:"show",from:e==="cut"?t.cut:t.path,cut:e==="cut",to:l,width:i,height:s,colors:this.entry,tone:this.tone,blur:this.blurring*i/fh(n,r).width,coloring:a,...c?{tune:{size:o.size,at:o.at,...u?{opacity:o.opacity}:{}}}:{}});if(this.clarity.set(d,m),t.fill=m.fill,c)this.keepTuned(l);return{clear:m.clear,path:l,opacity:m.opacity,touched:u}}keepTuned(t){this.tunedFiles.push(t);while(this.tunedFiles.length>Kj){let e=this.tunedFiles.findIndex((n)=>n!==this.view.shown?.path&&n!==t);if(e===-1)return;Af(this.tunedFiles.splice(e,1)[0],{force:!0})}}async present(){let t=this.current;if(!t)return;let e=t.using,{coloring:n}=this.view,r=this.view.tune.opacity,{clear:i,path:s,opacity:o,touched:a}=await this.render(t,e);if(this.current!==t||t.using!==e||this.view.coloring!==n)return;if(!a&&this.view.tune.opacity===r)this.view.untuned.opacity=o,this.view.tune.opacity=o;if(this.view.tuning&&t.fill)this.view.tuning.fill=t.fill;this.view.shown={id:t.key,clear:i,bytes:t.size,path:s,cut:t.cut?e==="cut"?"on":"off":t.failed?"failed":"none"}}reveal(){let t=this.view;if(this.presenting){this.again=!0;return}this.presenting=!0,t.preparing=this.current?.key,this.paint.flush(),this.present().catch((e)=>{t.error=e instanceof Error?e.message:String(e)}).finally(()=>{if(this.presenting=!1,this.again){this.again=!1,this.reveal();return}if(t.preparing===this.current?.key)t.preparing=void 0;this.paint.draw()})}async install(){let t=this.view,e=t.tiles[t.focus],n=this.current;if(!e||n?.key!==e.key||t.preparing!==void 0||t.shown?.id!==e.key)return;t.installing=e.key,t.error=void 0,this.paint.flush();let r=Nj(t.tune,t.untuned),i=this.posts.get(n.key),s=i?.post;if(i)await Promise.race([this.kept.profile(i,this.signal),Pj(jj,void 0,{ref:!1})]);try{await this.renders.run({job:"backdrop",from:n.using==="cut"?n.cut:n.path,source:n.path,home:this.home,colors:this.entry,tone:this.tone,origin:{site:n.site.key,id:n.id,ext:n.ext,from:`${n.site.name} ${n.id} ${n.site.pageUrl(n.id)}`,artist:s?.named.artist??[],profiles:this.kept.links(s?.named.artist??[]),source:Ti(s?.source??"")},width:this.cols*this.cell.w,height:this.rows*this.cell.h,blur:this.blurring,coloring:t.coloring,...r?{tune:r,aligns:is(D(this.home).terminals),user:Ej()}:{}}),this.kept.owned(n.site,n.id,s?.owner??""),We(this.home),this.holds();let{size:o,at:a,opacity:c}=t.tune,u=r?` · ${o==="fill"?"fill":`${o}%`} · ${Dt[a-1]} · ${c.toFixed(2)}`:"",f=s?.named.artist.length?`${s.named.artist.join(", ")} · `:"";t.saved={text:`Background · ${this.entry.name} ← ${f}${n.site.name} ${n.id}${u}`,key:e.key},t.installed.push(e.key),this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,t.mode="grid"}catch(o){t.error=o instanceof Error?o.message:String(o)}t.installing=void 0,this.paint.draw()}}async function dx(t,e,n){let r=new nb(t,ye(t),e,e.booru??"",n);if(await r.run(),Yi(process.env))process.stdout.write(Vi(""));return{saved:r.saved,installs:r.installs}}async function hx(t){let e=X(),n=ye(e),r=Ln(n.palettes,t);if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error("needs a terminal");let i=new nb(e,n,r,r.booru??""),s=await i.run();if(i.saved&&s!==0)return process.stderr.write(`${i.saved}
|
|
729
|
+
`),0;return s}var Ps=((t)=>{return t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t})(Ps||{}),Yj=[0,1],px=[1,0],gx=[2,3],bx=[3,2],Vj={L:Yj,M:px,Q:gx,H:bx},Zj=/^\d*$/,Xj=/^[A-Z0-9 $%*+./:-]*$/,rb="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",ob=1,ab=40,mx=3,Qj=3,Hf=40,t6=10,wx=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],$x=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];class kx{constructor(t,e,n,r){if(this.version=t,this.ecc=e,t<ob||t>ab)throw RangeError("Version value out of range");if(r<-1||r>7)throw RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let o=0;o<this.size;o++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(n);if(this.drawCodewords(s),r===-1){let o=1e9;for(let a=0;a<8;a++){this.applyMask(a),this.drawFormatBits(a);let c=this.getPenaltyScore();if(c<o)r=a,o=c;this.applyMask(a)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(t,e){return t>=0&&t<this.size&&e>=0&&e<this.size&&this.modules[e][t]}drawFunctionPatterns(){for(let n=0;n<this.size;n++)this.setFunctionModule(6,n,n%2===0,Ps.Timing),this.setFunctionModule(n,6,n%2===0,Ps.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),e=t.length;for(let n=0;n<e;n++)for(let r=0;r<e;r++)if(!(n===0&&r===0||n===0&&r===e-1||n===e-1&&r===0))this.drawAlignmentPattern(t[n],t[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let e=this.ecc[1]<<3|t,n=e;for(let i=0;i<10;i++)n=n<<1^(n>>>9)*1335;let r=(e<<10|n)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,xr(r,i));this.setFunctionModule(8,7,xr(r,6)),this.setFunctionModule(8,8,xr(r,7)),this.setFunctionModule(7,8,xr(r,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,xr(r,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,xr(r,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,xr(r,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let n=0;n<12;n++)t=t<<1^(t>>>11)*7973;let e=this.version<<12|t;for(let n=0;n<18;n++){let r=xr(e,n),i=this.size-11+n%3,s=Math.floor(n/3);this.setFunctionModule(i,s,r),this.setFunctionModule(s,i,r)}}drawFinderPattern(t,e){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),s=t+r,o=e+n;if(s>=0&&s<this.size&&o>=0&&o<this.size)this.setFunctionModule(s,o,i!==2&&i!==4,Ps.Position)}}drawAlignmentPattern(t,e){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(t+r,e+n,Math.max(Math.abs(r),Math.abs(n))!==1,Ps.Alignment)}setFunctionModule(t,e,n,r=Ps.Function){this.modules[e][t]=n,this.types[e][t]=r}addEccAndInterleave(t){let e=this.version,n=this.ecc;if(t.length!==Ff(e,n))throw RangeError("Invalid argument");let r=$x[n[0]][e],i=wx[n[0]][e],s=Math.floor(ib(e)/8),o=r-s%r,a=Math.floor(s/r),c=[],u=u6(i);for(let l=0,d=0;l<r;l++){let h=t.slice(d,d+a-i+(l<o?0:1));d+=h.length;let m=l6(h,u);if(l<o)h.push(0);c.push(h.concat(m))}let f=[];for(let l=0;l<c[0].length;l++)c.forEach((d,h)=>{if(l!==a-i||h>=o)f.push(d[l])});return f}drawCodewords(t){if(t.length!==Math.floor(ib(this.version)/8))throw RangeError("Invalid argument");let e=0;for(let n=this.size-1;n>=1;n-=2){if(n===6)n=5;for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let s=n-i,a=(n+1&2)===0?this.size-1-r:r;if(!this.types[a][s]&&e<t.length*8)this.modules[a][s]=xr(t[e>>>3],7-(e&7)),e++}}}applyMask(t){if(t<0||t>7)throw RangeError("Mask value out of range");for(let e=0;e<this.size;e++)for(let n=0;n<this.size;n++){let r;switch(t){case 0:r=(n+e)%2===0;break;case 1:r=e%2===0;break;case 2:r=n%3===0;break;case 3:r=(n+e)%3===0;break;case 4:r=(Math.floor(n/3)+Math.floor(e/2))%2===0;break;case 5:r=n*e%2+n*e%3===0;break;case 6:r=(n*e%2+n*e%3)%2===0;break;case 7:r=((n+e)%2+n*e%3)%2===0;break;default:throw Error("Unreachable")}if(!this.types[e][n]&&r)this.modules[e][n]=!this.modules[e][n]}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,o=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[i][c]===s){if(o++,o===5)t+=mx;else if(o>5)t++}else{if(this.finderPenaltyAddHistory(o,a),!s)t+=this.finderPenaltyCountPatterns(a)*Hf;s=this.modules[i][c],o=1}t+=this.finderPenaltyTerminateAndCount(s,o,a)*Hf}for(let i=0;i<this.size;i++){let s=!1,o=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[c][i]===s){if(o++,o===5)t+=mx;else if(o>5)t++}else{if(this.finderPenaltyAddHistory(o,a),!s)t+=this.finderPenaltyCountPatterns(a)*Hf;s=this.modules[c][i],o=1}t+=this.finderPenaltyTerminateAndCount(s,o,a)*Hf}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let o=this.modules[i][s];if(o===this.modules[i][s+1]&&o===this.modules[i+1][s]&&o===this.modules[i+1][s+1])t+=Qj}let e=0;for(let i of this.modules)e=i.reduce((s,o)=>s+(o?1:0),e);let n=this.size*this.size,r=Math.ceil(Math.abs(e*20-n*10)/n)-1;return t+=r*t6,t}getAlignmentPatternPositions(){if(this.version===1)return[];else{let t=Math.floor(this.version/7)+2,e=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,n=[6];for(let r=this.size-7;n.length<t;r-=e)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(t){let e=t[1],n=e>0&&t[2]===e&&t[3]===e*3&&t[4]===e&&t[5]===e;return(n&&t[0]>=e*4&&t[6]>=e?1:0)+(n&&t[6]>=e*4&&t[0]>=e?1:0)}finderPenaltyTerminateAndCount(t,e,n){if(t)this.finderPenaltyAddHistory(e,n),e=0;return e+=this.size,this.finderPenaltyAddHistory(e,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(t,e){if(e[0]===0)t+=this.size;e.pop(),e.unshift(t)}}function Or(t,e,n){if(e<0||e>31||t>>>e!==0)throw RangeError("Value out of range");for(let r=e-1;r>=0;r--)n.push(t>>>r&1)}function xr(t,e){return(t>>>e&1)!==0}class Lf{constructor(t,e,n){if(this.mode=t,this.numChars=e,this.bitData=n,e<0)throw RangeError("Invalid argument");this.bitData=n.slice()}getData(){return this.bitData.slice()}}var e6=[1,10,12,14],n6=[2,9,11,13],r6=[4,8,16,16];function yx(t,e){return t[Math.floor((e+7)/17)+1]}function vx(t){let e=[];for(let n of t)Or(n,8,e);return new Lf(r6,t.length,e)}function i6(t){if(!Sx(t))throw RangeError("String contains non-numeric characters");let e=[];for(let n=0;n<t.length;){let r=Math.min(t.length-n,3);Or(Number.parseInt(t.substring(n,n+r),10),r*3+1,e),n+=r}return new Lf(e6,t.length,e)}function s6(t){if(!Ex(t))throw RangeError("String contains unencodable characters in alphanumeric mode");let e=[],n;for(n=0;n+2<=t.length;n+=2){let r=rb.indexOf(t.charAt(n))*45;r+=rb.indexOf(t.charAt(n+1)),Or(r,11,e)}if(n<t.length)Or(rb.indexOf(t.charAt(n)),6,e);return new Lf(n6,t.length,e)}function o6(t){if(t==="")return[];else if(Sx(t))return[i6(t)];else if(Ex(t))return[s6(t)];else return[vx(c6(t))]}function Sx(t){return Zj.test(t)}function Ex(t){return Xj.test(t)}function a6(t,e){let n=0;for(let r of t){let i=yx(r.mode,e);if(r.numChars>=1<<i)return Number.POSITIVE_INFINITY;n+=4+i+r.bitData.length}return n}function c6(t){t=encodeURI(t);let e=[];for(let n=0;n<t.length;n++)if(t.charAt(n)!=="%")e.push(t.charCodeAt(n));else e.push(Number.parseInt(t.substring(n+1,n+3),16)),n+=2;return e}function ib(t){if(t<ob||t>ab)throw RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let n=Math.floor(t/7)+2;if(e-=(25*n-10)*n-55,t>=7)e-=36}return e}function Ff(t,e){return Math.floor(ib(t)/8)-wx[e[0]][t]*$x[e[0]][t]}function u6(t){if(t<1||t>255)throw RangeError("Degree out of range");let e=[];for(let r=0;r<t-1;r++)e.push(0);e.push(1);let n=1;for(let r=0;r<t;r++){for(let i=0;i<e.length;i++)if(e[i]=sb(e[i],n),i+1<e.length)e[i]^=e[i+1];n=sb(n,2)}return e}function l6(t,e){let n=e.map((r)=>0);for(let r of t){let i=r^n.shift();n.push(0),e.forEach((s,o)=>n[o]^=sb(s,i))}return n}function sb(t,e){if(t>>>8!==0||e>>>8!==0)throw RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(e>>>r&1)*t;return n}function f6(t,e,n=1,r=40,i=-1,s=!0){if(!(ob<=n&&n<=r&&r<=ab)||i<-1||i>7)throw RangeError("Invalid value");let o,a;for(o=n;;o++){let l=Ff(o,e)*8,d=a6(t,o);if(d<=l){a=d;break}if(o>=r)throw RangeError("Data too long")}for(let l of[px,gx,bx])if(s&&a<=Ff(o,l)*8)e=l;let c=[];for(let l of t){Or(l.mode[0],4,c),Or(l.numChars,yx(l.mode,o),c);for(let d of l.getData())c.push(d)}let u=Ff(o,e)*8;Or(0,Math.min(4,u-c.length),c),Or(0,(8-c.length%8)%8,c);for(let l=236;c.length<u;l^=253)Or(l,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((l,d)=>f[d>>>3]|=l<<7-(d&7)),new kx(o,e,f,i)}function Mx(t,e){let{ecc:n="L",boostEcc:r=!1,minVersion:i=1,maxVersion:s=40,maskPattern:o=-1,border:a=1}=e||{},c=typeof t==="string"?o6(t):Array.isArray(t)?[vx(t)]:void 0;if(!c)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);let u=f6(c,Vj[n],i,s,o,r),f=d6({version:u.version,maskPattern:u.mask,size:u.size,data:u.modules,types:u.types},a);if(e?.invert)f.data=f.data.map((l)=>l.map((d)=>!d));return e?.onEncoded?.(f),f}function d6(t,e=1){if(!e)return t;let{size:n}=t,r=n+e*2;t.size=r,t.data.forEach((s)=>{for(let o=0;o<e;o++)s.unshift(!1),s.push(!1)});for(let s=0;s<e;s++)t.data.unshift(Array.from({length:r},(o)=>!1)),t.data.push(Array.from({length:r},(o)=>!1));let i=Ps.Border;t.types.forEach((s)=>{for(let o=0;o<e;o++)s.unshift(i),s.push(i)});for(let s=0;s<e;s++)t.types.unshift(Array.from({length:r},(o)=>i)),t.types.push(Array.from({length:r},(o)=>i));return t}var h6=ey(16,231),m6=[" ","▀","▄","█"],p6=2953;function xx(t){if(Buffer.byteLength(t)>p6)return;let{data:e}=Mx(t,{border:2,boostEcc:!0}),n=[];for(let r=0;r<e.length;r+=2){let i=e[r]??[],s=e[r+1]??[];n.push(`${h6}${i.map((o,a)=>m6[(o?1:0)+(s[a]?2:0)]).join("")}${ve}`)}return n}var g6=50;function b6(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi}}function w6(t,e,n){for(let r of n){let i=t-4-r.length;if(i>e.length+2)return[[2,e],[i,` ${r} `]]}return[[2,e]]}function Ox(t,e,n,r=g6){let i=Se(n),s=rn(b6(e)),o=Nk(t).map((m)=>m.toLowerCase()),a=Pg(s,e.signatureSlots,e.waived??[]),c=nr(Sr(s,e.signatureSlots,e.waived??[])).length,u=(m)=>s[m]?.toLowerCase()!==o[m],f=s.filter((m,p)=>u(p)).length,l=(m)=>{let p=s[m],b=e.signatureSlots.includes(qn[m])?I.signature:n?I.swatch:" ",$=n?`${i.fg(p)}${b}${$t}`:b,k=a.has(m)?i.bold(I.miss):u(m)?i.warn(I.on):" ";return` ${$} ${vf(Ot(p))}${k}`},d=c===0?"passes the gate":`${c} ${c===1?"miss":"misses"} in the gate`,h=f>0?[`${f} tuned · ${d}`,d]:[d];return[i.dim(Ct(r,"top",w6(r," Palette ",h))),...F.map((m,p)=>_e(i,` ${m.padEnd(10)}${l(p)}`,r)),i.dim(Ct(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])),...Sn.map((m,p)=>_e(i,` ${m.padEnd(10)}${l(F.length+p)}${l(F.length+8+p)}`,r)),i.dim(Ct(r,"bottom"))]}function ra(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}async function ub(){let t=process.env.TTHEME_WORN;if(!t||!ra())return;let e=await Ge({message:`Use ${t}, the palette this tab wears?`});if(re(e)||!e)throw new ge;return t}async function Rx(t){let e=process.env.TTHEME_WORN;if(!e)return;if(!ra())return console.error(`Sharing ${e}, the palette this tab wears`),{name:e,...t?{tone:t}:{}};if(t!==void 0||ne(X())[e]===void 0)return await ub(),{name:e,...t?{tone:t}:{}};let n=await pm({message:`Share ${e}, the palette this tab wears?`,options:[{value:"tuned",label:"Your tone",hint:`named ${Dc(e)}`},{value:"original",label:"The original"},{value:"no",label:"No"}]});if(re(n)||n==="no")throw new ge;return{name:e,tone:n}}function Ax(t,e){if(t.includes("/"))return t;let n=Ui(e,!1),r=n.filter((s)=>bo(s.dir).some((o)=>o.slug===t)),[i]=r.length===1?r:n.length===1?n:[];return i?`${i.id}/${t}`:t}function y6(t,e,n){let r=D(t),i=n.filter((s)=>!r.palettes.includes(s));if(i.length>0)kn(t,e,r,{...r,palettes:[...r.palettes,...i]});else if(n.some((s)=>r.palettes.includes(s)))zt(t,e,r);return{state:r,fresh:i}}function v6(t){let e=Math.max(0,...t.map((n)=>n.slot.length));return t.map((n)=>` ${n.slot.padEnd(e)} ${n.from} → ${n.to} ${n.rule}`)}function Px(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi])}function Nx(t,e,n){let r=Pk(e,n.palettes),i=fr(t,n,!1).palettes.find((s)=>s.name===r.name);if(i&&Px(i)!==Px(r))throw Error(`${r.name} is already in ${rt(r.name)??"the official marketplace"} and differs — \`ttheme add ${r.name}\` wears that one`);if(!i)$o(t,[...Jr(t),r]);return r}var S6=["background","foreground","cursor"];function Tx(t){try{t();return}catch(e){return e.message}}function Hx(t,e,n){return Jt(t,e,!1).palettes.filter((r)=>r.name!==n).map((r)=>({name:r.name,colors:{background:r.background,foreground:r.foreground,cursor:r.cursor,selection:r.selection,ansi:r.ansi}}))}function Fx(t,e){let n=new Set($e(t,e).map((r)=>r.key));return{count:()=>$e(t,e).length,added:()=>$e(t,e).filter((r)=>!n.has(r.key)).length,fresh:()=>(pf(t,e)??[]).filter((r)=>!n.has(he(r))),discard:()=>{let r=$e(t,e).filter((i)=>!n.has(i.key));for(let i of r)io(t,e,i.key),Ou(t,e);if(r.length>0)We(t)}}}function E6(...t){let e=new Map(t.flatMap((n)=>n??[]).map((n)=>[he(n),n]));return e.size>0?[...e.values()]:void 0}function Lx(t,e,n,r){if(!Mo(process.env,D(t).terminals))return;return async(i,s)=>{let o=dn(Fn(e,r(i),n.palettes)),{saved:a}=await dx(t,o,s);return{...a?{note:a}:{},count:$e(t,e).length}}}async function lb(t,e=!1){let n=process.stdout.isTTY===!0,r=X(),i=D(r).terminals,s=n?wf.of(process.env,r,t.name,i):void 0,o=n?Pf.of(process.env,i):void 0;return JM(t,{color:!Ft(),...s?{backdrop:s}:{},...o?{layer:o}:{},...e?{hosted:!0}:{}})}async function Cx(t,e,n){let r=X(),i=ut(r),s=await lS(r,n),o=t.includes("/")?t:`${s.id}/${t}`,a=ee(o);if(a)throw Error(`${o} ${a}`);if(rt(o)!==s.id)throw Error(`palettes in ${s.dir} are named ${s.id}/<palette> — ${o} belongs elsewhere`);let c=Fh(r,o);if(qc(c))throw Error(`${o} already exists — \`ttheme edit ${o}\` changes it`);let u=e?Ln(Jt(r,i).palettes,e):void 0;if(!ra())throw Error("new opens the palette editor — run it in a terminal");let f=u&&(rt(u.name)?u.base:u.default?void 0:u.name),l=u?Ch(u,o,`kept from ${u.name}`):void 0,d=u?pf(r,u.name)??u.pictures:void 0,{base:h,ansiSource:m,...p}=l??{name:o,signature:S6,...wi(Ac)},b=Fx(r,o),$=({colors:S,signature:M})=>{let x=E6(d,b.fresh());return jh({...p,...S,signature:M,...f?{base:f}:{},...x?{pictures:x}:{}})},k=await lb({title:"New palette",name:o,...l?{colors:l}:{},signature:p.signature,...p.waive?{waive:p.waive}:{},palettes:Hx(r,i,o),pictures:b.count(),find:Lx(r,o,i,$),exports:Kx(r,o,i,$),decode:fb,check:(S)=>Tx(()=>Fn(o,$(S),i.palettes))});if(!k){b.discard(),console.log("Nothing made");return}$6(k6(c),{recursive:!0}),C(c,$(k));let{state:v}=y6(r,i,[o]);console.log(` + ${o}${u?` from ${u.name}`:""}
|
|
730
|
+
${c}`),await vs(r,Jt(r,i).palettes.filter((S)=>S.name===o),v.terminals),console.log(`
|
|
731
|
+
\`ttheme use ${o}\` wears it · \`ttheme edit ${o}\` opens it again`)}function M6(t,e,n){let r=dn(Fn(t,e,n.palettes));return Wa(r).length>0?La(r).filter((i)=>i.startsWith(" ✗")):[]}async function jx(t){let e=X(),n=ut(e),r=D(e),i=Jt(e,n,!1),s=Ax(t,e),o=Cf(e,s),a=o&&qc(o)?s:i.palettes.some((k)=>k.name===t)?t:s,c=Cf(e,a),u=!c||!qc(c);if(u&&!i.palettes.some((k)=>k.name===a))throw Error(`no palette called ${a} — \`ttheme new\` makes one`);if(!ra())throw Error("edit opens the palette editor — run it in a terminal");if(u){let k=await Gx(e,a,!1);console.log(k===void 0?"Nothing changed":k===0?`${a} is back to its own colors`:`Saved ${a} · ${Bx(k)} — R then s in \`ttheme edit ${a}\` puts its own colors back`);return}let f=cb(c,"utf8"),l;try{l=Fn(a,f,n.palettes)}catch(k){throw Error(`${c} cannot be read — ${k.message}`)}let d=Fx(e,a),h=new Set((l.pictures??[]).map((k)=>he(k))),m=({colors:k,signature:v})=>Sk(Ik(Gh(f,k),v),d.fresh().filter((S)=>!h.has(he(S)))),p=await lb({title:"Edit palette",name:a,colors:wo(l),signature:l.signatureSlots,waive:l.waive,palettes:Hx(e,n,a),pictures:d.count(),find:Lx(e,a,n,m),exports:Kx(e,a,n,m),decode:fb,check:(k)=>Tx(()=>Fn(a,m(k),n.palettes))});if(!p){d.discard(),console.log("Nothing changed");return}let b=m(p);if(b===f){console.log(d.added()>0?`Kept the pictures you added to ${a}`:"Nothing changed");return}if(C(c,b),r.palettes.includes(a))zt(e,n,r);console.log(`Saved ${a}${r.palettes.includes(a)?" — new tabs and `ttheme use` wear it":` — \`ttheme add ${a}\` installs it`}`);let $=M6(a,b,n);if($.length>0)console.log(`
|
|
733
732
|
It misses the contrast gate:
|
|
734
733
|
${$.join(`
|
|
735
734
|
`)}
|
|
736
|
-
\`ttheme check --fix ${a}\` suggests colors that pass`)}var
|
|
737
|
-
`)),0}if(e==="reset"){let s=
|
|
738
|
-
`),console.log(
|
|
739
|
-
`)),
|
|
740
|
-
Passes the gate`),0;let{theme:a,moves:c,left:u}=
|
|
735
|
+
\`ttheme check --fix ${a}\` suggests colors that pass`)}var Ix=2;async function _x(t,e,n){let r=X();if(e==="show"){let s=Ln(fr(r,ut(r),!1).palettes,t),o=Ba(s,ne(r)[t]);return console.log(Ox(s,o,!Ft(),n===void 0?void 0:Number(n)).join(`
|
|
736
|
+
`)),0}if(e==="reset"){let s=ne(r);if(s[t]===void 0)return Ix;return _a(r,ju(s,t,{})),zt(r,ut(r),D(r)),process.stderr.write("Back to the original colors"),0}if(e!=="edit")throw Error(`tone takes show, edit or reset, not ${e}`);if(!ra())throw Error("needs a terminal");let i=await Gx(r,t,!0);if(i===void 0)return Ix;return process.stderr.write(i===0?"Back to the original colors":`Saved · ${Bx(i)}`),0}function Bx(t){return`${t} ${t===1?"color":"colors"} tuned`}async function Gx(t,e,n){let r=Ln(fr(t,ut(t),!1).palettes,e),i=Ba(r,ne(t)[e]),s=await lb({title:"Edit palette",name:e,colors:wo(Le(i)),original:wo(Le(r)),tone:!0,signature:i.signatureSlots,...i.waived?{waive:i.waived}:{},decode:fb,check:()=>{return}},n);if(!s)return;let o=ne(t),a=Uh(r,rn(s.colors));if(JSON.stringify(a)===JSON.stringify(o[e]??{}))return;return _a(t,ju(o,e,a)),zt(t,ut(t),D(t)),Object.keys(a).length}function Ux(t,e,n){return Ln(t.palettes,t.palettes.some((r)=>r.name===e)?e:Ax(e,n))}function Wx(t,e=!1){let n=X(),r=ut(n),i=D(n),s=Ux(Jt(n,r),t,n);if(console.log(`${s.name} · ${He(s)}
|
|
737
|
+
`),console.log(La(s).join(`
|
|
738
|
+
`)),Wa(s).length===0)return console.log(`
|
|
739
|
+
Passes the gate`),0;let{theme:a,moves:c,left:u}=df(Le(s));if(c.length===0)return console.log(`
|
|
741
740
|
No color change fixes it — waive the rule in [contrast] with a reason, or pick other colors`),1;console.log(`
|
|
742
741
|
${u.length===0?"These colors pass":"These colors come closer"}:
|
|
743
|
-
${
|
|
744
|
-
`)}`);let f=
|
|
745
|
-
\`ttheme check --fix ${s.name}\` writes them${l?" as your tone of it":""}`),1;if(l){let d=Ln(
|
|
746
|
-
Saved as your tone of ${s.name} — R then s in \`ttheme edit ${s.name}\` puts its own colors back`),u.length===0?0:1}if(C(f,
|
|
747
|
-
Wrote ${f}`),u.length===0?0:1}function
|
|
742
|
+
${v6(c).join(`
|
|
743
|
+
`)}`);let f=Cf(n,s.name),l=!f||!qc(f);if(!e)return console.log(`
|
|
744
|
+
\`ttheme check --fix ${s.name}\` writes them${l?" as your tone of it":""}`),1;if(l){let d=Ln(fr(n,r,!1).palettes,s.name);return _a(n,ju(ne(n),s.name,Uh(d,rn(wo(a))))),zt(n,r,i),console.log(`
|
|
745
|
+
Saved as your tone of ${s.name} — R then s in \`ttheme edit ${s.name}\` puts its own colors back`),u.length===0?0:1}if(C(f,Gh(cb(f,"utf8"),wo(a))),i.palettes.includes(s.name))zt(n,r,i);return console.log(`
|
|
746
|
+
Wrote ${f}`),u.length===0?0:1}function Cf(t,e){let n=rt(e);return n&&Ui(t,!1).some((r)=>r.id===n)?Fh(t,e):void 0}function fb(t){let e=Fa(t);if(!e)return;try{let{background:n,foreground:r,cursor:i,selection:s,ansi:o}=Bh(e);return{background:n,foreground:r,cursor:i,selection:s,ansi:o}}catch{return}}function Kx(t,e,n,r){return{code:(i)=>_h(zx(t,dn(Fn(e,r(i),n.palettes)))),toml:r,command:"ttheme add"}}function zx(t,e){let n=Cf(t,e.name),r=n&&qc(n)?Fn(e.name,cb(n,"utf8"),[e]).waiveReason:void 0,i=pf(t,e.name)??e.pictures,{pictures:s,...o}=Ch(e,e.name,r);return{...o,...i?{pictures:i}:{}}}async function x6(t,e,n){if(t===e)return e;let r=n;if(r===void 0)if(!ra())r="tuned";else{let i=await pm({message:`Share ${e.name} as…`,options:[{value:"tuned",label:"Your tone",hint:`named ${Dc(e.name)}`},{value:"original",label:"The original"}]});if(re(i))throw new ge;r=i}return r==="original"?e:t}function Dc(t){return`${t}-tuned`}async function db(t,e){let n=X(),r=ut(n),i=Ux(fr(n,r),t,n),s=Ba(i,ne(n)[i.name]),o=await x6(s,i,e),a=zx(n,o),c=o===s&&s!==i;if(c){let f=ee(Dc(o.name));if(f)throw Error(`${Dc(o.name)} ${f} — share the original, or tune a palette with a shorter name`);a.name=Dc(o.name)}let u=Ok(_h(a));if(console.log(u),process.stdout.isTTY){let f=xx(u);if(f)console.log(`
|
|
748
747
|
${f.join(`
|
|
749
748
|
`)}`);console.error(`
|
|
750
749
|
Anyone can open the link${f?" or scan the code":""} to see ${a.name}, and ttheme add <link> installs it${c?`
|
|
751
|
-
It carries your tone, named ${a.name} so it does not clash with ${o.name}`:""}`)}}import{spawn as
|
|
752
|
-
${t} palettes installed — open a new tab, or reload your terminal config`)}
|
|
753
|
-
`))}function
|
|
754
|
-
`))}function e2(){let t=J(),e=D(t);if(e.off){console.log("Already off");return}let n=en(t,ct(t),e,{...e,off:!0}),r=cs(e);console.log(`Off · new tabs open in the terminal's own colors${r?` — \`ttheme on\` wears ${r} again`:""}`);for(let i of vt(e.terminals))if(n.get(i.id)?.restart)console.log(`${i.name} new tabs open on your own profile once ${i.name} restarts`)}function n2(t,e,n){let r=vt(e).filter((s)=>!s.defaults),i=r.length>0?[`Default ${t} · ${r.map((s)=>s.name).join(", ")} open new tabs with it once their config reloads`]:[];for(let s of vt(e)){let o=s.defaults?.profile(t);if(o)i.push(n.get(s.id)?.restart?`${s.name} new tabs open with it once ${s.name} restarts — "${o}" is now its default profile`:`${s.name} new tabs open with it — "${o}" is its default profile`)}return i.length>0?i:[`Default ${t} · no terminal is wired to open with it — \`ttheme init\` wires one`]}function F6(t,e){let n=new Map(e.palettes.map((r)=>[r.name,"marketplace"]));for(let r of ju(t,e.palettes,!1))n.set(r.name,"mine");return n}function r2(t,e=!1){let n=J(),r=ct(n),i=new Set(D(n).palettes),s=F6(n,r),o=It(zt(n,r).palettes);if(t)Ki(o);let a=_i(t?Lk(o,t):o),c=(d)=>s.get(d)??"kept";if(e){let d=a.map((h)=>({name:h.name,marketplace:et(h.name)??Y,...h.catalog?{catalog:h.catalog}:{},installed:i.has(h.name),source:c(h.name)}));console.log(JSON.stringify(d,null,2));return}let u=Math.max(...a.map((d)=>d.name.length),0),f={marketplace:"",mine:" · yours",kept:" · in no marketplace you added"},l=Kt(n);for(let d of a){let h=l[d.name]?" · tuned":"";console.log(` ${i.has(d.name)?"●":"○"} ${d.name.padEnd(u)} ${re(d)}${f[c(d.name)]}${h}`)}if(process.stdout.isTTY){let d=t?`${a.length} of ${o.length}`:`${o.length}`;console.log(`
|
|
755
|
-
${
|
|
756
|
-
|
|
757
|
-
`)
|
|
758
|
-
`),0}if(e==="
|
|
759
|
-
`),0}if(e==="
|
|
760
|
-
`),0}if(e==="
|
|
761
|
-
`)
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
`)}function
|
|
765
|
-
`)}function l_(t,e){return c_(t).map((n)=>({from:pt(t,n),to:pt(e,n)}))}function $b(t){return Vr(Qc(pt(t,"dist","manifest.json"),"utf8"))}function Zf(t,e){let n=pt(e.configHome,"ttheme"),r=[{from:pt(e.root,"bin","ttheme.js"),to:pt(n,"ttheme.js")},{from:pt(e.root,"bin","ttheme.js.map"),to:pt(n,"ttheme.js.map")},{from:pt(e.root,"bin","package.json"),to:pt(n,"package.json")},{from:pt(e.root,"shell","ttheme.zsh"),to:pt(n,"ttheme.zsh")},{from:pt(e.root,"shell","preview.zsh"),to:pt(n,"preview.zsh")},{from:pt(e.root,"shell","launch-tab.zsh"),to:pt(n,"launch-tab.zsh"),executable:!0},...l_(pt(e.root,"shell","adapters"),pt(n,"adapters"))],i=e.shells??["zsh"],s=[{file:pt(e.zdotdir,".zshrc"),block:Qy(),about:"source ttheme.zsh"},...i.includes("bash")?x2(e.home,e.platform??process.platform).map((p)=>({file:p,block:I2(),about:"the ttheme command, run through zsh"})):[]],o=Yf(e.configHome),a=!Ir(o)||Vf(Qc(o,"utf8")),c=i.includes("fish")&&a?[{file:o,content:R2(),about:"the ttheme command, run through zsh"}]:[],u=pt(n,"config.zsh"),f=e1(Ir(u)?Qc(u,"utf8"):""),l={file:u,content:t.warpFast===void 0?f:bl(f,"TTHEME_WARP_FAST",t.warpFast?"on":"off")},d={terminals:t.terminals,palettes:t.palettes,...Object.fromEntries(vt(t.terminals).flatMap((p)=>Object.entries(p.installs?.(e)??{}).filter(([,b])=>b!==void 0))),...t.off?{off:!0}:{}},h=[...Ll(e.configHome,d,e.home),...i.includes("fish")&&!a?[`${dt(o,e.home)} is a function of your own — ttheme left it, so fish has no ttheme command`]:[],...i.some((p)=>p!=="zsh")?[`${i.filter((p)=>p!=="zsh").join(" and ")} run ttheme through zsh — a pin taking effect on cd, the picture following the tab in front and the repaint after a program resets the colors stay with zsh tabs`]:[]],m=e.stateDir?[pt(e.stateDir,"ghostty",".blind")]:[];return{home:e.home,copies:r,edits:s,writes:c,settings:l,forget:m,manifest:$b(e.root),installed:d,notes:h}}function T2(t){try{return D(t)}catch{return}}function H2(t,e){try{return zt(t,ct(t,!1,e),!1).palettes}catch{return[]}}function f_(t,e){let n=$b(e.root),r=Yt(t.marketplaces).includes(Y)?n.palettes:[],i=new Set(r.map((o)=>o.name)),s=H2(e.configHome,n).filter((o)=>!i.has(o.name)&&(et(o.name)!==void 0||t.palettes.includes(o.name)));return{...n,palettes:[...r,...s]}}function F2(t,e){let n=cs(t);return n&&e.includes(n)?n:void 0}function d_(t,e,n){let r=Zf(e,n),i=F2(t,e.palettes),s=new Set(["terminals","palettes","off","startup",...se.flatMap((a)=>Object.keys($r[a].installs?.(n)??{}))]),o=Object.fromEntries(Object.entries(t).filter(([a])=>!s.has(a)));return{...r,installed:{...o,...r.installed,...i?{startup:i}:{}}}}function h_(t,e){let n=Zf({terminals:t.terminals,palettes:t.palettes,off:t.off},e),r=new Set([...n.manifest.palettes,...H2(e.configHome,n.manifest)].map((f)=>f.name)),i=t.palettes.filter((f)=>r.has(f)),s=t.palettes.filter((f)=>!r.has(f)),{startup:o,...a}=t,c={...a,palettes:i,...o&&i.includes(o)?{startup:o}:{}},u=s.length>0?[`Dropped ${s.join(", ")} — no longer in any marketplace`,...n.notes]:n.notes;return{...n,installed:c,notes:u}}function m_(t){try{return i_(process.execPath,[pt(t,"ttheme","ttheme.js"),"--version"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function L2(t){let e=Be(t);return[vt(t.terminals).map((n)=>n.name).join(", "),`${t.palettes.length} palettes`,e?`default ${e}`:"no default — ttheme is off"].join(" · ")}function gb(t,e=Qe()){for(let o of t.copies)if(A2(ca(o.to),{recursive:!0}),pb(o.to,{force:!0}),pb(`${o.to}.zwc`,{force:!0}),a_(o.from,o.to),o.executable)o_(o.to,493);C(t.settings.file,t.settings.content);for(let o of t.forget)pb(o,{force:!0});let n=ca(ca(t.settings.file)),r=T2(n),i=Object.fromEntries(vt(t.installed.terminals).flatMap((o)=>{let a=o.defaults?.key,c=a?r?.[a]:void 0;return a&&c?[[a,c]]:[]})),s=sc(n,{...t.installed,...i},e,t.home);if(Yt(s.marketplaces).includes(Y))Rk(n,t.manifest);tn(n,s),Dt(n,ct(n),s,t.home,e);for(let o of t.edits){A2(ca(o.file),{recursive:!0});let a=Ir(o.file)?Qc(o.file,"utf8"):"";xn(o.file,ii(a,o.block))}for(let o of t.writes)C(o.file,o.content);return ls(n,s,!0,e,t.home)}function Xc(t){if(ie(t))throw ei("Nothing changed"),new be;return t}function bb(t,e){return se.filter((n)=>$r[n].offered(t,e))}async function p_(t,e,n,r){return Xc(await Ty({message:"Wire which terminals?",options:bb(n,r).map((i)=>({value:i,label:$r[i].name,hint:i===t?"detected":void 0})),initialValues:e,required:!0}))}async function g_(t){return Xc(await _e({message:"Switch Warp to each tab's palette in about 0.2 s instead of 0.6 s?\nAbout 8% CPU while Warp is in front with tabs of different palettes — `ttheme config` changes it",initialValue:Ro(t,"TTHEME_WARP_FAST")!=="off"}))}function wb(t){let e=[...t.copies.filter((n)=>!Ir(n.to)).map((n)=>n.to),...Ir(t.settings.file)?[]:[t.settings.file],...t.edits.filter((n)=>!Qc(n.file,"utf8").includes("# ttheme begin")).map((n)=>n.file),...t.writes.filter((n)=>!Ir(n.file)).map((n)=>n.file)];if(e.length>0)throw Error(`init left gaps:
|
|
750
|
+
It carries your tone, named ${a.name} so it does not clash with ${o.name}`:""}`)}}import{spawn as O6,spawnSync as Dx}from"node:child_process";import{existsSync as P6,readFileSync as qx}from"node:fs";import{homedir as I6}from"node:os";import{join as Jx}from"node:path";function Yx(t,e,n,r=I6(),i=(s)=>{process.stdout.write(s)}){if(!e||Ft(t)||t.TMUX||Vt(t)!=="terminal-app")return;let[s="",o="-"]=(t.TTHEME_TERMINAL_SHOWN??"").split(" "),a=t.TTHEME_TTY,c=s?Fe(V(n),s,r):void 0,u=El(Lo(n)).get(de(s))??[],f=u.find((B)=>B===`${j(s)}.${o}.png`)??u[0];if(!a||!c||o==="-"||!f||!P6(c.image))return;let l=Jx(Lo(n),f),d=["-l","JavaScript",Sl(n),"tab",a,wn(s)],h=D(n).terminalBase??"Basic",m=op(t,r),p=qx(l),b,$=l,k=0,v,S=!1,M=!1,x,N=(B)=>{S=!0,O6("osascript",[...d,h],{stdio:"ignore"}).on("close",()=>{if(S=!1,M)return;i(B);let L=x;x=void 0,L?.()})},R=(B,L)=>{b??=Ut(new Uint8Array(qx(c.image)));let gt=Jx(Lo(n),`${j(s)}.h${process.pid}-${++k}.png`);Pi($,gt,Br(jr(b,B,c.opacity,ap(b.width,b.height,c,m)))),$=gt,N(L)},T=()=>{if($!==l)Pi($,l,p),$=l},_=(B)=>{clearTimeout(v),v=setTimeout(()=>{if(S)x=B;else B()},xm)},W=()=>{clearTimeout(v),x=void 0};return{slots:[],paint(B){return _(B.name===s?()=>{T(),N("")}:()=>R(B.background,br(B))),""},wear(B){return Dx("osascript",[...d.slice(0,-1),wn(B.name),h],{encoding:"utf8"}).stdout?.trim()==="worn"?"":br(B)},saved:async()=>new Map,restore(){return W(),M=!0,T(),Dx("osascript",[...d,h],{stdio:"ignore"}),""},stop:W}}import{existsSync as Jc,readdirSync as R6,readFileSync as _f,rmSync as Vx,statSync as Xx}from"node:fs";import{homedir as A6}from"node:os";import{join as Is}from"node:path";var N6=150,T6=260;function jf(t){return t?.includes(`path = "${j("")}`)===!0}function H6(t){try{return D(t).terminals.includes("warp")}catch{return!1}}function Zx(t,e){let n=j(e);if(!Jc(t))return;return R6(t).filter((i)=>i.startsWith(`${n}.`)&&/^[0-9a-f]{8}\.yaml$/.test(i.slice(n.length+1))).map((i)=>({file:i,at:Xx(Is(t,i)).mtimeMs})).sort((i,s)=>s.at-i.at)[0]?.file??(Jc(Is(t,`${n}.yaml`))?`${n}.yaml`:void 0)}function F6(t,e){if(!e)return;let n;try{n=_f(Is(t,e),"utf8")}catch{return}let r=/^background_image:\n\s+path:\s*"([^"]*)"\n\s+opacity:\s*(\d+)/m.exec(n);return r?.[1]?{image:r[1],opacity:Number(r[2])/100}:void 0}function Qx(t,e,n,r=A6()){if(!e||Ft(t)||t.TMUX||Vt(t)!=="warp")return;let i=ci(r,n);if(!Jc(i)||!H6(n))return;let s=es(r),o=Ol(n),a=[],c=t.TTHEME_WARP_WEARS??Ue(D(n)),u=F6(s,c&&Zx(s,c)),f,l,d=(b)=>{let $=_f(i,"utf8"),k=ui($);if(k===b)return;if(jf(b)&&!jf(k)&&!Jc(o))C(o,k??"");if(On(i,Pl($,b)),!jf(b))Vx(o,{force:!0})},h=(b)=>{for(let $ of a.splice(0))if($===b)a.push($);else Vx(Is(s,$),{force:!0})},m=()=>{clearTimeout(f),clearTimeout(l)},p=(b,$,k)=>{m(),f=setTimeout(()=>{let v=$;if(!v)v=`${j(b.name)}.view-${process.pid}-${a.length+1}.yaml`,C(Is(s,v),Xa(b,k)),a.push(v);let S=v,M=Date.now()-Xx(Is(s,S)).mtimeMs;l=setTimeout(()=>{d(fp(b.name,S)),h(S)},Math.max(0,T6-M))},N6)};return{slots:[],paint:(b)=>{if(b.name===c)p(b,Zx(s,b.name));else if(u)p(b,void 0,u);else p(b,Jc(Is(s,`${j(b.name)}.yaml`))?`${j(b.name)}.yaml`:void 0);return""},wear:(b,$)=>$.includes("warp")?"":void 0,saved:async()=>new Map([["theme",ui(_f(i,"utf8"))??""]]),restore:(b)=>{m();let $=b.get("theme");if($)d($);else if(jf(ui(_f(i,"utf8"))))d(xl);return h(),""}}}function ia(t,e,n){return Yx(t,e,n)??qy(t,e)??Qx(t,e,n)}function hb(t){Gn(`
|
|
751
|
+
${t} palettes installed — open a new tab, or reload your terminal config`)}async function t2(t){let e=t.find((f)=>/^https?:\/\//i.test(f.trim())&&!Fa(f));if(e)throw Error(`${e} is not a share link — one reads ${Th}tt2:…`);let n=X(),r=ut(n),i=new Map,s=[...new Set(t.map((f)=>{let l=Fa(f);if(!l)return f;let d=Nx(n,l,r);return i.set(d.name,d),d.name}))],o=D(n),a=s.filter((f)=>o.palettes.includes(f)),c=s.filter((f)=>!o.palettes.includes(f));if(c.length===0){zt(n,r,o),console.log(`Already installed: ${a.join(", ")}`);return}let u={...o,palettes:[...o.palettes,...c]};kn(n,r,o,u);for(let f of c)console.log(` + ${f}`);await vs(n,Jt(n,r,!1).palettes.filter((f)=>c.includes(f.name)).map((f)=>{let l=i.get(f.name);return l?{...f,pictures:l.pictures}:f}),u.terminals),hb(u.palettes.length)}function e2(t){let e=X(),n=ut(e),r=D(e);if(!r.palettes.includes(t))throw Error(`${t} is not installed — \`ttheme add ${t}\` first`);let{off:i,...s}=r,o=kn(e,n,r,{...s,startup:t},!0);console.log(s2(t,r.terminals,o).join(`
|
|
752
|
+
`))}function n2(){let t=X();zt(t,ut(t),D(t))}function r2(){let t=X(),e=D(t),n=rs(e);if(!n)throw Error("no palettes installed — `ttheme` picks some");if(!e.off){console.log(`Already on · ${n}`);return}let{off:r,...i}=e,s=kn(t,ut(t),e,i);console.log(s2(n,i.terminals,s).join(`
|
|
753
|
+
`))}function i2(){let t=X(),e=D(t);if(e.off){console.log("Already off");return}let n=kn(t,ut(t),e,{...e,off:!0}),r=rs(e);console.log(`Off · new tabs open in the terminal's own colors${r?` — \`ttheme on\` wears ${r} again`:""}`);for(let i of vt(e.terminals))if(n.get(i.id)?.restart)console.log(`${i.name} new tabs open on your own profile once ${i.name} restarts`)}function s2(t,e,n){let r=vt(e).filter((s)=>!s.defaults),i=r.length>0?[`Default ${t} · ${r.map((s)=>s.name).join(", ")} open new tabs with it once their config reloads`]:[];for(let s of vt(e)){let o=s.defaults?.profile(t);if(o)i.push(n.get(s.id)?.restart?`${s.name} new tabs open with it once ${s.name} restarts — "${o}" is now its default profile`:`${s.name} new tabs open with it — "${o}" is its default profile`)}return i.length>0?i:[`Default ${t} · no terminal is wired to open with it — \`ttheme init\` wires one`]}function C6(t,e,n){let r=(s)=>{try{return us(t,s)}catch{return}},i=e.find((s)=>s===n||at(s)===n||r(s)===n);if(!i)throw Error(`no marketplace named ${n} — the Browse tab of \`ttheme\` lists them`);return i}async function o2(t=[]){let e=X(),n=go(e),r=t.map((m)=>C6(e,n,m)),i=await jv(),s=!1;if(i.latest)try{return Cv(i.latest,t)}catch(m){s=!0,console.log(` ttheme could not update to ${i.latest}: ${m.message}`)}else console.log(i.note);let o=(r.length>0?r:n).filter((m)=>m!==Q);if(r.length===0&&o.length===0)console.log("No marketplaces to update — `ttheme marketplace add <owner>/<repo>` adds one");let a=(m,p)=>`${Jv(m,p)} — kept the copy from the last update`;for(let m of o.filter(qt))try{console.log(` ${hS(e,m)}`)}catch(p){console.log(` ${a(m,p)}`)}let c=o.filter((m)=>!qt(m)),u=new Set(c),f=[],l=li(),d=()=>l.set(`Updating ${[...u].map(at).join(", ")}${c.length>1?` · ${c.length-u.size}/${c.length}`:""}`);if(d(),await Promise.all(c.map(async(m)=>{let p=await Tp(e,m);if("refreshed"in p)f.push(p.refreshed);if(u.delete(m),u.size>0)d();else l.done();l.say(` ${"refreshed"in p?Hp(p.refreshed):a(m,p.failure)}`)})),l.done(),!L6(cr(e)))return s?1:0;for(let m of cs(e,f))console.log(` ${m}`);let h=Cp(e);if(h)console.log(h);return s?1:0}async function a2(t,e){let n=ut(t,!1),r=new Map(ko(t,n).filter((a)=>e.includes(a.name)).map((a)=>[a.name,a]));if(r.size===0)return;let i=Jr(t);$o(t,i.map((a)=>r.get(a.name)??a));let s=D(t);zt(t,n,s);let o=new Map(i.map((a)=>[a.name,a.pictures]));await vs(t,Jt(t,n,!1).palettes.filter((a)=>r.has(a.name)).map((a)=>YE(a,o.get(a.name))),s.terminals)}async function mb(t,e,n,r=!1){let i=process.env.TTHEME_SORT==="catalog"?t.palettes:Qs(t.palettes);ho(i);let s=process.stdout.isTTY===!0,o=ia(process.env,s,X()),a=o?await o.saved():new Map,c=new Vp({entries:i,scope:n,installed:e,required:r,color:!Ft(),fx:Vl(process.env.TTHEME_FX),onFocus:o?(f)=>process.stdout.write(o.paint(f)):void 0}),u=await c.prompt();if(o)process.stdout.write(o.restore(a));if(u==="cancel")return;return t.palettes.filter((f)=>c.picked.has(f.name)).map((f)=>f.name)}import{readFileSync as j6}from"node:fs";import{join as _6}from"node:path";var B6="https://kecan0406.github.io/ttheme/marketplaces.json",G6=/^#[0-9a-f]{6}$/i,U6=/^(cursor|foreground|background|selection|ansi(1[0-5]|[0-9]))$/,W6=/^\d{4}-\d{2}-\d{2}$/;function K6(t){return t.replace(/[\p{Cc}\s]+/gu," ").trim()}function sa(t){return typeof t==="string"?K6(t):void 0}function c2(t){return typeof t==="string"&&G6.test(t)?t.toLowerCase():void 0}function z6(t,e){if(typeof e!=="object"||e===null)return;let n=e,r=sa(n.name),[i,s,o,a]=[n.background,n.foreground,n.cursor,n.selection].map(c2),c=Array.isArray(n.ansi)?n.ansi.map(c2):[],u=Array.isArray(n.signatureSlots)?n.signatureSlots:[];if(!r||ee(`${t}/${r}`)||!i||!s||!o||!a||c.length!==16||c.some((l)=>l===void 0)||u.length!==3||!u.every((l)=>typeof l==="string"&&U6.test(l)))return;let f=sa(n.catalog);return{name:r,...f?{catalog:f}:{},background:i,foreground:s,cursor:o,selection:a,ansi:c.filter((l)=>l!==void 0),signatureSlots:u}}function D6(t){if(typeof t!=="object"||t===null)return;let e=t,n=sa(e.id),r=sa(e.source);if(!n||!r||ee(`${n}/x`))return;let i;try{i=hn(r)}catch{return}if(!yt(i))return;let s=(Array.isArray(e.palettes)?e.palettes:[]).flatMap((c)=>z6(n,c)??[]);if(s.length===0)return;let o=typeof e.stars==="number"&&Number.isFinite(e.stars)&&e.stars>=0?Math.floor(e.stars):0,a=sa(e.updated)??"";return{id:n,source:i,about:sa(e.about)??"",stars:o,updated:W6.test(a)?a:"",palettes:s}}function u2(t){let e=JSON.parse(t),n=typeof e==="object"&&e!==null?e.marketplaces:void 0;if(!Array.isArray(n))throw Error("the marketplace index lists no marketplaces");let r=new Set;return n.flatMap((i)=>{let s=D6(i);if(!s||r.has(s.id))return[];return r.add(s.id),[s]})}function q6(){return _6(Tn(),"marketplace-index.json")}function J6(t){try{let e=JSON.parse(j6(t,"utf8")),n=typeof e==="object"&&e!==null?e:{};return typeof n.etag==="string"&&typeof n.at==="number"&&typeof n.text==="string"?{etag:n.etag,at:n.at,text:n.text}:void 0}catch{return}}async function l2(t,e=q6(),n=B6){let r=J6(e),i;try{i=r?u2(r.text):void 0}catch{i=void 0}try{let s=await Ua(n,void 0,t,r&&i?{"if-none-match":r.etag}:{}),o=Date.now();if(s.status===304&&r&&i)return C(e,JSON.stringify({...r,at:o})),{marketplaces:i,at:o};let a=await s.text(),c=u2(a);return C(e,JSON.stringify({etag:s.headers.get("etag")??"",at:o,text:a})),{marketplaces:c,at:o}}catch(s){if(!r||!i)throw s;return{marketplaces:i,at:r.at,offline:s instanceof Error?s.message:String(s)}}}function pb(t,e,n,r){let i=n===Q?void 0:Lp(t,n),s;try{s=i?.id??us(t,n)}catch{s=yt(n)?mo(n):at(n)}return{source:n,id:s,...i?.info.description?{description:i.info.description}:{},shown:at(n),entries:n===Q?Ko(t,n):i?.entries??[],auto:Gi(n,e.updates),status:sS(t,n,r)}}function gb(t){return ko(t,ut(t,!1)).map((e)=>e.name)}function Y6(t,e,n,r,i){return{refresh:async(s)=>{if(qt(s)){let a=pb(t,e,s,fi());return{marketplace:a,refreshed:{source:s,id:a.id,count:_t(a.entries).length,change:{added:[],changed:[],gone:[]}},updates:gb(t)}}let o=await Np(t,s,Op);return{marketplace:pb(t,e,s,fi()),refreshed:o,updates:gb(t)}},fetch:async(s)=>{if(qt(s)){let a=Ve(s),c=ke(a);return{source:s,id:c,...a.description?{description:a.description}:{},shown:at(s),entries:lr(s,c,Ko(t,Q),Ce(!1)),auto:!1,status:"read in place"}}let o=await uc(t,s,void 0,r);return n.set(s,o),{source:s,id:o.id,..."info"in o&&o.info.description?{description:o.info.description}:{},shown:at(s),entries:o.entries,auto:Gi(s,{}),status:"not added yet"}},index:()=>l2(r),apply:i}}function f2(...t){for(let e of cs(...t))Gn(e)}function V6(t,e,n){let r=[];for(let i of t.adds){let s=i.source!==Q&&(t.auto[i.source]??i.auto);r.push(`Added ${i.id} · ${i.shown} — ${se(_t(i.entries).length)}${s?", updating on its own":""}`)}for(let i of t.removes){let s=e.find((a)=>a.source===i)?.id??i;r.push(`Removed ${s} · ${at(i)}`);let o=n.filter((a)=>(rt(a)??Q)===s);if(o.length>0)r.push(Kp(o))}for(let[i,s]of Object.entries(t.auto)){let o=e.find((a)=>a.source===i);if(o&&!t.removes.includes(i))r.push(`${o.id} ${s?"updates on its own now":"no longer updates on its own"}`)}return r}async function Z6(t,e,n,r){let i=D(t),s=n.adds.length+n.removes.length+Object.keys(n.auto).length>0;for(let m of n.adds){let p=r.get(m.source);if(p)Wo(t,p)}for(let m of n.removes)Wp(t,m);let o=[...me(i.marketplaces).filter((m)=>!n.removes.includes(m)),...n.adds.map((m)=>m.source)],a=dc(i,o,{...i.updates,...n.auto});if(s)en(t,a);let c=ut(t,!1),u=Jt(t,c,!1).palettes.filter((m)=>n.picked.has(m.name)).map((m)=>m.name),f=i.palettes.filter((m)=>!u.includes(m)),l=u.filter((m)=>!i.palettes.includes(m)),d=n.renew.filter((m)=>u.includes(m));if(!s&&l.length===0&&f.length===0&&d.length===0){f2(t,n.refreshed),Gn("Nothing changed");return}let h={...a,palettes:u};kn(t,c,i,h),Cl(t,c,i.terminals,f);for(let m of V6(n,e,u))Gn(m);for(let m of l)Gn(` + ${m}`);for(let m of f)Gn(` - ${m}`);for(let m of cs(t,n.refreshed))Gn(m);if(await vs(t,Jt(t,c,!1).palettes.filter((m)=>l.includes(m.name)),h.terminals),d.length>0){await a2(t,d);for(let m of d)Gn(` ↑ ${m}`)}if(l.length>0||f.length>0)hb(h.palettes.length)}async function d2(){let t=uy(process.env),e=X(),n=D(e),r=Jr(e),i=fi(),s=Go(),o=me(n.marketplaces).map((k)=>pb(e,n,k,i)),a=new Set(o.flatMap((k)=>k.entries.map((v)=>v.name))),c=r.filter((k)=>n.palettes.includes(k.name)&&!a.has(k.name));ho([...o.flatMap((k)=>k.entries),...c]);let u=new Map,f=new AbortController,l=process.stdout.isTTY===!0,d=ia(process.env,l,e),h=d&&!t?await d.saved():new Map,m=Ue(n);if(t)process.stdout.write("\x1B[?2026h");let p=new Qp({marketplaces:o,kept:c,installed:n.palettes,updates:gb(e),tuned:Object.keys(ne(e)),...m?{startup:m}:{},...t?{hub:t}:{},due:s?Ip(e,n):[],io:Y6(e,n,u,f.signal,(k,v)=>Mv({say:v.say,set:v.status},()=>Z6(e,o,k,u))),...process.env.TTHEME_SORT==="catalog"?{}:{order:Qs},color:!Ft(),lookups:process.env.TTHEME_MARKETPLACE_LOOKUP!=="off",fx:Vl(process.env.TTHEME_FX),owns:l&&!t,...d?{onFocus:(k)=>process.stdout.write(d.paint(k))}:{}});try{await p.run()}finally{if(d?.stop?.(),d&&(!t||p.next()===void 0))process.stdout.write(d.restore(h));f.abort()}await p.idle();let b=p.result(),$=p.next();if(t&&$!==void 0)return f2(e,b.refreshed),$;if(l&&t)process.stdout.write("\x1B[?1049l\x1B[?25h");for(let k of b.refreshed){let v=Fp(k);if(v)console.log(v)}if(p.applied()){for(let v of p.lines())console.log(v);let k=p.failure();if(k)throw k}else{for(let k of cs(e,b.refreshed))console.log(k);console.log("Nothing changed")}return t?Ju:0}import{rmSync as h2}from"node:fs";import{basename as X6,join as Yc}from"node:path";var m2=Yc(import.meta.dirname,".."),Q6=Yc(m2,"themes"),bb=Yc(m2,"dist"),Bf=ie.map((t)=>wr[t].emitter),t_=[Tm,_m],KX=Bf.map((t)=>t.id);async function Gf({only:t}={}){if(typeof Bun>"u")throw Error("needs bun — run it from a checkout: bun src/bin.ts build");let e=t&&t.length>0?Bf.filter((s)=>t.includes(s.id)):Bf,n=w$(Q6),r=ow(n);if(r.length>0){for(let s of r)console.error(` ✗ ${s.theme} [${s.rule}] ${s.detail}`);throw Error(`${r.length} contrast violation(s). Fix the palette, or waive the rule in its [contrast] section with a reason.`)}if(e.length===Bf.length)h2(bb,{recursive:!0,force:!0});else for(let s of e)h2(Yc(bb,s.id),{recursive:!0,force:!0});let i=0;for(let s of[...e,...t_]){let o=n.flatMap((u)=>s.emit?.(u)??[]),a=s.emitShared?.(n)??[];for(let u of[...o,...a])await Bun.write(Yc(bb,u.path),u.content),i++;let c=o.length>0?`${n.length} themes${s.limits?` (${s.limits})`:""}`:a.length>0?a.map((u)=>X6(u.path)).join(" "):`no files (${s.limits??"nothing to write"})`;console.log(` ${s.id.padEnd(16)} ${c}`)}console.log(`
|
|
754
|
+
${n.length} themes (${$$(n).length} in the new-tab rotation) -> ${i} files in dist/`)}import{existsSync as r_,readFileSync as $2}from"node:fs";import{availableParallelism as e_,homedir as p2}from"node:os";var n_=4;async function Uf(t,e,n=p2()){let r=Nt(V(t)),i=ni(t),s=new Map(ye(t).palettes.map((l)=>[l.name,no(l)])),o=Object.entries(r.palettes).flatMap(([l,d])=>{let h=s.get(l);return h?d.pictures.filter((m)=>ro(m)||(m.blur??0)!==i||m.cut!==void 0&&m.matte!==Ea).map((m)=>({name:l,key:m.key,paint:h})):[]});if(o.length===0)return 0;e(`Drawing ${o.length} background picture${o.length===1?"":"s"} again${i?` · blur ${i}px`:""}`);let a=is(D(t).terminals),c=new Lg(Math.min(n_,e_()-1)),u=await c.map(o.map(({name:l,key:d,paint:h})=>({job:"redraw",home:t,user:n,name:l,key:d,paint:h,blur:i,aligns:a})));c.close();let f=[];return u.forEach((l,d)=>{let{name:h,key:m}=o[d];if(l instanceof Error||l===null){e(` ▢ ${h} ${m} — ${l instanceof Error?l.message:"no original to draw it from"}, left as it was`);return}f.push({name:h,picture:l})}),wh(t,f),We(t,n),f.length}async function g2(t,e,n,r,i=p2()){let s=Nt(V(t)).palettes[e],o=s?.pictures.find((f)=>f.key===(r??s.active));if(!s||!o)throw Error(`${e} has no picture ${r??"shown"}`);if(Ye(o)===n)return{key:o.key,changed:!1};let a=ye(t).palettes.find((f)=>f.name===e);if(!a)throw Error(`no palette called ${e}`);let c=is(D(t).terminals),u=await gf(t,e,o.key,no(a),ni(t),c,i,n);if(!u)throw Error(`${e} ${o.key} has no original to draw it from`);return wh(t,[{name:e,picture:u}]),We(t,i),{key:o.key,changed:!0}}function b2(t,e,n){let r=Nt(V(t)).palettes[e],i=r?.pictures.find((a)=>a.key===(n??r.active));if(!r||!i)throw Error(`${e} has no picture ${n??"shown"}`);let s=ye(t).palettes.find((a)=>a.name===e);if(!s)throw Error(`no palette called ${e}`);let o=Ye(i)==="original"?"tone":"original";if(!XE(t,e,i.key,no(s),ni(t),o))throw Error(`${e} ${i.key} has no original to draw it from`);return{key:i.key,coloring:o}}async function w2(){return await Uf(X(),(t)=>process.stderr.write(`${t}
|
|
755
|
+
`)),0}async function k2(t,e,n){let r=X();if(Ln(ye(r).palettes,t),e==="show"){if(!n)throw Error("image show needs the picture to show");let{at:i,of:s}=io(r,t,n);return We(r),process.stderr.write(`Background · ${t} ${i}/${s} ${n}
|
|
756
|
+
`),0}if(e==="drop"){let{key:i,left:s}=Ou(r,t,n);return We(r),process.stderr.write(`Background · ${t} removed ${i} · ${s} left
|
|
757
|
+
`),0}if(e==="tone"||e==="original"){let i=await g2(r,t,e,n);return process.stderr.write(`Background · ${t} ${i.key} ${e==="tone"?"tinted":"in its own colors"}
|
|
758
|
+
`),0}if(e==="prepare"){let{key:i,coloring:s}=b2(r,t,n);return process.stderr.write(`Background · ${t} ${i} ready in ${s==="tone"?"its tone":"its own colors"}
|
|
759
|
+
`),0}if(e==="tuned")return We(r),0;throw Error(`unknown image action ${e} — show, drop, tone, original, prepare or tuned`)}function y2(t,e){let n=/^(\d+)x(\d+)$/.exec(t),r=/^(\d+)x(\d+)([+-]\d+)([+-]\d+)$/.exec(e);if(!n||!r)throw Error("a canvas is <width>x<height> and a place <width>x<height>+<x>+<y>");let[i,s]=n.slice(1).map(Number),[o,a,c,u]=r.slice(1).map(Number);return{width:i,height:s,at:{x:c,y:u,w:o,h:a}}}function i_(t,e,n){let r=y2(e,n),i=Math.min(1,t.width/r.at.w);if(i===1)return r;return{width:Math.max(1,Math.round(r.width*i)),height:Math.max(1,Math.round(r.height*i)),at:{x:Math.round(r.at.x*i),y:Math.round(r.at.y*i),w:t.width,h:t.height}}}function v2(t,e,n,r){let i=new Uint8Array($2(t)),s=y2(n,r),o=Ut(i),a=S0(i);return C(e,a?sr(h0(ir(o),s),a):Je(d0(o,s))),0}function S2(t,e,n,r,i,s,o){let a=Number(r);if(!be(n)||!Number.isFinite(a))throw Error("flatten needs a #rrggbb background and an opacity from 0 to 1");let c=Ut(new Uint8Array($2(t))),u=i?i_(c,i,s??""):void 0,f=Br(jr(c,n,Math.max(0,Math.min(1,a)),u));if(o&&r_(o))Pi(o,e,f);else C(e,f);return 0}import{execFileSync as s_}from"node:child_process";import{readFileSync as o_}from"node:fs";import{arch as a_,platform as Wf,release as wb}from"node:os";var c_={ghostty:"ghostty",iterm2:"iTerm.app",wezterm:"WezTerm","terminal-app":"Apple_Terminal",warp:"WarpTerminal"};function u_(t,e){if(t==="konsole"){let r=/^(\d{2})(\d{2})(\d{2})$/.exec(e.KONSOLE_VERSION??"");return r?`${r[1]}.${r[2]}.${Number(r[3])}`:e.KONSOLE_VERSION}let n=c_[t];return n!==void 0&&e.TERM_PROGRAM===n?e.TERM_PROGRAM_VERSION:void 0}function l_(t){let e=Vt(t),n=t.TERM_PROGRAM&&t.TERM_PROGRAM!=="tmux"?t.TERM_PROGRAM:void 0,r=e==="unknown"?`unknown${n?` (TERM_PROGRAM=${n})`:""}`:e==="editor"?`editor (${Mm(t)})`:`${e} ${u_(e,t)??"(version unknown)"}`,i=t.TERM_PROGRAM==="tmux"?t.TERM_PROGRAM_VERSION:void 0;return[r,t.TMUX?`tmux ${i??"yes"}`:"tmux no",t.SSH_CONNECTION||t.SSH_TTY?"ssh yes":"ssh no"].join(" · ")}function E2(t,e){try{return s_(t,e,{encoding:"utf8",timeout:2000,stdio:["ignore","pipe","ignore"]}).trim()}catch{return}}function f_(){let t=a_();if(Wf()==="darwin")return`macOS ${E2("sw_vers",["-productVersion"])??`(Darwin ${wb()})`} · ${t}`;if(Wf()==="linux"){let e="";try{e=o_("/etc/os-release","utf8")}catch{}return`${/^PRETTY_NAME="?([^"\n]*)"?$/m.exec(e)?.[1]??"Linux"} · linux ${wb()} · ${t}`}return`${Wf()==="win32"?"Windows":Wf()} ${wb()} · ${t}`}function d_(t){if(t.TTHEME_ZSH)return`zsh ${t.TTHEME_ZSH}`;return(t.SHELL?E2(t.SHELL,["--version"])?.split(`
|
|
760
|
+
`)[0]:void 0)??t.SHELL??"unknown"}function h_(t){try{let{terminals:e}=D(t);return e.length>0?e.join(", "):"none"}catch{return"installed.json missing or unreadable"}}function m_(t){let e=ml.flatMap((n)=>{let r=t[n];return r===void 0||r===Ya(n)?[]:[`${n}=${/\s/.test(r)?JSON.stringify(r):r}`]});return e.length>0?e.join(" "):void 0}function M2(){let t=process.env,n=[["ttheme",lt.version],["OS",f_()],["Shell",d_(t)],["Terminal",l_(t)],["Wired",h_(X())],["Settings",m_(t)]].filter((i)=>i[1]!==void 0),r=Math.max(...n.map(([i])=>i.length));for(let[i,s]of n)console.log(`${i.padEnd(r)} ${s}`)}import{execFileSync as g_,spawnSync as b_}from"node:child_process";import{chmodSync as w_,copyFileSync as $_,existsSync as Pr,mkdirSync as L2,readdirSync as k_,readFileSync as Xc,rmSync as yb}from"node:fs";import{homedir as y_}from"node:os";import{dirname as oa,join as pt}from"node:path";import{existsSync as x2}from"node:fs";import{basename as p_,join as Vc}from"node:path";var O2=["zsh","bash","fish"];function Kf(t){let e=p_(t??"").replace(/^-/,"");return O2.includes(e)?e:void 0}function kb(t,e){for(let n=e,r=0;n>1&&r<12;r++){let[i,...s]=t("ps",["-o","ppid=,comm=","-p",String(n)])?.trim().split(/\s+/)??[],o=Kf(s.join(" "));if(o)return o;n=Number(i)}return}function P2(t,e){let n=new Set(["zsh",Kf(t.env.SHELL),kb(t.run,e)]);return O2.filter((r)=>n.has(r))}var $b="ttheme-zdotdir:";function zf(t,e){if(t.env.ZDOTDIR)return t.env.ZDOTDIR;let n=t.run("zsh",["-c",`print -rn -- "${$b}\${ZDOTDIR:-$HOME}"`])??"",r=n.lastIndexOf($b);return r>=0&&n.slice(r+$b.length)||e}function I2(t){return t.run("zsh",["-fc","print ok"])==="ok"}var R2=[".bash_profile",".bash_login",".profile"];function A2(t,e){let n=Vc(t,".bashrc"),r=R2.map((s)=>Vc(t,s)).find((s)=>x2(s)),i=[...x2(n)?[n]:[],...r?[r]:[]];if(e==="darwin"&&!r)i.push(Vc(t,".bash_profile"));return i.length>0?i:[n]}function N2(t){return[".bashrc",...R2].map((e)=>Vc(t,e))}var T2=`zsh -c 'source ${hl} && ttheme "$@"' ttheme`;function H2(){return`# ${Me}
|
|
761
|
+
ttheme() { ${T2} "$@"; }`}function Df(t){return Vc(t,"fish","functions","ttheme.fish")}function F2(){return[`# ${Me}`,"function ttheme --description 'Run ttheme through zsh'",` ${T2} $argv`,"end",""].join(`
|
|
762
|
+
`)}function qf(t){return t.startsWith(`# ${Me}
|
|
763
|
+
`)}function v_(t,e){return k_(t).map((n)=>({from:pt(t,n),to:pt(e,n)}))}function Mb(t){return Ki(Xc(pt(t,"dist","manifest.json"),"utf8"))}function Jf(t,e){let n=pt(e.configHome,"ttheme"),r=[{from:pt(e.root,"bin","ttheme.js"),to:pt(n,"ttheme.js")},{from:pt(e.root,"bin","ttheme.js.map"),to:pt(n,"ttheme.js.map")},{from:pt(e.root,"bin","package.json"),to:pt(n,"package.json")},{from:pt(e.root,"shell","ttheme.zsh"),to:pt(n,"ttheme.zsh")},{from:pt(e.root,"shell","preview.zsh"),to:pt(n,"preview.zsh")},{from:pt(e.root,"shell","launch-tab.zsh"),to:pt(n,"launch-tab.zsh"),executable:!0},...v_(pt(e.root,"shell","adapters"),pt(n,"adapters"))],i=e.shells??["zsh"],s=[{file:pt(e.zdotdir,".zshrc"),block:n1(),about:"source ttheme.zsh"},...i.includes("bash")?A2(e.home,e.platform??process.platform).map((p)=>({file:p,block:H2(),about:"the ttheme command, run through zsh"})):[]],o=Df(e.configHome),a=!Pr(o)||qf(Xc(o,"utf8")),c=i.includes("fish")&&a?[{file:o,content:F2(),about:"the ttheme command, run through zsh"}]:[],u=pt(n,"config.zsh"),f=i1(Pr(u)?Xc(u,"utf8"):""),l={file:u,content:t.warpFast===void 0?f:gl(f,"TTHEME_WARP_FAST",t.warpFast?"on":"off")},d={terminals:t.terminals,palettes:t.palettes,...Object.fromEntries(vt(t.terminals).flatMap((p)=>Object.entries(p.installs?.(e)??{}).filter(([,b])=>b!==void 0))),...t.off?{off:!0}:{}},h=[...Fl(e.configHome,d,e.home),...i.includes("fish")&&!a?[`${dt(o,e.home)} is a function of your own — ttheme left it, so fish has no ttheme command`]:[],...i.some((p)=>p!=="zsh")?[`${i.filter((p)=>p!=="zsh").join(" and ")} run ttheme through zsh — a pin taking effect on cd, the picture following the tab in front and the repaint after a program resets the colors stay with zsh tabs`]:[]],m=e.stateDir?[pt(e.stateDir,"ghostty",".blind")]:[];return{home:e.home,copies:r,edits:s,writes:c,settings:l,forget:m,manifest:Mb(e.root),installed:d,notes:h}}function j2(t){try{return D(t)}catch{return}}function _2(t,e){try{return Jt(t,ut(t,!1,e),!1).palettes}catch{return[]}}function S_(t,e){let n=Mb(e.root),r=me(t.marketplaces).includes(Q)?n.palettes:[],i=new Set(r.map((o)=>o.name)),s=_2(e.configHome,n).filter((o)=>!i.has(o.name)&&(rt(o.name)!==void 0||t.palettes.includes(o.name)));return{...n,palettes:[...r,...s]}}function B2(t,e){let n=rs(t);return n&&e.includes(n)?n:void 0}function E_(t,e,n){let r=Jf(e,n),i=B2(t,e.palettes),s=new Set(["terminals","palettes","off","startup",...ie.flatMap((a)=>Object.keys(wr[a].installs?.(n)??{}))]),o=Object.fromEntries(Object.entries(t).filter(([a])=>!s.has(a)));return{...r,installed:{...o,...r.installed,...i?{startup:i}:{}}}}function M_(t,e){let n=Jf({terminals:t.terminals,palettes:t.palettes,off:t.off},e),r=new Set([...n.manifest.palettes,..._2(e.configHome,n.manifest)].map((f)=>f.name)),i=t.palettes.filter((f)=>r.has(f)),s=t.palettes.filter((f)=>!r.has(f)),{startup:o,...a}=t,c={...a,palettes:i,...o&&i.includes(o)?{startup:o}:{}},u=s.length>0?[`Dropped ${s.join(", ")} — no longer in any marketplace`,...n.notes]:n.notes;return{...n,installed:c,notes:u}}function x_(t){try{return g_(process.execPath,[pt(t,"ttheme","ttheme.js"),"--version"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function G2(t){let e=Ue(t);return[vt(t.terminals).map((n)=>n.name).join(", "),`${t.palettes.length} palettes`,e?`default ${e}`:"no default — ttheme is off"].join(" · ")}function vb(t,e=tn()){for(let o of t.copies)if(L2(oa(o.to),{recursive:!0}),yb(o.to,{force:!0}),yb(`${o.to}.zwc`,{force:!0}),$_(o.from,o.to),o.executable)w_(o.to,493);C(t.settings.file,t.settings.content);for(let o of t.forget)yb(o,{force:!0});let n=oa(oa(t.settings.file)),r=j2(n),i=Object.fromEntries(vt(t.installed.terminals).flatMap((o)=>{let a=o.defaults?.key,c=a?r?.[a]:void 0;return a&&c?[[a,c]]:[]})),s=sc(n,{...t.installed,...i},e,t.home);if(me(s.marketplaces).includes(Q))Ck(n,t.manifest);en(n,s),zt(n,ut(n),s,t.home,e);for(let o of t.edits){L2(oa(o.file),{recursive:!0});let a=Pr(o.file)?Xc(o.file,"utf8"):"";On(o.file,ei(a,o.block))}for(let o of t.writes)C(o.file,o.content);return ss(n,s,!0,e,t.home)}function Zc(t){if(re(t))throw Xr("Nothing changed"),new ge;return t}function Sb(t,e){return ie.filter((n)=>wr[n].offered(t,e))}async function O_(t,e,n,r){return Zc(await Ly({message:"Wire which terminals?",options:Sb(n,r).map((i)=>({value:i,label:wr[i].name,hint:i===t?"detected":void 0})),initialValues:e,required:!0}))}async function P_(t){return Zc(await Ge({message:"Switch Warp to each tab's palette in about 0.2 s instead of 0.6 s?\nAbout 8% CPU while Warp is in front with tabs of different palettes — `ttheme config` changes it",initialValue:Ao(t,"TTHEME_WARP_FAST")!=="off"}))}function Eb(t){let e=[...t.copies.filter((n)=>!Pr(n.to)).map((n)=>n.to),...Pr(t.settings.file)?[]:[t.settings.file],...t.edits.filter((n)=>!Xc(n.file,"utf8").includes("# ttheme begin")).map((n)=>n.file),...t.writes.filter((n)=>!Pr(n.file)).map((n)=>n.file)];if(e.length>0)throw Error(`init left gaps:
|
|
766
764
|
${e.join(`
|
|
767
|
-
`)}`)}function
|
|
768
|
-
`),`Installed ${e.palettes.length} palettes`),jn([`${
|
|
769
|
-
`),"Next"),Da("Done")}function
|
|
765
|
+
`)}`)}function U2(t,e){return[...new Set(t.palettes.filter((n)=>e.includes(n.name)).map(He))]}function I_(t,e,n){let r=t.palettes.find((o)=>o.name===Ue(e)),i=process.stdout.isTTY===!0,s=r&&ia(process.env,i,n)?.wear(r,e.terminals);if(s===void 0)return!1;return process.stdout.write(s),!0}function R_(t,e){let n=Ue(t);if(!n)return["Default none — new tabs keep the terminal colors",`Turn on \`ttheme on\` wears ${rs(t)}`];return[`Default ${n}${e?" — this tab wears it already":""}`,"Change it `ttheme`, enter on a palette, then default"]}function A_(t){b_("zsh",["-c",'source "$1" && __tt_preview init',"zsh",pt(t,"ttheme","ttheme.zsh")],{stdio:"inherit"})}function xb(t){return t==="bash"?"exec bash -l":`exec ${t}`}function N_(t,e,n,r,i){let s=U2(t.manifest,e.palettes);jn([`${s.join(", ")} (${e.palettes.length})`,...R_(t.installed,n)].join(`
|
|
766
|
+
`),`Installed ${e.palettes.length} palettes`),jn([`${xb(i).padEnd(18)}The ttheme command in this tab`,...Ob(t,r)].join(`
|
|
767
|
+
`),"Next"),Da("Done")}function Ob(t,e){return[...Ll(oa(oa(t.settings.file)),t.installed,e,t.home),...t.notes]}function W2(t){return t?(e)=>Zr.step(e):(e)=>console.log(e)}async function C2(t,e,n,r,i){let s=M_(t,e),o=vb(s,n);Eb(s),await Uf(e.configHome,W2(r),e.home);let a=[`${xb(i).padEnd(18)}Open tabs run the new layer — new tabs already do`,...Ob(s,o)],c=`Updated to ${lt.version} — kept ${G2(s.installed)}`;if(!r){console.log([c,...a].join(`
|
|
770
768
|
`));return}jn(a.join(`
|
|
771
|
-
`),c),Da("Done")}function
|
|
772
|
-
`))}async function
|
|
773
|
-
${R===lt.version?"Reinstall":"Update to"} ${lt.version} and keep all of it?`,active:"Yes",inactive:"No, set it up again",initialValue:!0}))){await
|
|
774
|
-
`),`Wiring ${vt(h).map((R)=>R.name).join(", ")}`),!
|
|
769
|
+
`),c),Da("Done")}function T_(t,e,n){let r=[`Placed ${t.copies.length} files`,`Settings in ${t.settings.file} — edit later with \`ttheme config\``,...[...t.edits,...t.writes].map((i)=>`Wired ${i.file}`),...Ob(t,e),`No palettes yet — open a new shell (\`${xb(n)}\`), then \`ttheme\` picks them from your marketplaces`];console.log(r.join(`
|
|
770
|
+
`))}async function K2(t={}){let e=pt(import.meta.dirname,"..");for(let R of["ttheme.js","package.json"])if(!Pr(pt(e,"bin",R)))throw Error(`bin/${R} is missing — run \`mise run bin:build\` first`);if(!Pr(pt(e,"dist"))){if(typeof Bun>"u")throw Error("this package is missing dist/ — reinstall @kecan0406/ttheme");await Gf()}let n=y_(),r=X(),i=tn();if(!I2(i))throw Error("ttheme runs its tab layer in zsh, even for bash and fish — install zsh first");let s=dv(i),o=process.env.WT_PROFILE_ID,a=pt(process.env.XDG_STATE_HOME??pt(n,".local","state"),"ttheme"),c={root:e,home:n,configHome:r,zdotdir:zf(i,n),shells:P2(i,process.ppid),platform:i.platform,stateDir:a,...s?{wtHome:s}:{},...o?{wtProfile:o}:{}},u=kb(i.run,process.ppid)??Kf(i.env.SHELL)??"zsh",f=Vt(process.env),l=Sb(c,i).filter((R)=>R===f);if(!t.yes&&(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0))throw Error("init asks before it edits your configs — run it in a terminal, or pass --yes to accept the defaults");let d=j2(r);if(t.yes&&d){await C2(d,c,i,!1,u);return}if(t.yes){if(l.length===0)throw Error(`no supported terminal detected — run this inside ${vt(Sb(c,i)).map((W)=>W.name.toLowerCase()).join(", ").replace(/, ([^,]*)$/," or $1")}`);let T=Jf({terminals:l,palettes:[]},c),_=vb(T,i);Eb(T),T_(T,_,u);return}if(al("ttheme init"),d){let R=x_(r);if(Zc(await Ge({message:`ttheme${R?` ${R}`:""} is installed — ${G2(d)}
|
|
771
|
+
${R===lt.version?"Reinstall":"Update to"} ${lt.version} and keep all of it?`,active:"Yes",inactive:"No, set it up again",initialValue:!0}))){await C2(d,c,i,!0,u);return}}let h=await O_(f,d?.terminals??l,c,i),m=h.includes("warp")?await P_(r):void 0,p=d?S_(d,c):Mb(e),b=d?await mb(p,d.palettes,"palette",!0):await mb(p,[],"catalog",!0);if(!b)throw Xr("Nothing changed"),new ge;let $=(d&&B2(d,b))??b[0],k=b.length>1&&(Ee[f].paints||f==="warp"&&h.includes("warp")&&Pr(ci(n,r))),v=Zc(await Ge({message:k?"Pick a default palette in ttheme once installed?":`Wear ${$} in every tab?`,initialValue:d?!d.off:!0})),S={terminals:h,palettes:b,off:!v,warpFast:m},M=d?E_(d,S,c):Jf(S,c);if(jn([`Install ${b.length} palettes — ${U2(p,b).join(", ")}`,`Copy ${M.copies.length} files under ${r}`,`Write ${M.settings.file}`,...M.edits.map((R)=>`Edit ${R.file} — a ttheme block: ${R.about}`),...M.writes.map((R)=>`Write ${R.file} — ${R.about}`),...Hl(r,M.installed,n),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out",v?k?`Open ttheme — every tab wears the palette picked there, ${$} until then`:`Paint every tab with ${$}, this one now`:"Leave the terminal colors as they are — `ttheme on` wears a palette later",...v&&$?vt(h).flatMap((R)=>R.defaults?[`Make "${R.defaults.profile($)}" the ${R.name} default profile`]:[]):[]].join(`
|
|
772
|
+
`),`Wiring ${vt(h).map((R)=>R.name).join(", ")}`),!Zc(await Ge({message:"Apply these changes?"})))throw Xr("Nothing changed"),new ge;let x=vb(M,i);if(Eb(M),await Uf(r,W2(!0),n),v&&k)A_(r);let N=D(r);N_({...M,manifest:p,installed:N},S,I_(p,N,r),x,u)}import{spawn as H_}from"node:child_process";import{createHash as F_}from"node:crypto";import{existsSync as Pb,mkdirSync as L_,readFileSync as C_,statSync as j_,utimesSync as __,writeFileSync as B_}from"node:fs";import{homedir as J2}from"node:os";import{join as Y2}from"node:path";import{gunzipSync as G_}from"node:zlib";var z2="https://github.com/kecan0406/aninames/releases/latest/download",V2=86400000,U_=3600000,W_=120000;function Z2(t){return Y2(Dr(t),".checked")}function K_(t=process.env){return t.TTHEME_NAMES!=="off"}function z_(t){try{return Date.now()-j_(Z2(t)).mtimeMs>=V2}catch{return!0}}function Ib(t,e){let n=Z2(t);if(L_(Dr(t),{recursive:!0}),!Pb(n))B_(n,"");__(n,e/1000,e/1000)}function X2(t=J2()){if(!K_()||!z_(t))return;try{Ib(t,Date.now()),H_(process.execPath,[process.argv[1],"names"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}function D2(t){return F_("sha256").update(t).digest("hex")}async function q2(t){let e=await fetch(t,{signal:AbortSignal.timeout(W_)});if(!e.ok)throw Error(`${t} answered ${e.status}`);return new Uint8Array(await e.arrayBuffer())}async function Q2(t=J2()){let e=Dr(t);try{let r=JSON.parse(new TextDecoder().decode(await q2(`${z2}/ttheme.json`)));for(let[i,{file:s,sha256:o}]of Object.entries(r.layers)){let a=Y2(e,`ttheme-${i}.json`);if(Pb(a)&&D2(C_(a))===o)continue;let c=G_(await q2(`${z2}/${s}`));if(D2(c)!==o)throw Error(`${s} does not match its hash`);C(a,c)}Ib(t,Date.now())}catch{return Ib(t,Date.now()-V2+U_),1}Nu(t);let n=X();if(Pb(Wi(n)))ho(ye(n).palettes,t),wv(n,t);return 0}import{createHash as D_}from"node:crypto";import{existsSync as Rb,readdirSync as tO,readFileSync as Ab,rmSync as q_,statSync as J_,utimesSync as Y_}from"node:fs";import{homedir as V_}from"node:os";import{join as ki}from"node:path";var Z_=new Set(["814e75361c745b9f1467c82bee90ab3f47daeaa70a528d330a4bc8aec9faeeb9","668092ea188445700b02d60a102c429e092e46fcd88c33509b9f1fd64d68e6a6","bf52a8c6d019f59f71723be460d7fe450234d0f03ff0f35e94db2c42455f00ba","8df4e3246f2cf26deaa0f620f31e94efac21104ec2dbe81fba55ba066141aeb4","7bdc8051f34b902e970df84df0e4c8d27331b5e04da7f7b498d50b592eaa72f2","e06b39cd6fa2701bd360b7062d82d4a56766aba97889dfa547d14db5895454f1"]);function eO(t){try{return tO(t).map((e)=>ki(t,e)).filter((e)=>J_(e).isFile())}catch{return[]}}function X_(t){let e=t.slice(t.lastIndexOf("/")+1);if(e.startsWith(j("")))return!1;let n=e.replace(/\.(conf|toml)$/,""),r=Ab(t,"utf8");return r.startsWith(`# ${n} — `)&&r.split(`
|
|
775
773
|
`)[1]?.startsWith("# ANSI: ")===!0||r.startsWith(`[metadata]
|
|
776
774
|
name = "${n}"
|
|
777
|
-
origin_url = "`)}function
|
|
778
|
-
`),"Uninstall");let i=await
|
|
779
|
-
`),`Wiring ${n.name}`);let u=await
|
|
780
|
-
`),"Next");return Da(`Wired ${n.name}`),0}var
|
|
775
|
+
origin_url = "`)}function Q_(t){let n=eO(t).filter((r)=>Z_.has(D_("sha256").update(Ab(r)).digest("hex")));return n.length>0&&n.length===tO(t).length?[t]:n}function tB(t){try{return D(t)}catch{return}}function eB(t){let{home:e,configHome:n}=t,r=tB(n),i={configHome:n,home:e},s=vt(ie),o=s.map((u)=>u.unwire(i,r)),a=[ki(n,"ttheme"),t.cacheDir,t.stateDir],c=Df(n);return{edits:[...[...new Set([ki(t.zdotdir,".zshrc"),ki(e,".zshrc")])].flatMap((u)=>gn(u,Bn)),...N2(e).flatMap((u)=>gn(u,Bn)),...o.flatMap((u)=>u.edits)],removals:[...Rb(c)&&qf(Ab(c,"utf8"))?[c]:[],...s.flatMap((u)=>u.shelf?No(u.shelf.dir(i)):[]),...s.flatMap((u)=>u.shelf?eO(u.shelf.dir(i)).filter(X_):[]),...Q_(ki(n,"ghostty","shaders")),...o.flatMap((u)=>u.removals),...a.filter((u)=>Rb(u))],touches:o.flatMap((u)=>u.touches),...r?{state:r}:{}}}function nB(t,e,n=tn()){let r=[];for(let{file:s,content:o}of t.edits){let a=fw(s,o);r.push(a==="removed"?`Removed ${s} — ttheme had created it`:a==="restored"?`Took ttheme out of ${s}`:`Took ttheme out of ${s} — kept ${s}.ttheme.bak, since the file changed after ttheme's first edit`)}if(t.state){let s=ss(e.configHome,{...t.state,off:!0,palettes:[]},!1,n,e.home);for(let o of vt(t.state.terminals))if(s.has(o.id))r.push(`Gave ${o.name} its own default profile back — it takes it at its next start`)}for(let s of t.removals)q_(s,{recursive:!0,force:!0});if(t.removals.length>0)r.push(`Deleted ${t.removals.length} files and folders ttheme wrote`);let i=new Date;for(let s of t.touches)Y_(s,i,i);return r}function rB(){let t=V_();return{home:t,configHome:X(),zdotdir:zf(tn(),t),cacheDir:Tn(),stateDir:ki(process.env.XDG_STATE_HOME??ki(t,".local","state"),"ttheme")}}async function nO(t=!1){let e=rB(),n=eB(e);if(n.edits.length===0&&n.removals.length===0){console.log("Nothing of ttheme is installed");return}if(!t){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("uninstall asks before it deletes anything — run it in a terminal, or pass --yes");let r=ki(e.configHome,"ttheme");al("ttheme uninstall"),jn([...n.edits.map((s)=>`Take ttheme out of ${s.file}`),...n.removals.map((s)=>s===r?`Delete ${s} — settings, pins, every installed picture${Rb(Tu(e.configHome))?`, and your marketplaces under ${Tu(e.configHome)} (push them to GitHub first to keep them)`:""}`:`Delete ${s}`)].join(`
|
|
776
|
+
`),"Uninstall");let i=await Ge({message:"Remove ttheme?"});if(re(i)||!i)throw Xr("Nothing changed"),new ge}for(let r of nB(n,e))console.log(r);console.log("Open tabs keep their colors until they close — restart your terminal to drop ttheme everywhere")}import{homedir as iB}from"node:os";async function rO(t){if(!ie.includes(t))throw Error(`no terminal ${t} — one of ${ie.join(", ")}`);let e=t,n=wr[e],r=X(),i=iB(),s=tn(),o=D(r);if(o.terminals.includes(e))return console.log(`${n.name} is wired already`),0;let a={configHome:r,home:i};if(!n.offered(a,s))throw Error(`${n.name} cannot be wired on this system`);if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("wire asks before it edits your configs — run it in a terminal");let c={...o,...n.installs?.(a)??{},terminals:[e]};jn([...Hl(r,c,i),...Fl(r,c,i),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out"].join(`
|
|
777
|
+
`),`Wiring ${n.name}`);let u=await Ge({message:`Wire ${n.name} now?`,initialValue:!1});if(re(u)||!u)throw Xr("Nothing changed"),new ge;let f=sc(r,c,s,i),l={...f,terminals:[...o.terminals,e]};en(r,l),zt(r,ut(r),l,i,s);let d=ss(r,f,!0,s,i),h=Ll(r,f,d,i);if(h.length>0)jn(h.join(`
|
|
778
|
+
`),"Next");return Da(`Wired ${n.name}`),0}var oB=new Set(["add","marketplace","default","on","off"]),aB={default:([t])=>e2(t),on:()=>r2(),off:()=>i2(),browse:()=>d2(),add:(t)=>t2(t),update:(t)=>o2(t),marketplace:([t,e])=>dS(t,e),new:([t],{from:e,in:n})=>Cx(t,e,n),edit:async(t)=>jx(await iO(t,"edit")),check:async(t,{fix:e})=>Wx(await iO(t,"check"),e),share:async([t],{tone:e})=>{let n=e;if(t!==void 0)return db(t,n);let r=await Rx(n);if(!r)throw new Ir("name a palette",Yf("share"));return db(r.name,r.tone)},init:(t,{yes:e})=>K2({yes:e}),uninstall:(t,{yes:e})=>nO(e),wire:([t])=>rO(t),info:()=>M2(),build:(t,{only:e})=>Gf({only:e}),find:([t])=>hx(t),image:([t,e,n])=>k2(t,e,n),sync:()=>n2(),redraw:()=>w2(),names:()=>Q2(),latest:()=>Nv(),tone:([t,e,n])=>_x(t,e,n),flatten:([t,e,n,r,i,s,o])=>S2(t,e,n,r,i,s,o),bake:([t,e,n,r])=>v2(t,e,n,r)},cB=Po.map((t)=>({...t,run:aB[t.name]}));class Ir extends Error{verb;constructor(t,e){super(t);this.verb=e}}function Yf(t){let e=cB.find((n)=>n.name===t);if(!e)throw new Ir(t.startsWith("-")?`unknown option '${t}'`:`unknown command '${t}'`);return e}async function iO([t],e){let n=t??await ub();if(n===void 0){let r=process.env.TTHEME_WORN;throw new Ir(`name a palette${r?` — this tab wears ${r}`:""}`,Yf(e))}return n}function uB(t,e){let n={help:{type:"boolean",short:"h"}};for(let[r,{type:i,short:s,multiple:o}]of Object.entries(t.flags??{}))n[r]={type:i,multiple:o===!0,...s?{short:s}:{}};try{return sB({args:e,options:n,allowPositionals:!0})}catch(r){let[i=""]=(r instanceof Error?r.message:String(r)).split(". ");throw new Ir(`${i.charAt(0).toLowerCase()}${i.slice(1)}`,t)}}function lB(t){let[e,...n]=t;if(e===void 0)return{kind:"brief"};if(e==="-h"||e==="--help")return{kind:"help"};if(e==="-v"||e==="--version")return{kind:"version"};if(e==="help"){if(n[0]===void 0||n[0]==="all")return{kind:"help",all:n[0]==="all"};return{kind:"help",verb:Yf(n[0])}}let r=Yf(e),i=uB(r,n);if(i.values.help)return{kind:"help",verb:r};for(let[f,{choices:l}]of Object.entries(r.flags??{}))for(let d of[i.values[f]??[]].flat())if(l&&!l.includes(String(d)))throw new Ir(`--${f} takes ${l.join(", ")} — not ${d}`,r);let s=i.positionals,o=r.args.filter((f)=>f.startsWith("<")).length,a=r.args.some((f)=>f.includes("..."))?Number.POSITIVE_INFINITY:r.args.length;if(s.length<o)throw new Ir(`missing ${r.args[s.length]}`,r);if(s.length>a)throw new Ir(`too many arguments: ${s.slice(a).join(" ")}`,r);let{help:c,...u}=i.values;return{kind:"run",verb:r,args:s,flags:u}}var fB=[TypeError,RangeError,ReferenceError,SyntaxError];function dB(t){return fB.some((e)=>t instanceof e)||t instanceof Error&&"code"in t}async function sO(t){let e;try{let n=lB(t);if(n.kind==="version")return console.log(lt.version),0;if(n.kind==="brief")return console.error(e1()),1;if(n.kind==="help")return console.log(n.verb?Om(n.verb):Ja(n.all===!0)),0;if(e=n.verb,!n.verb.run)throw Error("runs in the shell layer — open a new tab once `ttheme init` has wired it");if(oB.has(n.verb.name))await Vv();let r=await n.verb.run(n.args,n.flags);if(!n.verb.hidden&&n.verb.name!=="uninstall"){if(X2(),n.verb.name!=="update"&&n.verb.name!=="init")Av(),Lv()}return typeof r==="number"?r:0}catch(n){if(n instanceof Ir)return console.error(n.verb?`ttheme ${n.verb.name}: ${n.message}
|
|
781
779
|
|
|
782
|
-
${
|
|
783
|
-
ttheme${e?` ${e.name}`:""}: ${r??(n instanceof Error?n.message:String(n))}${
|
|
780
|
+
${Om(n.verb)}`:`ttheme: ${n.message} — see \`ttheme help\``),1;if(n instanceof ge)return 1;if(n instanceof pc)return n.exit;let r=process.env.TTHEME_DEBUG&&n instanceof Error?n.stack:void 0;return console.error(`
|
|
781
|
+
ttheme${e?` ${e.name}`:""}: ${r??(n instanceof Error?n.message:String(n))}${dB(n)?"\nReport a bug with the output of `ttheme info`":""}`),1}}if(mB)if(process.env.TTHEME_DEBUG&&typeof Bun>"u"&&!process.sourceMapsEnabled){let t=hB(process.execPath,["--enable-source-maps",...process.argv.slice(1)],{stdio:"inherit"});process.exitCode=t.status??1}else process.exitCode=await sO(process.argv.slice(2));
|
|
784
782
|
|
|
785
|
-
//# debugId=
|
|
783
|
+
//# debugId=13D6F5C11B6CA48364756E2164756E21
|
|
786
784
|
//# sourceMappingURL=ttheme.js.map
|